export interface VigthoriaCLIConfig {
    apiUrl: string;
    modelsApiUrl: string;
    musicApiUrl: string;
    wsUrl: string;
    selfHostedModelsApiUrl: string | null;
    authToken: string | null;
    refreshToken: string | null;
    userId: string | null;
    email: string | null;
    v3ServiceKey: string | null;
    subscription: {
        plan: string | null;
        status: string | null;
        expiresAt: string | null;
    };
    preferences: {
        defaultModel: string;
        theme: 'dark' | 'light';
        autoApplyFixes: boolean;
        showDiffs: boolean;
        contextLines: number;
        maxTokens: number;
    };
    project: {
        rootPath: string | null;
        ignorePatterns: string[];
    };
    persona: 'default' | 'wiener_grant';
    hubModelPrefs?: {
        enabledCloudModels: string[];
        defaultCloudModel?: string;
        defaultLocalModel?: string;
        balance?: number;
        fetchedAt?: string;
    };
}
export interface AvailableModelDescriptor {
    id: string;
    name: string;
    description: string;
    tier: string;
    backendModel: string;
}
export declare class Config {
    private store;
    private static readonly OPERATOR_PLANS;
    private static readonly CLOUD_PLANS;
    constructor();
    /**
     * Re-apply secure POSIX permissions to the on-disk config file.  Safe
     * to call repeatedly; no-op on Windows.
     */
    secureOnDisk(): void;
    get<K extends keyof VigthoriaCLIConfig>(key: K): VigthoriaCLIConfig[K];
    set<K extends keyof VigthoriaCLIConfig>(key: K, value: VigthoriaCLIConfig[K]): void;
    getAll(): VigthoriaCLIConfig;
    reset(): void;
    isAuthenticated(): boolean;
    hasValidSubscription(): boolean;
    getNormalizedPlan(): string;
    hasOperatorAccess(): boolean;
    hasCloudAccess(): boolean;
    getConfigPath(): string;
    setAuth(data: {
        token: string;
        refreshToken?: string;
        userId: string;
        email: string;
    }): void;
    clearAuth(): void;
    setSubscription(data: {
        plan: string;
        status: string;
        expiresAt?: string;
    }): void;
    getAvailableModels(): AvailableModelDescriptor[];
    refreshHubModelPreferences(): Promise<void>;
    isCloudModel(modelId: string): boolean;
    filterModelsByHubPreferences(models: AvailableModelDescriptor[], enabledCloudModels?: string[]): AvailableModelDescriptor[];
    isComplexTask(prompt: string): boolean;
    shouldUseCloudForHeavyTask(prompt: string): boolean;
}
