import { PoolClient } from '@evershop/postgres-query-builder'; import type { OrderRow, InsertResultWithRow } from '../../../types/db/index.js'; import { Cart } from './cart/Cart.js'; /** Context available in saveOrder hooks via 'this' */ export interface SaveOrderContext { cart: Cart; } /** Arguments passed to saveOrder function */ export type SaveOrderArgs = [cart: Cart, connection: PoolClient]; /** Context available in saveOrderItems hooks via 'this' */ export interface SaveOrderItemsContext { cart: Cart; } /** Arguments passed to saveOrderItems function */ export type SaveOrderItemsArgs = [ cart: Cart, orderId: number, connection: PoolClient ]; /** Context available in disableCart hooks via 'this' */ export interface DisableCartContext { cart: Cart; } /** Arguments passed to disableCart function */ export type DisableCartArgs = [cartId: number, connection: PoolClient]; /** Context available in createOrderFunc hooks via 'this' */ export interface CreateOrderContext { cart: Cart; } /** Arguments passed to createOrderFunc function */ export type CreateOrderArgs = [cart: Cart]; export type CreateOrderResult = InsertResultWithRow; /** * Create a new order from the cart * @param cart * @returns {Promise} - The created order object * @throws {Error} - If the order creation fails due to validation errors or database issues */ export declare const createOrder: (cart: Cart) => Promise; export declare function hookBeforeDisableCart(callback: (this: { cart: Cart; }, ...args: [ cartId: number, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookAfterDisableCart(callback: (this: { cart: Cart; }, ...args: [ cartId: number, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookBeforeSaveOrder(callback: (this: { cart: Cart; }, ...args: [ cart: Cart, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookAfterSaveOrder(callback: (this: { cart: Cart; }, ...args: [ cart: Cart, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookBeforeSaveOrderItems(callback: (this: { cart: Cart; }, ...args: [ cart: Cart, orderId: number, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookAfterSaveOrderItems(callback: (this: { cart: Cart; }, ...args: [ cart: Cart, orderId: number, connection: PoolClient ]) => void | Promise, priority?: number): void; export declare function hookBeforeCreateOrderFunc(callback: (this: { cart: Cart; }, ...args: [ cart: Cart ]) => void | Promise, priority?: number): void; export declare function hookAfterCreateOrderFunc(callback: (this: { cart: Cart; }, ...args: [ cart: Cart ]) => void | Promise, priority?: number): void;