/**
 * Onboarding configuration types and utilities.
 *
 * Provides the structure for defining secret requirements per agent/plugin,
 * supporting both conversational and form-based collection flows.
 */
import type { SecretType } from "../types.ts";
/**
 * Setting definition for onboarding.
 * Compatible with the-org OnboardingConfig format.
 */
export interface OnboardingSetting {
    /** Display name */
    name: string;
    /** Description for LLM context */
    description: string;
    /** Prompt shown when asking user for this setting */
    usageDescription?: string;
    /** Whether this is a secret (should be encrypted) */
    secret: boolean;
    /** Whether this should be visible in non-onboarding contexts */
    public: boolean;
    /** Whether this setting is required */
    required: boolean;
    /** Settings that must be configured first */
    dependsOn: string[];
    /** Validation function */
    validation?: (value: string) => boolean;
    /** Validation method name (openai, anthropic, url, etc.) */
    validationMethod?: string;
    /** Secret type */
    type?: SecretType;
    /** Environment variable to sync to */
    envVar?: string;
    /** Default value if not set */
    defaultValue?: string;
    /** Current value (set during onboarding) */
    value?: string | null;
    /** Conditional visibility based on other settings */
    visibleIf?: (settings: Record<string, OnboardingSetting>) => boolean;
    /** Callback when value is set */
    onSetAction?: (value: string | boolean) => string | undefined;
}
/**
 * Onboarding configuration for an agent or plugin.
 */
export interface OnboardingConfig {
    /** Setting definitions */
    settings: Record<string, OnboardingSetting>;
    /** Optional platform-specific messages */
    messages?: {
        welcome?: string[];
        askSetting?: string;
        settingUpdated?: string;
        allComplete?: string;
        error?: string;
    };
    /** Onboarding flow mode */
    mode?: "conversational" | "form" | "hybrid";
}
/**
 * Default onboarding messages.
 */
export declare const DEFAULT_ONBOARDING_MESSAGES: {
    welcome: string[];
    askSetting: string;
    settingUpdated: string;
    allComplete: string;
    error: string;
};
/**
 * Common API key settings for quick setup.
 */
export declare const COMMON_API_KEY_SETTINGS: Record<string, Partial<OnboardingSetting>>;
/**
 * Create an onboarding config from a list of required secret keys.
 */
export declare function createOnboardingConfig(requiredKeys: string[], optionalKeys?: string[], customSettings?: Record<string, Partial<OnboardingSetting>>): OnboardingConfig;
/**
 * Get unconfigured required settings from an onboarding config.
 */
export declare function getUnconfiguredRequired(config: OnboardingConfig): Array<[string, OnboardingSetting]>;
/**
 * Get unconfigured optional settings from an onboarding config.
 */
export declare function getUnconfiguredOptional(config: OnboardingConfig): Array<[string, OnboardingSetting]>;
/**
 * Check if all required settings are configured.
 */
export declare function isOnboardingComplete(config: OnboardingConfig): boolean;
/**
 * Get the next setting to configure (respects dependencies).
 */
export declare function getNextSetting(config: OnboardingConfig): [string, OnboardingSetting] | null;
/**
 * Generate a prompt for the LLM to ask for a specific setting.
 */
export declare function generateSettingPrompt(_key: string, setting: OnboardingSetting, agentName: string): string;
//# sourceMappingURL=config.d.ts.map