import { type ClientFactory } from "../types.js";
import { type AuthRequest } from "../types.js";
import { type RequestMapper, type AuthRequestFactory } from "./request-mapper.js";
export interface ClientProvider<TClient, TOptions = void> {
    getClient(authRequest: AuthRequest, options?: TOptions): Promise<TClient>;
    invalidateClientCache(authRequest: AuthRequest, options?: TOptions): Promise<boolean>;
}
export declare function createClientProvider<TClient, TOptions = void>(clientFactory: ClientFactory<TClient, TOptions>): Promise<ClientProvider<TClient, TOptions>>;
export declare function createClientProviderWithMapper<TClient, TRequest, TOptions = void>(clientFactory: ClientFactory<TClient, TOptions>, requestMapper: RequestMapper<TRequest, TOptions>, authRequestFactory: AuthRequestFactory): Promise<{
    getClient(request: TRequest): Promise<TClient>;
    invalidateClientCache(request: TRequest): Promise<boolean>;
}>;
//# sourceMappingURL=provider.d.ts.map