import { CampaignDTO } from './decision/api/models.ts'import { HitType } from './enum/index.ts'import { IEvent, IItem, IPage, IScreen, ITransaction, HitShape } from './hit/index.ts'
export type modificationsRequested<T> = { key: string, defaultValue: T, activate? :boolean }
export type primitive=string | number | boolean
export type { HitShape }export type IHit = IPage | IScreen | IEvent | IItem | ITransaction
export type FlagDTO= { key: string; campaignId: string; variationGroupId: string; variationId: string; isReference?: boolean; campaignType?: string; slug?:string|null; value: any;}
export type Modification= FlagDTO
export type NewVisitor={ visitorId?:string isAuthenticated?: boolean context?: Record<string, primitive> hasConsented?:boolean,
initialCampaigns?: CampaignDTO[] initialModifications?: Map<string, Modification>|Modification[] initialFlagsData?: Map<string, FlagDTO>|FlagDTO[]
isNewInstance?:boolean
}
export type HitCacheDTO ={ version: number, data: { visitorId: string, anonymousId: string|null, type: HitType|'BATCH'|'ACTIVATE', time: number, content?:IHit|FlagDTO|Record<string, unknown> }}
export type VisitorCacheDTO = { version: number, data: { visitorId: string, anonymousId: string|null, consent?: boolean, context?: Record<string, primitive>, assignmentsHistory?: Record<string, string>, campaigns?: Array<{ slug?:string|null campaignId: string, variationGroupId: string, variationId: string, isReference?:boolean type: string, activated?: boolean, flags?: Record<string, unknown> }>}}