/**
 * Hierarchical config resolution across tiers:
 *   global (~/.bobbit/) → server (<server-cwd>/.bobbit/) → project (<project>/.bobbit/)
 *
 * Higher specificity wins. For entities, project-level overrides server-level
 * overrides global-level (full override by name, not field-level merge).
 * For scalar config, first defined value in project → server → global → default wins.
 */
export type ConfigScope = "global" | "server" | "project";
/**
 * Merge named entities across tiers. Later tiers override earlier ones by name.
 *
 * Example: a role "reviewer" at global level is overridden entirely if a
 * "reviewer" role exists at the project level. Roles that only exist at
 * global level remain available in all projects.
 */
export declare function resolveEntities<T extends {
    name: string;
}>(globalItems: T[], serverItems: T[], projectItems: T[]): Array<T & {
    scope: ConfigScope;
}>;
/** Minimal interface for a config store that can get scalar values by key. */
export interface ScalarConfigSource {
    get(key: string): string | undefined;
}
/**
 * Resolve a scalar config value (e.g. project.yaml keys like `build_command`,
 * `test_command`, default models) through the tier cascade.
 *
 * Resolution order: project → server → global → built-in default.
 */
export declare function resolveScalarConfig(key: string, projectConfig: ScalarConfigSource, serverConfig: ScalarConfigSource, globalConfig: ScalarConfigSource | null, defaults: Record<string, string>): {
    value: string;
    source: ConfigScope | "default";
};
/**
 * Unified config resolution using ProjectContext-shaped objects.
 *
 * Convenience wrapper around resolveScalarConfig that extracts the
 * `projectConfigStore` from context objects.
 */
export declare function resolveConfig(key: string, projectContext: {
    projectConfigStore: ScalarConfigSource;
}, serverContext?: {
    projectConfigStore: ScalarConfigSource;
}, globalConfig?: ScalarConfigSource | null, defaults?: Record<string, string>): {
    value: string;
    source: ConfigScope | "default";
};
//# sourceMappingURL=config-resolver.d.ts.map