export interface SyncCallbacks {
    onProgress?: (message: string) => void;
    onSuccess?: (message: string) => void;
    onError?: (message: string) => void;
}
export interface BotGeneratorOptions {
    projectPath: string;
    outputPath?: string;
    adkCommand?: 'adk-dev' | 'adk-build' | 'adk-deploy';
    callbacks?: SyncCallbacks;
}
export declare class BotGenerator {
    private projectPath;
    private outputPath;
    private adkCommand?;
    private callbacks?;
    /**
     * Per-alias capability verdicts computed during `generateBotDefinition` (which
     * already resolves `enabled` + merged config), then consumed by
     * `generateIntegrationsDefinition` / `generatePluginsDefinition` to emit the
     * `IntegrationStatuses` / `PluginStatuses` carriers. Keyed by alias. The verdict
     * is the whole carrier — enabledness is derivable (`state === 'available'`), so
     * there is deliberately no parallel `enabled` flag to keep in sync.
     */
    private integrationStatuses;
    private pluginStatuses;
    constructor(options: BotGeneratorOptions);
    private listFilesRecursive;
    private removeEmptyDirectories;
    generate(): Promise<void>;
    /**
     * Emit the three `bp_modules`-gated files (`bot.definition.ts`, `integrations.ts`,
     * `plugins.ts`). Must run **after** the `bp add` syncs have populated `bp_modules`:
     * the existsSync gating in these emitters is only accurate post-sync (a clean/CI
     * build starts with an empty `bp_modules`, so a pre-sync emission would classify
     * every dependency `not_installed`). `generateBotProject` validates that every
     * dependency module is actually on disk before calling this, so the MODE B stub path
     * below survives only as a fail-safe for out-of-band deletions.
     */
    emitDependencyArtifacts(): Promise<void>;
    private generateIntegrationsTypes;
    private generatePluginsTypes;
    private generateTriggerTypes;
    private generateEventTypes;
    private generateConversationTypes;
    private generateIntegrationActionTypes;
    private generatePluginActionTypes;
    private generateClientWrapper;
    private generateRuntimeTypes;
    private generateInterfacesTypes;
    /** Serialize the per-alias carrier verdicts to a JS object literal body. */
    private buildStatusEntries;
    private generateIntegrationsDefinition;
    private generatePluginsDefinition;
    private generateInterfacesDefinition;
    /**
     * Reports errors and merge details when fetching server-side configs.
     *
     * Always warns on fetch errors (network, auth) so the user knows server-only values may be lost.
     * Only logs per-item merge details (preserved/overridden fields) when local config is defined —
     * items without local config use server config as-is, so there's no merge to report.
     */
    private reportServerConfigSync;
    private generateBotDefinition;
    private generateBotIndex;
    private generatePackageJson;
    private generateTsConfig;
    private generateGlobalTypes;
    private copyAssets;
    private copyDirectory;
    generateAdkRuntime(): Promise<void>;
    private generateComponentUrlsBlock;
    copyAssetsRuntime(): Promise<void>;
}
export declare function generateBotProject(options: BotGeneratorOptions): Promise<void>;
//# sourceMappingURL=generator.d.ts.map