import { RequestContext } from '../../api/common/request-context'; import { InjectableStrategy } from '../../common/types/injectable-strategy'; /** * @description * The OrderCodeStrategy determines how Order codes are generated. * A custom strategy can be defined which e.g. integrates with an * existing system to generate a code: * * :::info * * This is configured via the `orderOptions.orderCodeStrategy` property of * your VendureConfig. * * ::: * * @example * ```ts * class MyOrderCodeStrategy implements OrderCodeStrategy { * // Some imaginary service which calls out to an existing external * // order management system. * private mgmtService: ExternalOrderManagementService; * * init(injector: Injector) { * this.mgmtService = injector.get(ExternalOrderManagementService); * } * * async generate(ctx: RequestContext) { * const result = await this.mgmtService.getAvailableOrderParams(); * return result.code; * } * } * ``` * * @docsCategory orders * @docsPage OrderCodeStrategy */ export interface OrderCodeStrategy extends InjectableStrategy { /** * @description * Generates the order code. */ generate(ctx: RequestContext): string | Promise; } /** * @description * The default OrderCodeStrategy generates a random string consisting * of 16 uppercase letters and numbers. * * @docsCategory orders * @docsPage OrderCodeStrategy */ export declare class DefaultOrderCodeStrategy implements OrderCodeStrategy { generate(ctx: RequestContext): string; }