// Copyright © 2022-2026 Partium, Inc. DBA Partium import { i18nString, APIObject, OrganizationListItem } from '../../core'; import { Attribute, AttributeFromDataAPI, AttributeFromPartiumAPI } from './attribute'; import { Image, ImageFromDataAPI, ImageFromPartiumAPI } from './image'; import { PartMountingLocation, PartMountingLocationFromDataAPI } from './mounting-location'; import { PART_ENRICHMENT_STATUS, PartEnrichmentData } from './part-enrichment-data'; /** @deprecated directly use export from mounting-location instead */ export type { PartMountingLocationFromDataAPI } from './mounting-location'; /** @deprecated directly use export from mounting-location instead */ export { PartMountingLocation } from './mounting-location'; export declare enum RELATION_TYPE { DUPLICATE = "duplicate", SUBSTITUTE = "substitute", EQUIVALENT = "equivalent", NOT_RELATED = "not_related" } export declare enum SUBSTITUTE_ROLE { SUCCESSOR = "successor", PREDECESSOR = "predecessor" } export declare enum DUPLICATE_DATA_AREA { IMAGE = "IMAGE", NAME = "NAME", DATA = "DATA" } type DuplicateTypeFromDataApi = 'IMAGE_NAME_AND_DATA' | 'NAME_AND_DATA' | 'IMAGE'; export interface PartEnrichmentSummaryFromDataAPI { key: { [language: string]: string; }; values: { [language: string]: string; }[]; } export interface PartFromPartiumAPI { partiumId: string; id: string; name?: string; nameLanguage?: string; images: ImageFromPartiumAPI[]; attributes?: AttributeFromPartiumAPI[]; mountingLocationsCount: number; duplicateType: DuplicateTypeFromDataApi; highlights: { snippet: string | null; indices: { id: { from: number; to: number; }[]; name: { from: number; to: number; }[]; snippet: { from: number; to: number; }[]; }; }; relatedPartsSummary?: { duplicatePartsCount: number; similarPartsCount: number; alternativePartsCount: number; }; } export interface PartFromDataAPI { uuid: string; external_id: string; name: { [language: string]: string; }; metadata?: Object; images: ImageFromDataAPI[]; organization: { uuid: string; name: string; }; attributes: AttributeFromDataAPI[]; mounting_locations: PartMountingLocationFromDataAPI[]; total_mounting_locations_count: number; summary: { summary_id: number; summary: PartEnrichmentSummaryFromDataAPI[]; }; enrichment: { status: PART_ENRICHMENT_STATUS; summary: PartEnrichmentSummaryFromDataAPI[]; UPIs: string[]; last_error_timestamp: string; }; } export interface RelatedPartFromDataAPI { part: PartFromDataAPI; type: RELATION_TYPE | null; part_role: 'anchor_part' | 'related_part' | null; created: string; } export declare enum DATA_ORIGIN { /** * @deprecated use PARTIAL instead */ SEARCH_RESULT = 0,// part-data only directly from search-result (=find) /** * @deprecated not relevant anymore with new FIND-API */ PARTIAL = 0,// part-data comes from a service, that only provides a subset (=Partial) of a parts data, /** * @deprecated use DATA_API instead */ SERVER = 2,// part-data freshly loaded from server (=data) DATA_API = 2,// part-data comes from the data-service and can be considered complete /** * @deprecated use PARTIUM_API instead */ FIND_API = 3,// part-data comes from the find-service and will contain all information that was requested PARTIUM_API = 3 } export interface PartEnrichmentSummary { key: i18nString; values: i18nString[]; } export type PartHighlightRange = Array<{ from: number; to: number; }>; export interface PartHighlights { snippet: string | null; indices: { id: PartHighlightRange; name: PartHighlightRange; snippet: PartHighlightRange; }; } export declare class Part extends APIObject { partiumId: string; externalId: string; externalPayload: Object; name: i18nString; images: Array; /** @deprecated */ description: i18nString; dataOrigin: DATA_ORIGIN; organization?: OrganizationListItem; attributes?: Attribute[]; mountingLocationsCount: number | null; mountingLocations: PartMountingLocation[] | null; summary: { summaryId: number; summary: PartEnrichmentSummary[]; } | null; enrichment: PartEnrichmentData | null; relationType?: RELATION_TYPE; partRole?: SUBSTITUTE_ROLE; relationCreatedAt?: Date; relatedPartsSummary?: { duplicatePartsCount: number; similarPartsCount: number; alternativePartsCount: number; }; duplicateType: DUPLICATE_DATA_AREA[]; highlights: PartHighlights | null; constructor(init?: Partial); updatePart(update?: Partial): void; /** @deprecated directly update name property instead */ updateName(name: i18nString): void; /** @deprecated description is deprecated */ updateDescription(descriptionValue: i18nString): void; static fromAPIResponse(partData: PartFromPartiumAPI | PartFromDataAPI, dataOrigin?: DATA_ORIGIN, language?: string): Part; static fromRelatedPartsAPIResponse(data: RelatedPartFromDataAPI): Part; private static getDuplicateType; }