import { type ExecTarget, type GateConfig, type OatConfig, type OatLocalConfig, type UserConfig } from './oat-config.js';
export type ResolvedConfigSource = 'shared' | 'local' | 'user' | 'env' | 'default';
export interface ResolvedKeyEntry {
    value: unknown;
    source: ResolvedConfigSource;
}
export interface ResolvedConfig {
    shared: OatConfig;
    local: OatLocalConfig;
    user: UserConfig;
    resolved: Record<string, ResolvedKeyEntry>;
}
export interface ResolveEffectiveConfigDependencies {
    readOatConfig: (repoRoot: string) => Promise<OatConfig>;
    readOatLocalConfig: (repoRoot: string) => Promise<OatLocalConfig>;
    readUserConfig: (userConfigDir: string) => Promise<UserConfig>;
}
export declare function resolveEffectiveConfig(repoRoot: string, userConfigDir: string, env?: NodeJS.ProcessEnv, overrides?: Partial<ResolveEffectiveConfigDependencies>): Promise<ResolvedConfig>;
export declare function resolveGate(effective: ResolvedConfig, skillName: string): GateConfig | null;
export declare function resolveExecTargets(effective: ResolvedConfig): Record<string, ExecTarget>;
export type ExecTargetOrigin = 'builtin' | 'user' | 'shared' | 'local';
export interface ResolvedExecTargetView {
    target: ExecTarget;
    origin: ExecTargetOrigin;
    explicitlyConfigured: boolean;
    enabled: boolean;
}
export declare function resolveExecTargetViews(effective: ResolvedConfig): Record<string, ResolvedExecTargetView>;
//# sourceMappingURL=resolve.d.ts.map