import { D2Geometry, D2ProgramOwner } from "../schemas"; import { PartialBy } from "../utils/types"; import { Id, Pager } from "./base"; import { AsyncPostResponse, D2ApiResponse } from "./common"; import { D2ApiGeneric } from "./d2Api"; import { D2Event, D2EventToPost } from "./events"; export declare class TrackedEntityInstances { d2Api: D2ApiGeneric; constructor(d2Api: D2ApiGeneric); get(params: TeiGetRequest): D2ApiResponse; getAll(params: TeiGetRequest): D2ApiResponse; post(params: TeiPostParams, request: TeiPostRequest): D2ApiResponse; postAsync(params: TeiPostParams, request: TeiPostRequest): D2ApiResponse>; } interface TrackedEntityInstanceBase { trackedEntityInstance: Id; trackedEntityType: Id; inactive?: boolean; orgUnit: Id; attributes: Attribute[]; enrollments: Enrollment[]; relationships: Relationship[]; created: string; createdAtClient: string; lastUpdated: string; programOwners: D2ProgramOwner[]; } declare type TeiPartial = PartialBy>; export interface TrackedEntityInstanceToPost extends Omit { enrollments: EnrollmentToPost[]; } export declare type TrackedEntityInstance = TeiGeometryNone | TeiGeometryPoint | TeiGeometryPolygon; interface GeometryNone { featureType: "NONE"; } interface GeometryPoint { featureType: "POINT"; geometry: Extract; } interface GeometryPolygon { featureType: "POLYGON"; geometry: Extract; } export declare type TrackedEntityInstanceGeometryAttributes = GeometryNone | GeometryPoint | GeometryPolygon; declare type TeiGeometryNone = TrackedEntityInstanceBase & GeometryNone; declare type TeiGeometryPoint = TrackedEntityInstanceBase & GeometryPoint; declare type TeiGeometryPolygon = TrackedEntityInstanceBase & GeometryPolygon; export interface Relationship { relationship: Id; relationshipType: Id; relationshipName: string; from: RelationshipItem; to: RelationshipItem; } export interface RelationshipItem { trackedEntityInstance?: { trackedEntityInstance: Id; }; event?: { event: Id; }; } export interface Enrollment { enrollment: Id; program: Id; orgUnit: Id; enrollmentDate: string; incidentDate: string; events?: D2Event[]; } export interface EnrollmentToPost extends Omit { enrollment: Id; program: Id; orgUnit: Id; enrollmentDate: string; incidentDate: string; events?: D2EventToPost[]; } export interface AttributeValue { attribute: Attribute; value: string; optionId?: Id; } export interface Attribute { attribute: Id; valueType?: string; value: string; } export declare type TeiOuRequest = { ouMode?: "ACCESSIBLE" | "CAPTURE" | "ALL"; ou?: never[]; } | { ouMode?: "SELECTED" | "CHILDREN" | "DESCENDANTS"; ou: Id[]; }; export declare type TeiGetRequest = TeiOuRequest & { program?: Id; trackedEntityType?: Id; programStatus?: "ACTIVE" | "COMPLETED" | "CANCELLED"; followUp?: boolean; order?: string; pageSize?: number; page?: number; totalPages: true; fields?: string; programStartDate?: string; programEndDate?: string; lastUpdatedStartDate?: string; lastUpdatedEndDate?: string; lastUpdatedDuration?: string; assignedUserMode?: "CURRENT" | "PROVIDED" | "NONE" | "ANY"; trackedEntityInstance?: string; includeDeleted?: boolean; }; export interface TeiGetResponse { trackedEntityInstances: TrackedEntityInstance[]; } export interface PaginatedTeiGetResponse extends TeiGetResponse { pager: Pager; } export interface TeiPostRequest { trackedEntityInstances: TrackedEntityInstanceToPost[]; } export declare type TeiPostParams = Partial<{ idScheme: string; dataElementIdScheme: string; orgUnitIdScheme: string; skipNotifications: boolean; skipFirst: boolean; strategy: "CREATE" | "UPDATE" | "CREATE_AND_UPDATE" | "DELETE"; importReportMode: "FULL" | "ERRORS" | "DEBUG"; async: boolean; dryRun: boolean; }>; export interface TeiPostResponse { responseType: "ImportSummaries"; status: "ERROR" | "SUCCESS"; imported: number; updated: number; deleted: number; ignored: number; total: number; importSummaries?: Array<{ responseType: "ImportSummary"; status: "ERROR"; reference?: string; conflicts: Array<{ object: string; value: string; }>; importCount: { imported: number; updated: number; ignored: number; deleted: number; }; } | { responseType: "ImportSummary"; status: "SUCCESS"; reference: string; importCount: { imported: number; updated: number; ignored: number; deleted: number; }; enrollments: { responseType: "ImportSummaries"; status: "ERROR" | "SUCCESS"; imported: number; updated: number; deleted: number; ignored: number; total: number; }; }>; } export {};