import { AfterExecutionMiddlewareOptions, AnonymousAuthMiddlewareOptions, AuthMiddlewareOptions, BeforeExecutionMiddlewareOptions, Client, CorrelationIdMiddlewareOptions, Credentials, ExistingTokenMiddlewareOptions, HttpMiddlewareOptions, HttpUserAgentOptions, LoggerMiddlewareOptions, Middleware, PasswordAuthMiddlewareOptions, QueueMiddlewareOptions, RefreshAuthMiddlewareOptions, TelemetryOptions } from "../types/sdk.js";
export default class ClientBuilder {
    private projectKey;
    private authMiddleware;
    private httpMiddleware;
    private userAgentMiddleware;
    private correlationIdMiddleware;
    private loggerMiddleware;
    private queueMiddleware;
    private telemetryMiddleware;
    private beforeMiddleware;
    private afterMiddleware;
    private middlewares;
    withProjectKey(key: string): ClientBuilder;
    defaultClient(baseUri: string, credentials: Credentials, oauthUri?: string, projectKey?: string): ClientBuilder;
    withAuthMiddleware(authMiddleware: Middleware): ClientBuilder;
    withMiddleware(middleware: Middleware): ClientBuilder;
    withClientCredentialsFlow(options: AuthMiddlewareOptions): ClientBuilder;
    withPasswordFlow(options: PasswordAuthMiddlewareOptions): ClientBuilder;
    withAnonymousSessionFlow(options: AnonymousAuthMiddlewareOptions): ClientBuilder;
    withRefreshTokenFlow(options: RefreshAuthMiddlewareOptions): ClientBuilder;
    withExistingTokenFlow(authorization: string, options?: ExistingTokenMiddlewareOptions): ClientBuilder;
    withHttpMiddleware(options: HttpMiddlewareOptions): ClientBuilder;
    withUserAgentMiddleware(options?: HttpUserAgentOptions): ClientBuilder;
    withQueueMiddleware(options: QueueMiddlewareOptions): ClientBuilder;
    withLoggerMiddleware(options?: LoggerMiddlewareOptions): ClientBuilder;
    withCorrelationIdMiddleware(options: CorrelationIdMiddlewareOptions): ClientBuilder;
    withTelemetryMiddleware<T extends TelemetryOptions>(options: T): ClientBuilder;
    withBeforeExecutionMiddleware(options: BeforeExecutionMiddlewareOptions): this;
    withAfterExecutionMiddleware(options: AfterExecutionMiddlewareOptions): this;
    build(): Client;
}
//# sourceMappingURL=ClientBuilder.d.ts.map