import type { ModelV2Info, ProviderV2Info } from "@opencode-ai/sdk/v2/types";
import type { Hooks } from "./registration.js";
export interface CatalogProviderRecord {
    readonly provider: ProviderV2Info;
    readonly models: ReadonlyMap<string, ModelV2Info>;
}
export interface CatalogDraft {
    readonly provider: {
        list(): readonly CatalogProviderRecord[];
        get(providerID: string): CatalogProviderRecord | undefined;
        update(providerID: string, update: (provider: ProviderV2Info) => void): void;
        remove(providerID: string): void;
    };
    readonly model: {
        get(providerID: string, modelID: string): ModelV2Info | undefined;
        update(providerID: string, modelID: string, update: (model: ModelV2Info) => void): void;
        remove(providerID: string, modelID: string): void;
        readonly default: {
            get(): {
                providerID: string;
                modelID: string;
            } | undefined;
            set(providerID: string, modelID: string): void;
        };
    };
}
export type CatalogHooks = Hooks<{
    transform: CatalogDraft;
}>;
