import type { PollingConfig, ProgressivePollingOptions, ConditionalPollingOptions } from '@plyaz/types/api'; /** * Check if polling is active based on configuration * * @param config - Polling configuration to check * @returns True if polling is enabled * * @example * ```typescript * if (isPollingActive(config)) { * console.log('Polling is enabled'); * } * ``` */ export declare function isPollingActive(config: PollingConfig): boolean; /** * Calculate total polling duration based on configuration * * @param config - Polling configuration * @returns Total duration in milliseconds, or null if infinite * * @example * ```typescript * const duration = calculatePollingDuration({ * interval: 2000, * delay: 500, * maxAttempts: 10 * }); * // Returns: 25000 (20s intervals + 5s delays) * ``` */ export declare function calculatePollingDuration(config: PollingConfig): number | null; /** * Create SSR-safe polling configuration * Disables polling on server-side rendering * * @param config - Original polling configuration * @returns SSR-safe configuration * * @example * ```typescript * const safeConfig = getSSRSafePollingConfig({ * interval: 5000, * maxAttempts: 10 * }); * // On server: { interval: 0, maxAttempts: 1 } * // On client: unchanged * ``` */ export declare function getSSRSafePollingConfig(config: PollingConfig): PollingConfig; /** * Create progressive polling with increasing intervals * * @param options - Progressive polling options * @returns Polling configuration with progressive intervals * * @example * ```typescript * const config = createProgressivePolling({ * baseInterval: 1000, * maxInterval: 30000, * multiplier: 1.5 * }); * // Intervals: 1s, 1.5s, 2.25s, ... up to 30s * ``` */ export declare function createProgressivePolling(options?: ProgressivePollingOptions): PollingConfig; /** * Create condition-based polling configuration * * @param options - Conditional polling options * @returns Polling configuration with condition checking * * @example * ```typescript * const config = createConditionalPolling({ * successCondition: (response) => response?.data?.ready === true, * errorCondition: (response) => response?.data?.failed === true, * timeoutMs: 60000 * }); * ``` */ export declare function createConditionalPolling(options: ConditionalPollingOptions): PollingConfig; /** * Create visibility-aware polling configuration * Stops polling when document is hidden (browser tab inactive) * * @param baseConfig - Base polling configuration * @returns Polling configuration with visibility checking * * @example * ```typescript * const config = createVisibilityAwarePolling({ * interval: 5000, * maxAttempts: 100 * }); * // Stops polling when tab is hidden * ``` */ export declare function createVisibilityAwarePolling(baseConfig: PollingConfig): PollingConfig; /** * Merge polling configurations with priority * Later configs override earlier ones * * @param configs - Polling configurations to merge * @returns Merged polling configuration * * @example * ```typescript * const merged = mergePollingConfigs( * { interval: 1000 }, * { maxAttempts: 10 }, * { delay: 500 } * ); * // Result: { interval: 1000, maxAttempts: 10, delay: 500 } * ``` */ export declare function mergePollingConfigs(...configs: Array | undefined>): PollingConfig; /** * Validate polling configuration * * @param config - Polling configuration to validate * @returns True if configuration is valid * * @example * ```typescript * if (isValidPollingConfig(config)) { * // Use config safely * } * ``` */ export declare function isValidPollingConfig(config: unknown): config is PollingConfig; //# sourceMappingURL=utils.d.ts.map