export declare const ORDER_POLICY_VERSION: "1.0.4"; export declare const ORDER_POLICY_SHA256: "76349ea002c1b8b66eb02f6f04b42db38786fcd07822cddeabe6ae73a4a1af75"; export declare const ORDER_POLICY_SCHEMA_SHA256: "dbe056bebe75166aa342f6254a744d6478ba87e0125970d101f3ca5a86aabe9e"; export declare const ORDER_POLICY_GENERATOR_SHA256: "e4ee0bd7706526d06a6aff0e561d4d6111ac41625dac862327725c78d96f74a9"; export declare const ORDER_POLICY_OPENAPI_SHA256: "5ffc0289f2c7b0cb1b17e0edebbd9132db368a1d7cbca51e36aff4678f6fd809"; export declare const ORDER_POLICY_PHP_SHA256: "1c2d6292fdd81de93ddd8c911e9ab50583285a1109a1d5e2403ff3d5039e29de"; export declare const ORDER_POLICY_MANIFEST: { readonly protocol: "zafirox.orders.policy"; readonly version: "1.0.4"; readonly dataSchemaVersion: "independent"; readonly profiles: { readonly "internal-create": { readonly fields: readonly ["tipoJoya", "estiloJoya", "tipoMaterial", "tipoOro", "calidadOro", "nona", "nonaGenero", "pesoIndividual", "tipoMedida", "peso", "medidas", "disenoUpload", "piedras", "cliente", "clienteID", "celular", "factCliente", "observaciones", "detalles", "marcado", "fechaFinal"]; readonly auxiliaryFields: readonly ["requiereDiseno3D", "anchos", "abonaMaterial", "materialAbonado", "fechas", "disenador"]; }; readonly "staff-edit": { readonly fields: readonly ["tipoJoya", "estiloJoya", "tipoMaterial", "tipoOro", "calidadOro", "nona", "nonaGenero", "pesoIndividual", "tipoMedida", "peso", "medidas", "disenoUpload", "piedras", "cliente", "clienteID", "celular", "factCliente", "observaciones", "detalles", "marcado", "fechaFinal"]; readonly auxiliaryFields: readonly ["requiereDiseno3D", "anchos", "abonaMaterial", "materialAbonado", "fechas", "disenador"]; }; readonly "external-create-v2": { readonly fields: readonly ["tipoJoya", "estiloJoya", "tipoMaterial", "tipoOro", "calidadOro", "nona", "nonaGenero", "pesoIndividual", "tipoMedida", "peso", "medidas", "disenoUpload", "piedras", "cliente", "clienteID", "celular", "factCliente", "observaciones", "detalles", "marcado", "fechaFinal"]; readonly auxiliaryFields: readonly ["requiereDiseno3D", "anchos"]; }; }; readonly limits: { readonly weight: { readonly max: "30"; readonly minimum: { readonly argollasPair: "2"; readonly argollasIndividual: "1"; readonly argollasIndividualDuo: "2"; readonly anillo: "0.8"; readonly dije: "0.3"; readonly otros: "0.3"; readonly default: "1"; }; }; readonly decimal: { readonly maxLength: 32; }; readonly text: { readonly observaciones: 255; readonly detallesByJewel: { readonly Anillo: 100; readonly Argollas: 100; readonly Dije: 250; readonly Otros: 250; }; readonly marcado: 40; readonly clienteID: 128; readonly customerName: 128; readonly customerPhone: 20; readonly invoiceName: 128; }; readonly design: { readonly min: 1; readonly max: 5; }; readonly stones: { readonly maxItems: 50; readonly minQuantity: 1; readonly maxQuantity: 999; }; readonly delivery: { readonly recommendedBusinessDays: 8; readonly urgentMaxBusinessDays: 2; readonly timezone: "America/Bogota"; readonly todayEditException: "authorized-staff-edit-only"; }; readonly editing: { readonly cutoff: "twice-elapsed-strictly-less-than-original-business-days"; readonly allowedStatuses: readonly ["Creando", "Pendiente", "Diseño", "Casting", "Laminando", "Soldando", "Mesa 2 - Armando", "Mesa 1 - Armando", "Mesa 3 - Armando", "Mesa - Chapando", "Diamantando", "Texturizando", "Ajustando Piedras", "Puliendo", "Grabando", "Chapando (Baño de Oro/Plata)", "Últimos detalles", "Control de Calidad"]; readonly blockedStatuses: readonly ["Liquidado", "Empacando", "Listo para Entrega", "Terminado/a", "Entregado", "Anulada"]; }; }; readonly catalogs: { readonly jewelTypes: readonly ["Anillo", "Argollas", "Dije", "Otros"]; readonly stylesByJewel: { readonly Anillo: readonly ["Mediacaña", "Planas"]; readonly Argollas: readonly ["Mediacaña", "Planas", "Confort", "Balon", "Planas-Confort", "Mediacaña-Confort"]; readonly Dije: readonly []; readonly Otros: readonly []; }; readonly materialsByJewel: { readonly Anillo: readonly ["Oro", "Plata", "Oro y Plata", "Cubiertas o Especiales"]; readonly Argollas: readonly ["Oro", "Plata", "Plata Paladio", "Bordes Oro", "Oro y Plata", "Cubiertas o Especiales"]; readonly Dije: readonly ["Oro", "Plata"]; readonly Otros: readonly ["Oro", "Plata"]; }; readonly goldTypesByJewel: { readonly Anillo: readonly ["Oro Amarillo", "Oro Blanco", "Oro Rosado", "2 Oros (Amarillo y Blanco)", "2 Oros (Amarillo y Rosa)", "2 Oros (Rosa y Banco)"]; readonly Argollas: readonly ["Oro Amarillo", "Oro Blanco", "Oro Rosado", "3 Oros (Amarillo, Blanco, Rosa)", "2 Oros (Amarillo y Blanco)", "2 Oros (Amarillo y Rosa)", "2 Oros (Rosa y Banco)"]; readonly Dije: readonly ["Oro Amarillo", "Oro Blanco", "Oro Rosado"]; readonly Otros: readonly ["Oro Amarillo", "Oro Blanco", "Oro Rosado"]; }; readonly ringSizesBySystem: { readonly Americana: readonly ["3", "3 (1/4)", "3 (1/2)", "3 (3/4)", "4", "4 (1/4)", "4 (1/2)", "4 (3/4)", "5", "5 (1/4)", "5 (1/2)", "5 (3/4)", "6", "6 (1/4)", "6 (1/2)", "6 (3/4)", "7", "7 (1/4)", "7 (1/2)", "7 (3/4)", "8", "8 (1/4)", "8 (1/2)", "8 (3/4)", "9", "9 (1/4)", "9 (1/2)", "9 (3/4)", "10", "10 (1/4)", "10 (1/2)", "10 (3/4)", "11", "11 (1/4)", "11 (1/2)", "11 (3/4)", "12", "12 (1/4)", "12 (1/2)", "12 (3/4)", "13", "13 (1/4)", "13 (1/2)", "13 (3/4)", "14", "14 (1/4)", "14 (1/2)", "14 (3/4)", "15"]; readonly Nacional: readonly ["3", "3 (1/2)", "4", "4 (1/2)", "5", "5 (1/2)", "6", "6 (1/2)", "7", "7 (1/2)", "8", "8 (1/2)", "9", "9 (1/2)", "10", "10 (1/2)", "11", "11 (1/2)", "12", "12 (1/2)", "13", "13 (1/2)", "14", "14 (1/2)", "15", "15 (1/2)", "16", "16 (1/2)", "17", "17 (1/2)", "18", "18 (1/2)", "19", "19 (1/2)", "20", "20 (1/2)", "21", "21 (1/2)", "22", "22 (1/2)", "23", "23 (1/2)", "24", "24 (1/2)", "25", "25 (1/2)", "26", "26 (1/2)", "27", "27 (1/2)", "28", "28 (1/2)", "29", "29 (1/2)", "30", "30 (1/2)", "31", "31 (1/2)", "32", "32 (1/2)", "34", "34 (1/2)", "35", "35 (1/2)"]; }; readonly goldQualities: readonly ["18K (720)", "18K (750)", "16K", "14K", "12K", "10K", "8K", "18K Comercial 680"]; readonly stoneTypes: readonly ["Diamante (Laboratorio)", "Diamante (Natural)", "Zafiro", "Esmeralda", "Zircon", "Rubi", "Monzanita", "Amatista", "Alejandra", "Topacio"]; readonly goldDetailMaterials: readonly ["Oro", "Oro y Plata", "Cubiertas o Especiales", "Bordes Oro"]; readonly commercial680RecommendedMaterials: readonly ["Oro y Plata", "Cubiertas o Especiales"]; readonly balonExcludedMaterials: readonly ["Bordes Oro", "Cubiertas o Especiales", "Oro y Plata"]; readonly multiGoldTypes: readonly ["3 Oros (Amarillo, Blanco, Rosa)", "2 Oros (Amarillo y Blanco)", "2 Oros (Amarillo y Rosa)", "2 Oros (Rosa y Banco)"]; }; readonly scenarios: readonly [{ readonly id: "weight.argollas.nona.gold"; readonly field: "peso"; readonly priority: 10; readonly when: { readonly jewelType: "Argollas"; readonly material: "Oro"; readonly nona: true; }; readonly operation: "weight.nona"; }, { readonly id: "weight.argollas.pair.gold"; readonly field: "peso"; readonly priority: 20; readonly when: { readonly jewelType: "Argollas"; readonly material: "Oro"; readonly nona: false; readonly individualWeight: true; }; readonly operation: "weight.pair"; }, { readonly id: "weight.standard.gold"; readonly field: "peso"; readonly priority: 30; readonly when: { readonly material: "Oro"; }; readonly operation: "weight.standard"; }, { readonly id: "weight.non-gold"; readonly field: "peso"; readonly priority: 40; readonly when: {}; readonly operation: "weight.non-gold"; }, { readonly id: "measurement.dije"; readonly field: "medidas"; readonly priority: 10; readonly when: { readonly jewelType: "Dije"; }; readonly operation: "measurement.dije"; }, { readonly id: "measurement.argollas.nona"; readonly field: "medidas"; readonly priority: 20; readonly when: { readonly jewelType: "Argollas"; readonly nona: true; }; readonly operation: "measurement.argollas-nona"; }, { readonly id: "measurement.argollas.pair"; readonly field: "medidas"; readonly priority: 30; readonly when: { readonly jewelType: "Argollas"; }; readonly operation: "measurement.argollas-pair"; }, { readonly id: "measurement.otros"; readonly field: "medidas"; readonly priority: 35; readonly when: { readonly jewelType: "Otros"; }; readonly operation: "measurement.otros"; }, { readonly id: "measurement.standard"; readonly field: "medidas"; readonly priority: 40; readonly when: {}; readonly operation: "measurement.standard"; }, { readonly id: "design.references"; readonly field: "disenoUpload"; readonly priority: 10; readonly when: {}; readonly operation: "design.references"; }, { readonly id: "stones.items"; readonly field: "piedras"; readonly priority: 10; readonly when: {}; readonly operation: "stones.items"; }, { readonly id: "catalog.jewel"; readonly field: "tipoJoya"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.jewel"; }, { readonly id: "catalog.style"; readonly field: "estiloJoya"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.style"; }, { readonly id: "catalog.material"; readonly field: "tipoMaterial"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.material"; }, { readonly id: "catalog.gold-type"; readonly field: "tipoOro"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.gold-type"; }, { readonly id: "catalog.gold-quality"; readonly field: "calidadOro"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.gold-quality"; }, { readonly id: "catalog.nona"; readonly field: "nona"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.nona"; }, { readonly id: "catalog.nona-gender"; readonly field: "nonaGenero"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.nona-gender"; }, { readonly id: "catalog.individual-weight"; readonly field: "pesoIndividual"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.individual-weight"; }, { readonly id: "catalog.measurement-system"; readonly field: "tipoMedida"; readonly priority: 10; readonly when: {}; readonly operation: "catalog.measurement-system"; }, { readonly id: "text.observations"; readonly field: "observaciones"; readonly priority: 10; readonly when: {}; readonly operation: "text.observations"; }, { readonly id: "text.details"; readonly field: "detalles"; readonly priority: 10; readonly when: {}; readonly operation: "text.details"; }, { readonly id: "text.engraving"; readonly field: "marcado"; readonly priority: 10; readonly when: {}; readonly operation: "text.engraving"; }, { readonly id: "text.customer"; readonly field: "cliente"; readonly priority: 10; readonly when: {}; readonly operation: "text.customer"; }, { readonly id: "text.customer-id"; readonly field: "clienteID"; readonly priority: 10; readonly when: {}; readonly operation: "text.customer-id"; }, { readonly id: "text.phone"; readonly field: "celular"; readonly priority: 10; readonly when: {}; readonly operation: "text.phone"; }, { readonly id: "text.invoice-name"; readonly field: "factCliente"; readonly priority: 10; readonly when: {}; readonly operation: "text.invoice-name"; }, { readonly id: "date.delivery"; readonly field: "fechaFinal"; readonly priority: 10; readonly when: {}; readonly operation: "date.delivery"; }]; readonly errorCodes: readonly ["order_policy.version", "order_policy.profile", "order_policy.field", "order_policy.ambiguous", "order_policy.uncovered", "order_policy.required", "order_policy.weight", "order_policy.measurement", "order_policy.design", "order_policy.catalog", "order_policy.text", "order_policy.delivery", "order_policy.edit_permission", "order_policy.edit_baseline", "order_policy.edit_status", "order_policy.edit_cutoff"]; readonly policyIds: { readonly editEligibility: "edit.before-half-original-term"; readonly deliveryTerm: "delivery.urgent"; readonly deliveryTodayException: "delivery.staff-edit.today"; }; readonly wire: { readonly externalCreateV2: { readonly rootRequired: readonly ["policy_version", "policy_sha256", "initial_date", "delivery_date", "jewel"]; readonly rootOptional: readonly ["performed_by", "order_subject_uid", "urgent_authorization_code"]; readonly jewelRequired: readonly ["customer", "customer_id", "phone", "type", "material", "design_refs"]; readonly jewelOptional: readonly ["invoice_name", "gold_type", "gold_quality", "style", "observations", "details", "requires_3d_design", "nona", "individual_weight", "nona_gender", "measurement_system", "measurements", "widths", "marking", "weight", "stones"]; readonly forbidden: readonly ["price", "uid", "status", "design_urls", "blob"]; }; }; }; export type OrderPolicyProfile = 'internal-create' | 'staff-edit' | 'external-create-v2'; export interface OrderPolicyFacts { readonly jewelType?: string; readonly jewelVariant?: string; readonly material?: string; readonly goldQuality?: string; readonly style?: string; readonly nona?: boolean; readonly nonaGender?: 'EL' | 'ELLA'; readonly individualWeight?: boolean; readonly measurementSystem?: 'Americana' | 'Nacional'; readonly initialDate?: string; readonly deliveryDate?: string; readonly today?: string; } export interface OrderPolicyViolation { readonly code: string; readonly field: string; readonly ruleId: string; } export interface OrderPolicyDecision { readonly allowed: boolean; readonly violations: readonly OrderPolicyViolation[]; readonly matchedRules: readonly string[]; } /** Evalúa un único campo normalizado. PHP repite la decisión antes de escribir. */ export declare function evaluateOrderField(field: string, value: unknown, facts: OrderPolicyFacts, profile: OrderPolicyProfile): OrderPolicyDecision; export interface OrderEditEligibilityFacts { readonly actorAuthorized: boolean; readonly baselineReady: boolean; readonly status: string; readonly originalBusinessDays: number; readonly elapsedBusinessDays: number; } /** El servidor calcula los días hábiles y suministra los hechos autoritativos. */ export declare function evaluateOrderEditEligibility(facts: OrderEditEligibilityFacts): OrderPolicyDecision; export interface OrderDeliveryTermFacts { readonly businessDays: number; readonly deliveryIsBusinessDay: boolean; readonly urgentAuthorized: boolean; readonly todayException: boolean; } /** La fecha festiva se determina en el calendario colombiano de cada runtime. */ export declare function evaluateOrderDeliveryTerm(facts: OrderDeliveryTermFacts): OrderPolicyDecision; //# sourceMappingURL=order-policy.generated.d.ts.map