interface CookieConsent {
    necessary: boolean;
    preferences: boolean;
    statistics: boolean;
    marketing: boolean;
    method?: string;
}
interface CookiebotApi {
    consent?: CookieConsent;
    renew?: () => void;
    showPreferences?: () => void;
}
interface InitCookieBannerOptions {
    cbid: string;
    scriptId?: string;
    src?: string;
    blockingMode?: string;
    scriptType?: "text/javascript";
    async?: boolean;
    /** ISO 639-1 two-letter language code (e.g. "en", "nb"). Maps to data-culture. */
    lang?: string;
    attributes?: Record<string, string>;
}
interface CookieBannerHookPayload {
    type: CookieBannerHookEvent;
    consent: CookieConsent | null;
    rawEvent: Event;
}
type CookieBannerHookEvent = "ready" | "accept" | "decline" | "consentChanged";
type CookieBannerHookHandler = (payload: CookieBannerHookPayload) => void;
declare global {
    interface Window {
        Cookiebot?: CookiebotApi;
        CookieConsent?: CookiebotApi;
    }
}
declare function initCookieBanner(options: InitCookieBannerOptions): Promise<CookiebotApi | undefined>;
declare function renew(): void;
declare function showPreferences(): void;
declare function getConsent(): CookieConsent | null;
declare function onCookieBannerEvent(eventType: CookieBannerHookEvent, handler: CookieBannerHookHandler): () => void;

export { type CookieBannerHookEvent, type CookieBannerHookHandler, type CookieBannerHookPayload, type CookieConsent, type CookiebotApi, type InitCookieBannerOptions, getConsent, initCookieBanner, onCookieBannerEvent, renew, showPreferences };
