import type { IProject } from 'n8nac';
import type { GatewaySurface } from '../gateway/types.js';
import type { YagrModelProvider } from '../llm/create-language-model.js';
import type { ManagedN8nInstanceState } from '../n8n-local/state.js';
export interface SetupCallbacks {
    getN8nDefaults(urlOverride?: string): {
        url: string;
        apiKey?: string;
        projectId?: string;
        syncFolder?: string;
    };
    testN8nConnection(url: string, apiKey: string): Promise<IProject[]>;
    saveN8nConfig(p: {
        url: string;
        apiKey: string;
        project: IProject;
        syncFolder: string;
        runtimeSource: 'managed-local' | 'external';
    }): Promise<void>;
    installManagedLocalN8n(strategy: 'docker' | 'direct' | 'auto'): Promise<ManagedN8nInstanceState>;
    bootstrapManagedLocalN8n(url: string): Promise<{
        mode: 'silent' | 'assisted';
        apiKey?: string;
        reason?: string;
    }>;
    openUrl(url: string): Promise<void>;
    getLlmDefaults(): {
        provider?: YagrModelProvider;
        getApiKey(prov: YagrModelProvider): string | undefined;
        getDefaultModel(prov: YagrModelProvider): string | undefined;
        getBaseUrl(prov: YagrModelProvider): string | undefined;
        needsBaseUrl(prov: YagrModelProvider): boolean;
    };
    prepareProvider(provider: YagrModelProvider, apiKey?: string): Promise<{
        ready: boolean;
        apiKey?: string;
        baseUrl?: string;
        models?: string[];
        notes?: string[];
        error?: string;
    }>;
    startAccountAuth(provider: YagrModelProvider): Promise<{
        kind: 'none' | 'input';
        title?: string;
        instructions?: string[];
        placeholder?: string;
        submitLabel?: string;
        state?: string;
    }>;
    completeAccountAuth(provider: YagrModelProvider, input: string, state?: string): Promise<{
        ok: boolean;
        error?: string;
        apiKey?: string;
    }>;
    fetchModels(provider: YagrModelProvider, apiKey?: string): Promise<string[]>;
    saveLlmConfig(p: {
        provider: YagrModelProvider;
        apiKey?: string;
        model: string;
        baseUrl?: string;
    }): void;
    getSurfaceDefaults(): {
        surfaces: GatewaySurface[];
    };
    getTelegramToken(): string | undefined;
    setupTelegram(token: string): Promise<{
        username: string;
    }>;
    saveSurfaces(p: {
        surfaces: GatewaySurface[];
        telegram?: {
            token: string;
            username: string;
        };
    }): void;
}
export interface SetupResult {
    ok: boolean;
    telegramDeepLink?: string;
}
export interface SetupWizardOptions {
    mode?: 'full' | 'llm-only';
}
export declare function runSetupWizard(callbacks: SetupCallbacks, options?: SetupWizardOptions): Promise<SetupResult>;
//# sourceMappingURL=setup-wizard.d.ts.map