interface StorageAdapter {
    get(key: string): string | null;
    set(key: string, value: string): void;
}
interface InstallPromptProps {
    /** Delay in ms before showing prompt. Default: 3000 */
    delay?: number;
    /** Key used to persist dismissed state. Default: 'rfr-install-dismissed' */
    storageKey?: string;
}
interface InstallPromptState {
    canShow: boolean;
    isDismissed: boolean;
}
interface InstallPromptAPI {
    state: InstallPromptState;
    /** Mark the prompt as showable (call after delay + event fire) */
    show(): void;
    /** Dismiss and persist */
    dismiss(): void;
    /** Trigger the browser install prompt */
    install(promptEvent?: {
        prompt(): void;
    }): void;
    /** ARIA attributes for the banner */
    ariaProps: Record<string, string>;
}
declare function createInstallPrompt(props?: InstallPromptProps, storage?: StorageAdapter): InstallPromptAPI;

declare const installPromptVariants: (props?: ({
    [x: string]: string | undefined;
} & {
    className?: string;
}) | undefined) => string;

export { type InstallPromptAPI, type InstallPromptProps, type InstallPromptState, type StorageAdapter, createInstallPrompt, installPromptVariants };
