import { type Habit as ToduHabit, HabitFilter as ToduHabitFilter, HabitStreak as ToduHabitStreak, IntegrationBindingFilter as ToduIntegrationBindingFilter, RecurringFilter as ToduRecurringFilter, RecurringTemplate as ToduRecurringTemplate, TaskStatus as ToduTaskStatus } from "@todu/core"; import type { HabitCheckResult, HabitDetail, HabitFilter, HabitStreak, HabitSummary } from "../../domain/habit"; import type { ApprovalItem, ApprovalListFilter } from "../../domain/approval"; import type { NoteFilter, NoteSummary } from "../../domain/note"; import type { RecurringFilter, RecurringTemplateDetail, RecurringTemplateSummary } from "../../domain/recurring"; import type { ActorSummary } from "../../domain/actor"; import type { ProjectSummary, TaskComment, TaskDetail, TaskFilter, TaskId, TaskPriority, TaskStatus, TaskSummary } from "../../domain/task"; import type { AddHabitNoteInput, CreateHabitInput, DeleteHabitResult, UpdateHabitInput } from "../habit-service"; import type { CreateIntegrationBindingInput, IntegrationBinding, IntegrationBindingFilter, IntegrationBindingStatus, UpdateIntegrationBindingInput } from "../project-integration-service"; import type { CreateProjectInput, DeleteProjectResult, UpdateProjectInput as UpdateLocalProjectInput } from "../project-service"; import type { CreateRecurringInput, DeleteRecurringResult, UpdateRecurringInput } from "../recurring-service"; import type { AddTaskCommentInput, CreateTaskInput, DeleteTaskResult, MoveTaskInput, MoveTaskResult, UpdateTaskInput } from "../task-service"; import type { ToduDaemonConnection, ToduDaemonConnectionError } from "./daemon-connection"; import type { ToduDaemonEventListener, ToduDaemonEventName, ToduDaemonSubscription } from "./daemon-events"; export type ToduDaemonClientErrorCode = "not-found" | "validation" | "conflict" | "precondition-failed" | "unavailable" | "timeout" | "internal"; export declare class ToduDaemonClientError extends Error { readonly code: ToduDaemonClientErrorCode; readonly method: string; readonly details?: Record; constructor(options: { code: ToduDaemonClientErrorCode; method: string; message: string; details?: Record; }); } export interface ToduProjectSummary { id: string; name: string; status: "active" | "done" | "cancelled"; priority: TaskPriority; description: string | null; authorizedAssigneeActorIds: string[]; } export interface ToduDaemonClient { listTasks(filter?: TaskFilter): Promise; getTask(taskId: TaskId): Promise; listActors(): Promise; createActor(input: { id: string; displayName: string; }): Promise; renameActor(input: { actorId: string; displayName: string; }): Promise; archiveActor(actorId: string): Promise; unarchiveActor(actorId: string): Promise; createTask(input: CreateTaskInput): Promise; updateTask(input: UpdateTaskInput): Promise; addTaskComment(input: AddTaskCommentInput): Promise; listProjects(): Promise; getProject(projectId: string): Promise; createProject(input: CreateProjectInput): Promise; updateProject(input: UpdateLocalProjectInput): Promise; deleteProject(projectId: string): Promise; listRecurring(filter?: RecurringFilter): Promise; getRecurring(recurringId: string): Promise; createRecurring(input: CreateRecurringInput): Promise; updateRecurring(input: UpdateRecurringInput): Promise; deleteRecurring(recurringId: string): Promise; listIntegrationBindings(filter?: IntegrationBindingFilter): Promise; getIntegrationBinding(bindingId: string): Promise; createIntegrationBinding(input: CreateIntegrationBindingInput): Promise; updateIntegrationBinding(input: UpdateIntegrationBindingInput): Promise; getIntegrationBindingStatus(bindingId: string): Promise; listApprovals(filter?: ApprovalListFilter): Promise; approveTaskDescription(taskId: string): Promise; approveNoteContent(noteId: string): Promise; deleteTask(taskId: TaskId): Promise; moveTask(input: MoveTaskInput): Promise; listHabits(filter?: HabitFilter): Promise; getHabit(habitId: string): Promise; createHabit(input: CreateHabitInput): Promise; updateHabit(input: UpdateHabitInput): Promise; checkHabit(habitId: string): Promise; getHabitStreak(habitId: string): Promise; addHabitNote(input: AddHabitNoteInput): Promise; deleteHabit(habitId: string): Promise; getNote(noteId: string): Promise; listNotes(filter?: NoteFilter): Promise; listTaskComments(taskId: TaskId): Promise; on(eventName: ToduDaemonEventName, listener: ToduDaemonEventListener): Promise; } export interface CreateToduDaemonClientOptions { connection: Pick; } declare const createToduDaemonClient: ({ connection, }: CreateToduDaemonClientOptions) => ToduDaemonClient; declare const mapRecurringTemplateSummary: (template: ToduRecurringTemplate) => RecurringTemplateSummary; declare const mapRecurringTemplateDetail: (template: ToduRecurringTemplate) => RecurringTemplateDetail; declare const mapHabitSummary: (habit: ToduHabit) => HabitSummary; declare const mapHabitDetail: (habit: ToduHabit) => HabitDetail; declare const mapHabitCheckResult: (result: { habit: ToduHabit; date: string; completed: boolean; streak?: ToduHabitStreak; }, habitId: string) => HabitCheckResult; declare const mapCreateHabitInput: (input: CreateHabitInput) => Record; declare const mapUpdateHabitInput: (input: UpdateHabitInput) => Record; declare const mapHabitFilter: (filter: HabitFilter) => ToduHabitFilter; declare const mapCreateRecurringInput: (input: CreateRecurringInput) => Record; declare const mapUpdateRecurringInput: (input: UpdateRecurringInput) => Record; declare const mapIntegrationBindingFilter: (filter: IntegrationBindingFilter) => ToduIntegrationBindingFilter; declare const mapRecurringFilter: (filter: RecurringFilter) => ToduRecurringFilter; declare const mapCreateIntegrationBindingInput: (input: CreateIntegrationBindingInput) => Record; declare const mapCreateProjectInput: (input: CreateProjectInput) => Record; declare const mapUpdateProjectInput: (input: UpdateLocalProjectInput) => Record; declare const mapDaemonErrorToClientError: (method: string, error: ToduDaemonConnectionError) => ToduDaemonClientError; declare const toLocalTaskStatus: (status: ToduTaskStatus) => TaskStatus; declare const toRemoteTaskStatus: (status: TaskStatus) => ToduTaskStatus; declare const toRemoteProjectStatus: (status: ProjectSummary["status"]) => string; export { createToduDaemonClient, mapCreateHabitInput, mapCreateIntegrationBindingInput, mapCreateProjectInput, mapCreateRecurringInput, mapDaemonErrorToClientError, mapHabitCheckResult, mapHabitDetail, mapHabitFilter, mapHabitSummary, mapIntegrationBindingFilter, mapRecurringFilter, mapRecurringTemplateDetail, mapRecurringTemplateSummary, mapUpdateHabitInput, mapUpdateProjectInput, mapUpdateRecurringInput, toLocalTaskStatus, toRemoteProjectStatus, toRemoteTaskStatus, };