import type { IProject } from 'n8nac';
import type { GatewaySurface } from '../gateway/types.js';
import type { YagrModelProvider } from '../llm/provider-registry.js';
import type { ManagedN8nInstanceState } from '../n8n-local/state.js';
import type { YagrN8nInstanceProfile } from '../config/n8n-config-service.js';
import { type YagrLlmProxyConfig } from '../config/yagr-config-service.js';
export interface SetupCallbacks {
    getN8nDefaults(urlOverride?: string): {
        url: string;
        apiKey?: string;
        projectId?: string;
        syncFolder?: string;
        instanceProfile?: YagrN8nInstanceProfile;
    };
    testN8nConnection(url: string, apiKey: string): Promise<IProject[]>;
    saveN8nConfig(p: {
        url: string;
        apiKey: string;
        project: IProject;
        syncFolder: string;
        instanceProfile?: YagrN8nInstanceProfile;
    }): 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;
        reasoningEffort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
        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;
    }>;
    hasAccountSession(provider: YagrModelProvider): Promise<boolean>;
    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;
        reasoningEffort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
    }): void;
    getSurfaceDefaults(): {
        surfaces: GatewaySurface[];
    };
    getTelegramToken(): string | undefined;
    setupTelegram(token: string): Promise<{
        username: string;
    }>;
    saveSurfaces(p: {
        surfaces: GatewaySurface[];
        telegram?: {
            token: string;
            username: string;
        };
    }): void;
    setupLlmProxy(n8nUrl: string, instanceProfile?: YagrN8nInstanceProfile): Promise<{
        mode: YagrLlmProxyConfig['mode'];
        credentialBaseUrl: string;
        dockerHostAddress?: string;
        llmTunnelUrl?: string;
    }>;
    saveLlmProxyConfig(config: YagrLlmProxyConfig): void;
    provisionLlmProxyCredential(): Promise<void>;
    isLlmProxyEnabled(): boolean;
    startN8nTunnel(targetUrl: string): Promise<{
        publicUrl: string;
    }>;
}
export interface SetupResult {
    ok: boolean;
    telegramDeepLink?: string;
}
export interface SetupWizardOptions {
    mode?: 'full' | 'n8n-only' | 'llm-only' | 'proxy-only';
}
export declare function runSetupWizard(callbacks: SetupCallbacks, options?: SetupWizardOptions): Promise<SetupResult>;
//# sourceMappingURL=setup-wizard.d.ts.map