import type { CodexBackendMode } from './providerSettings/definitions/codex.js';
import type { OpenCodeBackendMode } from './providerSettings/definitions/opencode.js';
import type { AgentCore, AgentCoreRuntimeControlSurface, AgentId } from './types.js';
type PartialDeepLeaf = string | number | boolean | bigint | symbol | null | undefined | Date | RegExp | Function;
export type PartialDeep<T> = T extends PartialDeepLeaf ? T : T extends ReadonlyArray<infer U> ? ReadonlyArray<PartialDeep<U>> : T extends Array<infer U> ? Array<PartialDeep<U>> : T extends object ? {
    readonly [K in keyof T]?: PartialDeep<T[K]>;
} : T;
export type AgentRuntimeKindsByAgentId = Readonly<{
    codex: CodexBackendMode;
    opencode: OpenCodeBackendMode;
}>;
export type AgentRuntimeKindCapableAgentId = keyof AgentRuntimeKindsByAgentId;
export type AgentRuntimeKind = AgentRuntimeKindsByAgentId[AgentRuntimeKindCapableAgentId];
export type AgentRuntimeKindFor<TAgentId extends AgentId> = TAgentId extends AgentRuntimeKindCapableAgentId ? AgentRuntimeKindsByAgentId[TAgentId] : never;
export type AgentRuntimeKindOverrideSurface = AgentCoreRuntimeControlSurface;
export type AgentRuntimeKindOverrides = Readonly<PartialDeep<AgentRuntimeKindOverrideSurface>>;
export type AgentRuntimeKindDefinition<TKind extends string = string> = Readonly<{
    kind: TKind;
    overrides?: AgentRuntimeKindOverrides;
}>;
export type AgentRuntimeKindsManifest<TKind extends string = string> = Readonly<{
    defaultKind: TKind;
    byKind: Readonly<Record<TKind, AgentRuntimeKindDefinition<TKind>>>;
}>;
export type AnyAgentRuntimeKindsManifest = AgentRuntimeKindsManifest<string>;
export declare function getAgentRuntimeKindsManifest<TAgentId extends AgentId>(agentId: TAgentId): AgentCore['runtimeKinds'] | null;
export declare function resolveDefaultAgentRuntimeKind<TAgentId extends AgentId>(agentId: TAgentId): AgentRuntimeKindFor<TAgentId> | null;
export declare function resolveAgentRuntimeControlSurface<TAgentId extends AgentId>(agentId: TAgentId, runtimeKind: AgentRuntimeKindFor<TAgentId> | null | undefined): AgentCoreRuntimeControlSurface;
export {};
//# sourceMappingURL=runtimeKinds.d.ts.map