import IAttribute, { IAttributeValue } from '../../Interfaces/Attribute'; import IBrand from '../../Interfaces/Brand'; import ICategory from '../../Interfaces/Category'; import IDeclination, { IDeclinationAttribute, IShippingInfo } from '../../Interfaces/Declination'; import IProduct from '../../Interfaces/Product'; import ISpace, { IPredefinedBox } from '../../Interfaces/Space'; import { ExternalServiceSlugEnum, IExternalServices } from '../../Interfaces/Space/IExternalService'; import ITranslation from '../../Interfaces/Translation'; import Space from '../../lib/Space'; import { IImageInfo } from '../../utils/file'; export interface ISaveServiceOptions { readonly serviceSettings: T; readonly serviceSlug: string; readonly generateOnSave?: { categories: boolean; brands: boolean; attributes: boolean; }; } export interface IProps { readonly itemSlugs: string[]; readonly options?: { spaceObj?: Space; }; } export interface IProductServiceSupplier { id: number; slug: string; name: ITranslation[]; description: ITranslation[] | null; image: IImageInfo | null; } export default class ProductServiceBaseClass { protected _spaceId: string; protected _orgId: string; protected _serviceSlug: ExternalServiceSlugEnum; protected _spaceData: ISpace | undefined; constructor(space: string, orgId: string, serviceSlug: ExternalServiceSlugEnum); getServiceSlug: () => ExternalServiceSlugEnum; protected getSpaceData(): Promise; getExternalServiceData(serviceSlug: string): Promise; getAllSuppliers(): Promise; getSupplierBySlug(_slug: string): Promise; getCategories(): Promise[]>; getExternalServiceSupplierSlugs(): Promise; getExternalServiceBaseParentCategory(): Promise; getBrands(): Promise; getAttributes(): Promise; getProduct(_slug: string, _space?: ISpace): Promise; getPredefinedFormats(_locale: string): Promise; /** * Construct variation name with corresponding TCG Attributes. * @static * @param declinationsToUse Array of declinations to use, in Addio DeclinationAttribut form */ static getNameFromAttributes(declinationsToUse: IDeclinationAttribute[]): ITranslation[]; /** * Construct sku for declinations from parent product slug and TCG attributes * @static * @param baseSlug The parent product slug * @param declinationsToUse Array of declinations to use, in Addio DeclinationAttribut form */ static getSkuFromAttributes(baseSlug: string, declinationsToUse: IDeclinationAttribute[]): string; /** * Construct declinations from base TCGService product data * @static * @param game equivalent to Addio category for card came * @param baseSlug parent product slug, used to construct declination skus * @param shipping shipping information in Addio format * @param setAttribute value for "set" Addio attribute * @param currentValues all TCG attribute values, in Addio Declination format * @param otherAttribs all Addio existing Attributes * @param createdByServiceSlug the service slug that called for declinations to be created */ static createRecursiveAddioDeclinations(game: string, baseSlug: string, shipping: IShippingInfo, setAttribute: { attribute_id: string; values: IAttributeValue[]; } | undefined, currentValues: IDeclinationAttribute[], otherAttribs: IAttribute[], createdByServiceSlug: ExternalServiceSlugEnum | undefined): IDeclination[]; }