aves-sdk 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +35 -0
- package/README.md +46 -49
- package/dist/index.d.mts +6564 -3145
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["stringish","r"],"sources":["../src/utils/case-transform.ts","../src/utils/booking-transform.ts","../src/utils/schema-transform.ts","../src/utils/wire-shapes.ts","../src/schemas/booking-shared.ts","../src/schemas/booking-response.ts","../src/schemas/common.ts","../src/schemas/booking-file.ts","../src/schemas/booking-ops.ts","../src/schemas/search-booking-file.ts","../src/xml/root.ts","../src/client/endpoints.ts","../src/client/booking.ts","../src/schemas/master-record.ts","../src/schemas/search.ts","../src/schemas/upsert.ts","../src/client/master-records.ts","../src/schemas/package-catalog.ts","../src/client/packages.ts","../src/error.ts","../src/utils/result.ts","../src/utils/timeout.ts","../src/utils/url.ts","../src/xml/client.ts","../src/client/transport.ts","../src/client/flat-aliases.ts","../src/client.ts"],"sourcesContent":["import type { WireShape } from \"./wire-shapes.js\";\n\ntype CamelFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToCamelCase<S extends string> =\n\tCamelFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Lowercase<F>}${R}`\n\t\t: CamelFromDelimiter<S>;\n\ntype PascalFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToPascalCase<S extends string> =\n\tPascalFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Capitalize<F>}${R}`\n\t\t: Capitalize<PascalFromDelimiter<S>>;\n\n/** Keys that are preserved as-is (no recursive transform) at runtime */\ntype Primitive = string | number | boolean | symbol | bigint | null | undefined;\ntype SpecialObject =\n\t| Date\n\t| RegExp\n\t| Map<unknown, unknown>\n\t| Set<unknown>\n\t| Error;\n\n/** Maps key K: strips leading @ and converts to camelCase for mapped output key */\ntype OverrideCamelKey<K extends string> = K extends \"RPH\"\n\t? \"rph\"\n\t: K extends \"TOServiceType\"\n\t\t? \"toServiceType\"\n\t\t: ToCamelCase<K>;\n\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n\t? OverrideCamelKey<Rest>\n\t: OverrideCamelKey<K>;\n\n/** Maps key K: strips leading @ and converts to PascalCase for mapped output key */\ntype PascalizeKey<K extends string> = K extends `@${infer Rest}`\n\t? ToPascalCase<Rest>\n\t: ToPascalCase<K>;\n\n/**\n * Recursively maps PascalCase/@-prefixed object keys to camelCase.\n * Reflects pascalToCamelKeys runtime: primitives and special objects preserved; arrays and plain objects recursively transformed.\n */\nexport type Camelize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Camelize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as CamelizeKey<K & string>]: Camelize<T[K]> }\n\t\t\t\t: T;\n\n/**\n * Recursively maps camelCase keys to PascalCase (with @ for attributes at runtime).\n * Reflects camelToPascalKeys output shape for type-level use.\n */\nexport type Pascalize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Pascalize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as PascalizeKey<K & string>]: Pascalize<T[K]> }\n\t\t\t\t: T;\n\nfunction camelToPascal(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction pascalToCamel(str: string): string {\n\treturn str.charAt(0).toLowerCase() + str.slice(1);\n}\n\nfunction isSpecialObject(obj: unknown): boolean {\n\treturn (\n\t\tobj instanceof Date ||\n\t\tobj instanceof RegExp ||\n\t\tobj instanceof Map ||\n\t\tobj instanceof Set ||\n\t\tobj instanceof Error\n\t);\n}\n\n// Keys that need a custom PascalCase/XML tag name (by source camelCase key)\nconst pascalKeyOverrides = new Map<string, string>([\n\t[\"toServiceType\", \"TOServiceType\"],\n\t[\"rph\", \"RPH\"],\n]);\n\nconst camelKeyOverrides = new Map<string, string>([\n\t[\"TOServiceType\", \"toServiceType\"],\n\t[\"RPH\", \"rph\"],\n]);\n\nfunction formatAttributeField(\n\tpascalKey: string,\n\toriginalField: string,\n\tpreserveCamel: boolean,\n) {\n\treturn preserveCamel ? `@${originalField}` : `@${pascalKey}`;\n}\n\n/**\n * camelCase → PascalCase. `@` attrs only for fields listed on the current {@link WireShape}.\n * Child objects/arrays use `shape.children[key]` (same shape for each array item).\n * Omit shape only for nested keys with no child entry (all elements at that level).\n */\nexport function camelToPascalKeys<T>(\n\tinput: T,\n\tshape?: WireShape,\n): Pascalize<T> {\n\tif (!input || typeof input !== \"object\" || isSpecialObject(input)) {\n\t\treturn input as Pascalize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => camelToPascalKeys(item, shape)) as Pascalize<T>;\n\t}\n\n\tconst attrs = shape?.attrs;\n\tconst preserve = shape?.preserveCamel;\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst pascalKey = pascalKeyOverrides.get(key) ?? camelToPascal(key);\n\t\tconst treatAsAttr = Boolean(attrs?.includes(key));\n\t\tconst finalKey = treatAsAttr\n\t\t\t? formatAttributeField(pascalKey, key, Boolean(preserve?.includes(key)))\n\t\t\t: pascalKey;\n\n\t\tconst childShape = shape?.children?.[key];\n\t\tresult[finalKey] = transformValue(value, (val) =>\n\t\t\tcamelToPascalKeys(val, childShape),\n\t\t);\n\t}\n\n\treturn result as Pascalize<T>;\n}\n\n/**\n * PascalCase / @attrs → camelCase. Strips `@` only; no shape needed.\n */\nexport function pascalToCamelKeys<T>(input: T): Camelize<T> {\n\tif (input === null || typeof input !== \"object\" || isSpecialObject(input)) {\n\t\treturn input as Camelize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => pascalToCamelKeys(item)) as Camelize<T>;\n\t}\n\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst parsedKey = key.startsWith(\"@\") ? key.slice(1) : key;\n\t\tconst camelKey =\n\t\t\tcamelKeyOverrides.get(parsedKey) ?? pascalToCamel(parsedKey);\n\t\tresult[camelKey] = transformValue(value, pascalToCamelKeys);\n\t}\n\n\treturn result as Camelize<T>;\n}\n\nfunction transformValue(\n\tvalue: unknown,\n\ttransformObject: (obj: Record<string, unknown>) => unknown,\n): unknown {\n\tif (!value || typeof value !== \"object\" || isSpecialObject(value)) {\n\t\treturn value;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item) => transformValue(item, transformObject));\n\t}\n\n\treturn transformObject(value as Record<string, unknown>);\n}\n","import { camelToPascalKeys } from \"./case-transform.js\";\nimport type { WireShape } from \"./wire-shapes.js\";\n\n/** Only naming exception: financialDeadlineList → deadlineDetail */\nconst DETAIL_KEY_OVERRIDES: Record<string, string> = {\n\tfinancialDeadlineList: \"deadlineDetail\",\n};\n\nfunction detailKeyFor(listKey: string) {\n\treturn DETAIL_KEY_OVERRIDES[listKey] ?? listKey.replace(/List$/, \"Detail\");\n}\n\nexport type ListWrapOptions = {\n\tlistKeys: readonly string[];\n\t/** Create-only: wrap each item as `{ detailKey: item }` instead of `{ detailKey: items }` */\n\tarrayOfOne?: ReadonlySet<string>;\n};\n\n/**\n * Flatten SDK `*List: Detail[]` → AVES List/Detail wrappers.\n * Returns a new object (list values change shape; not the input type).\n */\nexport function wrapListDetails(\n\tinput: Record<string, unknown>,\n\t{ listKeys, arrayOfOne }: ListWrapOptions,\n): Record<string, unknown> {\n\tconst out: Record<string, unknown> = { ...input };\n\tconst one = arrayOfOne ?? new Set<string>();\n\tfor (const listKey of listKeys) {\n\t\tconst value = out[listKey];\n\t\tif (!Array.isArray(value)) continue;\n\t\tconst detailKey = detailKeyFor(listKey);\n\t\tout[listKey] = one.has(listKey)\n\t\t\t? value.map((item) => ({ [detailKey]: item }))\n\t\t\t: { [detailKey]: value };\n\t}\n\treturn out;\n}\n\nexport const CREATE_BOOKING_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n\t\"selectedPackageList\",\n\t\"extraQuoteServiceList\",\n\t\"deadlineList\",\n\t\"financialDeadlineList\",\n\t\"paymentList\",\n\t\"noteList\",\n] as const;\n\nexport const CREATE_ARRAY_OF_ONE = new Set([\n\t\"selectedServiceList\",\n\t\"passengerList\",\n]);\n\nexport const MOD_SERVICES_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n\t\"cancellableBookedServiceList\",\n\t\"deadlineList\",\n] as const;\n\nexport const MOD_HEADER_LIST_KEYS = [\n\t\"passengerList\",\n\t\"financialDeadlineList\",\n] as const;\n\nexport const FILE_PAYMENT_LIST_KEYS = [\"filePaymentList\"] as const;\n\n/**\n * Empty paxAssociated [] → \"\" so XML emits `<PaxAssociated/>` instead of omitting the tag.\n */\nexport function normalizeEmptyPaxAssociated<T>(input: T): T {\n\tconst walk = (node: unknown): unknown => {\n\t\tif (node === null || typeof node !== \"object\") return node;\n\t\tif (Array.isArray(node)) return node.map(walk);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const [key, val] of Object.entries(node)) {\n\t\t\tif (key === \"paxAssociated\" && Array.isArray(val) && !val.length) {\n\t\t\t\tresult[key] = \"\";\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tresult[key] = walk(val);\n\t\t}\n\t\treturn result;\n\t};\n\treturn walk(input) as T;\n}\n\n/**\n * camelCase body → optional list wrap → PascalCase / @attrs via required wire shape.\n */\nexport function toWireBody(\n\tinput: Record<string, unknown>,\n\tshape: WireShape,\n\twrap?: ListWrapOptions,\n) {\n\tconst body = wrap ? wrapListDetails(input, wrap) : input;\n\treturn camelToPascalKeys(normalizeEmptyPaxAssociated(body), shape);\n}\n","import type { BaseSchema, ObjectEntries } from \"valibot\";\nimport * as v from \"valibot\";\nimport { type ListWrapOptions, toWireBody } from \"./booking-transform.js\";\nimport { camelToPascalKeys, pascalToCamelKeys } from \"./case-transform.js\";\nimport type { WireShape } from \"./wire-shapes.js\";\n\n/**\n * camelCase input → optional list wrap → PascalCase / @attrs via required wire shape.\n * Use `elementOnlyWire` (`{}`) when the root has no attributes.\n */\nexport function createApiSchema<\n\tTInput extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(inputSchema: TInput, shape: WireShape, wrap?: ListWrapOptions) {\n\treturn v.pipe(\n\t\tinputSchema,\n\t\tv.transform((input) =>\n\t\t\ttoWireBody(input as Record<string, unknown>, shape, wrap),\n\t\t),\n\t);\n}\n\n/**\n * Normalize XML one-or-many nodes into a typed array.\n */\nexport function oneOrMany<\n\tTSchema extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(itemSchema: TSchema) {\n\treturn v.pipe(\n\t\tv.union([v.array(itemSchema), itemSchema]),\n\t\tv.transform((input): v.InferOutput<TSchema>[] =>\n\t\t\tArray.isArray(input) ? input : [input],\n\t\t),\n\t);\n}\n\n/**\n * Creates a schema that transforms PascalCase API responses to camelCase\n */\nexport function createResponseSchema<\n\tTApi extends BaseSchema<unknown, unknown, v.BaseIssue<unknown>>,\n>(apiSchema: TApi) {\n\treturn v.pipe(\n\t\tapiSchema,\n\t\tv.transform((input) => pascalToCamelKeys(input)),\n\t);\n}\n\n/**\n * Validation schema for already-transformed PascalCase/@attr payloads.\n * Uses `shape.attrs` (not a global field set) to decide `@` vs element.\n */\nexport function createApiValidationSchema<\n\tTEntries extends ObjectEntries,\n\tTMessage extends v.ErrorMessage<v.ObjectIssue> | undefined,\n>(inputSchema: v.ObjectSchema<TEntries, TMessage>, shape: WireShape = {}) {\n\tconst validationEntries: Record<string, unknown> = {};\n\tconst attrs = shape.attrs ?? [];\n\tconst preserve = shape.preserveCamel ?? [];\n\n\tfor (const key in inputSchema.entries) {\n\t\tconst pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n\t\tconst isAttribute = attrs.includes(key);\n\t\tconst finalKey = isAttribute\n\t\t\t? preserve.includes(key)\n\t\t\t\t? `@${key}`\n\t\t\t\t: `@${pascalKey}`\n\t\t\t: pascalKey;\n\t\tvalidationEntries[finalKey] = inputSchema.entries[key];\n\t}\n\n\treturn v.object(validationEntries as TEntries);\n}\n\nexport { camelToPascalKeys, toWireBody };\n","/**\n * Per-shape wire rules: which camelCase fields are XML @attrs at this level.\n * Children are keyed by the camelCase property name on the parent object.\n * Always pass an explicit shape at request boundaries — missing shape ⇒ all elements.\n */\nexport type WireShape = {\n\tattrs?: readonly string[];\n\tpreserveCamel?: readonly string[];\n\tchildren?: Readonly<Record<string, WireShape>>;\n};\n\nexport const headerWire = {\n\tattrs: [\n\t\t\"hostID\",\n\t\t\"xtoken\",\n\t\t\"interface\",\n\t\t\"userName\",\n\t\t\"status\",\n\t\t\"languageCode\",\n\t],\n} as const satisfies WireShape;\n\nexport const financialDetailWire = {\n\tattrs: [\n\t\t\"currencyCode\",\n\t\t\"creditLimit\",\n\t\t\"c_PaymentType\",\n\t\t\"c_SpecPaymentTypeCode\",\n\t\t\"s_PaymentType\",\n\t\t\"s_SpecPaymentTypeCode\",\n\t\t\"enableElectronicInvoicing\",\n\t\t\"electronicInvoicingType\",\n\t],\n} as const satisfies WireShape;\n\nexport const idDocumentDetailWire = {\n\tattrs: [\n\t\t\"idType\",\n\t\t\"idCode\",\n\t\t\"idIssueLocation\",\n\t\t\"idIssueCounty\",\n\t\t\"idIssueDate\",\n\t\t\"idExpireDate\",\n\t],\n} as const satisfies WireShape;\n\nexport const accountPoliciesWire = {\n\tattrs: [\n\t\t\"acceptProfilingPolicies\",\n\t\t\"acceptPrivacyPolicies\",\n\t\t\"acceptNewsletterPolicies\",\n\t],\n} as const satisfies WireShape;\n\nexport const dynamicFieldsWire = {\n\tattrs: [\"key\", \"value\"],\n} as const satisfies WireShape;\n\nexport const supplierRefMasterRecordsWire = {\n\tattrs: [\"supplierRefCode\", \"companyMainBusinessType\", \"carrierType\"],\n} as const satisfies WireShape;\n\nexport const masterRecordWire = {\n\tattrs: [\"recordCode\", \"insertCriteria\"],\n\tchildren: {\n\t\tfinancialDetail: financialDetailWire,\n\t\tidDocumentDetail: idDocumentDetailWire,\n\t\taccountPolicies: accountPoliciesWire,\n\t\tdynamicFields: dynamicFieldsWire,\n\t\tsupplierRefMasterRecords: supplierRefMasterRecordsWire,\n\t},\n} as const satisfies WireShape;\n\n/** Search master — recordCode stays element; date range uses attrs. */\nexport const searchMasterWire = {\n\tchildren: {\n\t\tlastModificationDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t},\n} as const satisfies WireShape;\n\nexport const statisticCodesWire = {\n\tattrs: [\"sCode1\", \"sCode2\", \"sCode3\", \"sCode4\", \"sCode5\", \"sCode6\"],\n\tpreserveCamel: [\"sCode1\", \"sCode2\", \"sCode3\", \"sCode4\", \"sCode5\", \"sCode6\"],\n} as const satisfies WireShape;\n\nexport const destinationWire = {\n\tattrs: [\"code\", \"iataCode\", \"nationCode\", \"type\"],\n} as const satisfies WireShape;\n\nexport const noteDetailWire = {\n\tattrs: [\"nType\", \"title\"],\n} as const satisfies WireShape;\n\nexport const passengerDetailWire = {\n\tattrs: [\"rph\", \"roomRph\", \"billingHolder\"],\n\tchildren: {\n\t\tnotes: { children: { noteDetail: noteDetailWire } },\n\t\tidDocInfo: idDocumentDetailWire,\n\t},\n} as const satisfies WireShape;\n\nexport const serviceFareWire = {\n\tattrs: [\n\t\t\"currencyCode\",\n\t\t\"exchangeRate\",\n\t\t\"cost\",\n\t\t\"costTax\",\n\t\t\"costType\",\n\t\t\"vatCostCurrencyCode\",\n\t\t\"price\",\n\t\t\"priceTax\",\n\t\t\"priceType\",\n\t],\n} as const satisfies WireShape;\n\nexport const selectedPackageDetailWire = {\n\tattrs: [\"pCode\", \"startDate\", \"endDate\", \"getServicesFromPackage\"],\n\tpreserveCamel: [\"pCode\"],\n} as const satisfies WireShape;\n\nexport const selectedServiceDetailWire = {\n\tattrs: [\n\t\t\"sCode\",\n\t\t\"ssCode\",\n\t\t\"supplierMasterCode\",\n\t\t\"supplierName\",\n\t\t\"supplierMasterSearchField\",\n\t\t\"supplierFiscalCode\",\n\t],\n\tpreserveCamel: [\"sCode\", \"ssCode\"],\n\tchildren: {\n\t\tserviceFare: serviceFareWire,\n\t\tavesServiceInfo: {\n\t\t\tchildren: { serviceFare: serviceFareWire },\n\t\t},\n\t\tnoteList: { children: { noteDetail: noteDetailWire } },\n\t},\n} as const satisfies WireShape;\n\nconst selectedServiceListWire = {\n\tchildren: { selectedServiceDetail: selectedServiceDetailWire },\n} as const satisfies WireShape;\n\nexport const passengerListWire = {\n\tchildren: { passengerDetail: passengerDetailWire },\n} as const satisfies WireShape;\n\nconst selectedPackageListWire = {\n\tchildren: { selectedPackageDetail: selectedPackageDetailWire },\n} as const satisfies WireShape;\n\nconst deadlineListWire = {\n\tchildren: {\n\t\tdeadlineDetail: {\n\t\t\tattrs: [\"deadlineCode\", \"description\", \"expireDate\", \"reschedulingCode\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst financialDeadlineListWire = {\n\tchildren: {\n\t\tdeadlineDetail: {\n\t\t\tattrs: [\"reschedulingCode\", \"expireDate\", \"totalAmount\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst paymentListWire = {\n\tchildren: {\n\t\tpaymentDetail: {\n\t\t\tattrs: [\n\t\t\t\t\"paymentDate\",\n\t\t\t\t\"paumentNote\",\n\t\t\t\t\"amount\",\n\t\t\t\t\"paymentUser\",\n\t\t\t\t\"paymentType\",\n\t\t\t],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst filePaymentListWire = {\n\tchildren: {\n\t\tfilePaymentDetail: {\n\t\t\tattrs: [\n\t\t\t\t\"paymentDate\",\n\t\t\t\t\"paymentNote\",\n\t\t\t\t\"payerMasterCode\",\n\t\t\t\t\"payerName\",\n\t\t\t\t\"amount\",\n\t\t\t\t\"paymentType\",\n\t\t\t],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst cancellableBookedServiceListWire = {\n\tchildren: {\n\t\tcancellableBookedServiceDetail: {\n\t\t\tattrs: [\"cancelOperationType\", \"serviceRefType\", \"serviceRefValue\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst noteListWire = {\n\tchildren: { noteDetail: noteDetailWire },\n} as const satisfies WireShape;\n\nconst bookingFileDocumentWire = {\n\tattrs: [\"printDoc\", \"sendDocViaEmail\"],\n\tchildren: {\n\t\tinfoDocumentsToPrint: {\n\t\t\tchildren: {\n\t\t\t\tinfoDocumentToPrint: {\n\t\t\t\t\tchildren: {\n\t\t\t\t\t\tdocumentCustomizablePrintParameters: {\n\t\t\t\t\t\t\tattrs: [\"makeDocumentTo\", \"fillInCode\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst bookingFileStatusWire = {\n\tattrs: [\"value\", \"expiredDate\"],\n} as const satisfies WireShape;\n\nconst customerDetailWire = {\n\tattrs: [\"recordCode\"],\n} as const satisfies WireShape;\n\nconst bookingFinancialInfoWire = {\n\tattrs: [\"customer_PaymentType\", \"customer_SpecPaymentTypeCode\"],\n} as const satisfies WireShape;\n\nconst packageParamsWire = {\n\tattrs: [\n\t\t\"getAllDeptDate\",\n\t\t\"getFlightPlan\",\n\t\t\"getAllAccomodation\",\n\t\t\"getRealAvailability\",\n\t],\n} as const satisfies WireShape;\n\nconst topServiceParamsWire = {\n\tattrs: [\"compatibleAccomodation\", \"alternativeAccomodation\"],\n} as const satisfies WireShape;\n\nconst featureListWire = {\n\tchildren: { featureDetail: { attrs: [\"code\", \"name\"] } },\n} as const satisfies WireShape;\n\nconst fileStatusWire = {\n\tattrs: [\"value\", \"expiredDate\", \"optionedFileExpireDatePolicy\"],\n} as const satisfies WireShape;\n\nconst penaltyWire = {\n\tattrs: [\"apply\", \"specificCode\"],\n} as const satisfies WireShape;\n\n/**\n * CreateBookingFile / ModFileServices / ModFileHeader after list-wrap.\n * Root startDate/endDate stay elements (not in attrs).\n */\nexport const bookingFileWire = {\n\tchildren: {\n\t\tcustomerDetail: customerDetailWire,\n\t\tbookingFileStatus: bookingFileStatusWire,\n\t\tstatisticCodes: statisticCodesWire,\n\t\tdestination: destinationWire,\n\t\tbookingFileDocument: bookingFileDocumentWire,\n\t\tbookingFinancialInfo: bookingFinancialInfoWire,\n\t\tselectedPackageDetail: selectedPackageDetailWire,\n\t\tselectedPackageList: selectedPackageListWire,\n\t\tselectedServiceList: selectedServiceListWire,\n\t\textraQuoteServiceList: selectedServiceListWire,\n\t\tpassengerList: passengerListWire,\n\t\tdeadlineList: deadlineListWire,\n\t\tfinancialDeadlineList: financialDeadlineListWire,\n\t\tpaymentList: paymentListWire,\n\t\tcancellableBookedServiceList: cancellableBookedServiceListWire,\n\t\tnoteList: noteListWire,\n\t},\n} as const satisfies WireShape;\n\n/**\n * InsertFilePaymentList — root paymentUser is an @attr; detail fields nested.\n */\nexport const filePaymentListRequestWire = {\n\tattrs: [\"paymentUser\"],\n\tchildren: {\n\t\tfilePaymentList: filePaymentListWire,\n\t},\n} as const satisfies WireShape;\n\n/** SearchFileRQ — date ranges / insurance / status use attrs. */\nexport const searchFileWire = {\n\tchildren: {\n\t\tfileStatus: { attrs: [\"value\", \"expireDate\"] },\n\t\tstartDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tcreatedDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tlastModificationDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tinsurance: { attrs: [\"code\", \"number\"] },\n\t},\n} as const satisfies WireShape;\n\n/** GetPackageDetail SelectedServiceDetail (ServiceCode + PackageRow). */\nexport const packagePrgServiceDetailWire = {\n\tattrs: [\"serviceCode\", \"packageRow\"],\n} as const satisfies WireShape;\n\nexport const packageDetailRequestWire = {\n\tchildren: {\n\t\tstatisticCodes: statisticCodesWire,\n\t\tselectedServiceList: {\n\t\t\tchildren: { selectedServiceDetail: packagePrgServiceDetailWire },\n\t\t},\n\t\tpassengerList: passengerListWire,\n\t},\n} as const satisfies WireShape;\n\n/** BaseSearch fragment inside AvesSearchRQ (dates are elements). */\nexport const baseSearchWire = {\n\tchildren: {\n\t\tpassengerList: passengerListWire,\n\t},\n} as const satisfies WireShape;\n\n/** AvesSearchRQ body outside BaseSearch (after featureList wrap). */\nexport const avesSearchWire = {\n\tchildren: {\n\t\tdestination: destinationWire,\n\t\tstatisticCodes: statisticCodesWire,\n\t\tpackageParams: packageParamsWire,\n\t\ttopServiceParams: topServiceParamsWire,\n\t\tfeatureList: featureListWire,\n\t},\n} as const satisfies WireShape;\n\nexport const setFileStatusWire = {\n\tchildren: {\n\t\tfileStatus: fileStatusWire,\n\t\tpenalty: penaltyWire,\n\t\tbookingFileDocument: bookingFileDocumentWire,\n\t},\n} as const satisfies WireShape;\n\n/** Element-only request roots (CancelFile, SetFileServiceStatus, CommitPackage). */\nexport const elementOnlyWire = {} as const satisfies WireShape;\n","import * as v from \"valibot\";\n\n/** AVES bool-ish wire values */\nexport const BoolishSchema = v.union([\n\tv.literal(\"true\"),\n\tv.literal(\"false\"),\n\tv.boolean(),\n]);\n\n// ---------------------------------------------------------------------------\n// Status unions — request base, set extends, response wire + normalize\n// ---------------------------------------------------------------------------\n\n/** Canonical statuses accepted on CreateBookingFile */\nexport const BookingFileStatusRequestSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** SetBookingFileStatus adds NULLIFIED */\nexport const SetFileStatusValueSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\n/** Wire aliases seen in BOOKEDFILE responses */\nexport const BookingFileStatusWireSchema = v.union([\n\tv.literal(\"QUOTATION\"),\n\tv.literal(\"WORK_IN_PROGRESS\"),\n\tv.literal(\"CONFIRM\"),\n\tv.literal(\"CONFIRMED\"),\n\tv.literal(\"OPTION\"),\n\tv.literal(\"OPTIONED\"),\n\tv.literal(\"REQUEST\"),\n\tv.literal(\"REQUESTED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n]);\n\nconst statusAliasToCanonical = {\n\tCONFIRM: \"CONFIRMED\",\n\tOPTION: \"OPTIONED\",\n\tREQUESTED: \"REQUEST\",\n} as const;\n\nexport type CanonicalBookingFileStatus =\n\t| Exclude<\n\t\t\tv.InferOutput<typeof BookingFileStatusWireSchema>,\n\t\t\tkeyof typeof statusAliasToCanonical\n\t >\n\t| (typeof statusAliasToCanonical)[keyof typeof statusAliasToCanonical];\n\n/** Normalize BOOKEDFILE status wire aliases to canonical SDK values. */\nexport function canonicalizeBookingFileStatus(\n\tvalue: v.InferOutput<typeof BookingFileStatusWireSchema>,\n): CanonicalBookingFileStatus {\n\tif (value in statusAliasToCanonical)\n\t\treturn statusAliasToCanonical[value as keyof typeof statusAliasToCanonical];\n\treturn value as CanonicalBookingFileStatus;\n}\n\n// ---------------------------------------------------------------------------\n// Service type enums (shared request + response)\n// ---------------------------------------------------------------------------\n\nexport const AvesServiceTypeSchema = v.union([\n\tv.literal(\"TOP\"),\n\tv.literal(\"TOP_SS\"),\n\tv.literal(\"ADV\"),\n\tv.literal(\"GRP\"),\n\tv.literal(\"OTHER\"),\n]);\n\nexport const ToServiceTypeSchema = v.union([\n\tv.literal(\"ACCOMODATION\"),\n\tv.literal(\"TRANSPORT\"),\n\tv.literal(\"CHARTER\"),\n\tv.literal(\"TRANSFER\"),\n\tv.literal(\"PULLMAN\"),\n\tv.literal(\"FERRY\"),\n\tv.literal(\"CRUISE\"),\n\tv.literal(\"INSURANCE\"),\n\tv.literal(\"EXTRAFEE\"),\n\tv.literal(\"PENALTY\"),\n\tv.literal(\"PROMO\"),\n\tv.literal(\"OTHER\"),\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"RESIDENCE\"),\n]);\n\nexport const BookedServiceStatusSchema = v.union([\n\tv.literal(\"REQUEST\"),\n\tv.literal(\"ALLOTMENT_REQUEST\"),\n\tv.literal(\"CONFIRMED_REQUEST\"),\n\tv.literal(\"CONFIRMED_EXTRA_ALLOTMENT\"),\n\tv.literal(\"WAITLISTED\"),\n\tv.literal(\"ALLOTMENT\"),\n\tv.literal(\"REFUSED\"),\n\tv.literal(\"NULLIFIED\"),\n\tv.literal(\"CANCELED\"),\n\tv.literal(\"MESSAGE\"),\n]);\n\n/** Payment type codes (Create paymentList + InsertFilePaymentList) */\nexport const PaymentTypeSchema = v.union([\n\tv.literal(\"C\"),\n\tv.literal(\"B\"),\n\tv.literal(\"D\"),\n\tv.literal(\"T\"),\n\tv.literal(\"P\"),\n\tv.literal(\"R\"),\n\tv.literal(\"A\"),\n\tv.literal(\"H\"),\n\tv.literal(\"I\"),\n\tv.literal(\"J\"),\n\tv.literal(\"K\"),\n\tv.literal(\"L\"),\n\tv.literal(\"M\"),\n\tv.literal(\"N\"),\n\tv.literal(\"O\"),\n\tv.literal(\"Q\"),\n\tv.literal(\"S\"),\n\tv.literal(\"U\"),\n\tv.literal(\"V\"),\n]);\n","import * as v from \"valibot\";\nimport { oneOrMany } from \"../utils/schema-transform.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookedServiceStatusSchema,\n\tBookingFileStatusWireSchema,\n\tcanonicalizeBookingFileStatus,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\n\nconst stringish = v.union([v.string(), v.number()]);\n\n/** BookingFileStatus in BOOKEDFILE responses — aliases normalized to canonical values */\nexport const BookingFileStatusApiSchema = v.pipe(\n\tv.object({\n\t\t\"@Value\": BookingFileStatusWireSchema,\n\t\t\"@ExpiredDate\": v.optional(v.string()),\n\t\t\"@ExpireDate\": v.optional(v.string()),\n\t}),\n\tv.transform((status) => ({\n\t\t\"@Value\": canonicalizeBookingFileStatus(status[\"@Value\"]),\n\t\t\"@ExpiredDate\": status[\"@ExpiredDate\"] ?? status[\"@ExpireDate\"],\n\t})),\n);\n\nexport const PricePerPaxDetailApiSchema = v.object({\n\t\"@PaxRef\": v.string(),\n\t\"@Price\": stringish,\n});\n\nexport const PaxPriceListApiSchema = v.object({\n\tPricePerPaxDetail: v.optional(oneOrMany(PricePerPaxDetailApiSchema)),\n});\n\nexport const ServiceTotalAmountDetailApiSchema = v.object({\n\t\"@CommissionCode\": v.optional(v.string()),\n\t\"@CommissionPercentage\": v.optional(stringish),\n\t\"@CommissionAmount\": v.optional(stringish),\n\t\"@PriceListCode\": v.optional(v.string()),\n\t\"@CostListCode\": v.optional(v.string()),\n\t\"@ServiceTotalPrice\": v.optional(stringish),\n\tPaxPriceList: v.optional(PaxPriceListApiSchema),\n});\n\nexport const SupplierInfoApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\t\"@Email\": v.optional(v.string()),\n\t\"@LanguageCode\": v.optional(v.string()),\n});\n\nexport const WebStatisticApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Description\": v.optional(v.string()),\n});\n\n/** Wire schema — accepts AVES dialect aliases, then normalizes */\nconst BookedServiceDetailWireSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@ServiceCode\": v.optional(v.string()),\n\t\"@FromExternalProvider\": v.optional(stringish),\n\t\"@isFromExternalProvider\": v.optional(stringish),\n\tAvesServiceType: v.optional(AvesServiceTypeSchema),\n\tTOServiceType: v.optional(ToServiceTypeSchema),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tThirdDescription: v.optional(v.string()),\n\tFourthDescription: v.optional(v.string()),\n\tServiceStatus: v.optional(BookedServiceStatusSchema),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tQty: v.optional(stringish),\n\tPax: v.optional(stringish),\n\tPeriodType: v.optional(v.string()),\n\tPaxMultiplier: v.optional(v.string()),\n\tExternalProviderCode: v.optional(v.string()),\n\tWebStatisticCode: v.optional(v.string()),\n\tWebStatisticDescription: v.optional(v.string()),\n\tWebStatistic: v.optional(WebStatisticApiSchema),\n\tSupplierInfo: v.optional(SupplierInfoApiSchema),\n\tServiceTotalAmountDetail: v.optional(ServiceTotalAmountDetailApiSchema),\n});\n\n/** BookedServiceDetail — single fromExternalProvider after normalize */\nexport const BookedServiceDetailApiSchema = v.pipe(\n\tBookedServiceDetailWireSchema,\n\tv.transform((service) => ({\n\t\t\"@RPH\": service[\"@RPH\"],\n\t\t\"@ServiceCode\": service[\"@ServiceCode\"],\n\t\t\"@FromExternalProvider\":\n\t\t\tservice[\"@FromExternalProvider\"] ?? service[\"@isFromExternalProvider\"],\n\t\tAvesServiceType: service.AvesServiceType,\n\t\tTOServiceType: service.TOServiceType,\n\t\tFirstDescription: service.FirstDescription,\n\t\tSecondDescription: service.SecondDescription,\n\t\tThirdDescription: service.ThirdDescription,\n\t\tFourthDescription: service.FourthDescription,\n\t\tServiceStatus: service.ServiceStatus,\n\t\tStartDate: service.StartDate,\n\t\tEndDate: service.EndDate,\n\t\tQty: service.Qty,\n\t\tPax: service.Pax,\n\t\tPeriodType: service.PeriodType,\n\t\tPaxMultiplier: service.PaxMultiplier,\n\t\tExternalProviderCode: service.ExternalProviderCode,\n\t\tWebStatisticCode: service.WebStatisticCode,\n\t\tWebStatisticDescription: service.WebStatisticDescription,\n\t\tWebStatistic: service.WebStatistic,\n\t\tSupplierInfo: service.SupplierInfo,\n\t\tServiceTotalAmountDetail: service.ServiceTotalAmountDetail,\n\t})),\n);\n\nexport const BookedServiceListApiSchema = v.object({\n\tBookedServiceDetail: v.optional(oneOrMany(BookedServiceDetailApiSchema)),\n});\n\n/** TotalAmountDetail — attributes on BOOKEDFILE */\nexport const TotalAmountDetailApiSchema = v.object({\n\t\"@CurrencyCode\": v.optional(v.string()),\n\t\"@TotalAmountBeforeDiscount\": v.optional(stringish),\n\t\"@TotalAmountAfterDiscount\": v.optional(stringish),\n\t\"@TotalDiscount\": v.optional(stringish),\n\t\"@TotalAmountWithoutVat\": v.optional(stringish),\n\t\"@DueAmount\": v.optional(stringish),\n\t\"@PaiedAmount\": v.optional(stringish),\n\t\"@Balance\": v.optional(stringish),\n});\n\nexport const PassengerDetailApiSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@RoomRPH\": v.optional(v.string()),\n\t\"@BillingHolder\": v.optional(stringish),\n\tName: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tSex: v.optional(v.string()),\n\tBirthDate: v.optional(v.string()),\n\tBirthPlace: v.optional(v.string()),\n\tNationCode: v.optional(v.string()),\n\tCitizenshipCode: v.optional(v.string()),\n\tFiscalCode: v.optional(v.string()),\n\tPhoneNumber: v.optional(v.string()),\n\tEMail: v.optional(v.string()),\n\tMasterRecordCode: v.optional(v.string()),\n});\n\nexport const PassengerListApiSchema = v.object({\n\tPassengerDetail: v.optional(oneOrMany(PassengerDetailApiSchema)),\n});\n\nconst FinancialDeadlineDetailWireSchema = v.object({\n\t\"@ReschedulingCode\": v.optional(v.string()),\n\t\"@ExpireDate\": v.optional(v.string()),\n\t\"@TotalAmount\": v.optional(stringish),\n\tReschedulingCode: v.optional(v.string()),\n\tExpireDate: v.optional(v.string()),\n\tTotalAmount: v.optional(stringish),\n});\n\nexport const FinancialDeadlineDetailApiSchema = v.pipe(\n\tFinancialDeadlineDetailWireSchema,\n\tv.transform((deadline) => ({\n\t\t\"@ReschedulingCode\":\n\t\t\tdeadline[\"@ReschedulingCode\"] ?? deadline.ReschedulingCode,\n\t\t\"@ExpireDate\": deadline[\"@ExpireDate\"] ?? deadline.ExpireDate,\n\t\t\"@TotalAmount\": deadline[\"@TotalAmount\"] ?? deadline.TotalAmount,\n\t})),\n);\n\nexport const FinancialDeadlineListApiSchema = v.object({\n\tDeadlineDetail: v.optional(oneOrMany(FinancialDeadlineDetailApiSchema)),\n});\n\nexport const StoredDocumentDetailApiSchema = v.object({\n\tDocumentRefCode: v.optional(v.string()),\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tArchiviationDescription: v.optional(v.string()),\n});\n\nexport const StoredDocumentsListApiSchema = v.object({\n\tStoredDocumentDetail: v.optional(oneOrMany(StoredDocumentDetailApiSchema)),\n});\n\nexport const PrintableDocumentDetailApiSchema = v.object({\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tEnabled: v.optional(stringish),\n});\n\nexport const PrintableDocumentsListApiSchema = v.object({\n\tPrintableDocumentDetail: v.optional(\n\t\toneOrMany(PrintableDocumentDetailApiSchema),\n\t),\n});\n\nconst BookingFileDetailWireSchema = v.object({\n\t\"@BookingFileCode\": v.optional(v.string()),\n\tBookingFileCode: v.optional(v.string()),\n\tCustomerRecordCode: v.optional(v.string()),\n\tCustomerName: v.optional(v.string()),\n\tCustomerEmail: v.optional(v.string()),\n\tTravelAgencyName: v.optional(v.string()),\n\tTravelAgencyEmail: v.optional(v.string()),\n\tBookingFileStatus: v.optional(BookingFileStatusApiSchema),\n\tDescription: v.optional(v.string()),\n\tNation: v.optional(v.string()),\n\tDestination: v.optional(v.string()),\n\tCreationDate: v.optional(v.string()),\n\tFirstConfirmationDate: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tPackageCode: v.optional(v.string()),\n\tBookedServiceList: v.optional(BookedServiceListApiSchema),\n\tTotalAmountDetail: v.optional(TotalAmountDetailApiSchema),\n\tPaxNumber: v.optional(stringish),\n\tPassengerList: v.optional(PassengerListApiSchema),\n\tReference: v.optional(v.string()),\n\tClerkName: v.optional(v.string()),\n\tStoredDocumentsList: v.optional(StoredDocumentsListApiSchema),\n\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\tFinancialDeadlineList: v.optional(FinancialDeadlineListApiSchema),\n});\n\n/**\n * BookingFileDetail — Common Structures \"BOOKEDFILE\".\n * Accepts wire dialects, normalizes to a single PascalCase/@attr shape for camelCase mapping.\n */\nexport const BookingFileDetailApiSchema = v.pipe(\n\tBookingFileDetailWireSchema,\n\tv.transform((detail) => ({\n\t\t\"@BookingFileCode\": detail[\"@BookingFileCode\"] ?? detail.BookingFileCode,\n\t\tCustomerRecordCode: detail.CustomerRecordCode,\n\t\tCustomerName: detail.CustomerName,\n\t\tCustomerEmail: detail.CustomerEmail,\n\t\tTravelAgencyName: detail.TravelAgencyName,\n\t\tTravelAgencyEmail: detail.TravelAgencyEmail,\n\t\tBookingFileStatus: detail.BookingFileStatus,\n\t\tDescription: detail.Description,\n\t\tNation: detail.Nation,\n\t\tDestination: detail.Destination,\n\t\tCreationDate: detail.CreationDate,\n\t\tFirstConfirmationDate: detail.FirstConfirmationDate,\n\t\tStartDate: detail.StartDate,\n\t\tEndDate: detail.EndDate,\n\t\tPackageCode: detail.PackageCode,\n\t\tBookedServiceList: detail.BookedServiceList,\n\t\tTotalAmountDetail: detail.TotalAmountDetail,\n\t\tPaxNumber: detail.PaxNumber,\n\t\tPassengerList: detail.PassengerList,\n\t\tReference: detail.Reference,\n\t\tClerkName: detail.ClerkName,\n\t\tStoredDocumentsList: detail.StoredDocumentsList,\n\t\tPrintableDocumentsList: detail.PrintableDocumentsList,\n\t\tFinancialDeadlineList: detail.FinancialDeadlineList,\n\t})),\n);\n","import * as v from \"valibot\";\n\n/**\n * Request header schema with authentication credentials\n */\nexport const RqHeaderSchema = v.object({\n\t\"@HostID\": v.pipe(v.string(), v.minLength(6), v.maxLength(6)),\n\t\"@Xtoken\": v.string(),\n\t\"@Interface\": v.literal(\"WEB\"),\n\t\"@UserName\": v.literal(\"WEB\"),\n\t\"@LanguageCode\": v.optional(\n\t\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\t),\n});\n\nconst warningsSchema = v.optional(\n\tv.pipe(\n\t\tv.string(),\n\t\tv.transform((input) => input.split(\",\")),\n\t),\n);\n\n/**\n * Response status schema indicating success, error, or warning\n */\nexport const RsStatusSchema = v.pipe(\n\tv.object({\n\t\t\"@Status\": v.union([\n\t\t\tv.literal(\"OK\"),\n\t\t\tv.literal(\"ERROR\"),\n\t\t\tv.literal(\"WARNING\"),\n\t\t\tv.literal(\"TIMEOUT\"),\n\t\t]),\n\t\tErrorCode: v.optional(\n\t\t\tv.pipe(\n\t\t\t\tv.union([v.string(), v.number()]),\n\t\t\t\tv.transform((val) => Number(val)),\n\t\t\t),\n\t\t),\n\t\tErrorDescription: v.optional(v.string()),\n\t\tWarnings: warningsSchema,\n\t}),\n\tv.transform((input) => {\n\t\treturn {\n\t\t\tstatus: input[\"@Status\"],\n\t\t\terrorCode: input.ErrorCode,\n\t\t\terrorDescription: input.ErrorDescription,\n\t\t\twarnings: input.Warnings,\n\t\t};\n\t}),\n);\n","import * as v from \"valibot\";\nimport {\n\tCREATE_ARRAY_OF_ONE,\n\tCREATE_BOOKING_LIST_KEYS,\n} from \"../utils/booking-transform.js\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport { bookingFileWire } from \"../utils/wire-shapes.js\";\nimport {\n\tBookingFileDetailApiSchema,\n\tPrintableDocumentsListApiSchema,\n\tTotalAmountDetailApiSchema,\n} from \"./booking-response.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookingFileStatusRequestSchema,\n\tBoolishSchema,\n\tPaymentTypeSchema,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst BookingFileStatusInputSchema = v.object({\n\tvalue: BookingFileStatusRequestSchema,\n\texpiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nexport const StatisticCodesInputSchema = v.object({\n\tsCode1: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode2: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode3: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode4: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode5: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode6: v.optional(v.pipe(v.string(), v.maxLength(4))),\n});\n\n// ---------------------------------------------------------------------------\n// Destination\n// ---------------------------------------------------------------------------\n\nconst DestinationInputSchema = v.object({\n\tcode: v.optional(v.string()),\n\tiataCode: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// CustomerDetail (record code only or full master record data)\n// ---------------------------------------------------------------------------\n\nconst CustomerDetailInputSchema = v.object({\n\trecordCode: v.optional(v.string()),\n\t// When inserting new record, master record fields can be provided (see Common Structures)\n});\n\n// ---------------------------------------------------------------------------\n// BookingFileDocument\n// ---------------------------------------------------------------------------\n\nconst documentTypeSchema = v.union([\n\tv.literal(\"VISA_REQUEST\"),\n\tv.literal(\"TRAVEL_INFORMATION\"),\n\tv.literal(\"VOUCHER\"),\n\tv.literal(\"BOOKING_CONTRACT\"),\n\tv.literal(\"BOOKING_CONFIRMATION\"),\n\tv.literal(\"SUPPLIER_SERVICE_LIST\"),\n\tv.literal(\"INVOICE\"),\n\tv.literal(\"PROFORMA_INVOICE\"),\n\tv.literal(\"ADEGUAMENTO\"),\n\tv.literal(\"RESERVATION_FORM\"),\n\tv.literal(\"OPEN_XML\"),\n\tv.literal(\"SALES_INVOICE\"),\n\tv.literal(\"TICKETING_TMASTER\"),\n\tv.literal(\"SUMMARY_FORM\"),\n]);\n\nconst ReservationFormCustomizablePrintParametersInputSchema = v.object({\n\tmakeDocumentTo: v.optional(\n\t\tv.union([v.literal(\"BOOKING_CUSTOMER\"), v.literal(\"FIRST_PASSENGER\")]),\n\t),\n});\n\nconst TravelInformationCustomizablePrintParametersInputSchema = v.object({\n\tfillInCode: v.optional(v.string()),\n});\n\nconst DocumentCustomizablePrintParametersInputSchema = v.union([\n\tReservationFormCustomizablePrintParametersInputSchema,\n\tTravelInformationCustomizablePrintParametersInputSchema,\n]);\n\nconst InfoDocumentToPrintInputSchema = v.object({\n\tdocumentType: documentTypeSchema,\n\tdocumentCustomizablePrintParameters: v.optional(\n\t\tDocumentCustomizablePrintParametersInputSchema,\n\t),\n});\n\nexport const BookingFileDocumentInputSchema = v.object({\n\tprintDoc: v.optional(BoolishSchema),\n\tsendDocViaEmail: v.optional(BoolishSchema),\n\tinfoDocumentsToPrint: v.optional(v.array(InfoDocumentToPrintInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// FinancialDeadlineList / DeadlineList / PaymentList\n// ---------------------------------------------------------------------------\n\nconst FinancialDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n\ttotalAmount: v.optional(v.string()),\n});\n\nconst DeadlineDetailInputSchema = v.object({\n\tdeadlineCode: v.optional(v.string()),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nconst PaymentDetailInputSchema = v.object({\n\tpaymentDate: v.optional(v.string()),\n\tpaumentNote: v.optional(v.string()),\n\tamount: v.optional(v.string()),\n\tpaymentUser: v.optional(v.string()),\n\tpaymentType: v.optional(PaymentTypeSchema),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst costPriceTypeSchema = v.union([\n\tv.literal(\"PAX_QTY_DAY\"),\n\tv.literal(\"PAX_QTY_NIGHT\"),\n\tv.literal(\"PAX_QTY_WEEK\"),\n\tv.literal(\"PAX_QTY\"),\n\tv.literal(\"PAX_DAY\"),\n\tv.literal(\"PAX_NIGHT\"),\n\tv.literal(\"PAX_WEEK\"),\n\tv.literal(\"PAX\"),\n\tv.literal(\"QTY_DAY\"),\n\tv.literal(\"QTY_NIGHT\"),\n\tv.literal(\"QTY_WEE\"),\n\tv.literal(\"QTY\"),\n\tv.literal(\"DAY\"),\n\tv.literal(\"NIGHT\"),\n\tv.literal(\"WEEK\"),\n\tv.literal(\"FORFAIT\"),\n]);\n\n/** ServiceFare — cost/price of a selected or booked service */\nexport const ServiceFareInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\texchangeRate: v.optional(v.string()),\n\tcost: v.optional(v.string()),\n\tcostTax: v.optional(v.string()),\n\tcostType: v.optional(costPriceTypeSchema),\n\tvatCostCurrencyCode: v.optional(v.string()),\n\tprice: v.optional(v.string()),\n\tpriceTax: v.optional(v.string()),\n\tpriceType: v.optional(costPriceTypeSchema),\n});\n\nexport const AvesServiceInfoInputSchema = v.object({\n\tpackageCode: v.optional(v.string()),\n\tpackageReference: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\texternalFileCode: v.optional(v.string()),\n\texternalReference: v.optional(v.string()),\n\tserviceStatus: v.optional(v.string()),\n\tserviceStatisticCode: v.optional(v.string()),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n});\n\nconst paxAssociatedSchema = v.object({ pax: v.string() });\n\nexport const SelectedServiceDetailInputSchema = v.object({\n\tsCode: v.string(),\n\tssCode: v.optional(v.string()),\n\tavesServiceType: AvesServiceTypeSchema,\n\ttoServiceType: v.optional(ToServiceTypeSchema),\n\tsubServiceDesc: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tqty: v.string(),\n\tpax: v.string(),\n\tpaxAssociated: v.optional(v.array(paxAssociatedSchema)),\n\tavesSession: v.string(),\n\tavesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n\tbookedServiceRef: v.optional(v.string()),\n\tsupplierMasterCode: v.optional(v.string()),\n\tvoucherMasterCode: v.optional(v.string()),\n\thotelServiceInfo: v.optional(v.string()),\n\tcarRentalServiceInfo: v.optional(v.string()),\n\tflightServiceInfo: v.optional(v.string()),\n\tshipServiceInfo: v.optional(v.string()),\n\tticketServiceInfo: v.optional(v.string()),\n\tcommission: v.optional(v.string()),\n\tnoteList: v.optional(v.string()),\n\tvoucherInfo: v.optional(v.string()),\n\tfirstDescription: v.optional(v.string()),\n\tsecondDescription: v.optional(v.string()),\n});\n\nexport const SelectedPackageDetailInputSchema = v.object({\n\tpCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tgetServicesFromPackage: v.optional(BoolishSchema),\n});\n\n// ---------------------------------------------------------------------------\n// NoteList\n// ---------------------------------------------------------------------------\n\nconst NoteDetailInputSchema = v.object({\n\tnType: v.optional(v.string()),\n\ttitle: v.optional(v.string()),\n\ttext: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// PassengerList (PassengerDetail - see Common Structures \"Passenger\" DETAIL)\n// ---------------------------------------------------------------------------\n\nconst passengerCategoryCodeSchema = v.union([\n\tv.literal(\"AD\"),\n\tv.literal(\"CH\"),\n\tv.literal(\"IN\"),\n\tv.literal(\"OV\"),\n]);\n\nconst passengerDetailBase = {\n\trph: v.string(),\n\troomRph: v.optional(v.string()),\n\tbillingHolder: v.optional(BoolishSchema),\n\tmasterRecordCode: v.optional(v.string()),\n\tname: v.string(),\n\tsex: v.union([v.literal(\"M\"), v.literal(\"F\")]),\n\tbirthDate: v.optional(v.string()),\n\tbirthPlace: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n\tcitizenshipCode: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tphoneNumber: v.optional(v.string()),\n\teMail: v.optional(v.string()),\n\tnotes: v.optional(v.array(NoteDetailInputSchema)),\n\tflagStatus: v.optional(v.string()),\n\tofferCode: v.optional(v.string()),\n\tidDocInfo: v.optional(\n\t\tv.object({\n\t\t\tidType: v.optional(v.string()),\n\t\t\tidCode: v.optional(v.string()),\n\t\t\tidIssueLocation: v.optional(v.string()),\n\t\t\tidIssueCounty: v.optional(v.string()),\n\t\t\tidIssueDate: v.optional(v.string()),\n\t\t\tidExpireDate: v.optional(v.string()),\n\t\t}),\n\t),\n};\n\n/** Passenger on CreateBookingFile — categoryCode required per AVES */\nexport const PassengerDetailCreateInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: passengerCategoryCodeSchema,\n});\n\n/** Passenger on ModBookingFileHeader / ModServices — categoryCode optional */\nexport const PassengerDetailPatchInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: v.optional(passengerCategoryCodeSchema),\n});\n\n// ---------------------------------------------------------------------------\n// BookingFinancialInfo\n// ---------------------------------------------------------------------------\n\nconst customerPaymentTypeSchema = v.union([\n\tv.literal(\"CASH\"),\n\tv.literal(\"BANK\"),\n\tv.literal(\"RID\"),\n\tv.literal(\"RIBA\"),\n\tv.literal(\"SPECIFIC_CODE\"),\n\tv.literal(\"NOT_SET\"),\n]);\n\nexport const BookingFinancialInfoInputSchema = v.object({\n\tcustomer_PaymentType: v.optional(customerPaymentTypeSchema),\n\tcustomer_SpecPaymentTypeCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// GroupingPaxPolicy / TypeDownloadFile\n// ---------------------------------------------------------------------------\n\nconst groupingPaxPolicySchema = v.union([\n\tv.literal(\"GROUPED_PAX\"),\n\tv.literal(\"NOT_GROUPED_PAX\"),\n\tv.literal(\"ONE_PAX_ONLY\"),\n]);\n\nconst typeDownloadFileSchema = v.union([\n\tv.literal(\"AVES2AVES\"),\n\tv.literal(\"AVES2AVESVIA\"),\n\tv.literal(\"AVES2AVESITA\"),\n]);\n\n// ---------------------------------------------------------------------------\n// BookingFileRQ (root body - camelCase input)\n// ---------------------------------------------------------------------------\n\n/**\n * Booking file request body schema (camelCase input).\n * Maps to BookFileRQ in AVES XML 1.8.0 CreateBookingFile.\n * `*List` fields are flat Detail arrays; wire wrap happens in BookingFileApiSchema.\n */\nexport const BookingFileSchema = v.object({\n\tcreateDate: v.optional(v.string()),\n\tbookingFileRefCode: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tclerkName: v.optional(v.string()),\n\tcustomerDetail: CustomerDetailInputSchema,\n\tcurrencyCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tbookingFileStatus: BookingFileStatusInputSchema,\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tdestination: v.optional(DestinationInputSchema),\n\tbookingFileDescription: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tearlyBookingDate: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.array(FinancialDeadlineDetailInputSchema),\n\t),\n\tdeadlineList: v.optional(v.array(DeadlineDetailInputSchema)),\n\tpaymentList: v.optional(v.array(PaymentDetailInputSchema)),\n\tselectedPackageList: v.optional(v.array(SelectedPackageDetailInputSchema)),\n\tselectedServiceList: v.array(SelectedServiceDetailInputSchema),\n\textraQuotaRefCode: v.optional(v.string()),\n\textraQuoteServiceList: v.optional(v.array(SelectedServiceDetailInputSchema)),\n\tgetExtraQuoteFromSystem: v.optional(BoolishSchema),\n\tpassengerList: v.array(PassengerDetailCreateInputSchema),\n\tnoteList: v.optional(v.array(NoteDetailInputSchema)),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tbookingFileCode: v.optional(v.string()),\n\tgroupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n\tgroupBookingFile: v.optional(BoolishSchema),\n\ttypeDownloadFile: v.optional(typeDownloadFileSchema),\n\tsetBookingFileCodeFromStartDate: v.optional(BoolishSchema),\n});\n\n/**\n * Booking file schema for API requests (list wrap + PascalCase for BookFileRQ).\n */\nexport const BookingFileApiSchema = createApiSchema(\n\tBookingFileSchema,\n\tbookingFileWire,\n\t{\n\t\tlistKeys: CREATE_BOOKING_LIST_KEYS,\n\t\tarrayOfOne: CREATE_ARRAY_OF_ONE,\n\t},\n);\n\n/**\n * Shared booking response (Create / ModServices / SetStatus / SetStatusService).\n * Extra cancel fields are optional and only present on some ops.\n */\nexport const BookingFileResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileDetail: v.optional(BookingFileDetailApiSchema),\n\t\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\t\tTotalAmountDetailAfterCancellation: v.optional(TotalAmountDetailApiSchema),\n\t\tBase64DocContent: v.optional(v.string()),\n\t}),\n);\n","import * as v from \"valibot\";\nimport {\n\tFILE_PAYMENT_LIST_KEYS,\n\tMOD_HEADER_LIST_KEYS,\n\tMOD_SERVICES_LIST_KEYS,\n} from \"../utils/booking-transform.js\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\tbookingFileWire,\n\telementOnlyWire,\n\tfilePaymentListRequestWire,\n\tsetFileStatusWire,\n} from \"../utils/wire-shapes.js\";\nimport {\n\tBookingFileDocumentInputSchema,\n\tBookingFileResponseSchema,\n\tBookingFinancialInfoInputSchema,\n\tPassengerDetailPatchInputSchema,\n\tSelectedPackageDetailInputSchema,\n\tSelectedServiceDetailInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport {\n\tBoolishSchema,\n\tPaymentTypeSchema,\n\tSetFileStatusValueSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\n/** Response with RsStatus only (Cancel / ModHeader) */\nexport const BookingStatusOnlyResponseSchema = createResponseSchema(\n\tv.object({ RsStatus: RsStatusSchema }),\n);\n\n/**\n * Shared with CreateBookingFile — typed BookingFileDetail (+ optional cancel extras).\n * Create / ModServices / SetStatus / SetStatusService all use this shape.\n */\nexport const BookingFileDetailResponseSchema = BookingFileResponseSchema;\n\n// ---------------------------------------------------------------------------\n// ModBookingFileServices — ModFileServicesRQ\n// ---------------------------------------------------------------------------\n\nconst ModDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.string(),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nexport const CancellableBookedServiceDetailInputSchema = v.object({\n\tcancelOperationType: v.union([v.literal(\"NULLIFY\"), v.literal(\"DELETE\")]),\n\tserviceRefType: v.union([v.literal(\"RPH\"), v.literal(\"FILE\")]),\n\tserviceRefValue: v.string(),\n});\n\n/**\n * ModFileServicesRQ body (camelCase).\n * `*List` fields are flat Detail arrays; wire wrap happens in ModFileServicesApiSchema.\n */\nexport const ModFileServicesSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tcurrencyCode: v.optional(v.string()),\n\tdeadlineList: v.optional(v.array(ModDeadlineDetailInputSchema)),\n\tselectedPackageDetail: v.optional(SelectedPackageDetailInputSchema),\n\tselectedServiceList: v.pipe(\n\t\tv.array(SelectedServiceDetailInputSchema),\n\t\tv.minLength(1),\n\t),\n\tcancellableBookedServiceList: v.optional(\n\t\tv.array(CancellableBookedServiceDetailInputSchema),\n\t),\n\tpassengerList: v.optional(v.array(PassengerDetailPatchInputSchema)),\n});\n\nexport const ModFileServicesApiSchema = createApiSchema(\n\tModFileServicesSchema,\n\tbookingFileWire,\n\t{ listKeys: MOD_SERVICES_LIST_KEYS },\n);\n\n// ---------------------------------------------------------------------------\n// ModBookingFileHeader — ModFileHeaderRQ\n// ---------------------------------------------------------------------------\n\n/**\n * ModFileHeaderRQ body (camelCase).\n * Modify header only — no package/costs.\n */\nexport const ModFileHeaderSchema = v.object({\n\tbookingFileCode: v.string(),\n\tbookingFileStartDate: v.string(),\n\tcustomerRecordCode: v.string(),\n\tnewCustomerRecordCode: v.optional(v.string()),\n\tbookingFileReferenceName: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbookingNote: v.optional(v.string()),\n\tpassengerList: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.array(\n\t\t\tv.object({\n\t\t\t\treschedulingCode: v.string(),\n\t\t\t\texpireDate: v.string(),\n\t\t\t\ttotalAmount: v.string(),\n\t\t\t}),\n\t\t),\n\t),\n});\n\nexport const ModFileHeaderApiSchema = createApiSchema(\n\tModFileHeaderSchema,\n\tbookingFileWire,\n\t{ listKeys: MOD_HEADER_LIST_KEYS },\n);\n\n// ---------------------------------------------------------------------------\n// CancelBookingFile — CancelFileRQ\n// ---------------------------------------------------------------------------\n\nexport const CancelFileSchema = v.object({\n\tbookingFileCode: v.string(),\n\tcustomerRecordCode: v.string(),\n});\n\nexport const CancelFileApiSchema = createApiSchema(\n\tCancelFileSchema,\n\telementOnlyWire,\n);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileStatus — SetStatusRQ\n// ---------------------------------------------------------------------------\n\nconst optionedExpirePolicySchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"CONSIDER_HOLIDAY\"),\n\tv.literal(\"CONSIDER_HOLIDAY_AND_SATURDAY\"),\n]);\n\n/**\n * SetStatusRQ body (camelCase).\n * Change booking file status (incl. CANCELED / NULLIFIED).\n */\nexport const SetFileStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tfileStatus: v.object({\n\t\tvalue: SetFileStatusValueSchema,\n\t\texpiredDate: v.optional(v.string()),\n\t\toptionedFileExpireDatePolicy: v.optional(optionedExpirePolicySchema),\n\t}),\n\tbackOfficeRequest: v.optional(BoolishSchema),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tpenalty: v.optional(\n\t\tv.object({\n\t\t\tapply: v.optional(BoolishSchema),\n\t\t\tspecificCode: v.optional(v.string()),\n\t\t}),\n\t),\n\tsimulateCancelAndGetPenaltyAmount: v.optional(BoolishSchema),\n});\n\nexport const SetFileStatusApiSchema = createApiSchema(\n\tSetFileStatusSchema,\n\tsetFileStatusWire,\n);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileServiceStatus — SetStatusServiceRQ\n// ---------------------------------------------------------------------------\n\nexport const SetFileServiceStatusSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n\tbookingServiceRef: v.string(),\n\tbookingFileServiceStatus: v.literal(\"NULLIFIED\"),\n\tbookingFileServiceStatusDate: v.optional(v.string()),\n});\n\nexport const SetFileServiceStatusApiSchema = createApiSchema(\n\tSetFileServiceStatusSchema,\n\telementOnlyWire,\n);\n\n// ---------------------------------------------------------------------------\n// InsertFilePaymentList — FilePaymentListRQ\n// ---------------------------------------------------------------------------\n\nconst filePaymentOperationTypeSchema = v.union([\n\tv.literal(\"AbsoluteAmountsInsertion\"),\n\tv.literal(\"FinalAmountToAchieve\"),\n\tv.literal(\"FinalAmountToAchieveWithoutControls\"),\n]);\n\nexport const FilePaymentDetailInputSchema = v.object({\n\tpaymentDate: v.string(),\n\tpaymentNote: v.optional(v.string()),\n\tpayerMasterCode: v.optional(v.string()),\n\tpayerName: v.optional(v.string()),\n\tamount: v.string(),\n\tpaymentType: PaymentTypeSchema,\n});\n\n/**\n * FilePaymentListRQ body (camelCase).\n * `filePaymentList` is a flat Detail array; wire wrap happens in FilePaymentListApiSchema.\n */\nexport const FilePaymentListSchema = v.pipe(\n\tv.object({\n\t\tbookingFileCode: v.optional(v.string()),\n\t\tbookingFileRefCode: v.optional(v.string()),\n\t\tpaymentUser: v.optional(v.string()),\n\t\tenableMultiplePayments: BoolishSchema,\n\t\toperationType: filePaymentOperationTypeSchema,\n\t\tfilePaymentList: v.pipe(\n\t\t\tv.array(FilePaymentDetailInputSchema),\n\t\t\tv.minLength(1),\n\t\t),\n\t}),\n\tv.check(\n\t\t(input) => Boolean(input.bookingFileCode || input.bookingFileRefCode),\n\t\t\"bookingFileCode or bookingFileRefCode is required\",\n\t),\n);\n\nexport const FilePaymentListApiSchema = createApiSchema(\n\tFilePaymentListSchema,\n\tfilePaymentListRequestWire,\n\t{ listKeys: FILE_PAYMENT_LIST_KEYS },\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateResponseSchema,\n\toneOrMany,\n\ttoWireBody,\n} from \"../utils/schema-transform.js\";\nimport { searchFileWire } from \"../utils/wire-shapes.js\";\nimport { BookingFileDetailApiSchema } from \"./booking-response.js\";\nimport {\n\tBookingFileStatusWireSchema,\n\tBoolishSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\nconst dateRangeSchema = v.object({\n\tminDate: v.string(),\n\tmaxDate: v.string(),\n});\n\nconst searchFileStatusSchema = v.object({\n\tvalue: BookingFileStatusWireSchema,\n\texpireDate: v.optional(v.string()),\n});\n\nconst insuranceSchema = v.object({\n\tcode: v.optional(v.string()),\n\tnumber: v.optional(v.string()),\n});\n\nconst searchFileBase = {\n\tcustomerRecordCode: v.string(),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tgetSupplierInfo: v.optional(BoolishSchema),\n\tuser: v.optional(v.string()),\n\tofficeCode: v.optional(v.string()),\n};\n\nconst FileCodeSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(\"FILE_CODE\"),\n\tbookingFileCode: v.string(),\n});\n\nconst PaxNameSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(\"PAX_NAME\"),\n\tfirstPaxName: v.string(),\n});\n\nconst PackageCodeSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(\"PACKAGE_CODE\"),\n\tpackageCode: v.string(),\n});\n\nconst OtherSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(\"OTHER\"),\n\tfileStatus: v.optional(searchFileStatusSchema),\n\tstartDate: v.optional(dateRangeSchema),\n\tcreatedDate: v.optional(dateRangeSchema),\n\tlastModificationDate: v.optional(dateRangeSchema),\n\tinsurance: v.optional(insuranceSchema),\n\tisSearchForB2C: v.optional(BoolishSchema),\n});\n\n/**\n * SearchFileRQ body (camelCase) — discriminated by searchType.\n */\nexport const SearchBookingFileSchema = v.union([\n\tFileCodeSearchSchema,\n\tPaxNameSearchSchema,\n\tPackageCodeSearchSchema,\n\tOtherSearchSchema,\n]);\n\nexport const SearchBookingFileApiSchema = v.pipe(\n\tSearchBookingFileSchema,\n\tv.transform((input) => toWireBody(input, searchFileWire)),\n);\n\nexport const SearchBookingFileResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileList: v.optional(\n\t\t\tv.object({\n\t\t\t\tBookingFileDetail: v.optional(oneOrMany(BookingFileDetailApiSchema)),\n\t\t\t}),\n\t\t),\n\t}),\n);\n","export const XML_ROOT_ELEMENTS = {\n\tSEARCH_REQUEST: \"SearchMasterRecordRQ\",\n\tSEARCH_RESPONSE: \"SearchMasterRecordRS\",\n\tUPSERT_REQUEST: \"ManageMasterRecordRQ\",\n\tUPSERT_RESPONSE: \"ManageMasterRecordRS\",\n\tBOOKING_REQUEST: \"BookFileRQ\",\n\tBOOKING_RESPONSE: \"BookingFileRS\",\n\tMOD_FILE_SERVICES_REQUEST: \"ModFileServicesRQ\",\n\tMOD_FILE_HEADER_REQUEST: \"ModFileHeaderRQ\",\n\tMOD_FILE_HEADER_RESPONSE: \"ModFileHeaderRS\",\n\tCANCEL_FILE_REQUEST: \"CancelFileRQ\",\n\tCANCEL_FILE_RESPONSE: \"CancelFileRS\",\n\tSET_STATUS_REQUEST: \"SetStatusRQ\",\n\tSET_STATUS_RESPONSE: \"SetStatusRS\",\n\tSET_STATUS_SERVICE_REQUEST: \"SetStatusServiceRQ\",\n\tSET_STATUS_SERVICE_RESPONSE: \"SetStatusServiceRS\",\n\tFILE_PAYMENT_LIST_REQUEST: \"FilePaymentListRQ\",\n\tFILE_PAYMENT_LIST_RESPONSE: \"FilePaymentListRS\",\n\tAVES_SEARCH_REQUEST: \"AvesSearchRQ\",\n\tSEARCH_PACKAGE_RESPONSE: \"SearchPackageRS\",\n\tSEARCH_SERVICES_RESPONSE: \"SearchServicesRS\",\n\tPACKAGE_DETAIL_REQUEST: \"PackageDetailRQ\",\n\tPACKAGE_DETAIL_RESPONSE: \"PackageDetailRS\",\n\tCOMMIT_PACKAGE_REQUEST: \"CommitPackRQ\",\n\tCOMMIT_PACKAGE_RESPONSE: \"CommitPackRS\",\n\tSEARCH_BOOKING_FILE_REQUEST: \"SearchFileRQ\",\n\tSEARCH_BOOKING_FILE_RESPONSE: \"SearchFileRS\",\n} as const;\n\nexport type XMLRootElementValues =\n\t(typeof XML_ROOT_ELEMENTS)[keyof typeof XML_ROOT_ELEMENTS];\n\nexport function createRootElement<T>(name: XMLRootElementValues, object: T) {\n\treturn { [name]: object };\n}\n","export const AVES_ENDPOINTS = {\n\tsearch: \"/interop/masterRecords/v2/rest/Search\",\n\tupsert: \"/interop/masterRecords/v2/rest/InsertOrUpdate\",\n\tcreateBooking: \"/interop/booking/v2/rest/CreateBookingFile\",\n\tmodBookingServices: \"/interop/booking/v2/rest/ModBookingFileServices\",\n\tmodBookingHeader: \"/interop/booking/v2/rest/ModBookingFileHeader\",\n\tcancelBooking: \"/interop/booking/v2/rest/CancelBookingFile\",\n\tsetBookingStatus: \"/interop/booking/v2/rest/SetBookingFileStatus\",\n\tsetBookingServiceStatus:\n\t\t\"/interop/booking/v2/rest/SetBookingFileServiceStatus\",\n\tinsertFilePaymentList: \"/interop/booking/v2/rest/InsertFilePaymentList\",\n\tsearchAvesPackages: \"/interop/booking/v2/rest/SearchAvesPackages\",\n\tsearchTopServices: \"/interop/booking/v2/rest/SearchTopServices\",\n\tgetPackageDetail: \"/interop/booking/v2/rest/GetPackageDetail\",\n\tcommitPackage: \"/interop/booking/v2/rest/CommitPackage\",\n\tsearchBookingFile: \"/interop/booking/v2/rest/SearchBookingFile\",\n} as const;\n\nexport type AvesEndpointKey = keyof typeof AVES_ENDPOINTS;\n","import type { AvesError } from \"../error.js\";\nimport {\n\tBookingFileApiSchema,\n\tBookingFileResponseSchema,\n} from \"../schemas/booking-file.js\";\nimport {\n\tBookingFileDetailResponseSchema,\n\tBookingStatusOnlyResponseSchema,\n\tCancelFileApiSchema,\n\tFilePaymentListApiSchema,\n\tModFileHeaderApiSchema,\n\tModFileServicesApiSchema,\n\tSetFileServiceStatusApiSchema,\n\tSetFileStatusApiSchema,\n} from \"../schemas/booking-ops.js\";\nimport {\n\tSearchBookingFileApiSchema,\n\tSearchBookingFileResponseSchema,\n} from \"../schemas/search-booking-file.js\";\nimport type {\n\tBookingFileDetailRS,\n\tBookingFileRQ,\n\tBookingFileRS,\n\tBookingStatusOnlyRS,\n\tCancelFileRQ,\n\tFilePaymentListRQ,\n\tModFileHeaderRQ,\n\tModFileServicesRQ,\n\tSearchBookingFileRQ,\n\tSearchBookingFileRS,\n\tSetFileServiceStatusRQ,\n\tSetFileStatusRQ,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class BookingClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Create a booking file (CreateBookingFile). */\n\tcreateBooking(\n\t\tparams: BookingFileRQ,\n\t): Promise<Result<BookingFileRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"createBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: BookingFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.createBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.BOOKING_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileResponseSchema,\n\t\t});\n\t}\n\n\t/** Add/replace services, assign package, delete/nullify cost items. */\n\tmodBookingServices(\n\t\tparams: ModFileServicesRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"modBookingServices\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileServicesApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.modBookingServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_SERVICES_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Header only (pax, notes, billing) — no costs. */\n\tmodBookingHeader(\n\t\tparams: ModFileHeaderRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"modBookingHeader\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileHeaderApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.modBookingHeader,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Delete a booking file (CancelBookingFile). */\n\tcancelBooking(\n\t\tparams: CancelFileRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"cancelBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: CancelFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.cancelBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Change booking file status (incl. CANCELED / NULLIFIED). */\n\tsetBookingStatus(\n\t\tparams: SetFileStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"setBookingStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileStatusApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.setBookingStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Nullify a single booked service line. */\n\tsetBookingServiceStatus(\n\t\tparams: SetFileServiceStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"setBookingServiceStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileServiceStatusApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.setBookingServiceStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Register one or more payments on a booking file. */\n\tinsertFilePaymentList(\n\t\tparams: FilePaymentListRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"insertFilePaymentList\",\n\t\t\tparams,\n\t\t\tapiSchema: FilePaymentListApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.insertFilePaymentList,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Search booking files, incl. by PACKAGE_CODE. */\n\tsearchBookingFiles(\n\t\tparams: SearchBookingFileRQ,\n\t): Promise<Result<SearchBookingFileRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchBookingFiles\",\n\t\t\tparams,\n\t\t\tapiSchema: SearchBookingFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchBookingFile,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SEARCH_BOOKING_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_BOOKING_FILE_RESPONSE,\n\t\t\tresponseSchema: SearchBookingFileResponseSchema,\n\t\t});\n\t}\n}\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateApiValidationSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\taccountPoliciesWire,\n\tdynamicFieldsWire,\n\tfinancialDetailWire,\n\tidDocumentDetailWire,\n\tmasterRecordWire,\n\tsupplierRefMasterRecordsWire,\n} from \"../utils/wire-shapes.js\";\n\nconst paymentTypeSchema = v.union([\n\tv.literal(\"CASH\"),\n\tv.literal(\"BANK\"),\n\tv.literal(\"RID\"),\n\tv.literal(\"RIBA\"),\n\tv.literal(\"SPECIFIC_CODE\"),\n]);\n\nconst FinancialDetailInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\tcreditLimit: v.optional(v.string()),\n\tc_PaymentType: v.optional(paymentTypeSchema),\n\tc_SpecPaymentTypeCode: v.optional(v.string()),\n\ts_PaymentType: v.optional(paymentTypeSchema),\n\ts_SpecPaymentTypeCode: v.optional(v.string()),\n\tenableElectronicInvoicing: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\telectronicInvoicingType: v.optional(v.string()),\n});\n\n/**\n * Financial detail schema for API requests (transforms to PascalCase)\n */\nexport const FinancialDetailSchema = createApiSchema(\n\tFinancialDetailInputSchema,\n\tfinancialDetailWire,\n);\n\n/**\n * Financial detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const FinancialDetailApiValidationSchema = createApiValidationSchema(\n\tFinancialDetailInputSchema,\n\tfinancialDetailWire,\n);\n\nconst IdDocumentDetailInputSchema = v.object({\n\tidType: v.optional(v.string()),\n\tidCode: v.optional(v.string()),\n\tidIssueLocation: v.optional(v.string()),\n\tidIssueCounty: v.optional(v.string()),\n\tidIssueDate: v.optional(v.string()),\n\tidExpireDate: v.optional(v.string()),\n});\n\n/**\n * ID document detail schema for API requests (transforms to PascalCase)\n */\nexport const IdDocumentDetailSchema = createApiSchema(\n\tIdDocumentDetailInputSchema,\n\tidDocumentDetailWire,\n);\n\n/**\n * ID document detail validation schema (already transformed PascalCase with @ attributes)\n */\nexport const IdDocumentDetailApiValidationSchema = createApiValidationSchema(\n\tIdDocumentDetailInputSchema,\n\tidDocumentDetailWire,\n);\n\nconst DynamicFieldsInputSchema = v.object({\n\tkey: v.string(),\n\tvalue: v.string(),\n});\n\n/**\n * Dynamic fields schema for API requests (transforms to PascalCase)\n */\nexport const DynamicFieldsSchema = createApiSchema(\n\tv.array(DynamicFieldsInputSchema),\n\tdynamicFieldsWire,\n);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n\tdynamicFieldsWire,\n);\n\nconst CarrierTypeSchema = v.union([\n\tv.literal(\"NOT_SET\"),\n\tv.literal(\"FLIGHT\"),\n\tv.literal(\"SHIP\"),\n\tv.literal(\"TRAIN\"),\n\tv.literal(\"RENTCAR\"),\n\tv.literal(\"BUS\"),\n\tv.literal(\"DP_HOTEL\"),\n\tv.literal(\"TO_HOTEL\"),\n\tv.literal(\"TO_TOUR\"),\n\tv.literal(\"TO_HOTEL_AND_TOUR\"),\n\tv.literal(\"DP_AUTO\"),\n\tv.literal(\"DP_GDS_NAVI\"),\n\tv.literal(\"DP_GDS_VOLI\"),\n\tv.literal(\"TOUR_OPERATOR\"),\n\tv.literal(\"TICKETING_EV\"),\n\tv.literal(\"OTHER\"),\n]);\n\n/*\n * Supplier reference master records schema for API requests (transforms to PascalCase)\n * @property supplierRefCode - Supplier reference code\n * @property companyMainBusinessType - Company main business type\n * @property carrierType - Carrier type\n */\nconst SupplierRefMasterRecordsInputSchema = v.object({\n\tsupplierRefCode: v.optional(v.string()),\n\tcompanyMainBusinessType: v.optional(v.string()),\n\tcarrierType: v.optional(CarrierTypeSchema),\n});\n\n/**\n * SupplierRefMasterRecords schema for API requests (transforms to PascalCase)\n */\nexport const SupplierRefMasterRecordsSchema = createApiSchema(\n\tSupplierRefMasterRecordsInputSchema,\n\tsupplierRefMasterRecordsWire,\n);\n\n/**\n * SupplierRefMasterRecords validation schema (already transformed PascalCase)\n */\nexport const SupplierRefMasterRecordsApiValidationSchema =\n\tcreateApiValidationSchema(\n\t\tSupplierRefMasterRecordsInputSchema,\n\t\tsupplierRefMasterRecordsWire,\n\t);\n\nconst flagSchema = v.union([v.literal(0), v.literal(1)]);\n\nconst recordStatusSchema = v.union([\n\tv.literal(\"ENABLED\"),\n\tv.literal(\"DISABLED\"),\n\tv.literal(\"WARNING\"),\n\tv.literal(\"BLACKLISTED\"),\n]);\n\nconst recordTypeSchema = v.union([\n\tv.literal(\"CUSTOMER\"),\n\tv.literal(\"SUPPLIER\"),\n\tv.literal(\"GENERAL\"),\n]);\n\nconst insertCriteriaSchema = v.union([\n\tv.literal(\"S\"),\n\tv.literal(\"N\"),\n\tv.literal(\"T\"),\n\tv.literal(\"M\"),\n]);\n\nconst AccountPoliciesInputSchema = v.object({\n\tacceptProfilingPolicies: v.optional(flagSchema),\n\tacceptPrivacyPolicies: v.optional(flagSchema),\n\tacceptNewsletterPolicies: v.optional(flagSchema),\n});\n\n/**\n * Account policies schema for API requests (transforms to PascalCase with @ attributes)\n */\nexport const AccountPoliciesSchema = createApiSchema(\n\tAccountPoliciesInputSchema,\n\taccountPoliciesWire,\n);\n\n/**\n * Account policies validation schema (already transformed PascalCase with @ attributes)\n */\nexport const AccountPoliciesApiValidationSchema = createApiValidationSchema(\n\tAccountPoliciesInputSchema,\n\taccountPoliciesWire,\n);\n\n/**\n * Master record detail input schema (camelCase)\n */\nexport const MasterRecordDetailSchema = v.object({\n\trecordCode: v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\tinsertCriteria: v.optional(insertCriteriaSchema),\n\tcreatedDate: v.optional(v.string()),\n\trecordType: v.optional(v.union([recordTypeSchema], \"CUSTOMER\")),\n\trecordStatus: v.optional(v.union([recordStatusSchema], \"ENABLED\")),\n\tmoniker: v.optional(v.string()),\n\tname: v.optional(v.string()),\n\textraInfo: v.optional(v.string()),\n\tlanguageCode: v.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n\taddress: v.optional(v.string()),\n\tzipCode: v.optional(v.string()),\n\tcityName: v.optional(v.string()),\n\tcountyCode: v.optional(v.string()),\n\tstateCode: v.optional(v.string()),\n\tcategoryCode: v.optional(v.string()),\n\tfirstPhoneNumber: v.optional(v.string()),\n\tmobilePhoneNumber: v.optional(v.string()),\n\temail: v.optional(v.string()),\n\tgender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tbirthDate: v.optional(v.string()),\n\tbirthCity: v.optional(v.string()),\n\tbirthCounty: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tvatCode: v.optional(v.string()),\n\tthirdPartRecordCode: v.optional(v.string()),\n\tidDocumentDetail: v.optional(IdDocumentDetailInputSchema),\n\taccountPolicies: v.optional(AccountPoliciesInputSchema),\n\tfinancialDetail: v.optional(FinancialDetailInputSchema),\n\tdynamicFields: v.optional(DynamicFieldsInputSchema),\n\tsupplierRefMasterRecords: v.optional(SupplierRefMasterRecordsInputSchema),\n});\n\n/**\n * Master record detail schema for API requests (transforms to PascalCase)\n */\nexport const MasterRecordDetailApiSchema = createApiSchema(\n\tMasterRecordDetailSchema,\n\tmasterRecordWire,\n);\n\n/**\n * Master record detail response schema (transforms to camelCase)\n */\nexport const MasterRecordDetailResponseSchema = createResponseSchema(\n\tMasterRecordDetailApiSchema,\n);\n\n/**\n * Master record detail API validation schema (PascalCase with @ attributes)\n * Used for both search responses and upsert requests\n * All fields are optional as responses may not contain all fields\n */\nexport const MasterRecordDetailApiValidationSchema = v.object({\n\t\"@RecordCode\": v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\t\"@InsertCriteria\": v.optional(insertCriteriaSchema),\n\tCreatedDate: v.optional(v.string()),\n\tModifiedDate: v.optional(v.string()),\n\tRecordType: v.optional(\n\t\tv.union([\n\t\t\tv.literal(\"CUSTOMER\"),\n\t\t\tv.literal(\"SUPPLIER\"),\n\t\t\tv.literal(\"GENERAL\"),\n\t\t]),\n\t),\n\tLoginType: v.optional(v.string()),\n\tRecordStatus: v.optional(recordStatusSchema),\n\tMoniker: v.optional(v.string()),\n\tName: v.optional(v.string()),\n\tExtraInfo: v.optional(v.string()),\n\tLanguageCode: v.optional(v.pipe(v.string(), v.minLength(1), v.maxLength(2))),\n\tAddress: v.optional(v.string()),\n\tZipCode: v.optional(v.string()),\n\tCityName: v.optional(v.string()),\n\tCountyCode: v.optional(v.string()),\n\tStateCode: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tPromoterCode: v.optional(v.string()),\n\tFirstPhoneNumber: v.optional(v.string()),\n\tMobilePhoneNumber: v.optional(v.string()),\n\tEmail: v.optional(v.string()),\n\tGender: v.optional(v.union([v.literal(\"M\"), v.literal(\"F\")])),\n\tBirthDate: v.optional(v.string()),\n\tBirthCity: v.optional(v.string()),\n\tBirthCounty: v.optional(v.string()),\n\tEncryptedPassword: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tFiscalCode: v.optional(v.string()),\n\tVatCode: v.optional(v.string()),\n\tThirdPartRecordCode: v.optional(v.string()),\n\tIdDocumentDetail: v.optional(IdDocumentDetailApiValidationSchema),\n\tNewsletterDisabled: v.optional(\n\t\tv.union([v.literal(\"true\"), v.literal(\"false\"), v.boolean()]),\n\t),\n\tSupplierRefMasterRecords: v.optional(\n\t\tSupplierRefMasterRecordsApiValidationSchema,\n\t),\n\tAccountPolicies: v.optional(AccountPoliciesApiValidationSchema),\n\tFinancialDetail: v.optional(FinancialDetailApiValidationSchema),\n\tDynamicFields: v.optional(DynamicFieldsApiValidationSchema),\n});\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n} from \"../utils/schema-transform.js\";\nimport { searchMasterWire } from \"../utils/wire-shapes.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\nconst LastModificationDateInputSchema = v.object({\n\tminDate: v.string(),\n\tmaxDate: v.string(),\n});\n\nconst languageCodeField = v.optional(\n\tv.pipe(v.string(), v.minLength(2), v.maxLength(2)),\n);\n\n/**\n * Search by CODE - requires recordCode\n */\nconst CodeSearchSchema = v.object({\n\tsearchType: v.literal(\"CODE\"),\n\trecordCode: v.pipe(v.string(), v.minLength(5), v.maxLength(6)),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by NAME - requires name, optionally city\n */\nconst NameSearchSchema = v.object({\n\tsearchType: v.literal(\"NAME\"),\n\tname: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by VATCODE - requires vatCode, optionally phoneNumber\n */\nconst VatCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"VATCODE\"),\n\tvatCode: v.string(),\n\tphoneNumber: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by ZONE - requires zipCode and countyCode, optionally city\n */\nconst ZoneSearchSchema = v.object({\n\tsearchType: v.literal(\"ZONE\"),\n\tzipCode: v.string(),\n\tcountyCode: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by CATEGORY - requires categoryCode\n */\nconst CategorySearchSchema = v.object({\n\tsearchType: v.literal(\"CATEGORY\"),\n\tcategoryCode: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EMAIL - requires email\n */\nconst EmailSearchSchema = v.object({\n\tsearchType: v.literal(\"EMAIL\"),\n\temail: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by LASTMODDATE - requires lastModificationDate\n */\nconst LastModDateSearchSchema = v.object({\n\tsearchType: v.literal(\"LASTMODDATE\"),\n\tlastModificationDate: LastModificationDateInputSchema,\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by SEARCH FIELD - requires searchFieldValue\n */\nconst SearchFieldSearchSchema = v.object({\n\tsearchType: v.literal(\"SEARCH_FIELD\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EXTERNAL_REF_CODE - requires searchFieldValue\n */\nconst ExternalRefCodeSearchSchema = v.object({\n\tsearchType: v.literal(\"EXTERNAL_REF_CODE\"),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search master record input schema (camelCase)\n * Conditional fields based on searchType\n */\nexport const SearchMasterRecordSchema = v.union([\n\tCodeSearchSchema,\n\tNameSearchSchema,\n\tVatCodeSearchSchema,\n\tZoneSearchSchema,\n\tCategorySearchSchema,\n\tEmailSearchSchema,\n\tLastModDateSearchSchema,\n\tSearchFieldSearchSchema,\n\tExternalRefCodeSearchSchema,\n]);\n\n/**\n * Search master record schema for API requests (transforms to PascalCase).\n * recordCode stays an element (not @attr) via {@link searchMasterWire}.\n */\nexport const SearchMasterRecordApiSchema = createApiSchema(\n\tSearchMasterRecordSchema,\n\tsearchMasterWire,\n);\n\n/**\n * Complete search request schema with header\n * Flattens SearchMasterRecord fields to root level\n */\nexport const SearchMasterRecordRequestSchema = v.pipe(\n\tv.object({\n\t\tRqHeader: RqHeaderSchema,\n\t\tSearchMasterRecord: SearchMasterRecordApiSchema,\n\t}),\n\tv.transform((input) => {\n\t\tconst { SearchMasterRecord: searchFields, RqHeader, ...rest } = input;\n\t\treturn {\n\t\t\tRqHeader,\n\t\t\t...searchFields,\n\t\t\t...rest,\n\t\t};\n\t}),\n);\n\nconst MasterRecordListApiSchema = v.object({\n\tMasterRecordDetail: v.optional(\n\t\tv.pipe(\n\t\t\tv.union([\n\t\t\t\tv.array(MasterRecordDetailApiValidationSchema),\n\t\t\t\tMasterRecordDetailApiValidationSchema,\n\t\t\t]),\n\t\t\tv.transform((input) => {\n\t\t\t\tif (!input) return undefined;\n\t\t\t\treturn Array.isArray(input) ? input : [input];\n\t\t\t}),\n\t\t),\n\t),\n});\n\n/**\n * Search master record response schema (transforms to camelCase)\n */\nexport const SearchMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordList: v.optional(MasterRecordListApiSchema),\n\t}),\n);\n","import * as v from \"valibot\";\nimport { createResponseSchema } from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\n/**\n * Complete upsert request schema with header and required InsertCriteria\n */\nexport const ManageMasterRecordRequestSchema = v.object({\n\tRqHeader: RqHeaderSchema,\n\tMasterRecordDetail: MasterRecordDetailApiValidationSchema,\n});\n/**\n * Upsert master record response schema (transforms to camelCase)\n */\nexport const ManageMasterRecordResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordDetail: v.optional(MasterRecordDetailApiValidationSchema),\n\t}),\n);\n","import type { AvesError } from \"../error.js\";\nimport { MasterRecordDetailApiSchema } from \"../schemas/master-record.js\";\nimport {\n\tSearchMasterRecordApiSchema,\n\tSearchMasterRecordResponseSchema,\n} from \"../schemas/search.js\";\nimport { ManageMasterRecordResponseSchema } from \"../schemas/upsert.js\";\nimport type {\n\tManageMasterRecordRS,\n\tMasterRecordDetail,\n\tSearchMasterRecord,\n\tSearchMasterRecordRS,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class MasterRecordsClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Search master records (camelCase in/out). Fields spread at RQ root. */\n\tsearch(\n\t\tparams: SearchMasterRecord,\n\t): Promise<Result<SearchMasterRecordRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"search\",\n\t\t\tparams,\n\t\t\tapiSchema: SearchMasterRecordApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.search,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n\t\t\tresponseSchema: SearchMasterRecordResponseSchema,\n\t\t});\n\t}\n\n\t/** Insert or update a master record. */\n\tupsertRecord(\n\t\trecord: MasterRecordDetail,\n\t): Promise<Result<ManageMasterRecordRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"upsertRecord\",\n\t\t\tparams: record,\n\t\t\tapiSchema: MasterRecordDetailApiSchema,\n\t\t\tbodyKey: \"MasterRecordDetail\",\n\t\t\tendpoint: AVES_ENDPOINTS.upsert,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.UPSERT_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n\t\t\tresponseSchema: ManageMasterRecordResponseSchema,\n\t\t});\n\t}\n}\n","import * as v from \"valibot\";\nimport { wrapListDetails } from \"../utils/booking-transform.js\";\nimport {\n\tcreateApiSchema,\n\tcreateResponseSchema,\n\toneOrMany,\n\ttoWireBody,\n} from \"../utils/schema-transform.js\";\nimport {\n\tavesSearchWire,\n\tbaseSearchWire,\n\telementOnlyWire,\n\tpackageDetailRequestWire,\n} from \"../utils/wire-shapes.js\";\nimport {\n\tPassengerDetailCreateInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport { BoolishSchema } from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\n\nconst stringish = v.union([v.string(), v.number(), v.boolean()]);\n\n// ---------------------------------------------------------------------------\n// Shared catalog fragments (response)\n// ---------------------------------------------------------------------------\n\nexport const FeatureDetailApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\tValueCode: v.optional(v.string()),\n\tValueName: v.optional(v.string()),\n});\n\nexport const FeatureListApiSchema = v.object({\n\tFeatureDetail: v.optional(oneOrMany(FeatureDetailApiSchema)),\n});\n\nexport const RefPackageInfoApiSchema = v.object({\n\t\"@PackageCode\": v.optional(v.string()),\n\t\"@PackageReference\": v.optional(v.string()),\n\t\"@PackageServiceType\": v.optional(v.string()),\n\t\"@ServiceCodeForPackageDetail\": v.optional(v.string()),\n});\n\n/** Lean catalog SubService — enough for Program search/detail workflows */\nexport const CatalogSubServiceDetailApiSchema = v.object({\n\t\"@ssCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSubServiceType: v.optional(v.string()),\n\tSubServiceLevel: v.optional(stringish),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n});\n\nexport const CatalogSubServiceListApiSchema = v.object({\n\tSubServiceDetail: v.optional(oneOrMany(CatalogSubServiceDetailApiSchema)),\n});\n\n/** Lean catalog Service inside a Package */\nexport const CatalogServiceDetailApiSchema = v.object({\n\t\"@sCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tAvesServiceType: v.optional(v.string()),\n\tTOServiceType: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tRefPackageInfo: v.optional(RefPackageInfoApiSchema),\n\tSubServiceList: v.optional(CatalogSubServiceListApiSchema),\n});\n\nexport const CatalogServiceListApiSchema = v.object({\n\tServiceDetail: v.optional(oneOrMany(CatalogServiceDetailApiSchema)),\n});\n\n/** Package / Program detail (SearchPackageRS + GetPackageDetail) */\nexport const PackageDetailApiSchema = v.object({\n\t\"@pCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tFrequencyType: v.optional(v.string()),\n\tProgramType: v.optional(v.string()),\n\tStartValidation: v.optional(v.string()),\n\tEndValidation: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tBasePrice: v.optional(stringish),\n\tBasePax: v.optional(stringish),\n\tCanCommitPack: v.optional(stringish),\n\tFeatureList: v.optional(FeatureListApiSchema),\n\tServiceList: v.optional(CatalogServiceListApiSchema),\n});\n\nexport const PackageListApiSchema = v.object({\n\tPackageDetail: v.optional(oneOrMany(PackageDetailApiSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// SearchAvesPackages / SearchTopServices — AvesSearchRQ\n// ---------------------------------------------------------------------------\n\nconst paxQtyCriteriaSchema = v.union([\n\tv.literal(\"GREATER_THAN\"),\n\tv.literal(\"GREATER_OR_EQUAL\"),\n\tv.literal(\"EQUAL_TO\"),\n\tv.literal(\"LESS_OR_EQUAL\"),\n\tv.literal(\"LESS_THAN\"),\n]);\n\nconst avesSearchTypeSchema = v.union([\n\tv.literal(\"SERVICE\"),\n\tv.literal(\"PROGRAM\"),\n\tv.literal(\"PACKAGE\"),\n]);\n\nconst SearchDestinationInputSchema = v.object({\n\tcode: v.optional(v.string()),\n\ttype: v.optional(\n\t\tv.union([\n\t\t\tv.literal(\"CODE\"),\n\t\t\tv.literal(\"SUB_LOCALITY\"),\n\t\t\tv.literal(\"LOCALITY\"),\n\t\t\tv.literal(\"SUB_SUB_ISLAND\"),\n\t\t\tv.literal(\"SUB_ISLAND\"),\n\t\t\tv.literal(\"ISLAND_COUNTY\"),\n\t\t\tv.literal(\"SUB_ARCHIPELAGO\"),\n\t\t\tv.literal(\"ARCHIPELAGO\"),\n\t\t\tv.literal(\"REGION_STATE\"),\n\t\t\tv.literal(\"SUB_SUB_NATION\"),\n\t\t\tv.literal(\"SUB_NATION\"),\n\t\t\tv.literal(\"NATION\"),\n\t\t\tv.literal(\"SUB_SUB_CONTINENT\"),\n\t\t\tv.literal(\"SUB_CONTINENT\"),\n\t\t\tv.literal(\"CONTINENT\"),\n\t\t]),\n\t),\n});\n\nconst FeatureDetailInputSchema = v.object({\n\tcode: v.string(),\n\tname: v.optional(v.string()),\n});\n\nconst PackageParamsInputSchema = v.object({\n\tgetAllDeptDate: v.optional(BoolishSchema),\n\tgetFlightPlan: v.optional(BoolishSchema),\n\tgetAllAccomodation: v.optional(BoolishSchema),\n\tgetRealAvailability: v.optional(BoolishSchema),\n\tminStay: v.optional(v.union([v.string(), v.number()])),\n\tmaxStay: v.optional(v.union([v.string(), v.number()])),\n});\n\nconst TopServiceParamsInputSchema = v.object({\n\tcompatibleAccomodation: v.optional(BoolishSchema),\n\talternativeAccomodation: v.optional(BoolishSchema),\n});\n\nconst BaseSearchInputSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tlanguageCode: v.string(),\n\tcurrencyCode: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tearlyBookingDate: v.optional(v.string()),\n\tpassengerList: v.pipe(\n\t\tv.array(PassengerDetailCreateInputSchema),\n\t\tv.minLength(1),\n\t),\n});\n\n/**\n * AvesSearchRQ body (camelCase) — shared by SearchAvesPackages / SearchTopServices.\n * `avesSearchType` selects PROGRAM|PACKAGE vs SERVICE; client picks the endpoint.\n */\nexport const AvesSearchSchema = v.object({\n\tbaseSearch: BaseSearchInputSchema,\n\tavesSearchType: avesSearchTypeSchema,\n\tpaxQty: v.union([v.string(), v.number()]),\n\tpaxQtyCriteria: paxQtyCriteriaSchema,\n\tdiscartNotAvailables: v.optional(BoolishSchema),\n\tdiscartNotAvailablesMinSales: v.optional(BoolishSchema),\n\tdiscartNotAvailablesDaysInOut: v.optional(BoolishSchema),\n\tdiscardPriceZero: v.optional(BoolishSchema),\n\tdiscardZeroPriceDays: v.optional(BoolishSchema),\n\tdestination: v.optional(SearchDestinationInputSchema),\n\tobjectTypeCode: v.optional(v.string()),\n\tfeatureList: v.optional(v.array(FeatureDetailInputSchema)),\n\tservOrPackCode: v.optional(v.string()),\n\tservOrPackDesc: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tmergeBoardAndAccomodation: v.optional(BoolishSchema),\n\tpackageParams: v.optional(PackageParamsInputSchema),\n\ttopServiceParams: v.optional(TopServiceParamsInputSchema),\n\tgetDocumentation: v.optional(BoolishSchema),\n});\n\n/** Nest BaseSearch under AvesSearchRQ; dates stay elements via baseSearchWire. */\nfunction toAvesSearchApiBody(input: v.InferOutput<typeof AvesSearchSchema>) {\n\tconst { baseSearch, ...rest } = input;\n\tconst { passengerList, ...baseWithoutList } = baseSearch;\n\treturn {\n\t\tBaseSearch: toWireBody(\n\t\t\t{\n\t\t\t\t...baseWithoutList,\n\t\t\t\tpassengerList: wrapListDetails(\n\t\t\t\t\t{ passengerList },\n\t\t\t\t\t{ listKeys: [\"passengerList\"] },\n\t\t\t\t).passengerList,\n\t\t\t},\n\t\t\tbaseSearchWire,\n\t\t),\n\t\t...toWireBody(rest as Record<string, unknown>, avesSearchWire, {\n\t\t\tlistKeys: [\"featureList\"],\n\t\t}),\n\t};\n}\n\nexport const AvesSearchApiSchema = v.pipe(\n\tAvesSearchSchema,\n\tv.transform(toAvesSearchApiBody),\n);\n\nexport const SearchPackageResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tPackageList: v.optional(PackageListApiSchema),\n\t}),\n);\n\nexport const SearchServicesResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tServiceList: v.optional(CatalogServiceListApiSchema),\n\t}),\n);\n\n// ---------------------------------------------------------------------------\n// GetPackageDetail — PackageDetailRQ\n// ---------------------------------------------------------------------------\n\n/** SelectedServiceDetail for GetPackageDetail (ServiceCode + PackageRow attrs). */\nexport const PackagePrgServiceDetailInputSchema = v.object({\n\tserviceCode: v.string(),\n\tpackageRow: v.string(),\n});\n\n/**\n * PackageDetailRQ body (camelCase).\n * Root startDate/endDate are XML elements (not listed on packageDetailRequestWire.attrs).\n */\nexport const PackageDetailRequestSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tlanguageCode: v.optional(v.string()),\n\tcurrencyCode: v.optional(v.string()),\n\tpackageCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tselectedServiceList: v.pipe(\n\t\tv.array(PackagePrgServiceDetailInputSchema),\n\t\tv.minLength(1),\n\t),\n\tpassengerList: v.optional(v.array(PassengerDetailCreateInputSchema)),\n});\n\nconst PACKAGE_DETAIL_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n] as const;\n\n/** Map packagePrg fields → attrs; list wrap + element dates at root. */\nexport const PackageDetailRequestApiSchema = v.pipe(\n\tPackageDetailRequestSchema,\n\tv.transform((input) =>\n\t\ttoWireBody(input as Record<string, unknown>, packageDetailRequestWire, {\n\t\t\tlistKeys: PACKAGE_DETAIL_LIST_KEYS,\n\t\t}),\n\t),\n);\n\nexport const PackageDetailResponseSchema = createResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tPackageDetail: v.optional(PackageDetailApiSchema),\n\t}),\n);\n\n// ---------------------------------------------------------------------------\n// CommitPackage — CommitPackRQ\n// ---------------------------------------------------------------------------\n\nexport const CommitPackageSchema = v.object({\n\tpackageCode: v.string(),\n});\n\nexport const CommitPackageApiSchema = createApiSchema(\n\tCommitPackageSchema,\n\telementOnlyWire,\n);\n\nexport const CommitPackageResponseSchema = createResponseSchema(\n\tv.object({ RsStatus: RsStatusSchema }),\n);\n","import type { AvesError } from \"../error.js\";\nimport {\n\tAvesSearchApiSchema,\n\tCommitPackageApiSchema,\n\tCommitPackageResponseSchema,\n\tPackageDetailRequestApiSchema,\n\tPackageDetailResponseSchema,\n\tSearchPackageResponseSchema,\n\tSearchServicesResponseSchema,\n} from \"../schemas/package-catalog.js\";\nimport type {\n\tAvesSearchRQ,\n\tCommitPackageRQ,\n\tCommitPackageRS,\n\tPackageDetailRQ,\n\tPackageDetailRS,\n\tSearchPackageRS,\n\tSearchServicesRS,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class PackageCatalogClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Search packages / programs. Prefer `avesSearchType: \"PACKAGE\"` | `\"PROGRAM\"`. */\n\tsearchPackages(\n\t\tparams: AvesSearchRQ,\n\t): Promise<Result<SearchPackageRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchPackages\",\n\t\t\tparams,\n\t\t\tapiSchema: AvesSearchApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchAvesPackages,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.AVES_SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_PACKAGE_RESPONSE,\n\t\t\tresponseSchema: SearchPackageResponseSchema,\n\t\t});\n\t}\n\n\t/** Search TOP services. Prefer `avesSearchType: \"SERVICE\"`. */\n\tsearchTopServices(\n\t\tparams: AvesSearchRQ,\n\t): Promise<Result<SearchServicesRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchTopServices\",\n\t\t\tparams,\n\t\t\tapiSchema: AvesSearchApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchTopServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.AVES_SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_SERVICES_RESPONSE,\n\t\t\tresponseSchema: SearchServicesResponseSchema,\n\t\t});\n\t}\n\n\t/** Package / program detail + service list. */\n\tgetPackageDetail(\n\t\tparams: PackageDetailRQ,\n\t): Promise<Result<PackageDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"getPackageDetail\",\n\t\t\tparams,\n\t\t\tapiSchema: PackageDetailRequestApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.getPackageDetail,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.PACKAGE_DETAIL_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.PACKAGE_DETAIL_RESPONSE,\n\t\t\tresponseSchema: PackageDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Publish an existing package. Does not create packages. */\n\tcommitPackage(\n\t\tparams: CommitPackageRQ,\n\t): Promise<Result<CommitPackageRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"commitPackage\",\n\t\t\tparams,\n\t\t\tapiSchema: CommitPackageApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.commitPackage,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.COMMIT_PACKAGE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.COMMIT_PACKAGE_RESPONSE,\n\t\t\tresponseSchema: CommitPackageResponseSchema,\n\t\t});\n\t}\n}\n","import type { BaseIssue } from \"valibot\";\n\nexport const ERROR_KINDS = {\n\tVALIDATION: \"validation\",\n\tAPI: \"api\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\nexport type ErrorKind = (typeof ERROR_KINDS)[keyof typeof ERROR_KINDS];\n\n/**\n * Error thrown by AVES API operations\n */\nexport class AvesError extends Error {\n\tconstructor(\n\t\tpublic readonly kind: ErrorKind,\n\t\tpublic readonly message: string,\n\t\tpublic readonly status?: string,\n\t\tpublic readonly code?: number | string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"AvesError\";\n\t\tthis.status = status?.toLowerCase();\n\t\tthis.code = this.parseCode(code);\n\t}\n\n\tprivate parseCode(code?: number | string): number {\n\t\tif (typeof code === \"string\") {\n\t\t\treturn Number.parseInt(code, 10);\n\t\t}\n\t\treturn code ?? 0;\n\t}\n}\n\nexport function validationError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.VALIDATION, message);\n}\n\nexport function apiError(\n\tmessage: string,\n\tstatus?: string,\n\tcode?: number | string,\n): AvesError {\n\treturn new AvesError(ERROR_KINDS.API, message, status, code);\n}\n\nexport function unknownError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.UNKNOWN, message);\n}\n\nexport function buildDetails(issues: readonly BaseIssue<unknown>[]): string {\n\treturn issues.map(formatIssue).join(\"; \");\n}\n\nfunction formatIssue(issue: BaseIssue<unknown>): string {\n\tconst path = formatPath(issue.path);\n\tconst message = issue.message ?? \"Invalid value\";\n\n\treturn path ? `${path}: ${message}` : message;\n}\n\nfunction formatPath(path?: readonly unknown[]): string | undefined {\n\tif (!path || path.length === 0) return;\n\n\tconst segments = path\n\t\t.map(extractSegment)\n\t\t.filter((segment): segment is string => segment !== undefined);\n\n\treturn segments.length > 0 ? segments.join(\".\") : undefined;\n}\n\nfunction extractSegment(segment: unknown): string | undefined {\n\tif (typeof segment === \"string\" || typeof segment === \"number\") {\n\t\treturn String(segment);\n\t}\n\n\tif (typeof segment === \"object\" && segment !== null && \"key\" in segment) {\n\t\treturn String(segment.key);\n\t}\n\n\treturn;\n}\n\nexport function isAbortError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n","/**\n * Result type for functional error handling\n */\nexport type Result<T, E = Error> =\n\t| { success: true; data: T }\n\t| { success: false; error: E };\n\n/**\n * Creates a successful result\n */\nexport function ok<T>(data: T): Result<T, never> {\n\treturn { success: true, data };\n}\n\n/**\n * Creates an error result\n */\nexport function err<E>(error: E): Result<never, E> {\n\treturn { success: false, error };\n}\n\nexport function isOk(statusCode: number): boolean {\n\treturn statusCode === 200;\n}\n","export interface TimeoutController {\n\tsignal: AbortSignal;\n\tclear?: () => void;\n}\n\n/**\n * Create an AbortSignal that will automatically abort after `timeoutMs`.\n * If `timeoutMs` is not provided or <= 0, no automatic abort is scheduled.\n */\nexport function createTimeoutSignal(timeoutMs?: number): TimeoutController {\n\tconst controller = new AbortController();\n\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn { signal: controller.signal };\n\t}\n\n\tconst timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n\treturn {\n\t\tsignal: controller.signal,\n\t\tclear: () => clearTimeout(timeoutId),\n\t};\n}\n","import { AvesError } from \"../error.js\";\n\nfunction buildUrl(baseURL: string, endpoint: string): URL {\n\ttry {\n\t\tconst base = new URL(baseURL);\n\t\tconst basePath = base.pathname.endsWith(\"/\")\n\t\t\t? base.pathname.slice(0, -1)\n\t\t\t: base.pathname;\n\t\tconst combinedPath = basePath + endpoint;\n\n\t\treturn new URL(combinedPath, base);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid baseURL: ${error instanceof Error ? error.message : \"Invalid URL format\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Validates and combines baseURL with endpoint\n * @param baseURL - Base URL (must be http:// or https://)\n * @param endpoint - Endpoint path (must start with /)\n * @returns Combined URL string\n * @throws AvesError if URL is invalid or protocol is not http/https\n */\nexport function parseUrl(baseURL: string, endpoint: string): string {\n\tif (!endpoint.startsWith(\"/\")) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid endpoint: endpoint must start with '/' but got '${endpoint}'`,\n\t\t);\n\t}\n\n\tconst normalizedBaseURL = baseURL.replace(/\\/$/, \"\");\n\n\tconst url = buildUrl(normalizedBaseURL, endpoint);\n\n\tif (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid protocol: baseURL must use http:// or https:// but got '${url.protocol}'`,\n\t\t);\n\t}\n\n\treturn url.toString();\n}\n","import XMLBuilder from \"fast-xml-builder\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { AvesError } from \"../error.js\";\n\nconst parserOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tparseAttributeValue: false,\n\ttrimValues: true,\n\tignoreNameSpace: true,\n\tremoveNSPrefix: true,\n\tparseTagValue: false,\n};\n\nconst builderOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tsuppressEmptyNode: true,\n};\n\nconst parser = new XMLParser(parserOptions);\nconst builder = new XMLBuilder(builderOptions);\n\n/**\n * Converts JSON to XML string\n */\nexport function jsonToXml(json: Record<string, unknown>): string {\n\ttry {\n\t\treturn builder.build(json);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert JSON to XML: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Converts XML string to JSON object\n * Attributes are parsed with @ prefix\n */\nexport function xmlToJson(xml: string): Record<string, unknown> {\n\ttry {\n\t\treturn parser.parse(xml);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert XML to JSON: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n","import { request as r } from \"undici\";\nimport {\n\ttype BaseIssue,\n\ttype BaseSchema,\n\tparse,\n\tsafeParse,\n\tValiError,\n} from \"valibot\";\nimport {\n\tAvesError,\n\tapiError,\n\tbuildDetails,\n\tisAbortError,\n\tunknownError,\n\tvalidationError,\n} from \"../error.js\";\nimport type { AvesClientOptions, RsStatus } from \"../types.js\";\nimport { err, isOk, ok, type Result } from \"../utils/result.js\";\nimport { createTimeoutSignal } from \"../utils/timeout.js\";\nimport { parseUrl } from \"../utils/url.js\";\nimport { jsonToXml, xmlToJson } from \"../xml/client.js\";\nimport { createRootElement, type XMLRootElementValues } from \"../xml/root.js\";\n\n/**\n * Shared HTTP + XML transport for AVES domain clients.\n */\nexport class AvesTransport {\n\tconstructor(private readonly options: AvesClientOptions) {}\n\n\tcreateRqHeader() {\n\t\treturn {\n\t\t\t\"@HostID\": this.options.hostID,\n\t\t\t\"@Xtoken\": this.options.xtoken,\n\t\t\t\"@Interface\": \"WEB\" as const,\n\t\t\t\"@UserName\": \"WEB\" as const,\n\t\t\t...(this.options.languageCode && {\n\t\t\t\t\"@LanguageCode\": this.options.languageCode,\n\t\t\t}),\n\t\t};\n\t}\n\n\ttoAvesError(error: unknown, defaultMessage: string): AvesError {\n\t\tif (error instanceof AvesError) return error;\n\t\tif (error instanceof ValiError)\n\t\t\treturn validationError(`Validation error: ${buildDetails(error.issues)}`);\n\t\tif (error instanceof Error) return unknownError(error.message);\n\t\treturn unknownError(defaultMessage);\n\t}\n\n\tprivate handleApiStatus<T extends { rsStatus: RsStatus }>(\n\t\toutput: T,\n\t): Result<T, AvesError> {\n\t\tconst { rsStatus } = output;\n\t\tif (rsStatus?.status !== \"OK\")\n\t\t\treturn err(\n\t\t\t\tapiError(\n\t\t\t\t\trsStatus.errorDescription ?? \"\",\n\t\t\t\t\trsStatus.status,\n\t\t\t\t\trsStatus.errorCode,\n\t\t\t\t),\n\t\t\t);\n\t\treturn ok(output);\n\t}\n\n\tasync request<T extends { rsStatus: RsStatus }>(\n\t\tendpoint: string,\n\t\trequestBody: Record<string, unknown>,\n\t\tresponseRootKey: string,\n\t\tresponseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n\t): Promise<Result<T, AvesError>> {\n\t\tconst { signal, clear } = createTimeoutSignal(\n\t\t\tthis.options.timeoutMs ?? 30_000,\n\t\t);\n\n\t\ttry {\n\t\t\tconst response = await r(parseUrl(this.options.baseURL, endpoint), {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/xml\" },\n\t\t\t\tbody: jsonToXml(requestBody),\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\tconst responseText = await response.body.text();\n\t\t\tif (!isOk(response.statusCode))\n\t\t\t\treturn err(apiError(responseText, \"ERROR\", response.statusCode));\n\n\t\t\tconst rootElement = xmlToJson(responseText)[responseRootKey];\n\t\t\tif (!rootElement)\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response structure: missing root element '${responseRootKey}'`,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\tconst parseResult = safeParse(responseSchema, rootElement);\n\t\t\tif (!parseResult.success)\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response format: ${buildDetails(parseResult.issues)}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn this.handleApiStatus(parseResult.output);\n\t\t} catch (error) {\n\t\t\tif (isAbortError(error))\n\t\t\t\treturn err(apiError(\"Request timed out\", \"TIMEOUT\"));\n\t\t\treturn err(this.toAvesError(error, \"Unknown error occurred\"));\n\t\t} finally {\n\t\t\tclear?.();\n\t\t}\n\t}\n\n\t/** Validate → wrap RqHeader → POST → parse response. */\n\tasync invokeOp<\n\t\tTIn,\n\t\tTApiBody extends Record<string, unknown>,\n\t\tTOut extends { rsStatus: RsStatus },\n\t>(opts: {\n\t\top: string;\n\t\tparams: TIn;\n\t\tapiSchema: BaseSchema<TIn, TApiBody, BaseIssue<unknown>>;\n\t\tendpoint: string;\n\t\trequestRoot: XMLRootElementValues;\n\t\tresponseRoot: string;\n\t\tresponseSchema: BaseSchema<unknown, TOut, BaseIssue<unknown>>;\n\t\t/** Nest parsed body under this key instead of spreading at RQ root. */\n\t\tbodyKey?: string;\n\t}): Promise<Result<TOut, AvesError>> {\n\t\ttry {\n\t\t\tconst apiBody = parse(opts.apiSchema, opts.params);\n\t\t\tconst payload = opts.bodyKey ? { [opts.bodyKey]: apiBody } : apiBody;\n\t\t\treturn this.request(\n\t\t\t\topts.endpoint,\n\t\t\t\tcreateRootElement(opts.requestRoot, {\n\t\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\t\t...payload,\n\t\t\t\t}),\n\t\t\t\topts.responseRoot,\n\t\t\t\topts.responseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, `Validation error occurred during ${opts.op}`),\n\t\t\t);\n\t\t}\n\t}\n}\n","import type { FlatAliasHost } from \"./types.js\";\n\nconst DOMAINS = [\"master\", \"booking\", \"packages\"] as const;\n\n/** Bind domain prototype methods onto the facade as flat compat aliases. */\nexport function attachFlatAliases(client: FlatAliasHost): void {\n\tfor (const ns of DOMAINS) {\n\t\tconst domain = client[ns];\n\t\tconst proto = Object.getPrototypeOf(domain) as object;\n\t\tfor (const key of Object.getOwnPropertyNames(proto)) {\n\t\t\tif (key === \"constructor\" || key in client) continue;\n\t\t\tconst value: (...args: never[]) => unknown =\n\t\t\t\tObject.getOwnPropertyDescriptor(proto, key)?.value;\n\t\t\tif (typeof value !== \"function\") continue;\n\t\t\tObject.defineProperty(client, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value.bind(domain),\n\t\t\t});\n\t\t}\n\t}\n}\n","import { BookingClient } from \"./client/booking.js\";\nimport { attachFlatAliases } from \"./client/flat-aliases.js\";\nimport { MasterRecordsClient } from \"./client/master-records.js\";\nimport { PackageCatalogClient } from \"./client/packages.js\";\nimport { AvesTransport } from \"./client/transport.js\";\nimport type { AvesClientDeps, AvesClientFlat } from \"./client/types.js\";\nimport type { AvesClientOptions } from \"./types.js\";\n\nexport type { AvesClientDeps, AvesClientFlat } from \"./client/types.js\";\n\n/**\n * AVES XML REST API client — facade over domain clients (DI-friendly).\n *\n * Canonical: `client.booking.createBooking(...)`, `client.master.search(...)`\n * Flat compat aliases are bound automatically from domain prototypes.\n */\nclass AvesClientBase {\n\treadonly transport: AvesTransport;\n\treadonly master: MasterRecordsClient;\n\treadonly booking: BookingClient;\n\treadonly packages: PackageCatalogClient;\n\n\tconstructor(options: AvesClientOptions, deps: AvesClientDeps = {}) {\n\t\tthis.transport = deps.transport ?? new AvesTransport(options);\n\t\tthis.master = deps.master ?? new MasterRecordsClient(this.transport);\n\t\tthis.booking = deps.booking ?? new BookingClient(this.transport);\n\t\tthis.packages = deps.packages ?? new PackageCatalogClient(this.transport);\n\t\tattachFlatAliases(this);\n\t}\n}\n\nexport type AvesClient = AvesClientBase & AvesClientFlat;\n\nexport const AvesClient: {\n\tnew (options: AvesClientOptions, deps?: AvesClientDeps): AvesClient;\n} = AvesClientBase as {\n\tnew (options: AvesClientOptions, deps?: AvesClientDeps): AvesClient;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["r"],"sources":["../src/utils/case-transform.ts","../src/utils/booking-transform.ts","../src/utils/schema-transform.ts","../src/utils/wire-shapes.ts","../src/utils/enum.ts","../src/schemas/enums.ts","../src/schemas/booking-shared.ts","../src/schemas/common.ts","../src/schemas/booking-response.ts","../src/schemas/master-record.ts","../src/schemas/booking-file.ts","../src/schemas/booking-ops.ts","../src/schemas/search-booking-file.ts","../src/xml/root.ts","../src/client/endpoints.ts","../src/client/booking.ts","../src/schemas/search.ts","../src/schemas/upsert.ts","../src/client/master-records.ts","../src/schemas/package-catalog.ts","../src/client/packages.ts","../src/error.ts","../src/utils/result.ts","../src/utils/timeout.ts","../src/utils/url.ts","../src/xml/client.ts","../src/client/transport.ts","../src/client/flat-aliases.ts","../src/client.ts"],"sourcesContent":["import type { WireShape } from \"./wire-shapes.js\";\n\ntype CamelFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${H}${Capitalize<CamelFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToCamelCase<S extends string> =\n\tCamelFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Lowercase<F>}${R}`\n\t\t: CamelFromDelimiter<S>;\n\ntype PascalFromDelimiter<S extends string> = S extends `${infer H}_${infer T}`\n\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t: S extends `${infer H}-${infer T}`\n\t\t? `${Capitalize<H>}${Capitalize<PascalFromDelimiter<T>>}`\n\t\t: S;\n\ntype ToPascalCase<S extends string> =\n\tPascalFromDelimiter<S> extends `${infer F}${infer R}`\n\t\t? `${Capitalize<F>}${R}`\n\t\t: Capitalize<PascalFromDelimiter<S>>;\n\n/** Keys that are preserved as-is (no recursive transform) at runtime */\ntype Primitive = string | number | boolean | symbol | bigint | null | undefined;\ntype SpecialObject =\n\t| Date\n\t| RegExp\n\t| Map<unknown, unknown>\n\t| Set<unknown>\n\t| Error;\n\n/** Maps key K: strips leading @ and converts to camelCase for mapped output key */\ntype OverrideCamelKey<K extends string> = K extends \"RPH\"\n\t? \"rph\"\n\t: K extends \"TOServiceType\"\n\t\t? \"toServiceType\"\n\t\t: ToCamelCase<K>;\n\ntype CamelizeKey<K extends string> = K extends `@${infer Rest}`\n\t? OverrideCamelKey<Rest>\n\t: OverrideCamelKey<K>;\n\n/** Maps key K: strips leading @ and converts to PascalCase for mapped output key */\ntype PascalizeKey<K extends string> = K extends `@${infer Rest}`\n\t? ToPascalCase<Rest>\n\t: ToPascalCase<K>;\n\n/**\n * Recursively maps PascalCase/@-prefixed object keys to camelCase.\n * Reflects pascalToCamelKeys runtime: primitives and special objects preserved; arrays and plain objects recursively transformed.\n */\nexport type Camelize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Camelize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as CamelizeKey<K & string>]: Camelize<T[K]> }\n\t\t\t\t: T;\n\n/**\n * Recursively maps camelCase keys to PascalCase (with @ for attributes at runtime).\n * Reflects camelToPascalKeys output shape for type-level use.\n */\nexport type Pascalize<T> = T extends Primitive\n\t? T\n\t: T extends SpecialObject\n\t\t? T\n\t\t: T extends readonly (infer U)[]\n\t\t\t? Pascalize<U>[]\n\t\t\t: T extends object\n\t\t\t\t? { [K in keyof T as PascalizeKey<K & string>]: Pascalize<T[K]> }\n\t\t\t\t: T;\n\nfunction camelToPascal(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction pascalToCamel(str: string): string {\n\treturn str.charAt(0).toLowerCase() + str.slice(1);\n}\n\nfunction isSpecialObject(obj: unknown): boolean {\n\treturn (\n\t\tobj instanceof Date ||\n\t\tobj instanceof RegExp ||\n\t\tobj instanceof Map ||\n\t\tobj instanceof Set ||\n\t\tobj instanceof Error\n\t);\n}\n\n// Keys that need a custom PascalCase/XML tag name (by source camelCase key)\nconst pascalKeyOverrides = new Map<string, string>([\n\t[\"toServiceType\", \"TOServiceType\"],\n\t[\"rph\", \"RPH\"],\n]);\n\nconst camelKeyOverrides = new Map<string, string>([\n\t[\"TOServiceType\", \"toServiceType\"],\n\t[\"RPH\", \"rph\"],\n]);\n\nfunction formatAttributeField(\n\tpascalKey: string,\n\toriginalField: string,\n\tpreserveCamel: boolean,\n) {\n\treturn preserveCamel ? `@${originalField}` : `@${pascalKey}`;\n}\n\n/**\n * camelCase → PascalCase. `@` attrs only for fields listed on the current {@link WireShape}.\n * Child objects/arrays use `shape.children[key]` (same shape for each array item).\n * Omit shape only for nested keys with no child entry (all elements at that level).\n */\nexport function camelToPascalKeys<T>(\n\tinput: T,\n\tshape?: WireShape,\n): Pascalize<T> {\n\tif (!input || typeof input !== \"object\" || isSpecialObject(input)) {\n\t\treturn input as Pascalize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => camelToPascalKeys(item, shape)) as Pascalize<T>;\n\t}\n\n\tconst attrs = shape?.attrs;\n\tconst preserve = shape?.preserveCamel;\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst pascalKey = pascalKeyOverrides.get(key) ?? camelToPascal(key);\n\t\tconst treatAsAttr = Boolean(attrs?.includes(key));\n\t\tconst finalKey = treatAsAttr\n\t\t\t? formatAttributeField(pascalKey, key, Boolean(preserve?.includes(key)))\n\t\t\t: pascalKey;\n\n\t\tconst childShape = shape?.children?.[key];\n\t\tresult[finalKey] = transformValue(value, (val) =>\n\t\t\tcamelToPascalKeys(val, childShape),\n\t\t);\n\t}\n\n\treturn result as Pascalize<T>;\n}\n\n/**\n * PascalCase / @attrs → camelCase. Strips `@` only; no shape needed.\n */\nexport function pascalToCamelKeys<T>(input: T): Camelize<T> {\n\tif (input === null || typeof input !== \"object\" || isSpecialObject(input)) {\n\t\treturn input as Camelize<T>;\n\t}\n\n\tif (Array.isArray(input)) {\n\t\treturn input.map((item) => pascalToCamelKeys(item)) as Camelize<T>;\n\t}\n\n\tconst result: Record<string, unknown> = {};\n\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tconst parsedKey = key.startsWith(\"@\") ? key.slice(1) : key;\n\t\tconst camelKey =\n\t\t\tcamelKeyOverrides.get(parsedKey) ?? pascalToCamel(parsedKey);\n\t\tresult[camelKey] = transformValue(value, pascalToCamelKeys);\n\t}\n\n\treturn result as Camelize<T>;\n}\n\nfunction transformValue(\n\tvalue: unknown,\n\ttransformObject: (obj: Record<string, unknown>) => unknown,\n): unknown {\n\tif (!value || typeof value !== \"object\" || isSpecialObject(value)) {\n\t\treturn value;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\treturn value.map((item) => transformValue(item, transformObject));\n\t}\n\n\treturn transformObject(value as Record<string, unknown>);\n}\n","import { camelToPascalKeys } from \"./case-transform.js\";\nimport type { WireShape } from \"./wire-shapes.js\";\n\n/** Only naming exception: financialDeadlineList → deadlineDetail */\nconst DETAIL_KEY_OVERRIDES: Record<string, string> = {\n\tfinancialDeadlineList: \"deadlineDetail\",\n};\n\nfunction detailKeyFor(listKey: string) {\n\treturn DETAIL_KEY_OVERRIDES[listKey] ?? listKey.replace(/List$/, \"Detail\");\n}\n\nexport type ListWrapOptions = {\n\tlistKeys: readonly string[];\n\t/** Create-only: wrap each item as `{ detailKey: item }` instead of `{ detailKey: items }` */\n\tarrayOfOne?: ReadonlySet<string>;\n};\n\n/**\n * Flatten SDK `*List: Detail[]` → AVES List/Detail wrappers.\n * Returns a new object (list values change shape; not the input type).\n */\nexport function wrapListDetails<T extends object>(\n\tinput: T,\n\t{ listKeys, arrayOfOne }: ListWrapOptions,\n): T {\n\tconst wrapped = { ...input };\n\tconst one = arrayOfOne ?? new Set<string>();\n\tfor (const listKey of listKeys) {\n\t\tconst value = Reflect.get(wrapped, listKey);\n\t\tif (!Array.isArray(value)) continue;\n\t\tconst detailKey = detailKeyFor(listKey);\n\t\tReflect.set(\n\t\t\twrapped,\n\t\t\tlistKey,\n\t\t\tone.has(listKey)\n\t\t\t\t? value.map((item) => ({ [detailKey]: item }))\n\t\t\t\t: { [detailKey]: value },\n\t\t);\n\t}\n\treturn wrapped;\n}\n\nexport const CREATE_BOOKING_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n\t\"selectedPackageList\",\n\t\"extraQuoteServiceList\",\n\t\"deadlineList\",\n\t\"financialDeadlineList\",\n\t\"paymentList\",\n\t\"noteList\",\n] as const;\n\nexport const CREATE_ARRAY_OF_ONE = new Set([\n\t\"selectedServiceList\",\n\t\"passengerList\",\n]);\n\nexport const MOD_SERVICES_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n\t\"cancellableBookedServiceList\",\n\t\"deadlineList\",\n] as const;\n\nexport const MOD_HEADER_LIST_KEYS = [\n\t\"passengerList\",\n\t\"financialDeadlineList\",\n] as const;\n\nexport const FILE_PAYMENT_LIST_KEYS = [\"filePaymentList\"] as const;\n\n/**\n * Empty paxAssociated [] → \"\" so XML emits `<PaxAssociated/>`.\n * SDK accepts `string[]` and maps to `{ pax }[]` for the wire.\n */\nexport function normalizeEmptyPaxAssociated<T>(input: T): T {\n\tconst walk = (node: unknown): unknown => {\n\t\tif (node === null || typeof node !== \"object\") return node;\n\t\tif (Array.isArray(node)) return node.map(walk);\n\t\tconst result: Record<string, unknown> = {};\n\t\tfor (const [key, val] of Object.entries(node)) {\n\t\t\tif (key === \"paxAssociated\" && Array.isArray(val)) {\n\t\t\t\tif (!val.length) {\n\t\t\t\t\tresult[key] = \"\";\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (val.every((item) => typeof item === \"string\")) {\n\t\t\t\t\tresult[key] = val.map((pax) => ({ pax }));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult[key] = walk(val);\n\t\t}\n\t\treturn result;\n\t};\n\treturn walk(input) as T;\n}\n\n/**\n * camelCase body → optional list wrap → PascalCase / @attrs via required wire shape.\n */\nexport function toWireBody<T extends object>(\n\tinput: T,\n\tshape: WireShape,\n\twrap?: ListWrapOptions,\n) {\n\tconst body = wrap ? wrapListDetails(input, wrap) : input;\n\treturn camelToPascalKeys(normalizeEmptyPaxAssociated(body), shape);\n}\n","import type { BaseIssue, BaseSchema, ObjectEntries } from \"valibot\";\nimport * as v from \"valibot\";\nimport { type ListWrapOptions, toWireBody } from \"./booking-transform.js\";\nimport { camelToPascalKeys, pascalToCamelKeys } from \"./case-transform.js\";\nimport type { WireShape } from \"./wire-shapes.js\";\n\n/**\n * camelCase input → optional list wrap → PascalCase / @attrs via required wire shape.\n * Use `elementOnlyWire` (`{}`) when the root has no attributes.\n */\nexport function createApiSchema<\n\tTSchema extends v.GenericSchema<object, object>,\n>(inputSchema: TSchema, shape: WireShape, wrap?: ListWrapOptions) {\n\treturn v.pipe(\n\t\tinputSchema,\n\t\tv.transform((input) => toWireBody(input, shape, wrap)),\n\t);\n}\n\n/**\n * Normalize XML one-or-many nodes into a typed array.\n */\nexport function oneOrMany<TSchema extends v.GenericSchema>(\n\titemSchema: TSchema,\n) {\n\treturn v.pipe(\n\t\tv.union([v.array(itemSchema), itemSchema]),\n\t\tv.transform((input): v.InferOutput<TSchema>[] =>\n\t\t\tArray.isArray(input) ? input : [input],\n\t\t),\n\t);\n}\n\n/**\n * Wire `{ DetailKey: one|many }` → flat `Detail[]` (mirrors request `wrapListDetails`).\n */\nexport function listDetailApiSchema<\n\tconst TKey extends string,\n\tTSchema extends v.GenericSchema,\n>(detailKey: TKey, itemSchema: TSchema) {\n\tconst itemList = v.optional(oneOrMany(itemSchema));\n\treturn v.pipe(\n\t\tv.object({ [detailKey]: itemList } as {\n\t\t\t[K in TKey]: typeof itemList;\n\t\t}),\n\t\tv.transform((list): v.InferOutput<TSchema>[] => list[detailKey] ?? []),\n\t);\n}\n\n/**\n * Creates a schema that transforms PascalCase API responses to camelCase\n */\nexport function createResponseSchema<TSchema extends v.GenericSchema>(\n\tapiSchema: TSchema,\n) {\n\treturn v.pipe(\n\t\tapiSchema,\n\t\tv.transform((input) => pascalToCamelKeys(input)),\n\t);\n}\n\n/** Result of spreading optional detail key `K` onto object `T`. */\nexport type FlattenedResponse<T, K extends string> = T extends object\n\t? K extends keyof T\n\t\t? Omit<T, K> & NonNullable<T[K]>\n\t\t: T\n\t: T;\n\n/**\n * Spread an optional nested detail object onto the response root (immutable).\n * e.g. `{ rsStatus, bookingFileDetail: { code } }` → `{ rsStatus, code }`\n */\nexport function flattenResponseDetail<const K extends string>(detailKey: K) {\n\treturn <T>(input: T): FlattenedResponse<T, K> => {\n\t\tif (input === null || typeof input !== \"object\")\n\t\t\treturn input as FlattenedResponse<T, K>;\n\t\tconst record = input as Record<string, unknown>;\n\t\tconst detail = record[detailKey];\n\t\tconst { [detailKey]: _, ...rest } = record;\n\t\tif (!detail || typeof detail !== \"object\" || Array.isArray(detail))\n\t\t\treturn rest as FlattenedResponse<T, K>;\n\t\treturn { ...rest, ...detail } as FlattenedResponse<T, K>;\n\t};\n}\n\n/**\n * camelCase response + spread a single `*Detail` onto the root.\n */\nexport function createFlattenedResponseSchema<\n\tTSchema extends v.GenericSchema,\n\tconst K extends string,\n>(apiSchema: TSchema, detailKey: K) {\n\treturn v.pipe(\n\t\tcreateResponseSchema(apiSchema),\n\t\tv.transform((input) => flattenResponseDetail(detailKey)(input)),\n\t);\n}\n\n/**\n * Accept a bare value **or** `{ value, ...extras }`; always output the object form.\n * Used for booking/file status fields.\n */\nexport function valueFieldSchema<\n\tTValue extends v.GenericSchema,\n\tTExtra extends ObjectEntries,\n>(valueSchema: TValue, extraEntries?: TExtra) {\n\tconst objectSchema = v.object({\n\t\tvalue: valueSchema,\n\t\t...(extraEntries ?? {}),\n\t} as { value: TValue } & TExtra);\n\treturn v.pipe(\n\t\tv.union([valueSchema, objectSchema]),\n\t\tv.transform((input) =>\n\t\t\tinput !== null && typeof input === \"object\" ? input : { value: input },\n\t\t),\n\t);\n}\n\n/**\n * `selectedPackageList: [item]` → `selectedPackageDetail: item` (keeps explicit singular).\n */\nexport function coalesceListHead<\n\tconst ListKey extends string,\n\tconst ItemKey extends string,\n>(listKey: ListKey, itemKey: ItemKey) {\n\treturn <T extends object>(input: T): Omit<T, ListKey> => {\n\t\tconst list = Reflect.get(input, listKey);\n\t\tconst item = Reflect.get(input, itemKey);\n\t\tconst next = { ...input };\n\t\tReflect.deleteProperty(next, listKey);\n\t\tReflect.set(\n\t\t\tnext,\n\t\t\titemKey,\n\t\t\titem ?? (Array.isArray(list) ? list[0] : undefined),\n\t\t);\n\t\treturn next as Omit<T, ListKey>;\n\t};\n}\n\n/**\n * `customerRecordCode` shorthand → `customerDetail.recordCode`.\n */\nexport function coalesceCustomerRecordCode<\n\tT extends {\n\t\tcustomerDetail?: { recordCode?: string } | undefined;\n\t\tcustomerRecordCode?: string | undefined;\n\t},\n>(input: T) {\n\tconst { customerRecordCode, customerDetail, ...rest } = input;\n\treturn {\n\t\t...rest,\n\t\tcustomerDetail: {\n\t\t\t...customerDetail,\n\t\t\trecordCode: customerDetail?.recordCode ?? customerRecordCode,\n\t\t},\n\t};\n}\n\n/**\n * Validation schema for already-transformed PascalCase/@attr payloads.\n * Uses `shape.attrs` (not a global field set) to decide `@` vs element.\n */\nexport function createApiValidationSchema<\n\tTEntries extends ObjectEntries,\n\tTMessage extends v.ErrorMessage<v.ObjectIssue> | undefined,\n>(inputSchema: v.ObjectSchema<TEntries, TMessage>, shape: WireShape = {}) {\n\tconst validationEntries = {} as {\n\t\t[K in string]: BaseSchema<unknown, unknown, BaseIssue<unknown>>;\n\t};\n\tconst attrs = shape.attrs ?? [];\n\tconst preserve = shape.preserveCamel ?? [];\n\n\tfor (const key in inputSchema.entries) {\n\t\tconst pascalKey = key.charAt(0).toUpperCase() + key.slice(1);\n\t\tconst isAttribute = attrs.includes(key);\n\t\tconst finalKey = isAttribute\n\t\t\t? preserve.includes(key)\n\t\t\t\t? `@${key}`\n\t\t\t\t: `@${pascalKey}`\n\t\t\t: pascalKey;\n\t\tvalidationEntries[finalKey] = inputSchema.entries[key];\n\t}\n\n\treturn v.object(validationEntries as TEntries);\n}\n\n/**\n * Prefer first defined candidate for each output key; drop alias keys.\n * e.g. `{ \"@FromExternalProvider\": [canonical, alias] }`\n */\nexport function coalesceWireAliases<T extends object>(\n\tinput: T,\n\trules: Readonly<Record<string, readonly string[]>>,\n): T {\n\tconst out: Record<string, unknown> = {\n\t\t...(input as Record<string, unknown>),\n\t};\n\tfor (const [outKey, candidates] of Object.entries(rules)) {\n\t\tlet value: unknown;\n\t\tfor (const key of candidates) {\n\t\t\tif (out[key] !== undefined && out[key] !== null) {\n\t\t\t\tvalue = out[key];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tfor (const key of candidates) {\n\t\t\tif (key !== outKey) delete out[key];\n\t\t}\n\t\tif (value !== undefined) out[outKey] = value;\n\t\telse delete out[outKey];\n\t}\n\treturn out as T;\n}\n\n/**\n * createApiSchema + createApiValidationSchema for the same input/shape pair.\n */\nexport function createWireSchemaPair<\n\tTEntries extends ObjectEntries,\n\tTMessage extends v.ErrorMessage<v.ObjectIssue> | undefined,\n>(inputSchema: v.ObjectSchema<TEntries, TMessage>, shape: WireShape) {\n\treturn {\n\t\tapi: createApiSchema(inputSchema, shape),\n\t\tvalidation: createApiValidationSchema(inputSchema, shape),\n\t};\n}\n\nexport { camelToPascalKeys, toWireBody };\n","/**\n * Per-shape wire rules: which camelCase fields are XML @attrs at this level.\n * Children are keyed by the camelCase property name on the parent object.\n * Always pass an explicit shape at request boundaries — missing shape ⇒ all elements.\n */\nexport type WireShape = {\n\tattrs?: readonly string[];\n\tpreserveCamel?: readonly string[];\n\tchildren?: Readonly<Record<string, WireShape>>;\n};\n\nexport const headerWire = {\n\tattrs: [\n\t\t\"hostID\",\n\t\t\"xtoken\",\n\t\t\"interface\",\n\t\t\"userName\",\n\t\t\"status\",\n\t\t\"languageCode\",\n\t],\n} as const satisfies WireShape;\n\nexport const financialDetailWire = {\n\tattrs: [\n\t\t\"currencyCode\",\n\t\t\"creditLimit\",\n\t\t\"c_PaymentType\",\n\t\t\"c_SpecPaymentTypeCode\",\n\t\t\"s_PaymentType\",\n\t\t\"s_SpecPaymentTypeCode\",\n\t\t\"enableElectronicInvoicing\",\n\t\t\"electronicInvoicingType\",\n\t],\n} as const satisfies WireShape;\n\nexport const idDocumentDetailWire = {\n\tattrs: [\n\t\t\"idType\",\n\t\t\"idCode\",\n\t\t\"idIssueLocation\",\n\t\t\"idIssueCounty\",\n\t\t\"idIssueDate\",\n\t\t\"idExpireDate\",\n\t],\n} as const satisfies WireShape;\n\nexport const accountPoliciesWire = {\n\tattrs: [\n\t\t\"acceptProfilingPolicies\",\n\t\t\"acceptPrivacyPolicies\",\n\t\t\"acceptNewsletterPolicies\",\n\t],\n} as const satisfies WireShape;\n\nexport const dynamicFieldsWire = {\n\tattrs: [\"key\", \"value\"],\n} as const satisfies WireShape;\n\nexport const supplierRefMasterRecordsWire = {\n\tattrs: [\"supplierRefCode\", \"companyMainBusinessType\", \"carrierType\"],\n} as const satisfies WireShape;\n\nexport const masterRecordWire = {\n\tattrs: [\"recordCode\", \"insertCriteria\"],\n\tchildren: {\n\t\tfinancialDetail: financialDetailWire,\n\t\tidDocumentDetail: idDocumentDetailWire,\n\t\taccountPolicies: accountPoliciesWire,\n\t\tdynamicFields: dynamicFieldsWire,\n\t\tsupplierRefMasterRecords: supplierRefMasterRecordsWire,\n\t},\n} as const satisfies WireShape;\n\n/** Search master — recordCode stays element; date range uses attrs. */\nexport const searchMasterWire = {\n\tchildren: {\n\t\tlastModificationDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t},\n} as const satisfies WireShape;\n\nexport const statisticCodesWire = {\n\tattrs: [\"sCode1\", \"sCode2\", \"sCode3\", \"sCode4\", \"sCode5\", \"sCode6\"],\n\tpreserveCamel: [\"sCode1\", \"sCode2\", \"sCode3\", \"sCode4\", \"sCode5\", \"sCode6\"],\n} as const satisfies WireShape;\n\nexport const destinationWire = {\n\tattrs: [\"code\", \"iataCode\", \"nationCode\", \"type\"],\n} as const satisfies WireShape;\n\nexport const noteDetailWire = {\n\tattrs: [\"nType\", \"title\"],\n} as const satisfies WireShape;\n\nexport const passengerDetailWire = {\n\tattrs: [\"rph\", \"roomRph\", \"billingHolder\"],\n\tchildren: {\n\t\tnotes: { children: { noteDetail: noteDetailWire } },\n\t\tidDocInfo: idDocumentDetailWire,\n\t},\n} as const satisfies WireShape;\n\nexport const serviceFareWire = {\n\tattrs: [\n\t\t\"currencyCode\",\n\t\t\"exchangeRate\",\n\t\t\"cost\",\n\t\t\"costTax\",\n\t\t\"costType\",\n\t\t\"vatCostCurrencyCode\",\n\t\t\"price\",\n\t\t\"priceTax\",\n\t\t\"priceType\",\n\t],\n} as const satisfies WireShape;\n\nexport const selectedPackageDetailWire = {\n\tattrs: [\"pCode\", \"startDate\", \"endDate\", \"getServicesFromPackage\"],\n\tpreserveCamel: [\"pCode\"],\n} as const satisfies WireShape;\n\nexport const selectedServiceDetailWire = {\n\tattrs: [\n\t\t\"sCode\",\n\t\t\"ssCode\",\n\t\t\"supplierMasterCode\",\n\t\t\"supplierName\",\n\t\t\"supplierMasterSearchField\",\n\t\t\"supplierFiscalCode\",\n\t],\n\tpreserveCamel: [\"sCode\", \"ssCode\"],\n\tchildren: {\n\t\tserviceFare: serviceFareWire,\n\t\tavesServiceInfo: {\n\t\t\tchildren: { serviceFare: serviceFareWire },\n\t\t},\n\t\tnoteList: { children: { noteDetail: noteDetailWire } },\n\t},\n} as const satisfies WireShape;\n\nconst selectedServiceListWire = {\n\tchildren: { selectedServiceDetail: selectedServiceDetailWire },\n} as const satisfies WireShape;\n\nexport const passengerListWire = {\n\tchildren: { passengerDetail: passengerDetailWire },\n} as const satisfies WireShape;\n\nconst selectedPackageListWire = {\n\tchildren: { selectedPackageDetail: selectedPackageDetailWire },\n} as const satisfies WireShape;\n\nconst deadlineListWire = {\n\tchildren: {\n\t\tdeadlineDetail: {\n\t\t\tattrs: [\"deadlineCode\", \"description\", \"expireDate\", \"reschedulingCode\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst financialDeadlineListWire = {\n\tchildren: {\n\t\tdeadlineDetail: {\n\t\t\tattrs: [\"reschedulingCode\", \"expireDate\", \"totalAmount\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst paymentListWire = {\n\tchildren: {\n\t\tpaymentDetail: {\n\t\t\tattrs: [\n\t\t\t\t\"paymentDate\",\n\t\t\t\t\"paumentNote\",\n\t\t\t\t\"amount\",\n\t\t\t\t\"paymentUser\",\n\t\t\t\t\"paymentType\",\n\t\t\t],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst filePaymentListWire = {\n\tchildren: {\n\t\tfilePaymentDetail: {\n\t\t\tattrs: [\n\t\t\t\t\"paymentDate\",\n\t\t\t\t\"paymentNote\",\n\t\t\t\t\"payerMasterCode\",\n\t\t\t\t\"payerName\",\n\t\t\t\t\"amount\",\n\t\t\t\t\"paymentType\",\n\t\t\t],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst cancellableBookedServiceListWire = {\n\tchildren: {\n\t\tcancellableBookedServiceDetail: {\n\t\t\tattrs: [\"cancelOperationType\", \"serviceRefType\", \"serviceRefValue\"],\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst noteListWire = {\n\tchildren: { noteDetail: noteDetailWire },\n} as const satisfies WireShape;\n\nconst bookingFileDocumentWire = {\n\tattrs: [\"printDoc\", \"sendDocViaEmail\"],\n\tchildren: {\n\t\tinfoDocumentsToPrint: {\n\t\t\tchildren: {\n\t\t\t\tinfoDocumentToPrint: {\n\t\t\t\t\tchildren: {\n\t\t\t\t\t\tdocumentCustomizablePrintParameters: {\n\t\t\t\t\t\t\tattrs: [\"makeDocumentTo\", \"fillInCode\"],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} as const satisfies WireShape;\n\nconst bookingFileStatusWire = {\n\tattrs: [\"value\", \"expiredDate\"],\n} as const satisfies WireShape;\n\nconst customerDetailWire = {\n\tattrs: [\"recordCode\"],\n} as const satisfies WireShape;\n\nconst bookingFinancialInfoWire = {\n\tattrs: [\"customer_PaymentType\", \"customer_SpecPaymentTypeCode\"],\n} as const satisfies WireShape;\n\nconst packageParamsWire = {\n\tattrs: [\n\t\t\"getAllDeptDate\",\n\t\t\"getFlightPlan\",\n\t\t\"getAllAccomodation\",\n\t\t\"getRealAvailability\",\n\t],\n} as const satisfies WireShape;\n\nconst topServiceParamsWire = {\n\tattrs: [\"compatibleAccomodation\", \"alternativeAccomodation\"],\n} as const satisfies WireShape;\n\nconst featureListWire = {\n\tchildren: { featureDetail: { attrs: [\"code\", \"name\"] } },\n} as const satisfies WireShape;\n\nconst fileStatusWire = {\n\tattrs: [\"value\", \"expiredDate\", \"optionedFileExpireDatePolicy\"],\n} as const satisfies WireShape;\n\nconst penaltyWire = {\n\tattrs: [\"apply\", \"specificCode\"],\n} as const satisfies WireShape;\n\n/**\n * CreateBookingFile / ModFileServices / ModFileHeader after list-wrap.\n * Root startDate/endDate stay elements (not in attrs).\n */\nexport const bookingFileWire = {\n\tchildren: {\n\t\tcustomerDetail: customerDetailWire,\n\t\tbookingFileStatus: bookingFileStatusWire,\n\t\tstatisticCodes: statisticCodesWire,\n\t\tdestination: destinationWire,\n\t\tbookingFileDocument: bookingFileDocumentWire,\n\t\tbookingFinancialInfo: bookingFinancialInfoWire,\n\t\tselectedPackageDetail: selectedPackageDetailWire,\n\t\tselectedPackageList: selectedPackageListWire,\n\t\tselectedServiceList: selectedServiceListWire,\n\t\textraQuoteServiceList: selectedServiceListWire,\n\t\tpassengerList: passengerListWire,\n\t\tdeadlineList: deadlineListWire,\n\t\tfinancialDeadlineList: financialDeadlineListWire,\n\t\tpaymentList: paymentListWire,\n\t\tcancellableBookedServiceList: cancellableBookedServiceListWire,\n\t\tnoteList: noteListWire,\n\t},\n} as const satisfies WireShape;\n\n/**\n * InsertFilePaymentList — root paymentUser is an @attr; detail fields nested.\n */\nexport const filePaymentListRequestWire = {\n\tattrs: [\"paymentUser\"],\n\tchildren: {\n\t\tfilePaymentList: filePaymentListWire,\n\t},\n} as const satisfies WireShape;\n\n/** SearchFileRQ — date ranges / insurance / status use attrs. */\nexport const searchFileWire = {\n\tchildren: {\n\t\tfileStatus: { attrs: [\"value\", \"expireDate\"] },\n\t\tstartDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tcreatedDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tlastModificationDate: { attrs: [\"minDate\", \"maxDate\"] },\n\t\tinsurance: { attrs: [\"code\", \"number\"] },\n\t},\n} as const satisfies WireShape;\n\n/** GetPackageDetail SelectedServiceDetail (ServiceCode + PackageRow). */\nexport const packagePrgServiceDetailWire = {\n\tattrs: [\"serviceCode\", \"packageRow\"],\n} as const satisfies WireShape;\n\nexport const packageDetailRequestWire = {\n\tchildren: {\n\t\tstatisticCodes: statisticCodesWire,\n\t\tselectedServiceList: {\n\t\t\tchildren: { selectedServiceDetail: packagePrgServiceDetailWire },\n\t\t},\n\t\tpassengerList: passengerListWire,\n\t},\n} as const satisfies WireShape;\n\n/** BaseSearch fragment inside AvesSearchRQ (dates are elements). */\nexport const baseSearchWire = {\n\tchildren: {\n\t\tpassengerList: passengerListWire,\n\t},\n} as const satisfies WireShape;\n\n/** AvesSearchRQ body outside BaseSearch (after featureList wrap). */\nexport const avesSearchWire = {\n\tchildren: {\n\t\tdestination: destinationWire,\n\t\tstatisticCodes: statisticCodesWire,\n\t\tpackageParams: packageParamsWire,\n\t\ttopServiceParams: topServiceParamsWire,\n\t\tfeatureList: featureListWire,\n\t},\n} as const satisfies WireShape;\n\nexport const setFileStatusWire = {\n\tchildren: {\n\t\tfileStatus: fileStatusWire,\n\t\tpenalty: penaltyWire,\n\t\tbookingFileDocument: bookingFileDocumentWire,\n\t},\n} as const satisfies WireShape;\n\n/** Element-only request roots (CancelFile, SetFileServiceStatus, CommitPackage). */\nexport const elementOnlyWire = {} as const satisfies WireShape;\n","import * as v from \"valibot\";\n\n/** Build a Valibot picklist from a string object enum. */\nexport function enumSchema<const T extends Record<string, string>>(\n\tenumObject: T,\n) {\n\tconst values = Object.values(enumObject);\n\treturn v.picklist(values);\n}\n\nexport type EnumValue<T extends Record<string, string>> = T[keyof T];\n","import { type EnumValue, enumSchema } from \"../utils/enum.js\";\n\n// ---------------------------------------------------------------------------\n// Shared / cross-domain\n// ---------------------------------------------------------------------------\n\nexport const Gender = {\n\tM: \"M\",\n\tF: \"F\",\n} as const;\nexport type Gender = EnumValue<typeof Gender>;\nexport const GenderSchema = enumSchema(Gender);\n\nexport const RsStatusValue = {\n\tOK: \"OK\",\n\tERROR: \"ERROR\",\n\tWARNING: \"WARNING\",\n\tTIMEOUT: \"TIMEOUT\",\n} as const;\nexport type RsStatusValue = EnumValue<typeof RsStatusValue>;\nexport const RsStatusValueSchema = enumSchema(RsStatusValue);\n\n// ---------------------------------------------------------------------------\n// Master records\n// ---------------------------------------------------------------------------\n\nexport const SearchMasterType = {\n\tCODE: \"CODE\",\n\tNAME: \"NAME\",\n\tVATCODE: \"VATCODE\",\n\tZONE: \"ZONE\",\n\tCATEGORY: \"CATEGORY\",\n\tEMAIL: \"EMAIL\",\n\tLASTMODDATE: \"LASTMODDATE\",\n\tSEARCH_FIELD: \"SEARCH_FIELD\",\n\tEXTERNAL_REF_CODE: \"EXTERNAL_REF_CODE\",\n} as const;\nexport type SearchMasterType = EnumValue<typeof SearchMasterType>;\nexport const SearchMasterTypeSchema = enumSchema(SearchMasterType);\n\nexport const RecordType = {\n\tCUSTOMER: \"CUSTOMER\",\n\tSUPPLIER: \"SUPPLIER\",\n\tGENERAL: \"GENERAL\",\n} as const;\nexport type RecordType = EnumValue<typeof RecordType>;\nexport const RecordTypeSchema = enumSchema(RecordType);\n\nexport const RecordStatus = {\n\tENABLED: \"ENABLED\",\n\tDISABLED: \"DISABLED\",\n\tWARNING: \"WARNING\",\n\tBLACKLISTED: \"BLACKLISTED\",\n} as const;\nexport type RecordStatus = EnumValue<typeof RecordStatus>;\nexport const RecordStatusSchema = enumSchema(RecordStatus);\n\n/** Upsert insertCriteria: S always insert · N skip if exists · T update all · M secondary only */\nexport const InsertCriteria = {\n\tS: \"S\",\n\tN: \"N\",\n\tT: \"T\",\n\tM: \"M\",\n} as const;\nexport type InsertCriteria = EnumValue<typeof InsertCriteria>;\nexport const InsertCriteriaSchema = enumSchema(InsertCriteria);\n\nexport const MasterPaymentType = {\n\tCASH: \"CASH\",\n\tBANK: \"BANK\",\n\tRID: \"RID\",\n\tRIBA: \"RIBA\",\n\tSPECIFIC_CODE: \"SPECIFIC_CODE\",\n} as const;\nexport type MasterPaymentType = EnumValue<typeof MasterPaymentType>;\nexport const MasterPaymentTypeSchema = enumSchema(MasterPaymentType);\n\nexport const CarrierType = {\n\tNOT_SET: \"NOT_SET\",\n\tFLIGHT: \"FLIGHT\",\n\tSHIP: \"SHIP\",\n\tTRAIN: \"TRAIN\",\n\tRENTCAR: \"RENTCAR\",\n\tBUS: \"BUS\",\n\tDP_HOTEL: \"DP_HOTEL\",\n\tTO_HOTEL: \"TO_HOTEL\",\n\tTO_TOUR: \"TO_TOUR\",\n\tTO_HOTEL_AND_TOUR: \"TO_HOTEL_AND_TOUR\",\n\tDP_AUTO: \"DP_AUTO\",\n\tDP_GDS_NAVI: \"DP_GDS_NAVI\",\n\tDP_GDS_VOLI: \"DP_GDS_VOLI\",\n\tTOUR_OPERATOR: \"TOUR_OPERATOR\",\n\tTICKETING_EV: \"TICKETING_EV\",\n\tOTHER: \"OTHER\",\n} as const;\nexport type CarrierType = EnumValue<typeof CarrierType>;\nexport const CarrierTypeSchema = enumSchema(CarrierType);\n\n// ---------------------------------------------------------------------------\n// Booking file / services\n// ---------------------------------------------------------------------------\n\nexport const BookingFileStatus = {\n\tQUOTATION: \"QUOTATION\",\n\tWORK_IN_PROGRESS: \"WORK_IN_PROGRESS\",\n\tCONFIRMED: \"CONFIRMED\",\n\tOPTIONED: \"OPTIONED\",\n\tCANCELED: \"CANCELED\",\n} as const;\nexport type BookingFileStatus = EnumValue<typeof BookingFileStatus>;\nexport const BookingFileStatusSchema = enumSchema(BookingFileStatus);\n\nexport const SetFileStatusValue = {\n\t...BookingFileStatus,\n\tNULLIFIED: \"NULLIFIED\",\n} as const;\nexport type SetFileStatusValue = EnumValue<typeof SetFileStatusValue>;\nexport const SetFileStatusValueSchema = enumSchema(SetFileStatusValue);\n\n/** BOOKEDFILE response aliases (includes non-canonical wire forms). */\nexport const BookingFileStatusWire = {\n\tQUOTATION: \"QUOTATION\",\n\tWORK_IN_PROGRESS: \"WORK_IN_PROGRESS\",\n\tCONFIRM: \"CONFIRM\",\n\tCONFIRMED: \"CONFIRMED\",\n\tOPTION: \"OPTION\",\n\tOPTIONED: \"OPTIONED\",\n\tREQUEST: \"REQUEST\",\n\tREQUESTED: \"REQUESTED\",\n\tNULLIFIED: \"NULLIFIED\",\n\tCANCELED: \"CANCELED\",\n} as const;\nexport type BookingFileStatusWire = EnumValue<typeof BookingFileStatusWire>;\nexport const BookingFileStatusWireSchema = enumSchema(BookingFileStatusWire);\n\nexport const AvesServiceType = {\n\tTOP: \"TOP\",\n\tTOP_SS: \"TOP_SS\",\n\tADV: \"ADV\",\n\tGRP: \"GRP\",\n\tOTHER: \"OTHER\",\n} as const;\nexport type AvesServiceType = EnumValue<typeof AvesServiceType>;\nexport const AvesServiceTypeSchema = enumSchema(AvesServiceType);\n\nexport const ToServiceType = {\n\tACCOMODATION: \"ACCOMODATION\",\n\tTRANSPORT: \"TRANSPORT\",\n\tCHARTER: \"CHARTER\",\n\tTRANSFER: \"TRANSFER\",\n\tPULLMAN: \"PULLMAN\",\n\tFERRY: \"FERRY\",\n\tCRUISE: \"CRUISE\",\n\tINSURANCE: \"INSURANCE\",\n\tEXTRAFEE: \"EXTRAFEE\",\n\tPENALTY: \"PENALTY\",\n\tPROMO: \"PROMO\",\n\tOTHER: \"OTHER\",\n\tNOT_SET: \"NOT_SET\",\n\tRESIDENCE: \"RESIDENCE\",\n} as const;\nexport type ToServiceType = EnumValue<typeof ToServiceType>;\nexport const ToServiceTypeSchema = enumSchema(ToServiceType);\n\nexport const BookedServiceStatus = {\n\tREQUEST: \"REQUEST\",\n\tALLOTMENT_REQUEST: \"ALLOTMENT_REQUEST\",\n\tCONFIRMED_REQUEST: \"CONFIRMED_REQUEST\",\n\tCONFIRMED_EXTRA_ALLOTMENT: \"CONFIRMED_EXTRA_ALLOTMENT\",\n\tWAITLISTED: \"WAITLISTED\",\n\tALLOTMENT: \"ALLOTMENT\",\n\tREFUSED: \"REFUSED\",\n\tNULLIFIED: \"NULLIFIED\",\n\tCANCELED: \"CANCELED\",\n\tMESSAGE: \"MESSAGE\",\n} as const;\nexport type BookedServiceStatus = EnumValue<typeof BookedServiceStatus>;\nexport const BookedServiceStatusSchema = enumSchema(BookedServiceStatus);\n\n/** File payment list / booking paymentList type codes. */\nexport const PaymentType = {\n\tC: \"C\",\n\tB: \"B\",\n\tD: \"D\",\n\tT: \"T\",\n\tP: \"P\",\n\tR: \"R\",\n\tA: \"A\",\n\tH: \"H\",\n\tI: \"I\",\n\tJ: \"J\",\n\tK: \"K\",\n\tL: \"L\",\n\tM: \"M\",\n\tN: \"N\",\n\tO: \"O\",\n\tQ: \"Q\",\n\tS: \"S\",\n\tU: \"U\",\n\tV: \"V\",\n} as const;\nexport type PaymentType = EnumValue<typeof PaymentType>;\nexport const PaymentTypeSchema = enumSchema(PaymentType);\n\nexport const CustomerPaymentType = {\n\tCASH: \"CASH\",\n\tBANK: \"BANK\",\n\tRID: \"RID\",\n\tRIBA: \"RIBA\",\n\tSPECIFIC_CODE: \"SPECIFIC_CODE\",\n\tNOT_SET: \"NOT_SET\",\n} as const;\nexport type CustomerPaymentType = EnumValue<typeof CustomerPaymentType>;\nexport const CustomerPaymentTypeSchema = enumSchema(CustomerPaymentType);\n\nexport const PassengerCategory = {\n\tAD: \"AD\",\n\tCH: \"CH\",\n\tIN: \"IN\",\n\tOV: \"OV\",\n} as const;\nexport type PassengerCategory = EnumValue<typeof PassengerCategory>;\nexport const PassengerCategorySchema = enumSchema(PassengerCategory);\n\nexport const CancelOperationType = {\n\tNULLIFY: \"NULLIFY\",\n\tDELETE: \"DELETE\",\n} as const;\nexport type CancelOperationType = EnumValue<typeof CancelOperationType>;\nexport const CancelOperationTypeSchema = enumSchema(CancelOperationType);\n\nexport const ServiceRefType = {\n\tRPH: \"RPH\",\n\tFILE: \"FILE\",\n} as const;\nexport type ServiceRefType = EnumValue<typeof ServiceRefType>;\nexport const ServiceRefTypeSchema = enumSchema(ServiceRefType);\n\nexport const OptionedExpirePolicy = {\n\tNOT_SET: \"NOT_SET\",\n\tCONSIDER_HOLIDAY: \"CONSIDER_HOLIDAY\",\n\tCONSIDER_HOLIDAY_AND_SATURDAY: \"CONSIDER_HOLIDAY_AND_SATURDAY\",\n} as const;\nexport type OptionedExpirePolicy = EnumValue<typeof OptionedExpirePolicy>;\nexport const OptionedExpirePolicySchema = enumSchema(OptionedExpirePolicy);\n\nexport const FilePaymentOperationType = {\n\tAbsoluteAmountsInsertion: \"AbsoluteAmountsInsertion\",\n\tFinalAmountToAchieve: \"FinalAmountToAchieve\",\n\tFinalAmountToAchieveWithoutControls: \"FinalAmountToAchieveWithoutControls\",\n} as const;\nexport type FilePaymentOperationType = EnumValue<\n\ttypeof FilePaymentOperationType\n>;\nexport const FilePaymentOperationTypeSchema = enumSchema(\n\tFilePaymentOperationType,\n);\n\nexport const DocumentType = {\n\tVISA_REQUEST: \"VISA_REQUEST\",\n\tTRAVEL_INFORMATION: \"TRAVEL_INFORMATION\",\n\tVOUCHER: \"VOUCHER\",\n\tBOOKING_CONTRACT: \"BOOKING_CONTRACT\",\n\tBOOKING_CONFIRMATION: \"BOOKING_CONFIRMATION\",\n\tSUPPLIER_SERVICE_LIST: \"SUPPLIER_SERVICE_LIST\",\n\tINVOICE: \"INVOICE\",\n\tPROFORMA_INVOICE: \"PROFORMA_INVOICE\",\n\tADEGUAMENTO: \"ADEGUAMENTO\",\n\tRESERVATION_FORM: \"RESERVATION_FORM\",\n\tOPEN_XML: \"OPEN_XML\",\n\tSALES_INVOICE: \"SALES_INVOICE\",\n\tTICKETING_TMASTER: \"TICKETING_TMASTER\",\n\tSUMMARY_FORM: \"SUMMARY_FORM\",\n} as const;\nexport type DocumentType = EnumValue<typeof DocumentType>;\nexport const DocumentTypeSchema = enumSchema(DocumentType);\n\nexport const MakeDocumentTo = {\n\tBOOKING_CUSTOMER: \"BOOKING_CUSTOMER\",\n\tFIRST_PASSENGER: \"FIRST_PASSENGER\",\n} as const;\nexport type MakeDocumentTo = EnumValue<typeof MakeDocumentTo>;\nexport const MakeDocumentToSchema = enumSchema(MakeDocumentTo);\n\nexport const CostPriceType = {\n\tPAX_QTY_DAY: \"PAX_QTY_DAY\",\n\tPAX_QTY_NIGHT: \"PAX_QTY_NIGHT\",\n\tPAX_QTY_WEEK: \"PAX_QTY_WEEK\",\n\tPAX_QTY: \"PAX_QTY\",\n\tPAX_DAY: \"PAX_DAY\",\n\tPAX_NIGHT: \"PAX_NIGHT\",\n\tPAX_WEEK: \"PAX_WEEK\",\n\tPAX: \"PAX\",\n\tQTY_DAY: \"QTY_DAY\",\n\tQTY_NIGHT: \"QTY_NIGHT\",\n\tQTY_WEE: \"QTY_WEE\",\n\tQTY: \"QTY\",\n\tDAY: \"DAY\",\n\tNIGHT: \"NIGHT\",\n\tWEEK: \"WEEK\",\n\tFORFAIT: \"FORFAIT\",\n} as const;\nexport type CostPriceType = EnumValue<typeof CostPriceType>;\nexport const CostPriceTypeSchema = enumSchema(CostPriceType);\n\nexport const GroupingPaxPolicy = {\n\tGROUPED_PAX: \"GROUPED_PAX\",\n\tNOT_GROUPED_PAX: \"NOT_GROUPED_PAX\",\n\tONE_PAX_ONLY: \"ONE_PAX_ONLY\",\n} as const;\nexport type GroupingPaxPolicy = EnumValue<typeof GroupingPaxPolicy>;\nexport const GroupingPaxPolicySchema = enumSchema(GroupingPaxPolicy);\n\nexport const TypeDownloadFile = {\n\tAVES2AVES: \"AVES2AVES\",\n\tAVES2AVESVIA: \"AVES2AVESVIA\",\n\tAVES2AVESITA: \"AVES2AVESITA\",\n} as const;\nexport type TypeDownloadFile = EnumValue<typeof TypeDownloadFile>;\nexport const TypeDownloadFileSchema = enumSchema(TypeDownloadFile);\n\nexport const SearchBookingFileType = {\n\tFILE_CODE: \"FILE_CODE\",\n\tPAX_NAME: \"PAX_NAME\",\n\tPACKAGE_CODE: \"PACKAGE_CODE\",\n\tOTHER: \"OTHER\",\n} as const;\nexport type SearchBookingFileType = EnumValue<typeof SearchBookingFileType>;\nexport const SearchBookingFileTypeSchema = enumSchema(SearchBookingFileType);\n\n// ---------------------------------------------------------------------------\n// Package / Program catalog\n// ---------------------------------------------------------------------------\n\nexport const AvesSearchType = {\n\tSERVICE: \"SERVICE\",\n\tPROGRAM: \"PROGRAM\",\n\tPACKAGE: \"PACKAGE\",\n} as const;\nexport type AvesSearchType = EnumValue<typeof AvesSearchType>;\nexport const AvesSearchTypeSchema = enumSchema(AvesSearchType);\n\nexport const PaxQtyCriteria = {\n\tGREATER_THAN: \"GREATER_THAN\",\n\tGREATER_OR_EQUAL: \"GREATER_OR_EQUAL\",\n\tEQUAL_TO: \"EQUAL_TO\",\n\tLESS_OR_EQUAL: \"LESS_OR_EQUAL\",\n\tLESS_THAN: \"LESS_THAN\",\n} as const;\nexport type PaxQtyCriteria = EnumValue<typeof PaxQtyCriteria>;\nexport const PaxQtyCriteriaSchema = enumSchema(PaxQtyCriteria);\n\nexport const DestinationType = {\n\tCODE: \"CODE\",\n\tSUB_LOCALITY: \"SUB_LOCALITY\",\n\tLOCALITY: \"LOCALITY\",\n\tSUB_SUB_ISLAND: \"SUB_SUB_ISLAND\",\n\tSUB_ISLAND: \"SUB_ISLAND\",\n\tISLAND_COUNTY: \"ISLAND_COUNTY\",\n\tSUB_ARCHIPELAGO: \"SUB_ARCHIPELAGO\",\n\tARCHIPELAGO: \"ARCHIPELAGO\",\n\tREGION_STATE: \"REGION_STATE\",\n\tSUB_SUB_NATION: \"SUB_SUB_NATION\",\n\tSUB_NATION: \"SUB_NATION\",\n\tNATION: \"NATION\",\n\tSUB_SUB_CONTINENT: \"SUB_SUB_CONTINENT\",\n\tSUB_CONTINENT: \"SUB_CONTINENT\",\n\tCONTINENT: \"CONTINENT\",\n} as const;\nexport type DestinationType = EnumValue<typeof DestinationType>;\nexport const DestinationTypeSchema = enumSchema(DestinationType);\n","import * as v from \"valibot\";\nimport {\n\tBookingFileStatusSchema,\n\tBookingFileStatusWire,\n\ttype BookingFileStatusWireSchema,\n} from \"./enums.js\";\n\nexport {\n\tAvesServiceType,\n\tAvesServiceTypeSchema,\n\tBookedServiceStatus,\n\tBookedServiceStatusSchema,\n\tBookingFileStatus,\n\tBookingFileStatusSchema,\n\tBookingFileStatusWire,\n\tBookingFileStatusWireSchema,\n\tCancelOperationType,\n\tCancelOperationTypeSchema,\n\tCostPriceType,\n\tCostPriceTypeSchema,\n\tCustomerPaymentType,\n\tCustomerPaymentTypeSchema,\n\tDocumentType,\n\tDocumentTypeSchema,\n\tFilePaymentOperationType,\n\tFilePaymentOperationTypeSchema,\n\tGender,\n\tGenderSchema,\n\tGroupingPaxPolicy,\n\tGroupingPaxPolicySchema,\n\tMakeDocumentTo,\n\tMakeDocumentToSchema,\n\tOptionedExpirePolicy,\n\tOptionedExpirePolicySchema,\n\tPassengerCategory,\n\tPassengerCategorySchema,\n\tPaymentType,\n\tPaymentTypeSchema,\n\tServiceRefType,\n\tServiceRefTypeSchema,\n\tSetFileStatusValue,\n\tSetFileStatusValueSchema,\n\tToServiceType,\n\tToServiceTypeSchema,\n\tTypeDownloadFile,\n\tTypeDownloadFileSchema,\n} from \"./enums.js\";\n\n/** @deprecated Use {@link BookingFileStatusSchema} */\nexport const BookingFileStatusRequestSchema = BookingFileStatusSchema;\n\n/** AVES bool-ish wire values */\nexport const BoolishSchema = v.union([\n\tv.literal(\"true\"),\n\tv.literal(\"false\"),\n\tv.boolean(),\n]);\n\nconst statusAliasToCanonical = {\n\t[BookingFileStatusWire.CONFIRM]: \"CONFIRMED\",\n\t[BookingFileStatusWire.OPTION]: \"OPTIONED\",\n\t[BookingFileStatusWire.REQUESTED]: \"REQUEST\",\n} as const;\n\nexport type CanonicalBookingFileStatus =\n\t| Exclude<\n\t\t\tv.InferOutput<typeof BookingFileStatusWireSchema>,\n\t\t\tkeyof typeof statusAliasToCanonical\n\t >\n\t| (typeof statusAliasToCanonical)[keyof typeof statusAliasToCanonical];\n\n/** Normalize BOOKEDFILE status wire aliases to canonical SDK values. */\nexport function canonicalizeBookingFileStatus(\n\tvalue: v.InferOutput<typeof BookingFileStatusWireSchema>,\n): CanonicalBookingFileStatus {\n\tif (value in statusAliasToCanonical)\n\t\treturn statusAliasToCanonical[value as keyof typeof statusAliasToCanonical];\n\treturn value as CanonicalBookingFileStatus;\n}\n","import * as v from 'valibot';\nimport { createResponseSchema } from '../utils/schema-transform.js';\nimport { RsStatusValueSchema } from './enums.js';\n\n/** AVES language code (`01` Italian, `02` English, …) */\nexport const LanguageCodeSchema = v.pipe(\n v.string(),\n v.minLength(2),\n v.maxLength(2),\n);\n\nexport const OptionalLanguageCodeSchema = v.optional(LanguageCodeSchema);\n\n/** XML often sends numbers as strings (or vice versa). */\nexport const StringishSchema = v.union([v.string(), v.number()]);\n\n/** Catalog/boolish wire fields that may arrive as string | number | boolean. */\nexport const StringishBoolSchema = v.union([\n v.string(),\n v.number(),\n v.boolean(),\n]);\n\nexport const DateRangeSchema = v.object({\n minDate: v.string(),\n maxDate: v.string(),\n});\n\n/**\n * Request header schema with authentication credentials\n */\nexport const RqHeaderSchema = v.object({\n '@HostID': v.pipe(v.string(), v.minLength(6), v.maxLength(6)),\n '@Xtoken': v.string(),\n '@Interface': v.literal('WEB'),\n '@UserName': v.literal('WEB'),\n '@LanguageCode': OptionalLanguageCodeSchema,\n});\n\nconst warningsSchema = v.optional(\n v.pipe(\n v.string(),\n v.transform((input) => input.split(',')),\n ),\n);\n\n/**\n * Response status schema indicating success, error, or warning\n */\nexport const RsStatusSchema = v.pipe(\n v.object({\n '@Status': RsStatusValueSchema,\n ErrorCode: v.optional(\n v.pipe(\n StringishSchema,\n v.transform((val) => Number(val)),\n ),\n ),\n ErrorDescription: v.optional(v.string()),\n Warnings: warningsSchema,\n }),\n v.transform((input) => {\n return {\n status: input['@Status'],\n errorCode: input.ErrorCode,\n errorDescription: input.ErrorDescription,\n warnings: input.Warnings,\n };\n }),\n);\n\n/** Cancel / ModHeader / CommitPackage / InsertFilePaymentList */\nexport const StatusOnlyResponseSchema = createResponseSchema(\n v.object({ RsStatus: RsStatusSchema }),\n);\n\n/**\n * Search-style RS: `{ rsStatus, [listKey]: Detail[] }` with full InferOutput.\n * Pass PascalCase wire list key (e.g. `\"PackageList\"` → camel `packageList`).\n */\nexport function createListResponseSchema<\n const K extends string,\n TList extends v.GenericSchema,\n>(listKey: K, listSchema: TList) {\n const listEntries = { [listKey]: v.optional(listSchema) } as {\n [P in K]: v.OptionalSchema<TList, undefined>;\n };\n return createResponseSchema(\n v.object({\n RsStatus: RsStatusSchema,\n ...listEntries,\n }),\n );\n}\n","import * as v from \"valibot\";\nimport {\n\tcoalesceWireAliases,\n\tlistDetailApiSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookedServiceStatusSchema,\n\tBookingFileStatusWireSchema,\n\tcanonicalizeBookingFileStatus,\n\tToServiceTypeSchema,\n} from \"./booking-shared.js\";\nimport { StringishSchema } from \"./common.js\";\n\n/** BookingFileStatus in BOOKEDFILE responses — aliases normalized to canonical values */\nexport const BookingFileStatusApiSchema = v.pipe(\n\tv.object({\n\t\t\"@Value\": BookingFileStatusWireSchema,\n\t\t\"@ExpiredDate\": v.optional(v.string()),\n\t\t\"@ExpireDate\": v.optional(v.string()),\n\t}),\n\tv.transform((status) => ({\n\t\t...coalesceWireAliases(status, {\n\t\t\t\"@ExpiredDate\": [\"@ExpiredDate\", \"@ExpireDate\"],\n\t\t}),\n\t\t\"@Value\": canonicalizeBookingFileStatus(status[\"@Value\"]),\n\t})),\n);\n\nexport const PricePerPaxDetailApiSchema = v.object({\n\t\"@PaxRef\": v.string(),\n\t\"@Price\": StringishSchema,\n});\n\nexport const PaxPriceListApiSchema = listDetailApiSchema(\n\t\"PricePerPaxDetail\",\n\tPricePerPaxDetailApiSchema,\n);\n\nexport const ServiceTotalAmountDetailApiSchema = v.object({\n\t\"@CommissionCode\": v.optional(v.string()),\n\t\"@CommissionPercentage\": v.optional(StringishSchema),\n\t\"@CommissionAmount\": v.optional(StringishSchema),\n\t\"@PriceListCode\": v.optional(v.string()),\n\t\"@CostListCode\": v.optional(v.string()),\n\t\"@ServiceTotalPrice\": v.optional(StringishSchema),\n\tPaxPriceList: v.optional(PaxPriceListApiSchema),\n});\n\nexport const SupplierInfoApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\t\"@Email\": v.optional(v.string()),\n\t\"@LanguageCode\": v.optional(v.string()),\n});\n\nexport const WebStatisticApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Description\": v.optional(v.string()),\n});\n\n/** Wire schema — accepts AVES dialect aliases, then normalizes */\nconst BookedServiceDetailWireSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@ServiceCode\": v.optional(v.string()),\n\t\"@FromExternalProvider\": v.optional(StringishSchema),\n\t\"@isFromExternalProvider\": v.optional(StringishSchema),\n\tAvesServiceType: v.optional(AvesServiceTypeSchema),\n\tTOServiceType: v.optional(ToServiceTypeSchema),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tThirdDescription: v.optional(v.string()),\n\tFourthDescription: v.optional(v.string()),\n\tServiceStatus: v.optional(BookedServiceStatusSchema),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tQty: v.optional(StringishSchema),\n\tPax: v.optional(StringishSchema),\n\tPeriodType: v.optional(v.string()),\n\tPaxMultiplier: v.optional(v.string()),\n\tExternalProviderCode: v.optional(v.string()),\n\tWebStatisticCode: v.optional(v.string()),\n\tWebStatisticDescription: v.optional(v.string()),\n\tWebStatistic: v.optional(WebStatisticApiSchema),\n\tSupplierInfo: v.optional(SupplierInfoApiSchema),\n\tServiceTotalAmountDetail: v.optional(ServiceTotalAmountDetailApiSchema),\n});\n\n/** BookedServiceDetail — single fromExternalProvider after normalize */\nexport const BookedServiceDetailApiSchema = v.pipe(\n\tBookedServiceDetailWireSchema,\n\tv.transform((service) =>\n\t\tcoalesceWireAliases(service, {\n\t\t\t\"@FromExternalProvider\": [\n\t\t\t\t\"@FromExternalProvider\",\n\t\t\t\t\"@isFromExternalProvider\",\n\t\t\t],\n\t\t}),\n\t),\n);\n\nexport const BookedServiceListApiSchema = listDetailApiSchema(\n\t\"BookedServiceDetail\",\n\tBookedServiceDetailApiSchema,\n);\n\n/** TotalAmountDetail — attributes on BOOKEDFILE */\nexport const TotalAmountDetailApiSchema = v.object({\n\t\"@CurrencyCode\": v.optional(v.string()),\n\t\"@TotalAmountBeforeDiscount\": v.optional(StringishSchema),\n\t\"@TotalAmountAfterDiscount\": v.optional(StringishSchema),\n\t\"@TotalDiscount\": v.optional(StringishSchema),\n\t\"@TotalAmountWithoutVat\": v.optional(StringishSchema),\n\t\"@DueAmount\": v.optional(StringishSchema),\n\t\"@PaiedAmount\": v.optional(StringishSchema),\n\t\"@Balance\": v.optional(StringishSchema),\n});\n\nexport const PassengerDetailApiSchema = v.object({\n\t\"@RPH\": v.string(),\n\t\"@RoomRPH\": v.optional(v.string()),\n\t\"@BillingHolder\": v.optional(StringishSchema),\n\tName: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tSex: v.optional(v.string()),\n\tBirthDate: v.optional(v.string()),\n\tBirthPlace: v.optional(v.string()),\n\tNationCode: v.optional(v.string()),\n\tCitizenshipCode: v.optional(v.string()),\n\tFiscalCode: v.optional(v.string()),\n\tPhoneNumber: v.optional(v.string()),\n\tEMail: v.optional(v.string()),\n\tMasterRecordCode: v.optional(v.string()),\n});\n\nexport const PassengerListApiSchema = listDetailApiSchema(\n\t\"PassengerDetail\",\n\tPassengerDetailApiSchema,\n);\n\nconst FinancialDeadlineDetailWireSchema = v.object({\n\t\"@ReschedulingCode\": v.optional(v.string()),\n\t\"@ExpireDate\": v.optional(v.string()),\n\t\"@TotalAmount\": v.optional(StringishSchema),\n\tReschedulingCode: v.optional(v.string()),\n\tExpireDate: v.optional(v.string()),\n\tTotalAmount: v.optional(StringishSchema),\n});\n\nexport const FinancialDeadlineDetailApiSchema = v.pipe(\n\tFinancialDeadlineDetailWireSchema,\n\tv.transform((deadline) =>\n\t\tcoalesceWireAliases(deadline, {\n\t\t\t\"@ReschedulingCode\": [\"@ReschedulingCode\", \"ReschedulingCode\"],\n\t\t\t\"@ExpireDate\": [\"@ExpireDate\", \"ExpireDate\"],\n\t\t\t\"@TotalAmount\": [\"@TotalAmount\", \"TotalAmount\"],\n\t\t}),\n\t),\n);\n\nexport const FinancialDeadlineListApiSchema = listDetailApiSchema(\n\t\"DeadlineDetail\",\n\tFinancialDeadlineDetailApiSchema,\n);\n\nexport const StoredDocumentDetailApiSchema = v.object({\n\tDocumentRefCode: v.optional(v.string()),\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tArchiviationDescription: v.optional(v.string()),\n});\n\nexport const StoredDocumentsListApiSchema = listDetailApiSchema(\n\t\"StoredDocumentDetail\",\n\tStoredDocumentDetailApiSchema,\n);\n\nexport const PrintableDocumentDetailApiSchema = v.object({\n\tDocumentType: v.optional(v.string()),\n\tDocumentName: v.optional(v.string()),\n\tEnabled: v.optional(StringishSchema),\n});\n\nexport const PrintableDocumentsListApiSchema = listDetailApiSchema(\n\t\"PrintableDocumentDetail\",\n\tPrintableDocumentDetailApiSchema,\n);\n\nconst BookingFileDetailWireSchema = v.object({\n\t\"@BookingFileCode\": v.optional(v.string()),\n\tBookingFileCode: v.optional(v.string()),\n\tCustomerRecordCode: v.optional(v.string()),\n\tCustomerName: v.optional(v.string()),\n\tCustomerEmail: v.optional(v.string()),\n\tTravelAgencyName: v.optional(v.string()),\n\tTravelAgencyEmail: v.optional(v.string()),\n\tBookingFileStatus: v.optional(BookingFileStatusApiSchema),\n\tDescription: v.optional(v.string()),\n\tNation: v.optional(v.string()),\n\tDestination: v.optional(v.string()),\n\tCreationDate: v.optional(v.string()),\n\tFirstConfirmationDate: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tPackageCode: v.optional(v.string()),\n\tBookedServiceList: v.optional(BookedServiceListApiSchema),\n\tTotalAmountDetail: v.optional(TotalAmountDetailApiSchema),\n\tPaxNumber: v.optional(StringishSchema),\n\tPassengerList: v.optional(PassengerListApiSchema),\n\tReference: v.optional(v.string()),\n\tClerkName: v.optional(v.string()),\n\tStoredDocumentsList: v.optional(StoredDocumentsListApiSchema),\n\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\tFinancialDeadlineList: v.optional(FinancialDeadlineListApiSchema),\n});\n\n/**\n * BookingFileDetail — Common Structures \"BOOKEDFILE\".\n * Accepts wire dialects, normalizes to a single PascalCase/@attr shape for camelCase mapping.\n * Nested `*List` fields are already flat Detail arrays.\n */\nexport const BookingFileDetailApiSchema = v.pipe(\n\tBookingFileDetailWireSchema,\n\tv.transform((detail) =>\n\t\tcoalesceWireAliases(detail, {\n\t\t\t\"@BookingFileCode\": [\"@BookingFileCode\", \"BookingFileCode\"],\n\t\t}),\n\t),\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tcreateApiValidationSchema,\n\tcreateResponseSchema,\n\tcreateWireSchemaPair,\n} from \"../utils/schema-transform.js\";\nimport {\n\taccountPoliciesWire,\n\tdynamicFieldsWire,\n\tfinancialDetailWire,\n\tidDocumentDetailWire,\n\tmasterRecordWire,\n\tsupplierRefMasterRecordsWire,\n} from \"../utils/wire-shapes.js\";\nimport { BoolishSchema } from \"./booking-shared.js\";\nimport { LanguageCodeSchema } from \"./common.js\";\nimport {\n\tCarrierTypeSchema,\n\tGenderSchema,\n\tInsertCriteriaSchema,\n\tMasterPaymentTypeSchema,\n\tRecordStatus,\n\tRecordStatusSchema,\n\tRecordType,\n\tRecordTypeSchema,\n} from \"./enums.js\";\n\nconst paymentTypeSchema = MasterPaymentTypeSchema;\n\nconst FinancialDetailInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\tcreditLimit: v.optional(v.string()),\n\tc_PaymentType: v.optional(paymentTypeSchema),\n\tc_SpecPaymentTypeCode: v.optional(v.string()),\n\ts_PaymentType: v.optional(paymentTypeSchema),\n\ts_SpecPaymentTypeCode: v.optional(v.string()),\n\tenableElectronicInvoicing: v.optional(BoolishSchema),\n\telectronicInvoicingType: v.optional(v.string()),\n});\n\nconst financialPair = createWireSchemaPair(\n\tFinancialDetailInputSchema,\n\tfinancialDetailWire,\n);\nexport const FinancialDetailSchema = financialPair.api;\nexport const FinancialDetailApiValidationSchema = financialPair.validation;\n\nexport const IdDocumentDetailInputSchema = v.object({\n\tidType: v.optional(v.string()),\n\tidCode: v.optional(v.string()),\n\tidIssueLocation: v.optional(v.string()),\n\tidIssueCounty: v.optional(v.string()),\n\tidIssueDate: v.optional(v.string()),\n\tidExpireDate: v.optional(v.string()),\n});\n\nconst idDocumentPair = createWireSchemaPair(\n\tIdDocumentDetailInputSchema,\n\tidDocumentDetailWire,\n);\nexport const IdDocumentDetailSchema = idDocumentPair.api;\nexport const IdDocumentDetailApiValidationSchema = idDocumentPair.validation;\n\nconst DynamicFieldsInputSchema = v.object({\n\tkey: v.string(),\n\tvalue: v.string(),\n});\n\n/**\n * Dynamic fields schema for API requests (transforms to PascalCase)\n */\nexport const DynamicFieldsSchema = createApiSchema(\n\tv.array(DynamicFieldsInputSchema),\n\tdynamicFieldsWire,\n);\n\n/**\n * Dynamic fields validation schema (already transformed PascalCase with @ attributes)\n */\nexport const DynamicFieldsApiValidationSchema = createApiValidationSchema(\n\tDynamicFieldsInputSchema,\n\tdynamicFieldsWire,\n);\n\n/*\n * Supplier reference master records schema for API requests (transforms to PascalCase)\n * @property supplierRefCode - Supplier reference code\n * @property companyMainBusinessType - Company main business type\n * @property carrierType - Carrier type\n */\nconst SupplierRefMasterRecordsInputSchema = v.object({\n\tsupplierRefCode: v.optional(v.string()),\n\tcompanyMainBusinessType: v.optional(v.string()),\n\tcarrierType: v.optional(CarrierTypeSchema),\n});\n\nconst supplierRefPair = createWireSchemaPair(\n\tSupplierRefMasterRecordsInputSchema,\n\tsupplierRefMasterRecordsWire,\n);\nexport const SupplierRefMasterRecordsSchema = supplierRefPair.api;\nexport const SupplierRefMasterRecordsApiValidationSchema =\n\tsupplierRefPair.validation;\n\nconst flagSchema = v.union([v.literal(0), v.literal(1)]);\n\nconst recordStatusSchema = RecordStatusSchema;\nconst recordTypeSchema = RecordTypeSchema;\nconst insertCriteriaSchema = InsertCriteriaSchema;\n\nconst AccountPoliciesInputSchema = v.object({\n\tacceptProfilingPolicies: v.optional(flagSchema),\n\tacceptPrivacyPolicies: v.optional(flagSchema),\n\tacceptNewsletterPolicies: v.optional(flagSchema),\n});\n\nconst accountPoliciesPair = createWireSchemaPair(\n\tAccountPoliciesInputSchema,\n\taccountPoliciesWire,\n);\nexport const AccountPoliciesSchema = accountPoliciesPair.api;\nexport const AccountPoliciesApiValidationSchema =\n\taccountPoliciesPair.validation;\n\n/**\n * Master record detail input schema (camelCase)\n */\nexport const MasterRecordDetailSchema = v.object({\n\trecordCode: v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\tinsertCriteria: v.optional(insertCriteriaSchema),\n\tcreatedDate: v.optional(v.string()),\n\trecordType: v.optional(v.union([recordTypeSchema], RecordType.CUSTOMER)),\n\trecordStatus: v.optional(v.union([recordStatusSchema], RecordStatus.ENABLED)),\n\tmoniker: v.optional(v.string()),\n\tname: v.optional(v.string()),\n\textraInfo: v.optional(v.string()),\n\tlanguageCode: LanguageCodeSchema,\n\taddress: v.optional(v.string()),\n\tzipCode: v.optional(v.string()),\n\tcityName: v.optional(v.string()),\n\tcountyCode: v.optional(v.string()),\n\tstateCode: v.optional(v.string()),\n\tcategoryCode: v.optional(v.string()),\n\tfirstPhoneNumber: v.optional(v.string()),\n\tmobilePhoneNumber: v.optional(v.string()),\n\temail: v.optional(v.string()),\n\tgender: v.optional(GenderSchema),\n\tbirthDate: v.optional(v.string()),\n\tbirthCity: v.optional(v.string()),\n\tbirthCounty: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tvatCode: v.optional(v.string()),\n\tthirdPartRecordCode: v.optional(v.string()),\n\tidDocumentDetail: v.optional(IdDocumentDetailInputSchema),\n\taccountPolicies: v.optional(AccountPoliciesInputSchema),\n\tfinancialDetail: v.optional(FinancialDetailInputSchema),\n\tdynamicFields: v.optional(DynamicFieldsInputSchema),\n\tsupplierRefMasterRecords: v.optional(SupplierRefMasterRecordsInputSchema),\n});\n\n/**\n * Master record detail schema for API requests (transforms to PascalCase)\n */\nexport const MasterRecordDetailApiSchema = createApiSchema(\n\tMasterRecordDetailSchema,\n\tmasterRecordWire,\n);\n\n/**\n * Master record detail response schema (transforms to camelCase)\n */\nexport const MasterRecordDetailResponseSchema = createResponseSchema(\n\tMasterRecordDetailApiSchema,\n);\n\n/**\n * Master record detail API validation schema (PascalCase with @ attributes)\n * Used for both search responses and upsert requests\n * All fields are optional as responses may not contain all fields\n */\nexport const MasterRecordDetailApiValidationSchema = v.object({\n\t\"@RecordCode\": v.optional(v.pipe(v.string(), v.minLength(6), v.maxLength(6))),\n\t\"@InsertCriteria\": v.optional(insertCriteriaSchema),\n\tCreatedDate: v.optional(v.string()),\n\tModifiedDate: v.optional(v.string()),\n\tRecordType: v.optional(recordTypeSchema),\n\tLoginType: v.optional(v.string()),\n\tRecordStatus: v.optional(recordStatusSchema),\n\tMoniker: v.optional(v.string()),\n\tName: v.optional(v.string()),\n\tExtraInfo: v.optional(v.string()),\n\tLanguageCode: v.optional(v.pipe(v.string(), v.minLength(1), v.maxLength(2))),\n\tAddress: v.optional(v.string()),\n\tZipCode: v.optional(v.string()),\n\tCityName: v.optional(v.string()),\n\tCountyCode: v.optional(v.string()),\n\tStateCode: v.optional(v.string()),\n\tCategoryCode: v.optional(v.string()),\n\tPromoterCode: v.optional(v.string()),\n\tFirstPhoneNumber: v.optional(v.string()),\n\tMobilePhoneNumber: v.optional(v.string()),\n\tEmail: v.optional(v.string()),\n\tGender: v.optional(GenderSchema),\n\tBirthDate: v.optional(v.string()),\n\tBirthCity: v.optional(v.string()),\n\tBirthCounty: v.optional(v.string()),\n\tEncryptedPassword: v.optional(BoolishSchema),\n\tFiscalCode: v.optional(v.string()),\n\tVatCode: v.optional(v.string()),\n\tThirdPartRecordCode: v.optional(v.string()),\n\tIdDocumentDetail: v.optional(IdDocumentDetailApiValidationSchema),\n\tNewsletterDisabled: v.optional(BoolishSchema),\n\tSupplierRefMasterRecords: v.optional(\n\t\tSupplierRefMasterRecordsApiValidationSchema,\n\t),\n\tAccountPolicies: v.optional(AccountPoliciesApiValidationSchema),\n\tFinancialDetail: v.optional(FinancialDetailApiValidationSchema),\n\tDynamicFields: v.optional(DynamicFieldsApiValidationSchema),\n});\n","import * as v from \"valibot\";\nimport {\n\tCREATE_ARRAY_OF_ONE,\n\tCREATE_BOOKING_LIST_KEYS,\n} from \"../utils/booking-transform.js\";\nimport {\n\tcoalesceCustomerRecordCode,\n\tcreateApiSchema,\n\tcreateFlattenedResponseSchema,\n\tvalueFieldSchema,\n} from \"../utils/schema-transform.js\";\nimport { bookingFileWire } from \"../utils/wire-shapes.js\";\nimport {\n\tBookingFileDetailApiSchema,\n\tPrintableDocumentsListApiSchema,\n\tTotalAmountDetailApiSchema,\n} from \"./booking-response.js\";\nimport {\n\tAvesServiceTypeSchema,\n\tBookingFileStatusSchema,\n\tBoolishSchema,\n\tCostPriceTypeSchema,\n\tCustomerPaymentTypeSchema,\n\tDocumentTypeSchema,\n\tGenderSchema,\n\tGroupingPaxPolicySchema,\n\tMakeDocumentToSchema,\n\tPassengerCategorySchema,\n\tPaymentTypeSchema,\n\tToServiceTypeSchema,\n\tTypeDownloadFileSchema,\n} from \"./booking-shared.js\";\nimport { RsStatusSchema } from \"./common.js\";\nimport { IdDocumentDetailInputSchema } from \"./master-record.js\";\n\n// ---------------------------------------------------------------------------\n// BookingFileStatus\n// ---------------------------------------------------------------------------\n\nconst BookingFileStatusInputSchema = valueFieldSchema(BookingFileStatusSchema, {\n\texpiredDate: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// StatisticCodes (AvesStatisticCodes)\n// ---------------------------------------------------------------------------\n\nexport const StatisticCodesInputSchema = v.object({\n\tsCode1: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode2: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode3: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode4: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode5: v.optional(v.pipe(v.string(), v.maxLength(4))),\n\tsCode6: v.optional(v.pipe(v.string(), v.maxLength(4))),\n});\n\n// ---------------------------------------------------------------------------\n// Destination\n// ---------------------------------------------------------------------------\n\nconst DestinationInputSchema = v.object({\n\tcode: v.optional(v.string()),\n\tiataCode: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// CustomerDetail (record code only or full master record data)\n// ---------------------------------------------------------------------------\n\nconst CustomerDetailInputSchema = v.object({\n\trecordCode: v.optional(v.string()),\n\t// When inserting new record, master record fields can be provided (see Common Structures)\n});\n\n// ---------------------------------------------------------------------------\n// BookingFileDocument\n// ---------------------------------------------------------------------------\n\nconst documentTypeSchema = DocumentTypeSchema;\n\nconst ReservationFormCustomizablePrintParametersInputSchema = v.object({\n\tmakeDocumentTo: v.optional(MakeDocumentToSchema),\n});\n\nconst TravelInformationCustomizablePrintParametersInputSchema = v.object({\n\tfillInCode: v.optional(v.string()),\n});\n\nconst DocumentCustomizablePrintParametersInputSchema = v.union([\n\tReservationFormCustomizablePrintParametersInputSchema,\n\tTravelInformationCustomizablePrintParametersInputSchema,\n]);\n\nconst InfoDocumentToPrintInputSchema = v.object({\n\tdocumentType: documentTypeSchema,\n\tdocumentCustomizablePrintParameters: v.optional(\n\t\tDocumentCustomizablePrintParametersInputSchema,\n\t),\n});\n\nexport const BookingFileDocumentInputSchema = v.object({\n\tprintDoc: v.optional(BoolishSchema),\n\tsendDocViaEmail: v.optional(BoolishSchema),\n\tinfoDocumentsToPrint: v.optional(v.array(InfoDocumentToPrintInputSchema)),\n});\n\n// ---------------------------------------------------------------------------\n// FinancialDeadlineList / DeadlineList / PaymentList\n// ---------------------------------------------------------------------------\n\nconst FinancialDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n\ttotalAmount: v.optional(v.string()),\n});\n\nconst DeadlineDetailInputSchema = v.object({\n\tdeadlineCode: v.optional(v.string()),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nconst PaymentDetailInputSchema = v.object({\n\tpaymentDate: v.optional(v.string()),\n\tpaumentNote: v.optional(v.string()),\n\tamount: v.optional(v.string()),\n\tpaymentUser: v.optional(v.string()),\n\tpaymentType: v.optional(PaymentTypeSchema),\n});\n\n// ---------------------------------------------------------------------------\n// SelectedPackageList / SelectedServiceList / ExtraQuoteServiceList\n// ---------------------------------------------------------------------------\n\nconst costPriceTypeSchema = CostPriceTypeSchema;\n\n/** ServiceFare — cost/price of a selected or booked service */\nexport const ServiceFareInputSchema = v.object({\n\tcurrencyCode: v.optional(v.string()),\n\texchangeRate: v.optional(v.string()),\n\tcost: v.optional(v.string()),\n\tcostTax: v.optional(v.string()),\n\tcostType: v.optional(costPriceTypeSchema),\n\tvatCostCurrencyCode: v.optional(v.string()),\n\tprice: v.optional(v.string()),\n\tpriceTax: v.optional(v.string()),\n\tpriceType: v.optional(costPriceTypeSchema),\n});\n\nexport const AvesServiceInfoInputSchema = v.object({\n\tpackageCode: v.optional(v.string()),\n\tpackageReference: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\texternalFileCode: v.optional(v.string()),\n\texternalReference: v.optional(v.string()),\n\tserviceStatus: v.optional(v.string()),\n\tserviceStatisticCode: v.optional(v.string()),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n});\n\nexport const SelectedServiceDetailInputSchema = v.object({\n\tsCode: v.string(),\n\tssCode: v.optional(v.string()),\n\tavesServiceType: AvesServiceTypeSchema,\n\ttoServiceType: v.optional(ToServiceTypeSchema),\n\tsubServiceDesc: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tqty: v.string(),\n\tpax: v.string(),\n\tpaxAssociated: v.optional(\n\t\tv.union([v.array(v.string()), v.array(v.object({ pax: v.string() }))]),\n\t),\n\tavesSession: v.string(),\n\tavesServiceInfo: v.optional(AvesServiceInfoInputSchema),\n\tserviceFare: v.optional(ServiceFareInputSchema),\n\tbookedServiceRef: v.optional(v.string()),\n\tsupplierMasterCode: v.optional(v.string()),\n\tvoucherMasterCode: v.optional(v.string()),\n\thotelServiceInfo: v.optional(v.string()),\n\tcarRentalServiceInfo: v.optional(v.string()),\n\tflightServiceInfo: v.optional(v.string()),\n\tshipServiceInfo: v.optional(v.string()),\n\tticketServiceInfo: v.optional(v.string()),\n\tcommission: v.optional(v.string()),\n\tnoteList: v.optional(v.string()),\n\tvoucherInfo: v.optional(v.string()),\n\tfirstDescription: v.optional(v.string()),\n\tsecondDescription: v.optional(v.string()),\n});\n\nexport const SelectedPackageDetailInputSchema = v.object({\n\tpCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tgetServicesFromPackage: v.optional(BoolishSchema),\n});\n\n// ---------------------------------------------------------------------------\n// NoteList\n// ---------------------------------------------------------------------------\n\nconst NoteDetailInputSchema = v.object({\n\tnType: v.optional(v.string()),\n\ttitle: v.optional(v.string()),\n\ttext: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// PassengerList (PassengerDetail - see Common Structures \"Passenger\" DETAIL)\n// ---------------------------------------------------------------------------\n\nconst passengerCategoryCodeSchema = PassengerCategorySchema;\n\nconst passengerDetailBase = {\n\trph: v.string(),\n\troomRph: v.optional(v.string()),\n\tbillingHolder: v.optional(BoolishSchema),\n\tmasterRecordCode: v.optional(v.string()),\n\tname: v.string(),\n\tsex: GenderSchema,\n\tbirthDate: v.optional(v.string()),\n\tbirthPlace: v.optional(v.string()),\n\tnationCode: v.optional(v.string()),\n\tcitizenshipCode: v.optional(v.string()),\n\tfiscalCode: v.optional(v.string()),\n\tphoneNumber: v.optional(v.string()),\n\teMail: v.optional(v.string()),\n\tnotes: v.optional(v.array(NoteDetailInputSchema)),\n\tflagStatus: v.optional(v.string()),\n\tofferCode: v.optional(v.string()),\n\tidDocInfo: v.optional(IdDocumentDetailInputSchema),\n};\n\n/** Passenger on CreateBookingFile — categoryCode required per AVES */\nexport const PassengerDetailCreateInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: passengerCategoryCodeSchema,\n});\n\n/** Passenger on ModBookingFileHeader / ModServices — categoryCode optional */\nexport const PassengerDetailPatchInputSchema = v.object({\n\t...passengerDetailBase,\n\tcategoryCode: v.optional(passengerCategoryCodeSchema),\n});\n\n// ---------------------------------------------------------------------------\n// BookingFinancialInfo\n// ---------------------------------------------------------------------------\n\nexport const BookingFinancialInfoInputSchema = v.object({\n\tcustomer_PaymentType: v.optional(CustomerPaymentTypeSchema),\n\tcustomer_SpecPaymentTypeCode: v.optional(v.string()),\n});\n\n// ---------------------------------------------------------------------------\n// GroupingPaxPolicy / TypeDownloadFile\n// ---------------------------------------------------------------------------\n\nconst groupingPaxPolicySchema = GroupingPaxPolicySchema;\nconst typeDownloadFileSchema = TypeDownloadFileSchema;\n\n// ---------------------------------------------------------------------------\n// BookingFileRQ (root body - camelCase input)\n// ---------------------------------------------------------------------------\n\n/**\n * Booking file request body schema (camelCase input).\n * Maps to BookFileRQ in AVES XML 1.8.0 CreateBookingFile.\n * `*List` fields are flat Detail arrays; wire wrap happens in BookingFileApiSchema.\n * Accepts `customerRecordCode` as a shorthand for `customerDetail: { recordCode }`.\n */\nexport const BookingFileSchema = v.pipe(\n\tv.object({\n\t\tcreateDate: v.optional(v.string()),\n\t\tbookingFileRefCode: v.optional(v.string()),\n\t\ttravelAgentCode: v.optional(v.string()),\n\t\tclerkName: v.optional(v.string()),\n\t\tcustomerDetail: v.optional(CustomerDetailInputSchema),\n\t\tcustomerRecordCode: v.optional(v.string()),\n\t\tcurrencyCode: v.optional(v.string()),\n\t\tmarkupCode: v.optional(v.string()),\n\t\tbookingFileStatus: BookingFileStatusInputSchema,\n\t\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\t\tdestination: v.optional(DestinationInputSchema),\n\t\tbookingFileDescription: v.optional(v.string()),\n\t\tstartDate: v.string(),\n\t\tendDate: v.string(),\n\t\tearlyBookingDate: v.optional(v.string()),\n\t\tcupCode: v.optional(v.string()),\n\t\tcigCode: v.optional(v.string()),\n\t\tcustomerPromoterCode: v.optional(v.string()),\n\t\tbillingReferenceCode: v.optional(v.string()),\n\t\tpaymentReferenceCode: v.optional(v.string()),\n\t\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\t\tfinancialDeadlineList: v.optional(\n\t\t\tv.array(FinancialDeadlineDetailInputSchema),\n\t\t),\n\t\tdeadlineList: v.optional(v.array(DeadlineDetailInputSchema)),\n\t\tpaymentList: v.optional(v.array(PaymentDetailInputSchema)),\n\t\tselectedPackageList: v.optional(v.array(SelectedPackageDetailInputSchema)),\n\t\tselectedServiceList: v.array(SelectedServiceDetailInputSchema),\n\t\textraQuotaRefCode: v.optional(v.string()),\n\t\textraQuoteServiceList: v.optional(\n\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t),\n\t\tgetExtraQuoteFromSystem: v.optional(BoolishSchema),\n\t\tpassengerList: v.array(PassengerDetailCreateInputSchema),\n\t\tnoteList: v.optional(v.array(NoteDetailInputSchema)),\n\t\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\t\tbookingFileCode: v.optional(v.string()),\n\t\tgroupingPaxPolicy: v.optional(groupingPaxPolicySchema),\n\t\tgroupBookingFile: v.optional(BoolishSchema),\n\t\ttypeDownloadFile: v.optional(typeDownloadFileSchema),\n\t\tsetBookingFileCodeFromStartDate: v.optional(BoolishSchema),\n\t}),\n\tv.check(\n\t\t(input) => !!(input.customerDetail || input.customerRecordCode),\n\t\t\"customerDetail or customerRecordCode is required\",\n\t),\n\tv.transform(coalesceCustomerRecordCode),\n);\n\n/**\n * Booking file schema for API requests (list wrap + PascalCase for BookFileRQ).\n */\nexport const BookingFileApiSchema = createApiSchema(\n\tBookingFileSchema,\n\tbookingFileWire,\n\t{\n\t\tlistKeys: CREATE_BOOKING_LIST_KEYS,\n\t\tarrayOfOne: CREATE_ARRAY_OF_ONE,\n\t},\n);\n\n/**\n * Shared booking response (Create / ModServices / SetStatus / SetStatusService).\n * Spreads `BookingFileDetail` onto the root; cancel extras stay sibling fields.\n */\nexport const BookingFileResponseSchema = createFlattenedResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tBookingFileDetail: v.optional(BookingFileDetailApiSchema),\n\t\tPrintableDocumentsList: v.optional(PrintableDocumentsListApiSchema),\n\t\tTotalAmountDetailAfterCancellation: v.optional(TotalAmountDetailApiSchema),\n\t\tBase64DocContent: v.optional(v.string()),\n\t}),\n\t\"bookingFileDetail\",\n);\n","import * as v from \"valibot\";\nimport {\n\tFILE_PAYMENT_LIST_KEYS,\n\tMOD_HEADER_LIST_KEYS,\n\tMOD_SERVICES_LIST_KEYS,\n} from \"../utils/booking-transform.js\";\nimport {\n\tcoalesceListHead,\n\tcreateApiSchema,\n\tvalueFieldSchema,\n} from \"../utils/schema-transform.js\";\nimport {\n\tbookingFileWire,\n\telementOnlyWire,\n\tfilePaymentListRequestWire,\n\tsetFileStatusWire,\n} from \"../utils/wire-shapes.js\";\nimport {\n\tBookingFileDocumentInputSchema,\n\tBookingFileResponseSchema,\n\tBookingFinancialInfoInputSchema,\n\tPassengerDetailPatchInputSchema,\n\tSelectedPackageDetailInputSchema,\n\tSelectedServiceDetailInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport {\n\tBoolishSchema,\n\tCancelOperationTypeSchema,\n\tFilePaymentOperationTypeSchema,\n\tOptionedExpirePolicySchema,\n\tPaymentTypeSchema,\n\tServiceRefTypeSchema,\n\tSetFileStatusValueSchema,\n} from \"./booking-shared.js\";\nimport { StatusOnlyResponseSchema } from \"./common.js\";\n\n/** Response with RsStatus only (Cancel / ModHeader) */\nexport const BookingStatusOnlyResponseSchema = StatusOnlyResponseSchema;\n\n/** Shared booking file identity fields */\nexport const bookingFileRefEntries = {\n\tcustomerRecordCode: v.string(),\n\tbookingFileCode: v.string(),\n} as const;\n\n/**\n * Shared with CreateBookingFile — typed BookingFileDetail fields on the root (+ optional cancel extras).\n * Create / ModServices / SetStatus / SetStatusService all use this shape.\n */\nexport const BookingFileDetailResponseSchema = BookingFileResponseSchema;\n\n// ---------------------------------------------------------------------------\n// ModBookingFileServices — ModFileServicesRQ\n// ---------------------------------------------------------------------------\n\nconst ModDeadlineDetailInputSchema = v.object({\n\treschedulingCode: v.string(),\n\tdescription: v.optional(v.string()),\n\texpireDate: v.optional(v.string()),\n});\n\nexport const CancellableBookedServiceDetailInputSchema = v.object({\n\tcancelOperationType: CancelOperationTypeSchema,\n\tserviceRefType: ServiceRefTypeSchema,\n\tserviceRefValue: v.string(),\n});\n\n/**\n * ModFileServicesRQ body (camelCase).\n * `*List` fields are flat Detail arrays; wire wrap happens in ModFileServicesApiSchema.\n * `selectedPackageList` (len 1) is an alias for `selectedPackageDetail`.\n */\nexport const ModFileServicesSchema = v.pipe(\n\tv.object({\n\t\t...bookingFileRefEntries,\n\t\tcurrencyCode: v.optional(v.string()),\n\t\tdeadlineList: v.optional(v.array(ModDeadlineDetailInputSchema)),\n\t\tselectedPackageDetail: v.optional(SelectedPackageDetailInputSchema),\n\t\tselectedPackageList: v.optional(\n\t\t\tv.pipe(v.array(SelectedPackageDetailInputSchema), v.maxLength(1)),\n\t\t),\n\t\tselectedServiceList: v.pipe(\n\t\t\tv.array(SelectedServiceDetailInputSchema),\n\t\t\tv.minLength(1),\n\t\t),\n\t\tcancellableBookedServiceList: v.optional(\n\t\t\tv.array(CancellableBookedServiceDetailInputSchema),\n\t\t),\n\t\tpassengerList: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\t}),\n\tv.transform(coalesceListHead(\"selectedPackageList\", \"selectedPackageDetail\")),\n);\n\nexport const ModFileServicesApiSchema = createApiSchema(\n\tModFileServicesSchema,\n\tbookingFileWire,\n\t{ listKeys: MOD_SERVICES_LIST_KEYS },\n);\n\n// ---------------------------------------------------------------------------\n// ModBookingFileHeader — ModFileHeaderRQ\n// ---------------------------------------------------------------------------\n\n/**\n * ModFileHeaderRQ body (camelCase).\n * Modify header only — no package/costs.\n */\nexport const ModFileHeaderSchema = v.object({\n\t...bookingFileRefEntries,\n\tbookingFileStartDate: v.string(),\n\tnewCustomerRecordCode: v.optional(v.string()),\n\tbookingFileReferenceName: v.optional(v.string()),\n\ttravelAgentCode: v.optional(v.string()),\n\tbillingReferenceCode: v.optional(v.string()),\n\tpaymentReferenceCode: v.optional(v.string()),\n\tcupCode: v.optional(v.string()),\n\tcigCode: v.optional(v.string()),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tbookingNote: v.optional(v.string()),\n\tpassengerList: v.optional(v.array(PassengerDetailPatchInputSchema)),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tbookingFinancialInfo: v.optional(BookingFinancialInfoInputSchema),\n\tfinancialDeadlineList: v.optional(\n\t\tv.array(\n\t\t\tv.object({\n\t\t\t\treschedulingCode: v.string(),\n\t\t\t\texpireDate: v.string(),\n\t\t\t\ttotalAmount: v.string(),\n\t\t\t}),\n\t\t),\n\t),\n});\n\nexport const ModFileHeaderApiSchema = createApiSchema(\n\tModFileHeaderSchema,\n\tbookingFileWire,\n\t{ listKeys: MOD_HEADER_LIST_KEYS },\n);\n\n// ---------------------------------------------------------------------------\n// CancelBookingFile — CancelFileRQ\n// ---------------------------------------------------------------------------\n\nexport const CancelFileSchema = v.object({\n\t...bookingFileRefEntries,\n});\n\nexport const CancelFileApiSchema = createApiSchema(\n\tCancelFileSchema,\n\telementOnlyWire,\n);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileStatus — SetStatusRQ\n// ---------------------------------------------------------------------------\n\nconst optionedExpirePolicySchema = OptionedExpirePolicySchema;\n\n/**\n * SetStatusRQ body (camelCase).\n * Change booking file status (incl. CANCELED / NULLIFIED).\n * `fileStatus` accepts a status string or `{ value, expiredDate?, ... }`.\n */\nexport const SetFileStatusSchema = v.object({\n\t...bookingFileRefEntries,\n\tfileStatus: valueFieldSchema(SetFileStatusValueSchema, {\n\t\texpiredDate: v.optional(v.string()),\n\t\toptionedFileExpireDatePolicy: v.optional(optionedExpirePolicySchema),\n\t}),\n\tbackOfficeRequest: v.optional(BoolishSchema),\n\tbookingFileDocument: v.optional(BookingFileDocumentInputSchema),\n\tpenalty: v.optional(\n\t\tv.object({\n\t\t\tapply: v.optional(BoolishSchema),\n\t\t\tspecificCode: v.optional(v.string()),\n\t\t}),\n\t),\n\tsimulateCancelAndGetPenaltyAmount: v.optional(BoolishSchema),\n});\n\nexport const SetFileStatusApiSchema = createApiSchema(\n\tSetFileStatusSchema,\n\tsetFileStatusWire,\n);\n\n// ---------------------------------------------------------------------------\n// SetBookingFileServiceStatus — SetStatusServiceRQ\n// ---------------------------------------------------------------------------\n\nexport const SetFileServiceStatusSchema = v.object({\n\t...bookingFileRefEntries,\n\tbookingServiceRef: v.string(),\n\tbookingFileServiceStatus: v.literal(\"NULLIFIED\"),\n\tbookingFileServiceStatusDate: v.optional(v.string()),\n});\n\nexport const SetFileServiceStatusApiSchema = createApiSchema(\n\tSetFileServiceStatusSchema,\n\telementOnlyWire,\n);\n\n// ---------------------------------------------------------------------------\n// InsertFilePaymentList — FilePaymentListRQ\n// ---------------------------------------------------------------------------\n\nconst filePaymentOperationTypeSchema = FilePaymentOperationTypeSchema;\n\nexport const FilePaymentDetailInputSchema = v.object({\n\tpaymentDate: v.string(),\n\tpaymentNote: v.optional(v.string()),\n\tpayerMasterCode: v.optional(v.string()),\n\tpayerName: v.optional(v.string()),\n\tamount: v.string(),\n\tpaymentType: PaymentTypeSchema,\n});\n\n/**\n * FilePaymentListRQ body (camelCase).\n * `filePaymentList` is a flat Detail array; wire wrap happens in FilePaymentListApiSchema.\n */\nexport const FilePaymentListSchema = v.pipe(\n\tv.object({\n\t\tbookingFileCode: v.optional(v.string()),\n\t\tbookingFileRefCode: v.optional(v.string()),\n\t\tpaymentUser: v.optional(v.string()),\n\t\tenableMultiplePayments: BoolishSchema,\n\t\toperationType: filePaymentOperationTypeSchema,\n\t\tfilePaymentList: v.pipe(\n\t\t\tv.array(FilePaymentDetailInputSchema),\n\t\t\tv.minLength(1),\n\t\t),\n\t}),\n\tv.check(\n\t\t(input) => Boolean(input.bookingFileCode || input.bookingFileRefCode),\n\t\t\"bookingFileCode or bookingFileRefCode is required\",\n\t),\n);\n\nexport const FilePaymentListApiSchema = createApiSchema(\n\tFilePaymentListSchema,\n\tfilePaymentListRequestWire,\n\t{ listKeys: FILE_PAYMENT_LIST_KEYS },\n);\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tlistDetailApiSchema,\n\tvalueFieldSchema,\n} from \"../utils/schema-transform.js\";\nimport { searchFileWire } from \"../utils/wire-shapes.js\";\nimport { BookingFileDetailApiSchema } from \"./booking-response.js\";\nimport {\n\tBookingFileStatusWireSchema,\n\tBoolishSchema,\n} from \"./booking-shared.js\";\nimport { createListResponseSchema, DateRangeSchema } from \"./common.js\";\nimport { SearchBookingFileType } from \"./enums.js\";\n\nconst searchFileStatusSchema = valueFieldSchema(BookingFileStatusWireSchema, {\n\texpireDate: v.optional(v.string()),\n});\n\nconst insuranceSchema = v.object({\n\tcode: v.optional(v.string()),\n\tnumber: v.optional(v.string()),\n});\n\nconst searchFileBase = {\n\tcustomerRecordCode: v.string(),\n\tcustomerPromoterCode: v.optional(v.string()),\n\tgetSupplierInfo: v.optional(BoolishSchema),\n\tuser: v.optional(v.string()),\n\tofficeCode: v.optional(v.string()),\n};\n\nconst FileCodeSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(SearchBookingFileType.FILE_CODE),\n\tbookingFileCode: v.string(),\n});\n\nconst PaxNameSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(SearchBookingFileType.PAX_NAME),\n\tfirstPaxName: v.string(),\n});\n\nconst PackageCodeSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(SearchBookingFileType.PACKAGE_CODE),\n\tpackageCode: v.string(),\n});\n\nconst OtherSearchSchema = v.object({\n\t...searchFileBase,\n\tsearchType: v.literal(SearchBookingFileType.OTHER),\n\tfileStatus: v.optional(searchFileStatusSchema),\n\tstartDate: v.optional(DateRangeSchema),\n\tcreatedDate: v.optional(DateRangeSchema),\n\tlastModificationDate: v.optional(DateRangeSchema),\n\tinsurance: v.optional(insuranceSchema),\n\tisSearchForB2C: v.optional(BoolishSchema),\n});\n\n/**\n * SearchFileRQ body (camelCase) — discriminated by searchType.\n */\nexport const SearchBookingFileSchema = v.union([\n\tFileCodeSearchSchema,\n\tPaxNameSearchSchema,\n\tPackageCodeSearchSchema,\n\tOtherSearchSchema,\n]);\n\nexport const SearchBookingFileApiSchema = createApiSchema(\n\tSearchBookingFileSchema,\n\tsearchFileWire,\n);\n\nexport const SearchBookingFileResponseSchema = createListResponseSchema(\n\t\"BookingFileList\",\n\tlistDetailApiSchema(\"BookingFileDetail\", BookingFileDetailApiSchema),\n);\n","export const XML_ROOT_ELEMENTS = {\n\tSEARCH_REQUEST: \"SearchMasterRecordRQ\",\n\tSEARCH_RESPONSE: \"SearchMasterRecordRS\",\n\tUPSERT_REQUEST: \"ManageMasterRecordRQ\",\n\tUPSERT_RESPONSE: \"ManageMasterRecordRS\",\n\tBOOKING_REQUEST: \"BookFileRQ\",\n\tBOOKING_RESPONSE: \"BookingFileRS\",\n\tMOD_FILE_SERVICES_REQUEST: \"ModFileServicesRQ\",\n\tMOD_FILE_HEADER_REQUEST: \"ModFileHeaderRQ\",\n\tMOD_FILE_HEADER_RESPONSE: \"ModFileHeaderRS\",\n\tCANCEL_FILE_REQUEST: \"CancelFileRQ\",\n\tCANCEL_FILE_RESPONSE: \"CancelFileRS\",\n\tSET_STATUS_REQUEST: \"SetStatusRQ\",\n\tSET_STATUS_RESPONSE: \"SetStatusRS\",\n\tSET_STATUS_SERVICE_REQUEST: \"SetStatusServiceRQ\",\n\tSET_STATUS_SERVICE_RESPONSE: \"SetStatusServiceRS\",\n\tFILE_PAYMENT_LIST_REQUEST: \"FilePaymentListRQ\",\n\tFILE_PAYMENT_LIST_RESPONSE: \"FilePaymentListRS\",\n\tAVES_SEARCH_REQUEST: \"AvesSearchRQ\",\n\tSEARCH_PACKAGE_RESPONSE: \"SearchPackageRS\",\n\tSEARCH_SERVICES_RESPONSE: \"SearchServicesRS\",\n\tPACKAGE_DETAIL_REQUEST: \"PackageDetailRQ\",\n\tPACKAGE_DETAIL_RESPONSE: \"PackageDetailRS\",\n\tCOMMIT_PACKAGE_REQUEST: \"CommitPackRQ\",\n\tCOMMIT_PACKAGE_RESPONSE: \"CommitPackRS\",\n\tSEARCH_BOOKING_FILE_REQUEST: \"SearchFileRQ\",\n\tSEARCH_BOOKING_FILE_RESPONSE: \"SearchFileRS\",\n} as const;\n\nexport type XMLRootElementValues =\n\t(typeof XML_ROOT_ELEMENTS)[keyof typeof XML_ROOT_ELEMENTS];\n\nexport function createRootElement<T>(name: XMLRootElementValues, object: T) {\n\treturn { [name]: object };\n}\n","export const AVES_ENDPOINTS = {\n\tsearch: \"/interop/masterRecords/v2/rest/Search\",\n\tupsert: \"/interop/masterRecords/v2/rest/InsertOrUpdate\",\n\tcreateBooking: \"/interop/booking/v2/rest/CreateBookingFile\",\n\tmodBookingServices: \"/interop/booking/v2/rest/ModBookingFileServices\",\n\tmodBookingHeader: \"/interop/booking/v2/rest/ModBookingFileHeader\",\n\tcancelBooking: \"/interop/booking/v2/rest/CancelBookingFile\",\n\tsetBookingStatus: \"/interop/booking/v2/rest/SetBookingFileStatus\",\n\tsetBookingServiceStatus:\n\t\t\"/interop/booking/v2/rest/SetBookingFileServiceStatus\",\n\tinsertFilePaymentList: \"/interop/booking/v2/rest/InsertFilePaymentList\",\n\tsearchAvesPackages: \"/interop/booking/v2/rest/SearchAvesPackages\",\n\tsearchTopServices: \"/interop/booking/v2/rest/SearchTopServices\",\n\tgetPackageDetail: \"/interop/booking/v2/rest/GetPackageDetail\",\n\tcommitPackage: \"/interop/booking/v2/rest/CommitPackage\",\n\tsearchBookingFile: \"/interop/booking/v2/rest/SearchBookingFile\",\n} as const;\n\nexport type AvesEndpointKey = keyof typeof AVES_ENDPOINTS;\n","import type { AvesError } from \"../error.js\";\nimport {\n\tBookingFileApiSchema,\n\tBookingFileResponseSchema,\n} from \"../schemas/booking-file.js\";\nimport {\n\tBookingFileDetailResponseSchema,\n\tBookingStatusOnlyResponseSchema,\n\tCancelFileApiSchema,\n\tFilePaymentListApiSchema,\n\tModFileHeaderApiSchema,\n\tModFileServicesApiSchema,\n\tSetFileServiceStatusApiSchema,\n\tSetFileStatusApiSchema,\n} from \"../schemas/booking-ops.js\";\nimport {\n\tSearchBookingFileApiSchema,\n\tSearchBookingFileResponseSchema,\n} from \"../schemas/search-booking-file.js\";\nimport type {\n\tBookingFileDetailRS,\n\tBookingFileRQ,\n\tBookingFileRS,\n\tBookingStatusOnlyRS,\n\tCancelFileRQ,\n\tFilePaymentListRQ,\n\tModFileHeaderRQ,\n\tModFileServicesRQ,\n\tSearchBookingFileRQ,\n\tSearchBookingFileRS,\n\tSetFileServiceStatusRQ,\n\tSetFileStatusRQ,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class BookingClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Create a booking file (CreateBookingFile). */\n\tcreateBooking(\n\t\tparams: BookingFileRQ,\n\t): Promise<Result<BookingFileRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"createBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: BookingFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.createBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.BOOKING_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileResponseSchema,\n\t\t});\n\t}\n\n\t/** Add/replace services, assign package, delete/nullify cost items. */\n\tmodBookingServices(\n\t\tparams: ModFileServicesRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"modBookingServices\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileServicesApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.modBookingServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_SERVICES_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.BOOKING_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Header only (pax, notes, billing) — no costs. */\n\tmodBookingHeader(\n\t\tparams: ModFileHeaderRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"modBookingHeader\",\n\t\t\tparams,\n\t\t\tapiSchema: ModFileHeaderApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.modBookingHeader,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.MOD_FILE_HEADER_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Delete a booking file (CancelBookingFile). */\n\tcancelBooking(\n\t\tparams: CancelFileRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"cancelBooking\",\n\t\t\tparams,\n\t\t\tapiSchema: CancelFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.cancelBooking,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.CANCEL_FILE_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Change booking file status (incl. CANCELED / NULLIFIED). */\n\tsetBookingStatus(\n\t\tparams: SetFileStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"setBookingStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileStatusApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.setBookingStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Nullify a single booked service line. */\n\tsetBookingServiceStatus(\n\t\tparams: SetFileServiceStatusRQ,\n\t): Promise<Result<BookingFileDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"setBookingServiceStatus\",\n\t\t\tparams,\n\t\t\tapiSchema: SetFileServiceStatusApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.setBookingServiceStatus,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SET_STATUS_SERVICE_RESPONSE,\n\t\t\tresponseSchema: BookingFileDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Register one or more payments on a booking file. */\n\tinsertFilePaymentList(\n\t\tparams: FilePaymentListRQ,\n\t): Promise<Result<BookingStatusOnlyRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"insertFilePaymentList\",\n\t\t\tparams,\n\t\t\tapiSchema: FilePaymentListApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.insertFilePaymentList,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.FILE_PAYMENT_LIST_RESPONSE,\n\t\t\tresponseSchema: BookingStatusOnlyResponseSchema,\n\t\t});\n\t}\n\n\t/** Search booking files, incl. by PACKAGE_CODE. */\n\tsearchBookingFiles(\n\t\tparams: SearchBookingFileRQ,\n\t): Promise<Result<SearchBookingFileRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchBookingFiles\",\n\t\t\tparams,\n\t\t\tapiSchema: SearchBookingFileApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchBookingFile,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SEARCH_BOOKING_FILE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_BOOKING_FILE_RESPONSE,\n\t\t\tresponseSchema: SearchBookingFileResponseSchema,\n\t\t});\n\t}\n}\n","import * as v from \"valibot\";\nimport {\n\tcreateApiSchema,\n\tlistDetailApiSchema,\n} from \"../utils/schema-transform.js\";\nimport { searchMasterWire } from \"../utils/wire-shapes.js\";\nimport {\n\tcreateListResponseSchema,\n\tDateRangeSchema,\n\tOptionalLanguageCodeSchema,\n\tRqHeaderSchema,\n} from \"./common.js\";\nimport { SearchMasterType } from \"./enums.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\nconst LastModificationDateInputSchema = DateRangeSchema;\nconst languageCodeField = OptionalLanguageCodeSchema;\n\n/**\n * Search by CODE - requires recordCode\n */\nconst CodeSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.CODE),\n\trecordCode: v.pipe(v.string(), v.minLength(5), v.maxLength(6)),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by NAME - requires name, optionally city\n */\nconst NameSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.NAME),\n\tname: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by VATCODE - requires vatCode, optionally phoneNumber\n */\nconst VatCodeSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.VATCODE),\n\tvatCode: v.string(),\n\tphoneNumber: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by ZONE - requires zipCode and countyCode, optionally city\n */\nconst ZoneSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.ZONE),\n\tzipCode: v.string(),\n\tcountyCode: v.string(),\n\tcity: v.optional(v.string()),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by CATEGORY - requires categoryCode\n */\nconst CategorySearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.CATEGORY),\n\tcategoryCode: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EMAIL - requires email\n */\nconst EmailSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.EMAIL),\n\temail: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by LASTMODDATE - requires lastModificationDate\n */\nconst LastModDateSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.LASTMODDATE),\n\tlastModificationDate: LastModificationDateInputSchema,\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by SEARCH FIELD - requires searchFieldValue\n */\nconst SearchFieldSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.SEARCH_FIELD),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search by EXTERNAL_REF_CODE - requires searchFieldValue\n */\nconst ExternalRefCodeSearchSchema = v.object({\n\tsearchType: v.literal(SearchMasterType.EXTERNAL_REF_CODE),\n\tsearchFieldValue: v.string(),\n\tlanguageCode: languageCodeField,\n});\n\n/**\n * Search master record input schema (camelCase)\n * Conditional fields based on searchType\n */\nexport const SearchMasterRecordSchema = v.union([\n\tCodeSearchSchema,\n\tNameSearchSchema,\n\tVatCodeSearchSchema,\n\tZoneSearchSchema,\n\tCategorySearchSchema,\n\tEmailSearchSchema,\n\tLastModDateSearchSchema,\n\tSearchFieldSearchSchema,\n\tExternalRefCodeSearchSchema,\n]);\n\n/**\n * Search master record schema for API requests (transforms to PascalCase).\n * recordCode stays an element (not @attr) via {@link searchMasterWire}.\n */\nexport const SearchMasterRecordApiSchema = createApiSchema(\n\tSearchMasterRecordSchema,\n\tsearchMasterWire,\n);\n\n/**\n * Complete search request schema with header\n * Flattens SearchMasterRecord fields to root level\n */\nexport const SearchMasterRecordRequestSchema = v.pipe(\n\tv.object({\n\t\tRqHeader: RqHeaderSchema,\n\t\tSearchMasterRecord: SearchMasterRecordApiSchema,\n\t}),\n\tv.transform((input) => {\n\t\tconst { SearchMasterRecord: searchFields, RqHeader, ...rest } = input;\n\t\treturn {\n\t\t\tRqHeader,\n\t\t\t...searchFields,\n\t\t\t...rest,\n\t\t};\n\t}),\n);\n\nconst MasterRecordListApiSchema = listDetailApiSchema(\n\t\"MasterRecordDetail\",\n\tMasterRecordDetailApiValidationSchema,\n);\n\n/**\n * Search master record response schema (transforms to camelCase)\n */\nexport const SearchMasterRecordResponseSchema = createListResponseSchema(\n\t\"MasterRecordList\",\n\tMasterRecordListApiSchema,\n);\n","import * as v from \"valibot\";\nimport { createFlattenedResponseSchema } from \"../utils/schema-transform.js\";\nimport { RqHeaderSchema, RsStatusSchema } from \"./common.js\";\nimport { MasterRecordDetailApiValidationSchema } from \"./master-record.js\";\n\n/**\n * Complete upsert request schema with header and required InsertCriteria\n */\nexport const ManageMasterRecordRequestSchema = v.object({\n\tRqHeader: RqHeaderSchema,\n\tMasterRecordDetail: MasterRecordDetailApiValidationSchema,\n});\n\n/**\n * Upsert response: camelCase, then spread `MasterRecordDetail` onto the root.\n * Callers use `data.recordCode` instead of `data.masterRecordDetail.recordCode`.\n */\nexport const ManageMasterRecordResponseSchema = createFlattenedResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tMasterRecordDetail: v.optional(MasterRecordDetailApiValidationSchema),\n\t}),\n\t\"masterRecordDetail\",\n);\n","import type { AvesError } from \"../error.js\";\nimport { MasterRecordDetailApiSchema } from \"../schemas/master-record.js\";\nimport {\n\tSearchMasterRecordApiSchema,\n\tSearchMasterRecordResponseSchema,\n} from \"../schemas/search.js\";\nimport { ManageMasterRecordResponseSchema } from \"../schemas/upsert.js\";\nimport type {\n\tManageMasterRecordRS,\n\tMasterRecordDetail,\n\tSearchMasterRecord,\n\tSearchMasterRecordRS,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class MasterRecordsClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Search master records (camelCase in/out). Fields spread at RQ root. */\n\tsearch(\n\t\tparams: SearchMasterRecord,\n\t): Promise<Result<SearchMasterRecordRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"search\",\n\t\t\tparams,\n\t\t\tapiSchema: SearchMasterRecordApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.search,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_RESPONSE,\n\t\t\tresponseSchema: SearchMasterRecordResponseSchema,\n\t\t});\n\t}\n\n\t/** Insert or update a master record. */\n\tupsertRecord(\n\t\trecord: MasterRecordDetail,\n\t): Promise<Result<ManageMasterRecordRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"upsertRecord\",\n\t\t\tparams: record,\n\t\t\tapiSchema: MasterRecordDetailApiSchema,\n\t\t\tbodyKey: \"MasterRecordDetail\",\n\t\t\tendpoint: AVES_ENDPOINTS.upsert,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.UPSERT_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.UPSERT_RESPONSE,\n\t\t\tresponseSchema: ManageMasterRecordResponseSchema,\n\t\t});\n\t}\n}\n","import * as v from \"valibot\";\nimport { wrapListDetails } from \"../utils/booking-transform.js\";\nimport {\n\tcreateApiSchema,\n\tcreateFlattenedResponseSchema,\n\tlistDetailApiSchema,\n\ttoWireBody,\n} from \"../utils/schema-transform.js\";\nimport {\n\tavesSearchWire,\n\tbaseSearchWire,\n\telementOnlyWire,\n\tpackageDetailRequestWire,\n} from \"../utils/wire-shapes.js\";\nimport {\n\tPassengerDetailCreateInputSchema,\n\tStatisticCodesInputSchema,\n} from \"./booking-file.js\";\nimport { BoolishSchema } from \"./booking-shared.js\";\nimport {\n\tcreateListResponseSchema,\n\tOptionalLanguageCodeSchema,\n\tRsStatusSchema,\n\tStatusOnlyResponseSchema,\n\tStringishBoolSchema,\n\tStringishSchema,\n} from \"./common.js\";\nimport {\n\tAvesSearchTypeSchema,\n\tDestinationTypeSchema,\n\tPaxQtyCriteria,\n\tPaxQtyCriteriaSchema,\n} from \"./enums.js\";\n\nexport { PaxQtyCriteria, PaxQtyCriteriaSchema } from \"./enums.js\";\n\n// ---------------------------------------------------------------------------\n// Shared catalog fragments (response)\n// ---------------------------------------------------------------------------\n\nexport const FeatureDetailApiSchema = v.object({\n\t\"@Code\": v.optional(v.string()),\n\t\"@Name\": v.optional(v.string()),\n\tValueCode: v.optional(v.string()),\n\tValueName: v.optional(v.string()),\n});\n\nexport const FeatureListApiSchema = listDetailApiSchema(\n\t\"FeatureDetail\",\n\tFeatureDetailApiSchema,\n);\n\nexport const RefPackageInfoApiSchema = v.object({\n\t\"@PackageCode\": v.optional(v.string()),\n\t\"@PackageReference\": v.optional(v.string()),\n\t\"@PackageServiceType\": v.optional(v.string()),\n\t\"@ServiceCodeForPackageDetail\": v.optional(v.string()),\n});\n\n/** Lean catalog SubService — enough for Program search/detail workflows */\nexport const CatalogSubServiceDetailApiSchema = v.object({\n\t\"@ssCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSubServiceType: v.optional(v.string()),\n\tSubServiceLevel: v.optional(StringishBoolSchema),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n});\n\nexport const CatalogSubServiceListApiSchema = listDetailApiSchema(\n\t\"SubServiceDetail\",\n\tCatalogSubServiceDetailApiSchema,\n);\n\n/** Lean catalog Service inside a Package */\nexport const CatalogServiceDetailApiSchema = v.object({\n\t\"@sCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tAvesServiceType: v.optional(v.string()),\n\tTOServiceType: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tRefPackageInfo: v.optional(RefPackageInfoApiSchema),\n\tSubServiceList: v.optional(CatalogSubServiceListApiSchema),\n});\n\nexport const CatalogServiceListApiSchema = listDetailApiSchema(\n\t\"ServiceDetail\",\n\tCatalogServiceDetailApiSchema,\n);\n\n/** Package / Program detail (SearchPackageRS + GetPackageDetail) */\nexport const PackageDetailApiSchema = v.object({\n\t\"@pCode\": v.optional(v.string()),\n\tFirstDescription: v.optional(v.string()),\n\tSecondDescription: v.optional(v.string()),\n\tFrequencyType: v.optional(v.string()),\n\tProgramType: v.optional(v.string()),\n\tStartValidation: v.optional(v.string()),\n\tEndValidation: v.optional(v.string()),\n\tStartDate: v.optional(v.string()),\n\tEndDate: v.optional(v.string()),\n\tBasePrice: v.optional(StringishBoolSchema),\n\tBasePax: v.optional(StringishBoolSchema),\n\tCanCommitPack: v.optional(StringishBoolSchema),\n\tFeatureList: v.optional(FeatureListApiSchema),\n\tServiceList: v.optional(CatalogServiceListApiSchema),\n});\n\nexport const PackageListApiSchema = listDetailApiSchema(\n\t\"PackageDetail\",\n\tPackageDetailApiSchema,\n);\n\n// ---------------------------------------------------------------------------\n// SearchAvesPackages / SearchTopServices — AvesSearchRQ\n// ---------------------------------------------------------------------------\n\nconst SearchDestinationInputSchema = v.object({\n\tcode: v.optional(v.string()),\n\ttype: v.optional(DestinationTypeSchema),\n});\n\nconst FeatureDetailInputSchema = v.object({\n\tcode: v.string(),\n\tname: v.optional(v.string()),\n});\n\nconst PackageParamsInputSchema = v.object({\n\tgetAllDeptDate: v.optional(BoolishSchema),\n\tgetFlightPlan: v.optional(BoolishSchema),\n\tgetAllAccomodation: v.optional(BoolishSchema),\n\tgetRealAvailability: v.optional(BoolishSchema),\n\tminStay: v.optional(StringishSchema),\n\tmaxStay: v.optional(StringishSchema),\n});\n\nconst TopServiceParamsInputSchema = v.object({\n\tcompatibleAccomodation: v.optional(BoolishSchema),\n\talternativeAccomodation: v.optional(BoolishSchema),\n});\n\n/**\n * Flat AvesSearchRQ body (camelCase) — shared by SearchAvesPackages / SearchTopServices.\n * BaseSearch fields live at the root; wire transform nests them under `BaseSearch`.\n * `searchPackages` / `searchTopServices` default `avesSearchType`; `paxQty` defaults to\n * `passengerList.length`; `paxQtyCriteria` defaults to `GREATER_OR_EQUAL`.\n * `languageCode` may come from `AvesClient` options when omitted.\n */\nexport const AvesSearchSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tlanguageCode: OptionalLanguageCodeSchema,\n\tcurrencyCode: v.optional(v.string()),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tearlyBookingDate: v.optional(v.string()),\n\tpassengerList: v.pipe(\n\t\tv.array(PassengerDetailCreateInputSchema),\n\t\tv.minLength(1),\n\t),\n\tavesSearchType: v.optional(AvesSearchTypeSchema),\n\tpaxQty: v.optional(StringishSchema),\n\tpaxQtyCriteria: v.optional(PaxQtyCriteriaSchema),\n\tdiscartNotAvailables: v.optional(BoolishSchema),\n\tdiscartNotAvailablesMinSales: v.optional(BoolishSchema),\n\tdiscartNotAvailablesDaysInOut: v.optional(BoolishSchema),\n\tdiscardPriceZero: v.optional(BoolishSchema),\n\tdiscardZeroPriceDays: v.optional(BoolishSchema),\n\tdestination: v.optional(SearchDestinationInputSchema),\n\tobjectTypeCode: v.optional(v.string()),\n\tfeatureList: v.optional(v.array(FeatureDetailInputSchema)),\n\tservOrPackCode: v.optional(v.string()),\n\tservOrPackDesc: v.optional(v.string()),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\tsuballotmentCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tmergeBoardAndAccomodation: v.optional(BoolishSchema),\n\tpackageParams: v.optional(PackageParamsInputSchema),\n\ttopServiceParams: v.optional(TopServiceParamsInputSchema),\n\tgetDocumentation: v.optional(BoolishSchema),\n});\n\n/** After client defaults: languageCode + avesSearchType must be present. */\nconst AvesSearchResolvedSchema = v.required(AvesSearchSchema, [\n\t\"languageCode\",\n\t\"avesSearchType\",\n]);\n\n/** Nest BaseSearch under AvesSearchRQ; apply paxQty / paxQtyCriteria defaults. */\nfunction toAvesSearchApiBody(\n\tinput: v.InferOutput<typeof AvesSearchResolvedSchema>,\n) {\n\tconst {\n\t\tcustomerRecordCode,\n\t\tlanguageCode,\n\t\tcurrencyCode,\n\t\tstartDate,\n\t\tendDate,\n\t\tearlyBookingDate,\n\t\tpassengerList,\n\t\tpaxQty,\n\t\tpaxQtyCriteria,\n\t\tavesSearchType,\n\t\t...rest\n\t} = input;\n\n\treturn {\n\t\tBaseSearch: toWireBody(\n\t\t\t{\n\t\t\t\tcustomerRecordCode,\n\t\t\t\tlanguageCode,\n\t\t\t\tcurrencyCode,\n\t\t\t\tstartDate,\n\t\t\t\tendDate,\n\t\t\t\tearlyBookingDate,\n\t\t\t\tpassengerList: wrapListDetails(\n\t\t\t\t\t{ passengerList },\n\t\t\t\t\t{ listKeys: [\"passengerList\"] },\n\t\t\t\t).passengerList,\n\t\t\t},\n\t\t\tbaseSearchWire,\n\t\t),\n\t\t...toWireBody(\n\t\t\t{\n\t\t\t\t...rest,\n\t\t\t\tavesSearchType,\n\t\t\t\tpaxQty: paxQty ?? passengerList.length,\n\t\t\t\tpaxQtyCriteria: paxQtyCriteria ?? PaxQtyCriteria.GREATER_OR_EQUAL,\n\t\t\t},\n\t\t\tavesSearchWire,\n\t\t\t{ listKeys: [\"featureList\"] },\n\t\t),\n\t};\n}\n\nexport const AvesSearchApiSchema = v.pipe(\n\tAvesSearchResolvedSchema,\n\tv.transform(toAvesSearchApiBody),\n);\n\nexport const SearchPackageResponseSchema = createListResponseSchema(\n\t\"PackageList\",\n\tPackageListApiSchema,\n);\n\nexport const SearchServicesResponseSchema = createListResponseSchema(\n\t\"ServiceList\",\n\tCatalogServiceListApiSchema,\n);\n\n// ---------------------------------------------------------------------------\n// GetPackageDetail — PackageDetailRQ\n// ---------------------------------------------------------------------------\n\n/** SelectedServiceDetail for GetPackageDetail (ServiceCode + PackageRow attrs). */\nexport const PackagePrgServiceDetailInputSchema = v.object({\n\tserviceCode: v.string(),\n\tpackageRow: v.string(),\n});\n\n/**\n * PackageDetailRQ body (camelCase).\n * Root startDate/endDate are XML elements (not listed on packageDetailRequestWire.attrs).\n */\nexport const PackageDetailRequestSchema = v.object({\n\tcustomerRecordCode: v.string(),\n\tlanguageCode: OptionalLanguageCodeSchema,\n\tcurrencyCode: v.optional(v.string()),\n\tpackageCode: v.string(),\n\tstartDate: v.string(),\n\tendDate: v.string(),\n\tpriceListCode: v.optional(v.string()),\n\tcostListCode: v.optional(v.string()),\n\tmarkupCode: v.optional(v.string()),\n\tstatisticCodes: v.optional(StatisticCodesInputSchema),\n\tselectedServiceList: v.pipe(\n\t\tv.array(PackagePrgServiceDetailInputSchema),\n\t\tv.minLength(1),\n\t),\n\tpassengerList: v.optional(v.array(PassengerDetailCreateInputSchema)),\n});\n\nconst PACKAGE_DETAIL_LIST_KEYS = [\n\t\"selectedServiceList\",\n\t\"passengerList\",\n] as const;\n\n/** Map packagePrg fields → attrs; list wrap + element dates at root. */\nexport const PackageDetailRequestApiSchema = createApiSchema(\n\tPackageDetailRequestSchema,\n\tpackageDetailRequestWire,\n\t{ listKeys: PACKAGE_DETAIL_LIST_KEYS },\n);\n\nexport const PackageDetailResponseSchema = createFlattenedResponseSchema(\n\tv.object({\n\t\tRsStatus: RsStatusSchema,\n\t\tPackageDetail: v.optional(PackageDetailApiSchema),\n\t}),\n\t\"packageDetail\",\n);\n\n// ---------------------------------------------------------------------------\n// CommitPackage — CommitPackRQ\n// ---------------------------------------------------------------------------\n\nexport const CommitPackageSchema = v.object({\n\tpackageCode: v.string(),\n});\n\nexport const CommitPackageApiSchema = createApiSchema(\n\tCommitPackageSchema,\n\telementOnlyWire,\n);\n\nexport const CommitPackageResponseSchema = StatusOnlyResponseSchema;\n","import type { AvesError } from \"../error.js\";\nimport { AvesSearchType } from \"../schemas/enums.js\";\nimport {\n\tAvesSearchApiSchema,\n\tCommitPackageApiSchema,\n\tCommitPackageResponseSchema,\n\tPackageDetailRequestApiSchema,\n\tPackageDetailResponseSchema,\n\tSearchPackageResponseSchema,\n\tSearchServicesResponseSchema,\n} from \"../schemas/package-catalog.js\";\nimport type {\n\tAvesSearchRQ,\n\tCommitPackageRQ,\n\tCommitPackageRS,\n\tPackageDetailRQ,\n\tPackageDetailRS,\n\tSearchPackageRS,\n\tSearchServicesRS,\n} from \"../types.js\";\nimport type { Result } from \"../utils/result.js\";\nimport { XML_ROOT_ELEMENTS } from \"../xml/root.js\";\nimport { AVES_ENDPOINTS } from \"./endpoints.js\";\nimport type { AvesTransport } from \"./transport.js\";\n\nexport class PackageCatalogClient {\n\tconstructor(private readonly transport: AvesTransport) {}\n\n\t/** Merge client languageCode + method default avesSearchType (params win). */\n\tprivate prepareSearch(\n\t\tparams: AvesSearchRQ,\n\t\tdefaultType: (typeof AvesSearchType)[keyof typeof AvesSearchType],\n\t): AvesSearchRQ {\n\t\treturn {\n\t\t\t...(this.transport.languageCode && {\n\t\t\t\tlanguageCode: this.transport.languageCode,\n\t\t\t}),\n\t\t\tavesSearchType: defaultType,\n\t\t\t...params,\n\t\t};\n\t}\n\n\t/** Search packages / programs. Defaults `avesSearchType` to `PACKAGE`. */\n\tsearchPackages(\n\t\tparams: AvesSearchRQ,\n\t): Promise<Result<SearchPackageRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchPackages\",\n\t\t\tparams: this.prepareSearch(params, AvesSearchType.PACKAGE),\n\t\t\tapiSchema: AvesSearchApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchAvesPackages,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.AVES_SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_PACKAGE_RESPONSE,\n\t\t\tresponseSchema: SearchPackageResponseSchema,\n\t\t});\n\t}\n\n\t/** Search TOP services. Defaults `avesSearchType` to `SERVICE`. */\n\tsearchTopServices(\n\t\tparams: AvesSearchRQ,\n\t): Promise<Result<SearchServicesRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"searchTopServices\",\n\t\t\tparams: this.prepareSearch(params, AvesSearchType.SERVICE),\n\t\t\tapiSchema: AvesSearchApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.searchTopServices,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.AVES_SEARCH_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.SEARCH_SERVICES_RESPONSE,\n\t\t\tresponseSchema: SearchServicesResponseSchema,\n\t\t});\n\t}\n\n\t/** Package / program detail + service list. */\n\tgetPackageDetail(\n\t\tparams: PackageDetailRQ,\n\t): Promise<Result<PackageDetailRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"getPackageDetail\",\n\t\t\tparams,\n\t\t\tapiSchema: PackageDetailRequestApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.getPackageDetail,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.PACKAGE_DETAIL_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.PACKAGE_DETAIL_RESPONSE,\n\t\t\tresponseSchema: PackageDetailResponseSchema,\n\t\t});\n\t}\n\n\t/** Publish an existing package. Does not create packages. */\n\tcommitPackage(\n\t\tparams: CommitPackageRQ,\n\t): Promise<Result<CommitPackageRS, AvesError>> {\n\t\treturn this.transport.invokeOp({\n\t\t\top: \"commitPackage\",\n\t\t\tparams,\n\t\t\tapiSchema: CommitPackageApiSchema,\n\t\t\tendpoint: AVES_ENDPOINTS.commitPackage,\n\t\t\trequestRoot: XML_ROOT_ELEMENTS.COMMIT_PACKAGE_REQUEST,\n\t\t\tresponseRoot: XML_ROOT_ELEMENTS.COMMIT_PACKAGE_RESPONSE,\n\t\t\tresponseSchema: CommitPackageResponseSchema,\n\t\t});\n\t}\n}\n","import type { BaseIssue } from \"valibot\";\n\nexport const ERROR_KINDS = {\n\tVALIDATION: \"validation\",\n\tAPI: \"api\",\n\tUNKNOWN: \"unknown\",\n} as const;\n\nexport type ErrorKind = (typeof ERROR_KINDS)[keyof typeof ERROR_KINDS];\n\n/**\n * Error thrown by AVES API operations\n */\nexport class AvesError extends Error {\n\tconstructor(\n\t\tpublic readonly kind: ErrorKind,\n\t\tpublic readonly message: string,\n\t\tpublic readonly status?: string,\n\t\tpublic readonly code?: number | string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"AvesError\";\n\t\tthis.status = status?.toLowerCase();\n\t\tthis.code = this.parseCode(code);\n\t}\n\n\tprivate parseCode(code?: number | string): number {\n\t\tif (typeof code === \"string\") {\n\t\t\treturn Number.parseInt(code, 10);\n\t\t}\n\t\treturn code ?? 0;\n\t}\n}\n\nexport function validationError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.VALIDATION, message);\n}\n\nexport function apiError(\n\tmessage: string,\n\tstatus?: string,\n\tcode?: number | string,\n): AvesError {\n\treturn new AvesError(ERROR_KINDS.API, message, status, code);\n}\n\nexport function unknownError(message: string): AvesError {\n\treturn new AvesError(ERROR_KINDS.UNKNOWN, message);\n}\n\nexport function buildDetails(issues: readonly BaseIssue<unknown>[]): string {\n\treturn issues.map(formatIssue).join(\"; \");\n}\n\nfunction formatIssue(issue: BaseIssue<unknown>): string {\n\tconst path = formatPath(issue.path);\n\tconst message = issue.message ?? \"Invalid value\";\n\n\treturn path ? `${path}: ${message}` : message;\n}\n\nfunction formatPath(path?: readonly unknown[]): string | undefined {\n\tif (!path || path.length === 0) return;\n\n\tconst segments = path\n\t\t.map(extractSegment)\n\t\t.filter((segment): segment is string => segment !== undefined);\n\n\treturn segments.length > 0 ? segments.join(\".\") : undefined;\n}\n\nfunction extractSegment(segment: unknown): string | undefined {\n\tif (typeof segment === \"string\" || typeof segment === \"number\") {\n\t\treturn String(segment);\n\t}\n\n\tif (typeof segment === \"object\" && segment !== null && \"key\" in segment) {\n\t\treturn String(segment.key);\n\t}\n\n\treturn;\n}\n\nexport function isAbortError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n","/**\n * Result type for functional error handling\n */\nexport type Result<T, E = Error> =\n\t| { success: true; data: T }\n\t| { success: false; error: E };\n\n/**\n * Creates a successful result\n */\nexport function ok<T>(data: T): Result<T, never> {\n\treturn { success: true, data };\n}\n\n/**\n * Creates an error result\n */\nexport function err<E>(error: E): Result<never, E> {\n\treturn { success: false, error };\n}\n\nexport function isOk(statusCode: number): boolean {\n\treturn statusCode === 200;\n}\n","export interface TimeoutController {\n\tsignal: AbortSignal;\n\tclear?: () => void;\n}\n\n/**\n * Create an AbortSignal that will automatically abort after `timeoutMs`.\n * If `timeoutMs` is not provided or <= 0, no automatic abort is scheduled.\n */\nexport function createTimeoutSignal(timeoutMs?: number): TimeoutController {\n\tconst controller = new AbortController();\n\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn { signal: controller.signal };\n\t}\n\n\tconst timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n\treturn {\n\t\tsignal: controller.signal,\n\t\tclear: () => clearTimeout(timeoutId),\n\t};\n}\n","import { AvesError } from \"../error.js\";\n\nfunction buildUrl(baseURL: string, endpoint: string): URL {\n\ttry {\n\t\tconst base = new URL(baseURL);\n\t\tconst basePath = base.pathname.endsWith(\"/\")\n\t\t\t? base.pathname.slice(0, -1)\n\t\t\t: base.pathname;\n\t\tconst combinedPath = basePath + endpoint;\n\n\t\treturn new URL(combinedPath, base);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid baseURL: ${error instanceof Error ? error.message : \"Invalid URL format\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Validates and combines baseURL with endpoint\n * @param baseURL - Base URL (must be http:// or https://)\n * @param endpoint - Endpoint path (must start with /)\n * @returns Combined URL string\n * @throws AvesError if URL is invalid or protocol is not http/https\n */\nexport function parseUrl(baseURL: string, endpoint: string): string {\n\tif (!endpoint.startsWith(\"/\")) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid endpoint: endpoint must start with '/' but got '${endpoint}'`,\n\t\t);\n\t}\n\n\tconst normalizedBaseURL = baseURL.replace(/\\/$/, \"\");\n\n\tconst url = buildUrl(normalizedBaseURL, endpoint);\n\n\tif (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Invalid protocol: baseURL must use http:// or https:// but got '${url.protocol}'`,\n\t\t);\n\t}\n\n\treturn url.toString();\n}\n","import XMLBuilder from \"fast-xml-builder\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { AvesError } from \"../error.js\";\n\nconst parserOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tparseAttributeValue: false,\n\ttrimValues: true,\n\tignoreNameSpace: true,\n\tremoveNSPrefix: true,\n\tparseTagValue: false,\n};\n\nconst builderOptions = {\n\tignoreAttributes: false,\n\tattributeNamePrefix: \"@\",\n\tsuppressEmptyNode: true,\n};\n\nconst parser = new XMLParser(parserOptions);\nconst builder = new XMLBuilder(builderOptions);\n\n/**\n * Converts JSON to XML string\n */\nexport function jsonToXml(json: Record<string, unknown>): string {\n\ttry {\n\t\treturn builder.build(json);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert JSON to XML: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n\n/**\n * Converts XML string to JSON object\n * Attributes are parsed with @ prefix\n */\nexport function xmlToJson(xml: string): Record<string, unknown> {\n\ttry {\n\t\treturn parser.parse(xml);\n\t} catch (error) {\n\t\tthrow new AvesError(\n\t\t\t\"validation\",\n\t\t\t`Failed to convert XML to JSON: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n\t\t);\n\t}\n}\n","import { request as r } from \"undici\";\nimport {\n\ttype BaseIssue,\n\ttype BaseSchema,\n\tparse,\n\tsafeParse,\n\tValiError,\n} from \"valibot\";\nimport {\n\tAvesError,\n\tapiError,\n\tbuildDetails,\n\tisAbortError,\n\tunknownError,\n\tvalidationError,\n} from \"../error.js\";\nimport type { AvesClientOptions, RsStatus } from \"../types.js\";\nimport { err, isOk, ok, type Result } from \"../utils/result.js\";\nimport { createTimeoutSignal } from \"../utils/timeout.js\";\nimport { parseUrl } from \"../utils/url.js\";\nimport { jsonToXml, xmlToJson } from \"../xml/client.js\";\nimport { createRootElement, type XMLRootElementValues } from \"../xml/root.js\";\n\n/**\n * Shared HTTP + XML transport for AVES domain clients.\n */\nexport class AvesTransport {\n\tconstructor(private readonly options: AvesClientOptions) {}\n\n\tget languageCode() {\n\t\treturn this.options.languageCode;\n\t}\n\n\tcreateRqHeader() {\n\t\treturn {\n\t\t\t\"@HostID\": this.options.hostID,\n\t\t\t\"@Xtoken\": this.options.xtoken,\n\t\t\t\"@Interface\": \"WEB\" as const,\n\t\t\t\"@UserName\": \"WEB\" as const,\n\t\t\t...(this.options.languageCode && {\n\t\t\t\t\"@LanguageCode\": this.options.languageCode,\n\t\t\t}),\n\t\t};\n\t}\n\n\ttoAvesError(error: unknown, defaultMessage: string): AvesError {\n\t\tif (error instanceof AvesError) return error;\n\t\tif (error instanceof ValiError)\n\t\t\treturn validationError(`Validation error: ${buildDetails(error.issues)}`);\n\t\tif (error instanceof Error) return unknownError(error.message);\n\t\treturn unknownError(defaultMessage);\n\t}\n\n\tprivate handleApiStatus<T extends { rsStatus: RsStatus }>(\n\t\toutput: T,\n\t): Result<T, AvesError> {\n\t\tconst { rsStatus } = output;\n\t\tif (rsStatus?.status !== \"OK\")\n\t\t\treturn err(\n\t\t\t\tapiError(\n\t\t\t\t\trsStatus.errorDescription ?? \"\",\n\t\t\t\t\trsStatus.status,\n\t\t\t\t\trsStatus.errorCode,\n\t\t\t\t),\n\t\t\t);\n\t\treturn ok(output);\n\t}\n\n\tasync request<T extends { rsStatus: RsStatus }>(\n\t\tendpoint: string,\n\t\trequestBody: Record<string, unknown>,\n\t\tresponseRootKey: string,\n\t\tresponseSchema: BaseSchema<unknown, T, BaseIssue<unknown>>,\n\t): Promise<Result<T, AvesError>> {\n\t\tconst { signal, clear } = createTimeoutSignal(\n\t\t\tthis.options.timeoutMs ?? 30_000,\n\t\t);\n\n\t\ttry {\n\t\t\tconst response = await r(parseUrl(this.options.baseURL, endpoint), {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: { \"Content-Type\": \"application/xml\" },\n\t\t\t\tbody: jsonToXml(requestBody),\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\tconst responseText = await response.body.text();\n\t\t\tif (!isOk(response.statusCode))\n\t\t\t\treturn err(apiError(responseText, \"ERROR\", response.statusCode));\n\n\t\t\tconst rootElement = xmlToJson(responseText)[responseRootKey];\n\t\t\tif (!rootElement)\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response structure: missing root element '${responseRootKey}'`,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\tconst parseResult = safeParse(responseSchema, rootElement);\n\t\t\tif (!parseResult.success)\n\t\t\t\treturn err(\n\t\t\t\t\tvalidationError(\n\t\t\t\t\t\t`Invalid response format: ${buildDetails(parseResult.issues)}`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\treturn this.handleApiStatus(parseResult.output);\n\t\t} catch (error) {\n\t\t\tif (isAbortError(error))\n\t\t\t\treturn err(apiError(\"Request timed out\", \"TIMEOUT\"));\n\t\t\treturn err(this.toAvesError(error, \"Unknown error occurred\"));\n\t\t} finally {\n\t\t\tclear?.();\n\t\t}\n\t}\n\n\t/** Validate → wrap RqHeader → POST → parse response. */\n\tasync invokeOp<\n\t\tTIn,\n\t\tTApiBody extends Record<string, unknown>,\n\t\tTOut extends { rsStatus: RsStatus },\n\t>(opts: {\n\t\top: string;\n\t\tparams: TIn;\n\t\tapiSchema: BaseSchema<TIn, TApiBody, BaseIssue<unknown>>;\n\t\tendpoint: string;\n\t\trequestRoot: XMLRootElementValues;\n\t\tresponseRoot: string;\n\t\tresponseSchema: BaseSchema<unknown, TOut, BaseIssue<unknown>>;\n\t\t/** Nest parsed body under this key instead of spreading at RQ root. */\n\t\tbodyKey?: string;\n\t}): Promise<Result<TOut, AvesError>> {\n\t\ttry {\n\t\t\tconst apiBody = parse(opts.apiSchema, opts.params);\n\t\t\tconst payload = opts.bodyKey ? { [opts.bodyKey]: apiBody } : apiBody;\n\t\t\treturn this.request(\n\t\t\t\topts.endpoint,\n\t\t\t\tcreateRootElement(opts.requestRoot, {\n\t\t\t\t\tRqHeader: this.createRqHeader(),\n\t\t\t\t\t...payload,\n\t\t\t\t}),\n\t\t\t\topts.responseRoot,\n\t\t\t\topts.responseSchema,\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treturn err(\n\t\t\t\tthis.toAvesError(error, `Validation error occurred during ${opts.op}`),\n\t\t\t);\n\t\t}\n\t}\n}\n","import type { FlatAliasHost } from \"./types.js\";\n\nconst DOMAINS = [\"master\", \"booking\", \"packages\"] as const;\n\n/** Bind domain prototype methods onto the facade as flat compat aliases. */\nexport function attachFlatAliases(client: FlatAliasHost): void {\n\tfor (const ns of DOMAINS) {\n\t\tconst domain = client[ns];\n\t\tconst proto = Object.getPrototypeOf(domain) as object;\n\t\tfor (const key of Object.getOwnPropertyNames(proto)) {\n\t\t\tif (key === \"constructor\" || key in client) continue;\n\t\t\tconst value: (...args: never[]) => unknown =\n\t\t\t\tObject.getOwnPropertyDescriptor(proto, key)?.value;\n\t\t\tif (typeof value !== \"function\") continue;\n\t\t\tObject.defineProperty(client, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value.bind(domain),\n\t\t\t});\n\t\t}\n\t}\n}\n","import { BookingClient } from \"./client/booking.js\";\nimport { attachFlatAliases } from \"./client/flat-aliases.js\";\nimport { MasterRecordsClient } from \"./client/master-records.js\";\nimport { PackageCatalogClient } from \"./client/packages.js\";\nimport { AvesTransport } from \"./client/transport.js\";\nimport type { AvesClientDeps, AvesClientFlat } from \"./client/types.js\";\nimport type { AvesClientOptions } from \"./types.js\";\n\nexport type { AvesClientDeps, AvesClientFlat } from \"./client/types.js\";\n\n/**\n * AVES XML REST API client — facade over domain clients (DI-friendly).\n *\n * Canonical: `client.booking.createBooking(...)`, `client.master.search(...)`\n * Flat compat aliases are bound automatically from domain prototypes.\n */\nclass AvesClientBase {\n\treadonly transport: AvesTransport;\n\treadonly master: MasterRecordsClient;\n\treadonly booking: BookingClient;\n\treadonly packages: PackageCatalogClient;\n\n\tconstructor(options: AvesClientOptions, deps: AvesClientDeps = {}) {\n\t\tthis.transport = deps.transport ?? new AvesTransport(options);\n\t\tthis.master = deps.master ?? new MasterRecordsClient(this.transport);\n\t\tthis.booking = deps.booking ?? new BookingClient(this.transport);\n\t\tthis.packages = deps.packages ?? new PackageCatalogClient(this.transport);\n\t\tattachFlatAliases(this);\n\t}\n}\n\nexport type AvesClient = AvesClientBase & AvesClientFlat;\n\nexport const AvesClient: {\n\tnew (options: AvesClientOptions, deps?: AvesClientDeps): AvesClient;\n} = AvesClientBase as {\n\tnew (options: AvesClientOptions, deps?: AvesClientDeps): AvesClient;\n};\n"],"mappings":"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"}
|