import React, { ReactNode } from 'react';
export interface ConsentCategories {
    necessary: boolean;
    analytics: boolean;
    marketing: boolean;
    functional: boolean;
    [key: string]: boolean;
}
export interface ConsentState {
    hasUserConsented: boolean;
    consentState: ConsentCategories;
    showBanner: boolean;
    showSettings: boolean;
}
export interface ConsentActions {
    acceptAll: () => void;
    rejectAll: () => void;
    savePreferences: (preferences: Partial<ConsentCategories>) => void;
    openSettings: () => void;
    closeSettings: () => void;
    updateConsent: (category: keyof ConsentCategories, value: boolean) => void;
}
export interface ConsentContextValue extends ConsentState, ConsentActions {
}
declare const ConsentContext: React.Context<ConsentContextValue | undefined>;
export interface ConsentProviderProps {
    children: ReactNode;
    initialConsent?: Partial<ConsentCategories>;
    onConsentChange?: (consent: ConsentCategories) => void;
    storageKey?: string;
}
export declare function ConsentProvider({ children, initialConsent, onConsentChange, storageKey, }: ConsentProviderProps): import("react/jsx-runtime").JSX.Element;
export declare function useConsent(): ConsentContextValue;
export { ConsentContext };
//# sourceMappingURL=ConsentContext.d.ts.map