/**
 * Provider Capability Matrix Loader
 *
 * Loads and queries the authoritative provider capability matrix from
 * agentic/code/providers/capability-matrix.yaml. Provides typed access
 * for the scheduler, agent teams, steward, and runtime-info CLI.
 *
 * @issue #604
 * @unblocks #597, #598, #599
 */
export type ProviderStatus = 'stable' | 'experimental' | 'deprecated';
export type FeatureKey = 'cron' | 'agent_teams' | 'tasks' | 'mcp' | 'behaviors' | 'mission_control' | 'daemon';
/**
 * Daemon support tier for a provider.
 *
 * - `native`      — full headless daemon (aiwg daemon start/stop/status)
 * - `pty-adapter` — PTY bridge for TUI-based platforms (secondary/opt-in mode)
 * - `unsupported` — requires a display server or IDE host; daemon not applicable
 *
 * @issue #656
 */
export type DaemonTier = 'native' | 'pty-adapter' | 'unsupported';
export type EmulationStrategy = 'native' | 'hooks' | 'aiwg-mc' | 'aiwg-schedule' | 'aiwg-daemon' | null;
export type DeployTarget = 'project' | 'home' | 'mixed';
export interface ArtifactPaths {
    agents: string;
    commands: string;
    skills: string;
    skills_cross_agent?: string;
    rules: string;
    behaviors: string | null;
}
export interface HookWiring {
    at_link_support: boolean;
    hook_file?: string;
    hook_directive?: string;
    fallback?: string;
    context_file: string;
}
export interface ProviderCapabilities {
    display_name: string;
    aliases?: string[];
    status: ProviderStatus;
    /** Primary daemon support tier. @issue #656 */
    daemon_tier: DaemonTier;
    /** True if the provider also supports the PTY adapter as a secondary mode. @issue #656 */
    daemon_pty_adapter: boolean;
    artifact_paths: ArtifactPaths;
    native_features: Record<FeatureKey, boolean>;
    emulation: Record<FeatureKey, EmulationStrategy>;
    hook_wiring: HookWiring;
    deploy_target: DeployTarget;
    aggregated_output: boolean;
    agent_capabilities?: Record<string, AgentCapabilities>;
}
export interface AgentCapabilities {
    context_window?: number;
    max_output_tokens?: number;
    max_tool_calls?: number;
    max_concurrent_subagents?: number;
    supports_streaming?: boolean;
    million_context_requires_extra_usage?: boolean;
    quota_available?: boolean;
    notes?: string;
    recovery?: Record<string, string>;
}
export type DispatchPreflightStatus = 'ok' | 'would_overflow' | 'quota_unavailable' | 'tool_budget_exceeded' | 'unknown_provider';
export interface DispatchPreflightInput {
    provider: string;
    agentType?: string;
    promptTokens?: number;
    contextTokens?: number;
    outputTokens?: number;
    toolCalls?: number;
    requiresMillionContext?: boolean;
}
export interface DispatchPreflightResult {
    status: DispatchPreflightStatus;
    provider: string;
    agentType: string;
    estimatedTokens: number;
    contextWindow: number | null;
    maxOutputTokens: number | null;
    maxToolCalls: number | null;
    recoveryHint: string | null;
    message: string;
}
export interface FeatureDefinition {
    description: string;
    native_example: string | null;
    emulation_strategies: Record<string, string>;
}
export interface CapabilityMatrix {
    version: string;
    providers: Record<string, ProviderCapabilities>;
    features: Record<FeatureKey, FeatureDefinition>;
}
/**
 * Load the capability matrix from disk (cached after first load).
 */
export declare function loadCapabilityMatrix(): CapabilityMatrix;
/**
 * Force-reload the matrix (e.g. after edits during validate-metadata).
 */
export declare function reloadCapabilityMatrix(): CapabilityMatrix;
/**
 * Get the full capabilities object for a provider by key or alias.
 */
export declare function getProviderCapabilities(providerKey: string): ProviderCapabilities | undefined;
export declare function getAgentCapabilities(providerKey: string, agentType?: string): AgentCapabilities | undefined;
/**
 * Pre-flight a provider subagent dispatch before spawning work. The helper is
 * intentionally deterministic: callers pass token/tool estimates and receive a
 * structured routing signal instead of pattern-matching provider error strings.
 */
export declare function preflightSubagentDispatch(input: DispatchPreflightInput): DispatchPreflightResult;
/**
 * Check whether a provider supports a feature natively (without emulation).
 */
export declare function supportsNative(caps: ProviderCapabilities, feature: FeatureKey): boolean;
/**
 * Get the emulation strategy for a feature on a provider.
 * Returns 'native' if the provider supports it natively, or the
 * emulation strategy string, or null if unsupported entirely.
 */
export declare function getEmulationStrategy(caps: ProviderCapabilities, feature: FeatureKey): EmulationStrategy;
/**
 * List all provider keys.
 */
export declare function listProviders(): string[];
/**
 * List all providers that natively support a given feature.
 */
export declare function providersWithNativeSupport(feature: FeatureKey): string[];
/**
 * Get the feature definition (description, examples, strategies).
 */
export declare function getFeatureDefinition(feature: FeatureKey): FeatureDefinition | undefined;
/**
 * Get the daemon tier for a provider.
 * Returns 'unsupported' if the provider is not found or has no daemon_tier.
 *
 * @issue #656
 */
export declare function getDaemonTier(providerKey: string): DaemonTier;
/**
 * List all providers that support daemon mode (Tier 1: native).
 *
 * @issue #656
 */
export declare function daemonCapableProviders(): string[];
/**
 * Format the full capability matrix as a human-readable table string.
 */
export declare function formatCapabilityTable(): string;
/**
 * Format a single feature's support across all providers.
 */
export declare function formatFeatureSupport(feature: FeatureKey): string;
//# sourceMappingURL=capability-matrix.d.ts.map