import { Fetch, FlagsmithTraitValue, TraitConfig } from './types.js'; import { Dispatcher } from 'undici-types'; type Traits = { [key: string]: TraitConfig | FlagsmithTraitValue; }; export declare function isTraitConfig(traitValue: TraitConfig | FlagsmithTraitValue): traitValue is TraitConfig; export declare function generateIdentitiesData(identifier: string, traits: Traits, transient: boolean): { identifier: string; traits: ({ trait_key: string; trait_value: string | number | boolean | null; transient: boolean | undefined; } | { trait_key: string; trait_value: string | number | boolean | null; transient?: undefined; })[]; transient: boolean; } | { identifier: string; traits: ({ trait_key: string; trait_value: string | number | boolean | null; transient: boolean | undefined; } | { trait_key: string; trait_value: string | number | boolean | null; transient?: undefined; })[]; transient?: undefined; }; export declare function generateIdentityCacheKey(identifier: string, traits?: Traits): string; export declare const delay: (ms: number) => Promise; export declare const retryFetch: (url: string, fetchOptions: RequestInit & { dispatcher?: Dispatcher; }, retries: number | undefined, timeoutMs: number | undefined, retryDelayMs: number | undefined, customFetch: Fetch) => Promise; /** * A deferred promise can be resolved or rejected outside its creation scope. * * @template T The type of the value that the deferred promise will resolve to. * * @example * const deferred = new Deferred() * * // Pass the promise somewhere * performAsyncOperation(deferred.promise) * * // Resolve it when ready from anywhere * deferred.resolve("Operation completed") * deferred.failed("Error") */ export declare class Deferred { readonly promise: Promise; private resolvePromise; private rejectPromise; constructor(initial?: T); resolve(value: T | PromiseLike): void; reject(reason?: unknown): void; } export declare function getUserAgent(): string; export {};