export type SetupValidationInput = { channelId: string; workingDirectory: string; piBinary: string; model: string; thinking: string; botToken: string; appToken: string; trustedUserId: string; }; export interface SetupProgress { start(label: string): void; success(label: string): void; failure(label: string): void; } export type SetupValidationResult = { channelLabel: string; trustedUserLabel: string; /** Canonical, service-safe path which setup must persist as pi_binary. */ piBinary: string; }; type BotClient = { auth: { test(): Promise; }; conversations: { info(args: { channel: string; }): Promise; }; users: { info(args: { user: string; }): Promise; }; }; type AppClient = { apps: { connections: { open(): Promise; }; }; }; export type SetupValidationDependencies = { createBotClient(token: string): BotClient; createAppClient(token: string): AppClient; validatePi(input: Pick): Promise; }; /** * Resolves the default command through setup's PATH, but never persists a * service-PATH-dependent value. Explicit paths must already be absolute. */ export declare function resolvePiExecutable(piBinary: string, path?: string | undefined): string; /** Runs every setup check which must precede creation of database/config state. */ export declare function validateFirstTimeSetup(input: SetupValidationInput, dependencies?: SetupValidationDependencies, progress?: SetupProgress): Promise; export {};