import type { ORDER_POLICY_MANIFEST } from './generated/order-policy.generated.ts'; /** * Tipos públicos del contrato v1 de `/api/v1/client`. * * El dinero viaja siempre como `DecimalString` (por ejemplo `"150000.00"`). * El SDK nunca lo convierte a `number`; un programa que necesite aritmética * debe usar una biblioteca decimal explícita. */ export type DecimalString = string; export type OpaqueId = string; export type OrderStoneType = (typeof ORDER_POLICY_MANIFEST.catalogs.stoneTypes)[number]; /** Fecha civil `AAAA-MM-DD`. */ export type CivilDate = string; /** Instante RFC 3339, por ejemplo `2026-09-15T17:00:00-05:00`. */ export type Rfc3339Instant = string; export interface Page { readonly items: readonly T[]; readonly nextCursor: string | null; readonly hasMore: boolean; readonly requestId: string; } export interface Account { readonly accountId: OpaqueId; readonly uid: OpaqueId; readonly balance: DecimalString; readonly currency: string; readonly status: string; readonly createdAt: Rfc3339Instant; readonly updatedAt: Rfc3339Instant | null; } export interface AccountTransaction { readonly transactionId: OpaqueId; readonly accountId: OpaqueId; readonly subaccountId: OpaqueId; readonly type: string; readonly amount: DecimalString; readonly balanceBefore: DecimalString; readonly balanceAfter: DecimalString; readonly description: string; readonly reference: string; readonly occurredAt: Rfc3339Instant; readonly currency: string; } export interface Order { readonly serial: string; readonly subjectUid: OpaqueId; readonly status: string; readonly customer: string; readonly invoiceName: string | null; readonly jewelType: string; readonly initialDate: CivilDate; readonly deliveryDate: CivilDate; readonly price: DecimalString; readonly currency: string; readonly performedBy: string | null; } export interface OrderCreationResult { readonly serial: string; readonly subjectUid: OpaqueId; readonly status: string; /** `true` cuando la misma `Idempotency-Key` ya había creado la orden. */ readonly replayed: boolean; readonly initialDate: CivilDate | null; readonly deliveryDate: CivilDate | null; readonly requestId: string; readonly policyVersion: string; readonly policySha256: string; } export interface PortfolioItem { readonly orderSerial: string; readonly subjectUid: OpaqueId; readonly status: string; readonly customer: string; readonly description: string | null; readonly orderTotal: DecimalString; readonly paidTotal: DecimalString; readonly balance: DecimalString; readonly currency: string; readonly updatedAt: Rfc3339Instant | null; } export interface Payment { readonly paymentId: OpaqueId; readonly subjectUid: OpaqueId; readonly orderSerials: readonly string[]; readonly amount: DecimalString; readonly currency: string; readonly paymentType: string; readonly reference: string; readonly occurredAt: Rfc3339Instant | null; } export interface StoneInput { readonly type: OrderStoneType; readonly quantity: number; readonly assignment?: 'EL' | 'ELLA' | 'GENERAL'; } export interface JewelSizesInput { readonly el?: string; readonly ella?: string; readonly solitario?: string; readonly anillo?: string; readonly ancho?: DecimalString; readonly largo?: DecimalString; } export interface JewelTripletInput { readonly el?: string; readonly ella?: string; readonly anillo?: string; } export interface JewelWeightInput { readonly el?: DecimalString; readonly ella?: DecimalString; readonly total?: DecimalString; readonly initial?: DecimalString; readonly final?: DecimalString; } export interface JewelInput { /** Documento del cliente escrito en la orden; no es un UID de cuenta. */ readonly customerId: string; readonly customer: string; readonly type: string; readonly phone: string; readonly invoiceName?: string; readonly material: string; readonly goldType?: string; readonly goldQuality?: string; readonly style?: string; readonly observations?: string; readonly details?: string; readonly requires3dDesign?: boolean; readonly nona?: boolean; readonly individualWeight?: boolean; readonly nonaGender?: 'EL' | 'ELLA'; readonly measurementSystem?: 'Nacional' | 'Americana'; readonly measurements?: JewelSizesInput; readonly widths?: JewelTripletInput; readonly marking?: JewelTripletInput; readonly weight?: JewelWeightInput; readonly stones?: readonly StoneInput[]; /** Referencias opacas certificables por Files; no son URLs ni archivos. */ readonly designRefs: readonly string[]; } export interface CreateOrderInput { readonly initialDate: CivilDate; readonly deliveryDate: CivilDate; readonly jewel: JewelInput; readonly performedBy?: string; /** UID de un miembro del alcance; por defecto el actor del token. */ readonly orderSubjectUid?: OpaqueId; readonly urgentAuthorizationCode?: string; } export interface CreateOrderOptions { /** Clave opaca 1..255 caracteres. Si se omite, el SDK genera una. */ readonly idempotencyKey?: string; } export interface PageQuery { readonly cursor?: string; readonly limit?: number; } export interface OrderListQuery extends PageQuery { readonly status?: string; readonly category?: string; readonly search?: string; readonly startDate?: CivilDate; readonly endDate?: CivilDate; readonly subjectUid?: OpaqueId; } export interface TransactionQuery extends PageQuery { readonly type?: string; readonly from?: CivilDate; readonly to?: CivilDate; } export interface PortfolioQuery extends PageQuery { readonly status?: string; readonly orderSerial?: string; readonly subjectUid?: OpaqueId; } export interface PaymentQuery extends PageQuery { readonly orderSerial?: string; readonly from?: CivilDate; readonly to?: CivilDate; readonly subjectUid?: OpaqueId; } /** Forma cruda del envelope v1 tal como lo emite el servidor. */ export interface WireEnvelope { readonly data: T; readonly meta: WireMeta; readonly errors: readonly WireError[]; } export interface WireMeta { readonly api_version: string; readonly request_id: string; readonly policy_version?: string; readonly policy_sha256?: string; readonly pagination?: { readonly next_cursor: string | null; readonly has_more: boolean; }; } export interface WireError { readonly code: string; readonly message: string; readonly field?: string | null; readonly retryable?: boolean; readonly diagnostic_id?: string | null; } //# sourceMappingURL=types.d.ts.map