import { type AdminContextKey, type BackendEndpoint, type LabelFormat, type LabelOutput, type LabelPosition, } from '@myparcel-pdk/common'; import {type FormInstance} from '@myparcel/vue-form-builder'; import {type OneOrMore} from '@myparcel/ts-utils'; import {type OrderIds, type ShipmentIds} from '../common.types'; import {type AdminAction} from '../../data'; import {type AdminActionEndpointMap, type MaybeAdminAction} from './actions.types'; type LabelParameters = { output?: LabelOutput; format?: LabelFormat; position?: OneOrMore; }; type OrderIdParameters = { orderIds?: OrderIds; }; interface ShipmentIdParameters { shipmentIds?: ShipmentIds; } type FormParameters = { form: FormInstance; }; type OptionalFormParameters = { form?: false | FormInstance; }; type ProductIdParameters = { productIds?: OneOrMore; }; type HooksParameters = { hooks: OneOrMore; }; type ContextParameters = { context?: OneOrMore; }; export interface EndpointMutationInputMap extends Record { [BackendEndpoint.FetchContext]: ContextParameters; [BackendEndpoint.UpdateAccount]: OptionalFormParameters; [BackendEndpoint.ExportOrders]: OrderIdParameters & OptionalFormParameters; [BackendEndpoint.FetchOrders]: OrderIdParameters; [BackendEndpoint.PrintOrders]: OrderIdParameters & LabelParameters & OptionalFormParameters; [BackendEndpoint.UpdateOrders]: OrderIdParameters & FormParameters; [BackendEndpoint.DeleteShipments]: OrderIdParameters & ShipmentIdParameters; [BackendEndpoint.ExportReturn]: OrderIdParameters & ShipmentIdParameters; [BackendEndpoint.FetchShipments]: OrderIdParameters & ShipmentIdParameters; [BackendEndpoint.UpdateShipments]: OrderIdParameters & ShipmentIdParameters; [BackendEndpoint.PrintShipments]: OrderIdParameters & ShipmentIdParameters & OptionalFormParameters & LabelParameters; [BackendEndpoint.FetchProducts]: ProductIdParameters; [BackendEndpoint.UpdatePluginSettings]: FormParameters; [BackendEndpoint.UpdateProductSettings]: ProductIdParameters & FormParameters; [BackendEndpoint.CreateWebhooks]: HooksParameters; [BackendEndpoint.DeleteWebhooks]: HooksParameters; [BackendEndpoint.FetchWebhooks]: never; } export type ActionInput = EndpointMutationInputMap[E]; export type ActionParameters = A extends AdminAction ? ActionInput : object; export type MaybeActionParameters = ActionParameters | void;