/**
* LiteFarm MCP Server - Type Definitions
*/
// Response format enum
export enum ResponseFormat {
MARKDOWN = "markdown",
JSON = "json"
}
// API Response Types
export interface LiteFarmUser {
[x: string]: unknown;
user_id: string;
email: string;
first_name: string;
last_name: string;
phone_number?: string;
profile_picture?: string;
created_at: string;
}
export interface LiteFarmFarm {
[x: string]: unknown;
farm_id: string;
farm_name: string;
address?: string;
grid_points?: any;
farm_phone_number?: string;
created_at: string;
updated_at: string;
}
export interface LiteFarmCrop {
[x: string]: unknown;
crop_id: string;
crop_common_name: string;
crop_genus: string;
crop_specie: string;
crop_group?: string;
crop_subgroup?: string;
max_rooting_depth?: number;
depletion_fraction?: number;
is_avg_depth?: boolean;
initial_kc?: number;
mid_kc?: number;
end_kc?: number;
max_height?: number;
is_avg_kc?: boolean;
nutrient_notes?: string;
percentrefuse?: number;
refuse?: string;
protein?: number;
lipid?: number;
energy?: number;
ca?: number;
fe?: number;
mg?: number;
ph?: number;
k?: number;
na?: number;
zn?: number;
cu?: number;
mn?: number;
vita_rae?: number;
vitc?: number;
thiamin?: number;
riboflavin?: number;
niacin?: number;
pantothenic?: number;
vitb6?: number;
folate?: number;
vitb12?: number;
vitk?: number;
created_at: string;
updated_at: string;
}
export interface LiteFarmTask {
[x: string]: unknown;
task_id: number;
type: string;
status: string;
owner_user_id: string;
assignee_user_id?: string;
due_date?: string;
completion_date?: string;
abandon_date?: string;
created_at: string;
updated_at: string;
farm_id: string;
wage_at_moment?: number;
happiness?: number;
}
export interface LiteFarmLocation {
[x: string]: unknown;
location_id: string;
name: string;
notes?: string;
type: string;
figure_id?: string;
total_area?: number;
total_area_unit?: string;
grid_points?: any;
perimeter?: number;
perimeter_unit?: string;
created_at: string;
updated_at: string;
farm_id: string;
figure?: {
type?: string;
area?: {
total_area?: number;
total_area_unit?: string;
};
[key: string]: any;
};
}
// Auth Types
export interface LoginResponse {
id_token: string;
access_token: string;
refresh_token: string;
user: LiteFarmUser;
}
export interface AuthTokens {
accessToken: string;
refreshToken: string;
idToken: string;
}
// Pagination Types
export interface PaginationParams {
limit: number;
offset: number;
}
export interface PaginatedResponse<T> {
[x: string]: unknown;
total: number;
count: number;
offset: number;
items: T[];
has_more: boolean;
next_offset?: number;
}
// API Error Types
export interface LiteFarmApiError {
error: string;
message: string;
statusCode: number;
}
// Animal Types (based on Phase 1 API Research)
export interface LiteFarmAnimal {
[x: string]: unknown;
id?: number;
default_type_id?: number; // FK to default animal types (e.g., CHICKEN, COW)
custom_type_id?: number; // Alternative: Custom farm-specific type
type_name?: string; // Alternative: Create new type on-the-fly
name?: string; // Optional
sex_id?: number | null; // Optional: 1=MALE, 2=FEMALE
birth_date?: string; // Optional: ISO 8601
default_breed_id?: number | null;
custom_breed_id?: number | null;
identifier?: string | null;
identifier_type_id?: number | null;
origin_id?: number | null;
dam?: string | null;
sire?: string | null;
brought_in_date?: string | null;
weaning_date?: string | null;
identifier_color_id?: number | null;
organic_status?: string | null; // ORGANIC | NON_ORGANIC | TRANSITIONAL
supplier?: string | null;
price?: number | null;
notes?: string | null;
photo_url?: string | null;
farm_id: string; // From request header
created_at?: string;
updated_at?: string;
internal_identifier?: string; // Assigned by API after creation
}
export interface LiteFarmAnimalBatch {
[x: string]: unknown;
id?: number;
default_type_id?: number; // FK to default types
custom_type_id?: number; // Alternative
type_name?: string; // Alternative
count?: number; // Number of animals in batch
name?: string; // Optional
sex_id?: number | null; // Optional
farm_id: string; // From header
created_at?: string;
updated_at?: string;
internal_identifier?: string;
}
export interface LiteFarmAnimalType {
[x: string]: unknown;
id: number;
key: string; // e.g., "CHICKEN", "COW", "PIG"
default_type_name: string; // Display name
}
// Finance Types
export interface LiteFarmExpense {
[x: string]: unknown;
farm_expense_id?: string;
expense_type_id: string; // FK to expense_type table (string, not number!)
value: number; // Required
expense_date: string; // Required: ISO 8601
note: string; // Required: 1-255 chars
picture?: string;
farm_id: string; // From header
created_at?: string;
updated_at?: string;
}
export interface LiteFarmExpenseType {
[x: string]: unknown;
expense_type_id: string;
expense_name: string;
farm_id?: string | null; // NULL = global, set = farm-specific
expense_translation_key?: string;
created_at?: string;
updated_at?: string;
}
// Tool Response Types
export interface ToolResponse {
[x: string]: unknown;
content: Array<{
type: "text";
text: string;
}>;
structuredContent?: { [x: string]: unknown };
isError?: boolean;
}