import { HttpClient } from '@contentstack/cli-utilities'; import { AnyProperty } from './utils'; import { AdapterHelperInterface } from './adapter-helper'; export type ProjectStruct = { _id: string; uid: string; name: string; description: string; audienceCount: number; organizationUid: string; activeExperienceCount: number; } & AnyProperty; export type GetProjectsParams = { connectedStackApiKey: string; includeAudienceCount?: boolean; includeActiveExperienceCount?: boolean; callback?: (value: ProjectStruct[]) => void; } & AnyProperty; export interface CreateProjectInput { name: string; description: string; connectedStackApiKey?: string; } export type GetVariantGroupInput = { experienceUid: string; }; export type VariantGroup = { uid: string; name: string; content_types: string[]; description: string; } & AnyProperty; export type VariantGroupStruct = { variant_groups: Array; } & AnyProperty; export type EventStruct = { _id: string; uid: string; key: string; name: string; description: string; project: string; } & AnyProperty; export type AudienceStruct = { _id: string; uid: string; definition: { _type: string; combinationType: string; rules: Record[]; }; name: string; description: string; project: string; } & AnyProperty; export type AttributeStruct = { _id: string; uid: string; key: string; name: string; project: string; description: string; } & AnyProperty; export interface CreateAttributeInput { name: string; key: string; description: string; } export interface CreateEventInput { key: string; description: string; } export interface CreateAudienceInput { name: string; definition: object; description: string; } type ExpVariations = { name: string; __type: string; audiences?: string[]; audienceCombinationType?: string; shortUid?: string; trafficDistribution?: string; } & AnyProperty; type ExpTargeting = { audience?: { audiences?: string[]; audienceCombinationType?: string; } & AnyProperty; }; export type ExpMetric = { event: string; name: string; __type: string; } & AnyProperty; export type ExperienceStruct = { _id: string; uid: string; name: string; __type: string; description: string; targeting?: ExpTargeting; variations: ExpVariations[]; variationSplit?: string; metrics?: ExpMetric[]; status: string; metadata?: object; _cms?: { variantGroup: object; variants: Record; }; content_types?: string[]; } & AnyProperty; export interface CreateExperienceVersionInput { name: string; __type: string; description: string; targeting?: ExpTargeting; variations: ExpVariations[]; variationSplit?: string; metrics?: ExpMetric[]; status: string; metadata?: object; variants: Array; } export interface CreateExperienceInput { name: string; __type: string; description: string; targeting?: ExpTargeting; variations: ExpVariations[]; variationSplit?: string; metrics?: ExpMetric[]; status: string; metadata?: object; variants?: Array; } export interface UpdateExperienceInput { contentTypes: string[]; } export interface CMSExperienceStruct { uid: string; contentTypes: string[]; content_types?: string[]; } export type VariantAPIRes = ProjectStruct[] | ProjectStruct | AttributeStruct[] | AttributeStruct | ExperienceStruct[] | EventStruct[] | AudienceStruct[] | ExperienceStruct | EventStruct | AudienceStruct | CMSExperienceStruct | VariantGroupStruct | Error; export interface APIResponse { status: number; data: any; } export interface Personalization extends AdapterHelperInterface { projects(options: GetProjectsParams): Promise; createProject(project: CreateProjectInput): Promise; getEvents(): Promise; getAudiences(): Promise; getAttributes(): Promise; createAttribute(attribute: CreateAttributeInput): Promise; createAudience(attribute: CreateAudienceInput): Promise; createExperience(experience: CreateExperienceInput): Promise; getCTsFromExperience(experienceUid: string): Promise; updateCTsInExperience(experience: UpdateExperienceInput, experienceUid: string): Promise; handleVariantAPIRes(res: any): Promise; } export {};