import type { AIBackendProfile, SavedSecret } from './backendProfileSchema.js';
export type SecretSatisfactionSource = 'none' | 'machineEnv' | 'sessionOnly' | 'selectedSaved' | 'rememberedSaved' | 'defaultSaved';
export type SecretSatisfactionItem = Readonly<{
    envVarName: string;
    required: boolean;
    isSatisfied: boolean;
    satisfiedBy: SecretSatisfactionSource;
    savedSecretId: string | null;
}>;
export type SecretSatisfactionResult = Readonly<{
    hasSecretRequirements: boolean;
    items: SecretSatisfactionItem[];
    /**
     * True when all required secret requirements are satisfied.
     */
    isSatisfied: boolean;
}>;
export type SecretSatisfactionParams = Readonly<{
    profile: AIBackendProfile | null;
    secrets: SavedSecret[];
    /**
     * Per-profile default bindings from settings: envVarName -> savedSecretId.
     */
    defaultBindings?: Record<string, string> | null;
    /**
     * Explicit per-run selection (e.g. New Session UI state): envVarName -> savedSecretId (or '' for “prefer machine env”).
     */
    selectedSecretIds?: Record<string, string | null | undefined> | null;
    /**
     * Remembered per-screen selection (optional): envVarName -> savedSecretId.
     */
    rememberedSecretIds?: Record<string, string | null | undefined> | null;
    /**
     * Session-only secrets (never persisted): envVarName -> plaintext.
     */
    sessionOnlyValues?: Record<string, string | null | undefined> | null;
    /**
     * Whether the machine environment provides envVarName: envVarName -> true/false/unknown.
     */
    machineEnvReadyByName?: Record<string, boolean | null | undefined> | null;
}>;
/**
 * Centralized secret satisfaction logic (multi-secret).
 *
 * Precedence per env var (highest -> lowest):
 * - sessionOnlyValues[env]
 * - selectedSecretIds[env] (explicit per-run saved key selection)
 * - rememberedSecretIds[env] (per-screen remembered selection)
 * - defaultBindings[env] (profile default saved key)
 * - machineEnvReadyByName[env] (daemon env provides required var)
 *
 * Special case:
 * - If selectedSecretIds[env] === '' (empty string), treat as “prefer machine env”:
 *   do NOT count remembered/default saved secrets as satisfying; only machine env or sessionOnly.
 */
export declare function getSecretSatisfaction(params: SecretSatisfactionParams): SecretSatisfactionResult;
//# sourceMappingURL=secretSatisfaction.d.ts.map