import type { parseCanonicalAgentFile } from '../../agents/canonical/index.js';
import type { CommandContext, GlobalOptions } from '../../app/command-context.js';
import type { SyncConfig } from '../../config/index.js';
import type { CopyTransform, DriftReport } from '../../drift/index.js';
import type { Manifest } from '../../manifest/index.js';
import type { CodexRoleExport } from '../../providers/codex/codec/export-to-codex.js';
import type { CodexMaterializeRoleOptions } from '../../providers/codex/codec/materialize.js';
import type { PathMapping, ProviderAdapter } from '../../providers/shared/index.js';
import type { ConcreteScope, ContentType, Scope, SyncStrategy } from '../../shared/types.js';
export interface ProviderListSummary {
    managed: number;
    inSync: number;
    drifted: number;
    missing: number;
}
export interface ProviderListItem {
    name: string;
    displayName: string;
    detected: boolean;
    defaultStrategy: SyncStrategy;
    contentTypes: ContentType[];
    summary: ProviderListSummary;
}
export interface ProvidersListDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveScopeRoot: (scope: ConcreteScope, context: CommandContext) => Promise<string>;
    getAdapters: () => ProviderAdapter[];
    getSyncMappings: (adapter: ProviderAdapter, scope: Scope) => PathMapping[];
    loadManifest: (manifestPath: string) => Promise<Manifest>;
    detectDrift: (entry: Manifest['entries'][number], scopeRoot: string, copyTransform?: CopyTransform) => Promise<DriftReport>;
}
export interface ProviderInspectMappingState {
    scope: ConcreteScope;
    contentType: string;
    providerDir: string;
    managed: number;
    inSync: number;
    drifted: number;
    missing: number;
}
export interface ProviderInspectResult {
    name: string;
    displayName: string;
    detected: boolean;
    defaultStrategy: SyncStrategy;
    projectMappings: PathMapping[];
    userMappings: PathMapping[];
    version: string | null;
    mappings: ProviderInspectMappingState[];
}
export interface ProvidersInspectDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveScopeRoot: (scope: ConcreteScope, context: CommandContext) => Promise<string>;
    getAdapters: () => ProviderAdapter[];
    getSyncMappings: (adapter: ProviderAdapter, scope: Scope) => PathMapping[];
    loadManifest: (manifestPath: string) => Promise<Manifest>;
    detectDrift: (entry: Manifest['entries'][number], scopeRoot: string, copyTransform?: CopyTransform) => Promise<DriftReport>;
}
export interface ProvidersSetDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveScopeRoot: (scope: ConcreteScope, context: CommandContext) => Promise<string>;
    getAdapters: () => ProviderAdapter[];
    loadSyncConfig: (configPath: string) => Promise<SyncConfig>;
    saveSyncConfig: (configPath: string, config: SyncConfig) => Promise<SyncConfig>;
}
export interface CodexMaterializeResult {
    status: 'preview' | 'written';
    dryRun: boolean;
    scope: ConcreteScope;
    agentPath: string;
    roleName: string;
    rolePath: string;
    configPath: string;
    configFile: string;
    tomlPreview: string;
}
export interface ProvidersCodexMaterializeDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveScopeRoot: (scope: ConcreteScope, context: CommandContext) => Promise<string>;
    parseCanonicalAgentFile: typeof parseCanonicalAgentFile;
    materializeCodexRole: (options: CodexMaterializeRoleOptions) => CodexRoleExport;
}
export interface ProvidersCodexDependencies {
    materialize?: Partial<ProvidersCodexMaterializeDependencies>;
}
//# sourceMappingURL=providers.types.d.ts.map