import { Attribute, AttributeEntity } from './attribute.model'; import { BaseTrackerSDKModel } from './base.model'; import { Enrollment, IEnrollment } from './enrollment.model'; import { DHIS2Event, IDHIS2Event } from '../../event/models/event.model'; import { TrackerRelationship } from './tracker-relationship.model'; import { Program } from '../../program'; import { TrackedEntityConfig } from './tracked-entity-config.model'; export interface ProgramOwner { ownerOrgUnit: string; program: string; trackedEntityInstance: string; } export interface TrackerDataEntities { [key: string]: string | number; enrollmentDate: string; orgUnit: string; } export interface TrackedEntityInstanceObject { created?: string; createdAt?: string; updatedAt?: string; orgUnit: string; createdAtClient?: string; trackedEntity: string; trackedEntityInstance?: string; lastUpdated?: string; trackedEntityType: string; lastUpdatedAtClient?: string; inactive?: boolean; deleted?: boolean; featureType?: string; programOwners?: ProgramOwner[]; enrollments: IEnrollment[]; relationships?: any[]; attributes?: Attribute[]; relatedEntities?: TrackerRelationship[]; } interface TrackerFieldProperty { id: string; type: 'ATTRIBUTE' | 'DATA_ELEMENT' | 'ENROLLMENT_DATE' | 'INCIDENT_DATE' | 'ORG_UNIT' | 'GEOMETRY'; generated?: boolean; pattern?: string; stageId?: string; repeatable?: boolean; } export interface ITrackedEntityInstance { program: string; attributes: Attribute[]; enrollments: IEnrollment[]; latestEnrollment: Enrollment; enrollmentDate: string; createdAt: string; updatedAt: string; trackedEntityType: string; trackedEntity: string; trackedEntityInstance?: string; _events: any[]; ownerOrgUnit: string; orgUnit: string; orgUnitName: string; relatedEntities?: TrackerRelationship[]; metaData?: Record; fields?: Record; get attributeEntities(): AttributeEntity; get dataEntities(): Record; get reportEntities(): Record; spreadAttributes?: (attributes: any) => void; setAttributeValue?: (attribute: string, value: string, code?: string) => void; setEnrollment?: (enrollment: IEnrollment) => void; setEnrollmentDate?: (enrollmentDate: string) => void; setIncidentDate?: (incidentDate: string) => void; setEnrollmentGeometry?: (coordinateValue: string) => void; getEventByStage?: (programStage: string) => void; setEvent?: (event: IDHIS2Event) => void; setOrgUnit?: (orgUnit: string) => void; setProgramStageData?: (programStage: string, data: Record) => void; getEventsByProgramStage?: (programStage: string) => IDHIS2Event[]; getRelatedEntitiesByType?: (relationshipType: string) => string[]; setRelationship?: (relationship: TrackerRelationship) => void; toObject?: () => TrackedEntityInstanceObject; } export declare class TrackedEntityInstance extends BaseTrackerSDKModel implements ITrackedEntityInstance { #private; program: string; attributes: Attribute[]; enrollments: IEnrollment[]; latestEnrollment: Enrollment; enrollmentDate: string; updatedAt: string; createdAt: string; trackedEntityType: string; trackedEntity: string; trackedEntityInstance?: string; _events: DHIS2Event[]; ownerOrgUnit: string; orgUnit: string; orgUnitName: string; relatedEntities?: TrackerRelationship[]; fields: Record; [key: string]: any; protected _attributes: Attribute[]; protected _enrollments: Enrollment[]; protected _latestEnrollment: Enrollment; constructor(trackedEntityInstanceObject?: Partial, config?: TrackedEntityConfig); get attributeEntities(): AttributeEntity; get dataEntities(): Record; get reportEntities(): Record; spreadAttributes?(attributes: any[]): void; setEnrollmentGeometry(coordinateValue: string): void; setOrgUnit(orgUnit: string, updateTeiOrgUnit?: boolean): void; setAttributeValue(attribute: string, value: string, code?: string): void; getAttributeValue(attribute: string): string | undefined; setEnrollment(enrollment: IEnrollment): void; setRelationship?(relationship: TrackerRelationship): void; setEnrollmentDate(enrollmentDate: string): void; setIncidentDate(incidentDate: string): void; setFields(program: Program): void; complete(): void; getEventByStage?(programStage: string): DHIS2Event | { dataValues: never[]; programStage: string; }; setEvent(event: IDHIS2Event): void; setProgramStageData(programStage: string, data: Record): void; getEventsByProgramStage(programStage: string): IDHIS2Event[]; getRelatedEntitiesByType?(relationshipType: string): string[]; updateDataValues(dataValueEntities: Record, updateTeiOrgUnit?: boolean): void; setDataValue(dataElement: string, value: string, programStage: string, eventId?: string): void; toReadable(attributeName: string, attributeType: 'DATE' | 'BOOLEAN'): any; toObject(options?: { skipAttributes?: boolean; }): TrackedEntityInstanceObject; toTrackedEntity(): Partial; } export {};