import { ConsentUiPrefersState } from '@bemit/consent-ui/ConsentUiInfo';
import { ConsentUiTracker } from '@bemit/consent-ui/ConsentUiTracker';
import { EventAware } from '@bemit/consent-ui/EventAware';
export type ConsentCbOff = () => void;
export interface ConsentUiStateType {
    ready?: boolean;
    hasChosen?: boolean;
    consent?: string;
    tag?: string;
    userPrefers?: ConsentUiPrefersState;
}
export declare class ConsentUiState extends EventAware {
    protected version: string;
    protected localKey: string;
    protected initialized: boolean;
    protected hasChosen: boolean;
    protected acceptedVersion: string | undefined;
    protected tag: string | undefined;
    userPrefers: ConsentUiPrefersState | undefined;
    trackersState: {
        [id: string]: boolean;
    };
    trackersActivatedHistory: {
        [id: string]: boolean;
    };
    trackers: ConsentUiTracker[] | undefined;
    constructor(settings: {
        version: string;
        localKey: string;
        trackers: ConsentUiTracker[];
    });
    init(): void;
    dispatchPreferences(): void;
    private readTag;
    giveConsent(preferences?: ConsentUiPrefersState): void;
    updateConsent(type: 'services' | 'groups', id: string, prefer: undefined | 1 | 2): void;
    private persistConsent;
    onConsent(cb: (version: string) => void): ConsentCbOff;
    toState(): ConsentUiStateType;
}
export interface ConsentUiOptions {
    version: string;
    localKey: string;
    trackers: ConsentUiTracker[];
}
export declare const defineConsent: (options: ConsentUiOptions) => void;
export declare const prepareConsent: (options: ConsentUiOptions) => void;
export declare const consentUi: () => ConsentUiState | undefined;
