import { createProviderApiKeyAuthMethod } from "../plugins/provider-api-key-auth.js";
import type { ProviderPlugin, ProviderPluginCatalog, ProviderPluginWizardSetup } from "../plugins/types.js";
import type { KaijiBotPluginApi, KaijiBotPluginConfigSchema, KaijiBotPluginDefinition } from "./plugin-entry.js";
import { buildSingleProviderApiKeyCatalog } from "./provider-catalog-shared.js";
type ApiKeyAuthMethodOptions = Parameters<typeof createProviderApiKeyAuthMethod>[0];
export type SingleProviderPluginApiKeyAuthOptions = Omit<ApiKeyAuthMethodOptions, "providerId" | "expectedProviders" | "wizard"> & {
    expectedProviders?: string[];
    wizard?: false | ProviderPluginWizardSetup;
};
export type SingleProviderPluginCatalogOptions = {
    buildProvider: Parameters<typeof buildSingleProviderApiKeyCatalog>[0]["buildProvider"];
    allowExplicitBaseUrl?: boolean;
    run?: never;
    order?: never;
} | {
    run: ProviderPluginCatalog["run"];
    order?: ProviderPluginCatalog["order"];
    buildProvider?: never;
    allowExplicitBaseUrl?: never;
};
export type SingleProviderPluginOptions = {
    id: string;
    name: string;
    description: string;
    kind?: KaijiBotPluginDefinition["kind"];
    configSchema?: KaijiBotPluginConfigSchema | (() => KaijiBotPluginConfigSchema);
    provider?: {
        id?: string;
        label: string;
        docsPath: string;
        aliases?: string[];
        envVars?: string[];
        auth?: SingleProviderPluginApiKeyAuthOptions[];
        catalog: SingleProviderPluginCatalogOptions;
    } & Omit<ProviderPlugin, "id" | "label" | "docsPath" | "aliases" | "envVars" | "auth" | "catalog">;
    register?: (api: KaijiBotPluginApi) => void;
};
export declare function defineSingleProviderPluginEntry(options: SingleProviderPluginOptions): {
    id: string;
    name: string;
    description: string;
    configSchema: KaijiBotPluginConfigSchema;
    register: NonNullable<KaijiBotPluginDefinition["register"]>;
} & Pick<KaijiBotPluginDefinition, "kind" | "reload" | "nodeHostCommands" | "securityAuditCollectors">;
export {};
