import { Platform, Environment, TrackTags, ThirdPartyTracker } from '../track/types.js'; import { ThirdPartyUserSetter, Visitor } from '../visitor/types.js'; import '../track/gtag.js'; interface Storage { getItem: (key: string) => string | null; setItem: (key: string, value: string) => void; } interface Options { release: string; storage: Storage; endpoint: string; platform: Platform; environment: Environment; getTags: () => TrackTags | Promise; getDeviceId: () => string | Promise; getHeaders?: () => Record | Promise>; thirdPartyTrackers?: ThirdPartyTracker[]; thirdPartyUserSetters?: ThirdPartyUserSetter[]; } interface Config { release: string; endpoint: string; storage: Storage; platform: Platform; environment: Environment; getTags: () => TrackTags | Promise; getDeviceId: () => string | Promise; getHeaders: () => Record | Promise>; thirdPartyTrackers: ThirdPartyTracker[]; thirdPartyUserSetters: ThirdPartyUserSetter[]; } interface Cache { tags: TrackTags | null; visitor: Visitor | null; } declare const cache: Cache; declare const config: Config; declare function setupAnalytics(init: Options): void; export { type Options, type Storage, cache, config, setupAnalytics };