import { D2ApiGeneric } from "./d2Api"; import { Id, Selector, D2ApiResponse, SelectedPick } from "./base"; import { Preset } from "../schemas"; import { D2TrackerEvent, D2TrackerEventSchema, Note, D2TrackerEventToPost } from "./trackerEvents"; import { RequiredBy } from "../utils/types"; import { TrackedPager } from "./trackerTrackedEntities"; export declare class TrackerEnrollments { api: D2ApiGeneric; constructor(api: D2ApiGeneric); get(params: TrackerEnrollmentsParams): D2ApiResponse>; } declare type ProgramStatus = "ACTIVE" | "COMPLETED" | "CANCELLED"; export declare type IsoDate = string; declare type Username = string; export interface D2TrackerEnrollment { enrollment: Id; createdAt: IsoDate; createdAtClient: IsoDate; updatedAt: IsoDate; updatedAtClient: IsoDate; trackedEntity: Id; trackedEntityType: Id; program: Id; status: ProgramStatus; orgUnit: Id; orgUnitName: string; enrolledAt: IsoDate; occurredAt: IsoDate; followUp: boolean; deleted: boolean; storedBy: Username; events: D2TrackerEvent[]; attributes: D2TrackerEnrollmentAttribute[]; notes: Note[]; } declare type RequiredFieldsOnPost = "enrollment" | "trackedEntity" | "enrolledAt" | "occurredAt" | "orgUnit" | "program" | "events"; export declare type D2TrackerEnrollmentToPost = Omit, "events"> & { events: D2TrackerEventToPost[]; }; export interface D2TrackerEnrollmentAttribute { attribute: string; value: Date | string | number; } declare type TrackerEnrollmentsParams = Params & { fields: Fields; } & Partial<{ totalPages: boolean; page: number; pageSize: number; skipPaging: boolean; }>; declare type Params = RequiredBy; declare type TrackerEnrollmentsParamsBase = { orgUnit: SemiColonDelimitedListOfUid; ouMode: "SELECTED" | "CHILDREN" | "DESCENDANTS" | "ACCESSIBLE" | "CAPTURE" | "ALL"; program: Id; programStatus: ProgramStatus; followUp: boolean; updatedAfter: IsoDate; updatedWithin: IsoDate; enrolledAfter: IsoDate; enrolledBefore: IsoDate; trackedEntityType: Id; trackedEntity: Id; enrollment: CommaDelimitedListOfUid; includeDeleted: boolean; }; declare type SemiColonDelimitedListOfUid = string; declare type CommaDelimitedListOfUid = string; export interface TrackerEnrollmentsResponse extends TrackedPager { pager?: TrackedPager; instances: SelectedPick[]; } export interface D2TrackerEnrollmentSchema { name: "D2TrackerEnrollment"; model: D2TrackerEnrollment; fields: Omit & { events: D2TrackerEventSchema[]; }; fieldPresets: { $all: Omit, "events"> & { events: D2TrackerEventSchema["fieldPresets"]["$all"][]; }; $identifiable: never; $nameable: never; $persisted: never; $owner: never; }; } declare type D2TrackerEnrollmentFields = Selector; export {};