import { type TopLevelConfig } from '@cloud-copilot/iam-collect';
import { IamCollectClient, type IamCollectClientOptions } from './client.js';
/**
 * Load IAM collect configs from the specified paths.
 *
 * @param configPaths the paths to the config files
 * @returns the top-level configs
 */
export declare function loadCollectConfigs(configPaths: string[]): Promise<TopLevelConfig[]>;
/**
 * Configuration for a plugin that wraps the default `IamCollectClient` with a
 * custom implementation.
 *
 * The factory function referenced by `factoryExport` is called with
 * `(store: AwsIamStore, options: IamCollectClientOptions | undefined, data: unknown)`
 * and must return an `IamCollectClient` (or subclass).
 */
export interface ClientFactoryPlugin {
    /** Package name (e.g. '@my-org/my-factory') or absolute path — resolved via require() */
    module: string;
    /** Name of the exported factory function */
    factoryExport: string;
    /** JSON-serializable data passed as the third argument to the factory */
    data: unknown;
}
export interface CollectClientOptions extends IamCollectClientOptions {
    clientFactoryPlugin?: ClientFactoryPlugin;
}
/**
 * Get a collect client for the specified partition using the provided configs.
 *
 * If a `clientFactoryPlugin` is provided, the factory function is called with
 * `(store, clientOptions, data)` — i.e. the raw `AwsIamStore` and
 * `IamCollectClientOptions` rather than a pre-built client — so the factory
 * can construct whatever client subclass it needs without discarding an
 * intermediate instance.
 *
 * @param configs - The top-level configs to use for storage.
 * @param partition - Which partition to use (aws, aws-cn, aws-us-gov).
 * @param options - Optional client options including a `clientFactoryPlugin`.
 * @returns The iam-collect client to use for retrieving IAM resources.
 */
export declare function getCollectClient(configs: TopLevelConfig[], partition: string, options?: CollectClientOptions): Promise<IamCollectClient>;
//# sourceMappingURL=collect.d.ts.map