import type { BucketedUserConfig } from '@devcycle/types';
import { DVCPopulatedUser } from './User';
type PromiseResolver = {
    resolve: (value: BucketedUserConfig) => void;
    reject: (err?: any) => void;
};
type RequestParams = {
    sse: boolean;
    lastModified?: number;
    etag?: string;
};
/**
 * Ensures we only have one active config request at a time
 * any calls made while another is ongoing will be merged together by using the latest user object provided
 */
export declare class ConfigRequestConsolidator {
    private requestConfigFunction;
    private handleConfigReceivedFunction;
    private nextUser;
    currentPromise: Promise<BucketedUserConfig> | null;
    resolvers: PromiseResolver[];
    requestParams: RequestParams | null;
    constructor(requestConfigFunction: (user: DVCPopulatedUser, params?: RequestParams) => Promise<BucketedUserConfig>, handleConfigReceivedFunction: (config: BucketedUserConfig, user: DVCPopulatedUser) => void, nextUser: DVCPopulatedUser);
    queue(user: DVCPopulatedUser | null, requestParams?: RequestParams): Promise<BucketedUserConfig>;
    private processQueue;
    private performRequest;
}
export {};
