import { Client } from '@botpress/client';
import { type Credentials, type ProjectCredentialsContext } from '../../auth/index.js';
/**
 * Connection options shared by every catalog source (integrations, plugins,
 * interfaces). These are the credential/scope fields the three managers used to
 * each carry independently.
 */
export interface CatalogClientOptions {
    project?: ProjectCredentialsContext;
    apiUrl?: string;
    workspaceId?: string;
    credentials?: Credentials;
}
/**
 * Single place that builds the authenticated `@botpress/client` for catalog
 * lookups. Collapses the byte-for-byte `getClient()` ladder previously copied
 * into IntegrationManager / PluginManager: project-scoped → `getProjectClient`;
 * bare credentials → a direct `Client`; otherwise the ambient project client. The
 * client is built lazily and memoized per factory instance.
 *
 * Note: the old InterfaceManager always routed through `getProjectClient` (it had
 * no bare-credentials branch). Interfaces now use this same 3-branch ladder. This
 * is behavior-equivalent for every current caller (none construct an interface
 * source with credentials-only and no project/workspace scope); a future
 * credentials-only interface caller would take the direct-`Client` branch instead.
 */
export declare class CatalogClientFactory {
    readonly options: CatalogClientOptions;
    private client?;
    constructor(options?: CatalogClientOptions);
    getClient(): Promise<Client>;
}
//# sourceMappingURL=client-factory.d.ts.map