import type { InstanceAiAdminSettingsResponse, InstanceAiAdminSettingsUpdateRequest, InstanceAiConnectionUpdate, InstanceAiUserPreferencesResponse, InstanceAiUserPreferencesUpdateRequest, InstanceAiProviderConnection, InstanceAiPermissions, InstanceAiSandboxProvider } from '@n8n/api-types';
import { GlobalConfig } from '@n8n/config';
import { DbLockService, SettingsRepository, UserRepository } from '@n8n/db';
import type { User } from '@n8n/db';
import type { ModelConfig } from '@n8n/instance-ai';
import { CredentialsFinderService } from '../../credentials/credentials-finder.service';
import { CredentialsService } from '../../credentials/credentials.service';
import { InstanceCredentialBroker, type InstanceCredentialUse } from '../../credentials/instance-credential-broker';
import { EventService } from '../../events/event.service';
import { AiService } from '../../services/ai.service';
import { UserService } from '../../services/user.service';
export interface InstanceAiSandboxStatus {
    enabled: boolean;
    provider: InstanceAiSandboxProvider;
    workflowBuilderAvailable: boolean;
    unavailableReason: string | null;
}
export declare const CREDENTIAL_TO_MODEL_PROVIDER: Record<string, string>;
export declare const INSTANCE_AI_MODEL_CREDENTIAL_POLICY: InstanceCredentialUse;
export declare const INSTANCE_AI_DAYTONA_CREDENTIAL_POLICY: InstanceCredentialUse;
export declare const INSTANCE_AI_N8N_SANDBOX_CREDENTIAL_POLICY: InstanceCredentialUse;
export declare const INSTANCE_AI_SEARCH_CREDENTIAL_POLICY: InstanceCredentialUse;
export interface AdminModelSelection {
    modelCredentialId: string | null;
    modelName: string | null;
}
export interface AdminCredentialSelection extends AdminModelSelection {
    daytonaCredentialId: string | null;
    n8nSandboxCredentialId: string | null;
    searchCredentialId: string | null;
}
export declare class InstanceAiSettingsService {
    private readonly dbLockService;
    private readonly settingsRepository;
    private readonly userRepository;
    private readonly userService;
    private readonly aiService;
    private readonly credentialsService;
    private readonly credentialsFinderService;
    private readonly instanceCredentialBroker;
    private readonly eventService;
    private readonly config;
    private readonly deploymentConfig;
    private readonly environmentSandboxProvider;
    private sandboxProviderOverride?;
    private enabled;
    private mcpAccessEnabled;
    private permissions;
    private adminModelName;
    private searchDisabled;
    private adminN8nSandboxServiceUrl;
    private readonly environmentN8nSandboxServiceUrl;
    constructor(globalConfig: GlobalConfig, dbLockService: DbLockService, settingsRepository: SettingsRepository, userRepository: UserRepository, userService: UserService, aiService: AiService, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, instanceCredentialBroker: InstanceCredentialBroker, eventService: EventService);
    private get isCloud();
    isProxyEnabled(): boolean;
    loadFromDb(): Promise<void>;
    getAdminSettings(): Promise<InstanceAiAdminSettingsResponse>;
    private buildAdminSettingsResponse;
    updateAdminSettings(update: InstanceAiAdminSettingsUpdateRequest, user?: User): Promise<InstanceAiAdminSettingsResponse>;
    private rejectConnectionConflicts;
    private upsertConnection;
    private prepareConnection;
    private prepareSandboxConnection;
    private runConnectionHooks;
    private upsertSandboxConnection;
    reloadFromDb(): Promise<void>;
    getUserPreferences(user: User): Promise<InstanceAiUserPreferencesResponse>;
    updateUserPreferences(user: User, update: InstanceAiUserPreferencesUpdateRequest): Promise<InstanceAiUserPreferencesResponse>;
    resolveModelConnectionForVerification(connection: InstanceAiConnectionUpdate): Promise<InstanceAiConnectionUpdate>;
    resolveSandboxConnectionForVerification(connection: InstanceAiConnectionUpdate): Promise<InstanceAiConnectionUpdate>;
    resolveSearchConnectionForVerification(connection: InstanceAiConnectionUpdate): Promise<InstanceAiConnectionUpdate>;
    private connectionForVerification;
    listInstanceModelCredentials(): Promise<InstanceAiProviderConnection[]>;
    listInstanceServiceCredentials(): Promise<InstanceAiProviderConnection[]>;
    resolveDaytonaConfig(): Promise<{
        apiUrl?: string;
        apiKey?: string;
    }>;
    resolveN8nSandboxConfig(): Promise<{
        serviceUrl?: string;
        apiKey?: string;
    }>;
    resolveSearchConfig(): Promise<{
        braveApiKey?: string;
        searxngUrl?: string;
    }>;
    private validateAssignedServiceCredential;
    private resolveServiceCredential;
    private warnCredentialFallback;
    getPermissions(): InstanceAiPermissions;
    isMcpAccessEnabled(): boolean;
    isLocalGatewayDisabledForUser(userId: string): Promise<boolean>;
    isAgentEnabled(): boolean;
    isLocalGatewayDisabled(): boolean;
    isBrowserUseEnabled(): boolean;
    isActivationCapped(): boolean;
    getActivationLockMessageThreshold(): number;
    getSandboxStatus(): InstanceAiSandboxStatus;
    isInstanceAiEnabled(): boolean;
    isSetupCompleted(): Promise<boolean>;
    getConfiguredModelId(): string;
    resolveModelName(user: User): string;
    resolveModelConfig(user: User): Promise<ModelConfig>;
    resolveModelConfigForVerification(user: User, modelName?: string): Promise<ModelConfig>;
    buildModelConfigForConnection(connection: InstanceAiConnectionUpdate, modelName: string): ModelConfig;
    private resolveAdminModelConfig;
    private buildModelConfigFromCredential;
    private buildModelConfig;
    private static readonly MANAGED_ADMIN_FIELDS;
    private static readonly INSTANCE_CREDENTIAL_FIELDS;
    private static readonly MANAGED_PREFERENCE_FIELDS;
    private rejectEnvironmentManagedFields;
    private deploymentLabel;
    private rejectManagedFields;
    private validateAdminSettingsUpdate;
    private getSandboxUnavailableReason;
    private envVarModelConfig;
    private hasEnvironmentModelConnection;
    private hasEnvironmentModelName;
    private hasEnvironmentSandboxConnection;
    private hasEnvironmentSearchConnection;
    private isDirectSelfManaged;
    private envVarModelConfigForModel;
    private extractModelName;
    private applyAdminSettings;
    private readUserPreferences;
    private snapshotAdminSettings;
    private mergeAdminSettings;
    private readPersistedAdminSettings;
    private withPersistedAdminSettings;
    private readAdminModelSelection;
    private parsePersistedAdminSettings;
    private emitSettingsUpdated;
}
