import { AfterExecutionMiddlewareOptions, AuthMiddlewareOptions, BeforeExecutionMiddlewareOptions, Client, ConcurrentModificationMiddlewareOptions, CorrelationIdMiddlewareOptions, Credentials, ErrorMiddlewareOptions, ExistingTokenMiddlewareOptions, HttpMiddlewareOptions, HttpUserAgentOptions, LoggerMiddlewareOptions, Middleware, PasswordAuthMiddlewareOptions, QueueMiddlewareOptions, RefreshAuthMiddlewareOptions, TelemetryOptions } from "../types/types.js";
export default class ClientBuilder {
    private projectKey;
    private authMiddleware;
    private httpMiddleware;
    private userAgentMiddleware;
    private correlationIdMiddleware;
    private loggerMiddleware;
    private queueMiddleware;
    private concurrentMiddleware;
    private telemetryMiddleware;
    private beforeMiddleware;
    private afterMiddleware;
    private errorMiddleware;
    private middlewares;
    constructor();
    withProjectKey(key: string): ClientBuilder;
    defaultClient(baseUri: string, credentials: Credentials, oauthUri?: string, projectKey?: string, scopes?: Array<string>, httpClient?: Function): ClientBuilder;
    private withAuthMiddleware;
    withMiddleware(middleware: Middleware): ClientBuilder;
    withErrorMiddleware(options?: ErrorMiddlewareOptions): ClientBuilder;
    withClientCredentialsFlow(options: AuthMiddlewareOptions): ClientBuilder;
    withPasswordFlow(options: PasswordAuthMiddlewareOptions): ClientBuilder;
    withAnonymousSessionFlow(options: AuthMiddlewareOptions): 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): this;
    withCorrelationIdMiddleware(options?: CorrelationIdMiddlewareOptions): ClientBuilder;
    withConcurrentModificationMiddleware(options?: ConcurrentModificationMiddlewareOptions): ClientBuilder;
    withTelemetryMiddleware<T extends TelemetryOptions>(options: T): ClientBuilder;
    withBeforeExecutionMiddleware(options: BeforeExecutionMiddlewareOptions): this;
    withAfterExecutionMiddleware(options: AfterExecutionMiddlewareOptions): this;
    build(): Client;
}
//# sourceMappingURL=builder.d.ts.map