import { AcmVendors, Consents, GraphQLQuery, LegacyHashService, LegacySettings, Ruleset, Translations, UserConsentResponse, UserConsentResponseV2 } from './interfaces';
import { CONSENT_ACTION, CONSENT_TYPE } from '../DataFacade/enums';
import { ConsentDTOV2, ConsentDTOV2Record } from '../DataFacade/interfaces/interfaces';
import { TrackEventParameters } from '../DataFacade/interfaces';
import { DataTransferSettings } from '../../modules/helpers';
import { HttpSuccess, RequestOptions } from '../../modules/http-client/interfaces';
import { ServiceHashArrayObject } from '../SettingsV2/interfaces/interfaces';
import { StorageTCF } from '../Storage/interfaces';
import { UcDomains } from '../../interfaces';
import { VendorList } from '../../../libs/@iabtcf/core';
declare global {
    interface Window {
        UC_AB_VARIANT?: string;
    }
}
export default class Api {
    private static instance;
    private API;
    private abTestVariant;
    private controllerIdInstance;
    private jsonCacheBustingString;
    private jsonFileLanguage;
    private jsonFileVersion;
    private settingsId;
    private rulesetId;
    private useEuCdn;
    private disableServerConsents;
    private aggregatedServicesCache;
    private translationsCache;
    private constructor();
    static getInstance(): Api;
    static resetInstance(): void;
    resetAggregatedServicesCache(): void;
    resetTranslationsCache(): void;
    getAbTestVariant(): string;
    getJsonFileLanguage(): string;
    getJsonFileVersion(): string;
    getSettingsId(): string;
    getRulesetId(): string;
    getDisableServerConsents(): boolean;
    setJsonCacheBustingString(jsonCacheBustingString: string): void;
    setJsonFileLanguage(jsonFileLanguage: string): void;
    setJsonFileVersion(jsonFileVersion: string): void;
    setDisableServerConsents(disableServerConsents: boolean): void;
    /**
     * When activated, only servers inside of the EU will be used
     *
     * @param useSandbox
     * @param domains Optional whitelabeling domains given by clients
     */
    setDomains(useSandbox: boolean, domains?: UcDomains | null): void;
    setSettingsId(settingsId: string): void;
    setRulesetId(rulesetId: string): void;
    /**
     * When activated, only servers inside of the EU will be used
     *
     * @param activate
     */
    setEuMode(activate: boolean): void;
    /**
     * Determine if API service was initialized in EU servers mode
     */
    isEuMode(): boolean;
    /**
     * Get the aggregator service URI
     *
     * @private
     */
    private getAggregatorUri;
    /**
     * Get the CDN URI containing JSON config files
     *
     * @private
     */
    private getCdnUri;
    /**
     * Get GraphQl URI
     *
     * @private
     */
    private getGraphQLUri;
    /**
     * Get the tcf data URI (v2)
     *
     * @private
     */
    private getTcfDataV2Uri;
    /**
     * Call aggregator service endpoint, which will return service
     */
    fetchAggregatedServices(servicesHashArray: ServiceHashArrayObject[], useCache?: boolean): Promise<LegacyHashService[]>;
    fetchRuleset(): Promise<Ruleset>;
    fetchAvailableLanguages(): Promise<string[]>;
    fetchTranslations(): Promise<Translations | null>;
    mergeAbVariant(response: HttpSuccess): Promise<LegacySettings>;
    fetchAcmVendors(): Promise<AcmVendors>;
    fetchSettingsJson(): Promise<LegacySettings>;
    fetchUserConsents(): Promise<UserConsentResponse[]>;
    fetchUserConsentsV2(isTCF: boolean, isCCPA: boolean): Promise<UserConsentResponseV2 | null>;
    fetchUserTcfData(): Promise<StorageTCF | null>;
    fetchUserTcfDataV2(): Promise<StorageTCF>;
    fetchVendorsList(url: string, notAllowedPurposes?: number[]): Promise<VendorList>;
    saveTCFConsents(dataTransferSettings: DataTransferSettings, storageTCF: StorageTCF, consentAction: CONSENT_ACTION, consentType: CONSENT_TYPE, apiV2: {
        isAnalyticsEnabled: boolean;
        isConsentAPIv2Enabled: boolean;
    } | null, enableDeprecatedV1ConsentSaving?: boolean): Promise<void>;
    saveConsentsV1_DEPRECATED(consents: Consents): Promise<void>;
    saveConsents(consents: ConsentDTOV2): Promise<void>;
    sendConsents(query: GraphQLQuery, options: RequestOptions): Promise<unknown>;
    sendConsentsV2(body: ConsentDTOV2Record, options: RequestOptions): Promise<unknown>;
    saveConsentsFromBuffer(): Promise<void>;
    saveConsentsV2FromBuffer(): Promise<void>;
    setTrackingPixel(parameters: TrackEventParameters): void;
    updateTagLoggerData(targets: string[]): void;
    private addJsonCacheBustingString;
    private createAvailableLanguagesUrl;
    private createLanguagesUrl;
    private getSettingsUrl;
    private createSettingsJsonUrl;
    private createAcmVendorsJsonUrl;
    createSessionTrackingUrl(): string;
    private createFetchUserConsentsUrl;
    private createFetchUserConsentsV2Url;
    private createFetchUserTcfDataUrl;
    private createFetchUserTcfDataV2Url;
    private createRulesetUrl;
    private createSaveConsentsV2Url;
    private saveTagLoggerData;
}
