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; export {};