export type Theme = 'light' | 'dark' | 'auto';
export type VerificationMode = 'modal' | 'redirect';
export type SearchEngineDetectionMode = 'ua' | 'headless' | 'cookies' | 'combined' | 'strict';
export interface AgeminConfig {
    /**
     * Your unique asset ID from agemin.com/app/websites
     * Format: asset_5b08b274353b92f4
     */
    assetId: string;
    /**
     * Unique reference ID for this verification request
     * Should be generated server-side for security
     * Maximum 50 bytes
     */
    referenceId: string;
    /**
     * Optional metadata to attach to the verification
     * Maximum 256 bytes (will be JSON stringified)
     */
    metadata?: Record<string, any>;
    /**
     * Base URL for the Agemin verification service
     * @default 'https://verify.agemin.com'
     */
    baseUrl?: string;
    /**
     * Custom verification URL template (for development)
     * Use {sessionId} as placeholder for session ID
     * @internal
     */
    verificationURL?: string;
    /**
     * URL to redirect to on error
     */
    errorUrl?: string | null;
    /**
     * URL to redirect to on success
     */
    successUrl?: string | null;
    /**
     * URL to redirect to on cancellation
     */
    cancelUrl?: string | null;
    /**
     * Theme for the verification interface
     * @default 'auto'
     */
    theme?: Theme;
    /**
     * Locale for the verification interface
     * Use 'auto' to detect browser language automatically
     * @default 'auto'
     */
    locale?: string;
    /**
     * Enable debug mode for verbose logging
     * @default false
     */
    debug?: boolean;
    /**
     * Allow search engine crawlers to bypass age verification
     * Useful for SEO - allows content indexing while maintaining age-gate for users
     * @default false
     */
    allowSearchEngineBypass?: boolean;
    /**
     * Search engine detection mode for bypass feature
     * - 'ua': User agent string detection only (fastest, default)
     * - 'headless': Headless browser detection (plugins, languages, WebGL)
     * - 'cookies': Cookie support check (crawlers typically don't support cookies)
     * - 'combined': Any detection method triggers bypass (most inclusive)
     * - 'strict': Requires multiple signals (reduces false positives)
     * @default 'ua'
     */
    searchEngineDetection?: SearchEngineDetectionMode;
}
export interface VerifyOptions {
    /**
     * How to display the verification interface
     * @default 'modal'
     */
    mode?: VerificationMode;
    /**
     * Override the theme for this verification
     */
    theme?: Theme;
    /**
     * Override the locale for this verification
     */
    locale?: string;
    /**
     * Custom metadata to attach to the verification
     */
    metadata?: Record<string, any>;
    /**
     * Callback when verification process completes successfully
     * Note: This indicates the verification process finished, NOT that the user passed
     * For strong API security, check results server-side with your private key
     */
    onSuccess?: (data: VerificationResult) => void;
    /**
     * Callback when user passes age verification (JWT present and is_of_age = true)
     * Only called when JWT is available and successfully decoded
     */
    onAgePass?: (data: VerificationResult) => void;
    /**
     * Callback when user fails age verification (JWT present but is_of_age = false)
     * Only called when JWT is available and successfully decoded
     */
    onAgeFail?: (data: VerificationResult) => void;
    /**
     * Callback when technical error occurs (API, network, model errors)
     * Recommended: Show fallback age confirmation modal
     */
    onError?: (error: VerificationError) => void;
    /**
     * Callback when verification is cancelled by user
     */
    onCancel?: () => void;
    /**
     * Callback when verification modal/popup is closed
     */
    onClose?: () => void;
}
export interface VerificationResult {
    /**
     * Unique reference ID for this verification
     * Use this to fetch actual results server-side
     */
    referenceId: string;
    /**
     * Indicates verification process completed successfully
     * Does NOT indicate if age requirement was met
     */
    completed: boolean;
    /**
     * Timestamp when verification completed
     */
    timestamp: number;
}
export interface VerificationError {
    /**
     * Error code
     */
    code: string;
    /**
     * Human-readable error message
     */
    message: string;
    /**
     * Additional error details
     */
    details?: Record<string, any>;
}
