import type { IBaseDirector } from '@unchainedshop/utils'; import type { WarehousingProvider, TokenSurrogate } from '@unchainedshop/core-warehousing'; import { type IWarehousingAdapter, type WarehousingContext, WarehousingError } from '../directors/index.ts'; import type { Modules } from '../modules.ts'; export interface EstimatedDispatch { shipping?: Date; earliestDelivery?: Date; } export type EstimatedStock = { quantity: number; } | null; export interface WarehousingInterface { _id: string; label: string; version: string; } export type IWarehousingDirector = IBaseDirector & { tokenMetadata: (virtualProviders: WarehousingProvider[], warehousingContext: WarehousingContext & { token: { tokenSerialNumber: string; }; }, unchainedAPI: any) => Promise; isInvalidateable: (virtualProviders: WarehousingProvider[], warehousingContext: WarehousingContext & { token: { tokenSerialNumber: string; }; }, unchainedAPI: any) => Promise; actions: (warehousingProvider: WarehousingProvider, warehousingContext: WarehousingContext, unchainedAPI: { modules: Modules; }) => Promise<{ configurationError: () => WarehousingError | null; isActive: () => boolean; estimatedStock: () => Promise; estimatedDispatch: () => Promise; tokenize: () => Promise; tokenMetadata: (tokenSerialNumber: string) => Promise; isInvalidateable: (tokenSerialNumber: string) => Promise; }>; }; export declare const WarehousingDirector: IWarehousingDirector;