/** * HTTP Client for Ponlo.ai API * Handles all API requests with API key authentication */ import type { WeatherResponse, RewardsResponse, Reward, RewardRedemption, Task, CalendarEvent, StickyNote, WorkspaceMember, ShoppingList, ListItem, MealPlan } from './types.js'; export declare class PonloClient { private baseUrl; private apiKey; constructor(baseUrl: string, apiKey: string); /** * Make an authenticated API request */ request(method: string, path: string, body?: unknown): Promise; listTasks(): Promise; createTask(data: { title: string; description?: string; deadline?: string; assignedTo?: string; stars?: number; }): Promise; updateTask(data: { id: string; title?: string; description?: string; deadline?: string; assignedTo?: string; completed?: boolean; order?: number; }): Promise; deleteTask(id: string): Promise; bulkTasks(action: string, data: Record): Promise>; listEvents(start?: string, end?: string): Promise; createEvent(data: { title: string; startTime: string; endTime?: string; allDay?: boolean; location?: string; description?: string; attendees?: string; timezone?: string; }): Promise; updateEvent(id: string, data: { title?: string; startTime?: string; endTime?: string; location?: string; description?: string; attendees?: string; timezone?: string; }): Promise; deleteEvent(id: string): Promise; syncCalendars(): Promise; getCurrentNote(): Promise; createNote(data: { content: string; color?: string; }): Promise; updateNote(data: { id: string; content?: string; color?: string; }): Promise; deleteNote(id: string): Promise; listRewards(): Promise; createReward(data: { title: string; description?: string; emoji?: string; starsRequired: number; assignedTo?: string; renewable?: boolean; }): Promise; deleteReward(id: string): Promise; redeemReward(rewardId: string, redeemedBy: string): Promise<{ redemption: RewardRedemption; newBalance: number; }>; listLists(): Promise; createList(data: { title: string; type?: 'grocery' | 'todo' | 'custom'; color?: string; }): Promise; deleteList(id: string): Promise; getListItems(listId: string): Promise; addListItems(data: { listId: string; items?: { content: string; quantity?: string; }[]; content?: string; quantity?: string; addedBy?: string; }): Promise; updateListItem(data: { id: string; content?: string; completed?: boolean; quantity?: string; }): Promise; deleteListItem(id: string): Promise; listMeals(start?: string, end?: string): Promise; createMeal(data: { date: string; mealType: string; title: string; recipe?: string; ingredients?: string[]; notes?: string; }): Promise; updateMeal(data: { id: string; title?: string; recipe?: string; ingredients?: string[]; notes?: string; date?: string; mealType?: string; }): Promise; deleteMeal(id: string): Promise; importRecipe(data: { url?: string; text?: string; date?: string; mealType?: string; addToList?: string; }): Promise<{ recipe: { title: string; ingredients: string[]; steps: string[]; prepTime?: string; cookTime?: string; servings?: number; notes?: string; }; meal?: { date: string; mealType: string; }; addedToList?: boolean; error?: string; }>; listMembers(): Promise; getWeather(params: { lat?: number; lon?: number; city?: string; units?: 'metric' | 'imperial'; }): Promise; listPhotos(): Promise[]>; deletePhoto(id: string): Promise; /** * Upload a photo to the slideshow via multipart/form-data. * Note: no explicit Content-Type header — fetch sets it (with the boundary) from the FormData body. */ uploadPhoto(bytes: Uint8Array, filename: string, contentType: string): Promise<{ uploaded: number; skipped?: { name: string; reason: string; }[]; photos?: Record[]; }>; getDigest(): Promise<{ greeting: string; summary: string; weather: unknown; events: { today: unknown[]; tomorrow: unknown[]; thisWeek: unknown[]; later: unknown[]; }; tasks: { pending: unknown[]; totalPending: number; totalCompleted: number; }; meals: unknown[] | null; note: { content: string; color: string; } | null; generatedAt: string; }>; getSchedule(date?: string, member?: string): Promise<{ schedules: Array<{ memberId: string; memberName: string; memberColor: string; location: string; label: string | null; source: string | null; }>; }>; setSchedule(data: { memberId: string; location: string; label?: string; dayOfWeek?: number; date?: string; }): Promise; } //# sourceMappingURL=client.d.ts.map