/**
 * @packageDocumentation
 * Type definitions for cookie storage functionality.
 *
 * @remarks
 * This module contains all type definitions and interfaces used across
 * the cookie storage implementation.
 */
/**
 * Storage configuration options
 *
 * @remarks
 * Configure storage behavior through store options for better control
 * and testability.
 *
 * @example
 * ```typescript
 * import { createConsentManagerStore } from 'c15t';
 *
 * const store = createConsentManagerStore(client, {
 *   storageConfig: {
 *     storageKey: 'my-consent-storage',
 *     crossSubdomain: true,
 *     defaultExpiryDays: 180
 *   }
 * });
 * ```
 *
 * @public
 */
export interface StorageConfig {
    /**
     * Custom storage key for localStorage and cookies
     *
     * @default 'c15t'
     *
     * @remarks
     * The default changed from 'privacy-consent-storage' to 'c15t' in v1.8+
     * to reduce cookie size. Legacy data is automatically migrated.
     *
     */
    storageKey?: string;
    /**
     * Enable cross-subdomain cookies by default
     *
     * @default false
     *
     * @remarks
     * When true, cookies will automatically work across all subdomains
     * (e.g., app.example.com, www.example.com, dashboard.example.com)
     */
    crossSubdomain?: boolean;
    /**
     * Custom default domain for cookies
     *
     * @default '' (current domain only)
     *
     * @remarks
     * Overrides crossSubdomain if set.
     * Use '.example.com' for all subdomains.
     */
    defaultDomain?: string;
    /**
     * Default cookie expiration in days
     *
     * @default 365
     */
    defaultExpiryDays?: number;
}
/**
 * Configuration options for cookie storage
 *
 * @public
 */
export interface CookieOptions {
    /**
     * Cookie expiration in days
     * @default 365
     */
    expiryDays?: number;
    /**
     * Enable cross-subdomain cookies
     *
     * @default false
     *
     * @remarks
     * Simpler alternative to setting domain explicitly.
     * Automatically uses getRootDomain() when true.
     */
    crossSubdomain?: boolean;
    /**
     * Cookie domain
     *
     * @remarks
     * - Empty string or undefined: Current domain only (most secure)
     * - `.example.com`: All subdomains (better UX, less secure)
     * - `example.com`: Exact domain match
     *
     * Takes precedence over crossSubdomain if both are set.
     *
     * @default '' (current domain only)
     *
     * @example
     * ```typescript
     * // Current domain only (default, most secure)
     * saveConsentToStorage(data);
     *
     * // Easy way: Cross-subdomain
     * saveConsentToStorage(data, { crossSubdomain: true });
     *
     * // Advanced: Explicit domain
     * saveConsentToStorage(data, { domain: '.example.com' });
     * ```
     */
    domain?: string;
    /**
     * Cookie path
     * @default '/'
     */
    path?: string;
    /**
     * Whether the cookie should be secure (HTTPS only)
     * @default true in production
     */
    secure?: boolean;
    /**
     * SameSite attribute for the cookie
     * @default 'Lax'
     */
    sameSite?: 'Strict' | 'Lax' | 'None';
}
