export interface DataModel { factSheets: Record; relations: Record; } export interface FactSheetDataDefinition { fields: Record; config?: ConfigDataDefinition; } export declare type FieldDataDefinition = SingleSelectFieldDataDefinition | MultipleSelectFieldDataDefinition | LifecycleFieldDataDefinition | IntegerFieldDataDefinition | DoubleFieldDataDefinition | LocationFieldDataDefinition | ProjectStatusFieldDataDefinition | ExternalIdFieldDataDefinition | ReferenceFieldDataDefinition | StringFieldDataDefinition | UnsupportedFieldDataDefinition; interface BaseFieldDataDefinition { inView?: boolean; } export interface ConfigDataDefinition { qualitySeal?: { enabled: boolean; }; approvalWorkflow?: ConfigDataApprovalWorkflow; } export interface ConfigDataApprovalWorkflow { enabled: boolean; rejectedState?: boolean; } export interface SingleSelectFieldDataDefinition extends BaseFieldDataDefinition { type: 'SINGLE_SELECT'; viewAggregation?: FieldViewAggregation; values: string[]; } export interface MultipleSelectFieldDataDefinition extends BaseFieldDataDefinition { type: 'MULTIPLE_SELECT'; viewAggregation?: FieldViewAggregation; values: string[]; } export interface LifecycleFieldDataDefinition extends BaseFieldDataDefinition { type: 'LIFECYCLE'; values: string[]; } export interface IntegerFieldDataDefinition extends BaseFieldDataDefinition { type: 'INTEGER'; viewAggregation?: FieldViewAggregation; range?: NumberRange; } export interface DoubleFieldDataDefinition extends BaseFieldDataDefinition { type: 'DOUBLE'; viewAggregation?: FieldViewAggregation; range?: NumberRange; } export interface LocationFieldDataDefinition extends BaseFieldDataDefinition { type: 'LOCATION'; } /** * Normalised value of a LOCATION field after extraction from the API response. */ export interface LocationValue { geoCountryCode: string | null; geoCountry: string | null; geoCity: string | null; latitude: number | null; longitude: number | null; } export interface ProjectStatusFieldDataDefinition extends BaseFieldDataDefinition { type: 'PROJECT_STATUS'; values: string[]; } export interface ExternalIdFieldDataDefinition extends BaseFieldDataDefinition { type: 'EXTERNAL_ID'; } export interface ReferenceFieldDataDefinition extends BaseFieldDataDefinition { type: 'FS_REFERENCES'; } export interface StringFieldDataDefinition extends BaseFieldDataDefinition { type: 'STRING'; } export interface UnsupportedFieldDataDefinition extends BaseFieldDataDefinition { type: 'AGGREGATED' | 'COMPLETION' | 'DATE_TIME' | 'LX_MILESTONES' | 'LX_STATE' | 'QUALITYSEALSTATUS' | 'READ_ACCESS_CONTROL_LIST' | 'RELATION' | 'SEARCH_BASED' | 'STATUS' | 'SUBSCRIPTIONS' | 'TAGS' | 'WRITE_ACCESS_CONTROL_LIST'; } export interface RelationDataDefinition { from: DirectionalDataDefinition; to: DirectionalDataDefinition; fields: Record; constrainingRelations?: string[] | null; constraints: RelationConstraint[]; } export declare type RelationConstraint = 'TYPE_EQUAL' | 'CYCLES_ALLOWED' | 'FACT_SHEET_UNIQUE_LAX'; export interface DirectionalDataDefinition { name: string; factSheetType: string; } export declare type FieldViewAggregation = 'AVG' | 'MIN' | 'MAX' | 'OFF'; export declare type NumberRange = { min?: number; max?: number; }; export {};