import {z} from 'zod' export type Cadence = {type: 'INTERVAL' | 'INTERVAL_COUNT' | 'DAY_OF_MONTH' | 'CUSTOM', timeUnit?: ('SECOND' | 'MINUTE' | 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR') | undefined, frequency?: number | undefined, dayOfMonth?: number | undefined, dates?: Array | undefined, startDate: string, endDate?: string | undefined, count?: number | undefined}; export type PreviewInvoiceInstalmentPlanRequest = {cadence: Cadence, totalAmount?: number | undefined}; export type CreateApiInvoicesInvoiceIdInstalmentsPreviewArgs = {invoiceId: string, body: PreviewInvoiceInstalmentPlanRequest}; export type CreateApiInvoicesInvoiceIdInstalmentsPreviewOptions = {baseUrl?: string | undefined, BillerAccessTokenStaging?: string | undefined, fetch?: typeof fetch | undefined}; export const person = z.object({id: z.string().optional(), firstName: z.string().optional(), lastName: z.string().optional(), email: z.string().optional(), phoneNo: z.string().optional(), isPrimaryContact: z.boolean().optional(), isIncludedInCommunications: z.boolean().optional(), validForEmailCommunication: z.boolean().optional(), validForPhoneCommunication: z.boolean().optional()}); export const address = z.object({city: z.string().min(1).max(5000), postalCode: z.string().min(1).max(5000), country: z.string().min(2).max(2), addressLine1: z.string().min(1).max(5000), addressLine2: z.string().max(5000).optional(), region: z.string().max(5000).optional()}); export const paymentDetails = z.discriminatedUnion("type", [z.object({type: z.string(), bankName: z.string().optional(), sortCode: z.string().optional(), accountNo: z.string().optional()}), z.object({type: z.string(), bankName: z.string().optional(), iban: z.string().optional(), bic: z.string().optional()})]); export const directDebitMandateSummary = z.object({id: z.string().optional(), status: z.enum(["CREATED", "PENDING", "ACTIVE", "PENDING_CANCELLATION", "CANCELLED", "MIGRATING"]).optional(), statusReasonCode: z.enum(["PENDING_DD_CAPABILITY", "PENDING_ACTIVATION", "MIGRATED", "BANK_ACCOUNT_CHANGED", "INCORRECT_BANK_DETAILS", "INSTRUCTION_CANCELLED_BY_PAYER", "PAYER_DECEASED", "ACCOUNT_TRANSFERRED", "ADVANCE_NOTICE_DISPUTED", "AMOUNT_DISPUTED", "MANDATE_NOT_FOUND", "DISPUTE_TOO_EARLY", "DISPUTE_TOO_LATE", "INVALID_SORT_CODE", "INVALID_ACC_NUMBER", "ACCOUNT_CLOSED", "CANCELLED_ON_DEMAND", "REINSTATED", "MIGRATION_TIMEOUT", "DISCARDED_BY_BILLER", "ACCEPTED_ON_CREATION", "DEBIT_NOT_AUTHORIZED", "DEACTIVATED_BY_PAYMENT_PROVIDER", "OTHER"]).optional(), statusReason: z.string().optional(), creationTime: z.string().optional(), lastUpdatedTime: z.string().optional(), authorisationTime: z.string().optional(), submissionTime: z.string().optional(), url: z.string().optional(), bankAccountNumber: z.string().optional(), personId: z.string().optional(), distributionTime: z.string().optional(), lastNotificationSentTime: z.string().optional(), scheme: z.enum(["BACS", "SEPA_CORE"]).optional(), paymentDetails: paymentDetails.optional()}); export const customerBankAccountAddress = z.object({city: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional(), addressLine1: z.string().optional(), addressLine2: z.string().optional(), region: z.string().optional()}); export const bankAccount = z.object({accountNumber: z.string().optional(), sortCode: z.string().optional()}); export const customerBankAccount = z.object({accountHolderAddress: customerBankAccountAddress.optional(), accountHolderName: z.string(), bankAccount: bankAccount, bankAddress: customerBankAccountAddress.optional(), currencyCode: z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWD"])}); export const customerDiscount = z.object({percentage: z.number().optional(), period: z.number().int().optional()}); export const customerExternalData = z.object({connectorType: z.enum(["XERO", "QUICKBOOKS"]), id: z.string().min(1), name: z.string().optional()}); export const customerPaymentSettingsResponse = z.object({allowPartialPayments: z.boolean().optional(), minPartialPaymentAmount: z.number().optional(), surchargeIsEnabled: z.boolean().optional(), lateFeesIsEnabled: z.boolean().optional()}); export const customerSettingsResponse = z.object({paymentSettings: customerPaymentSettingsResponse.optional()}); export const catalogueExternalDataRequest = z.object({connectorType: z.enum(["XERO", "QUICKBOOKS", "PLATFORM"]).optional(), externalId: z.string().optional()}); export const trackingItemCatalogueResponse: z.ZodType = z.object({id: z.string().optional(), name: z.string().optional(), externalData: z.array(catalogueExternalDataRequest).optional(), items: z.array(z.lazy(() => trackingItemCatalogueResponse)).optional()}); export const invoiceOfficeDetailsResponse = z.object({email: z.string().optional(), addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), country: z.string().optional(), postcode: z.string().optional()}); export const invoiceOfficeResponse = z.object({id: z.string().optional(), name: z.string().optional(), trackingItemId: z.string().optional(), details: invoiceOfficeDetailsResponse.optional()}); export const customerResponse = z.object({id: z.string().optional(), externalId: z.string().optional(), name: z.string().optional(), creationTime: z.string().optional(), lastUpdatedTime: z.string().optional(), people: z.array(person).optional(), addresses: z.array(address).optional(), directDebitMandate: directDebitMandateSummary.optional(), billerBankAccount: customerBankAccount.optional(), timezone: z.string().optional(), discount: customerDiscount.optional(), externalData: z.array(customerExternalData).optional(), tags: z.array(z.string()).optional(), status: z.enum(["ACTIVE", "ARCHIVED"]).optional(), statusReasonCode: z.enum(["MERGED", "ARCHIVED_MANUALLY"]).optional(), settings: customerSettingsResponse.optional(), trackingItems: z.array(trackingItemCatalogueResponse).optional(), office: invoiceOfficeResponse.optional(), collectionAgentId: z.string().optional()}); export const cadence = z.object({type: z.enum(["INTERVAL", "INTERVAL_COUNT", "DAY_OF_MONTH", "CUSTOM"]), timeUnit: z.enum(["SECOND", "MINUTE", "HOUR", "DAY", "WEEK", "MONTH", "YEAR"]).optional(), frequency: z.number().int().gte(1).optional(), dayOfMonth: z.number().int().optional(), dates: z.array(z.string()).optional(), startDate: z.string(), endDate: z.string().optional(), count: z.number().int().gte(2).lte(120).optional()}); export const instalmentPlanDetails = z.object({cadence: cadence}); export const taxDetailsResponse = z.object({id: z.string().optional(), rate: z.number().optional()}); export const accountDetailsResponse = z.object({id: z.string().optional(), code: z.string().optional()}); export const productDetailsResponse = z.object({id: z.string().optional(), code: z.string().optional()}); export const lineItemExternalData = z.object({id: z.string().optional(), connectorType: z.enum(["XERO", "QUICKBOOKS", "PLATFORM"]).optional(), templateId: z.string().optional(), accountCode: z.string().optional(), groupLineId: z.string().optional()}); export const trackingItemDetailsResponse = z.object({id: z.string().optional(), name: z.string().optional()}); export const lineItemResponse = z.object({id: z.string().optional(), description: z.string().optional(), quantity: z.number().optional(), unitAmount: z.number().optional(), taxRate: z.number().optional(), taxAmount: z.number().optional(), totalAmount: z.number().optional(), taxDetails: taxDetailsResponse.optional(), accountDetails: accountDetailsResponse.optional(), productDetails: productDetailsResponse.optional(), externalData: z.array(lineItemExternalData).optional(), trackingItems: z.array(trackingItemDetailsResponse).optional()}); export const feeItemResponse = z.object({id: z.string().optional(), type: z.enum(["DAILY_INTEREST", "FIXED_FEE", "WAIVER"]).optional(), description: z.string().optional(), amount: z.number().optional(), dueAmount: z.number().optional()}); export const feeResponse = z.object({id: z.string().optional(), amount: z.number().optional(), dueAmount: z.number().optional(), type: z.literal("LATE_FEE").optional(), effectiveDate: z.string().optional(), items: z.array(feeItemResponse).optional()}); export const advance = z.object({customerId: z.string(), amount: z.number(), currencyCode: z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWD"])}); export const splitDetails = z.object({billerAmount: z.number().optional(), surchargeAmount: z.number().optional(), fixedLateFeeAmount: z.number().optional()}); export const prAllocation = z.object({prId: z.string().optional(), amount: z.number().optional(), currencyCode: z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWD"]).optional(), splitDetails: splitDetails.optional()}); export const feeItemDetail = z.object({amount: z.number().optional(), type: z.enum(["DAILY_INTEREST", "FIXED_FEE", "WAIVER"]).optional()}); export const feeDetails = z.object({amount: z.number().optional(), applicationMethod: z.enum(["SURCHARGE", "LATE_FEE"]).optional(), items: z.array(feeItemDetail).optional()}); export const paymentExternalData = z.object({connectorType: z.enum(["XERO", "QUICKBOOKS", "PLATFORM"]).optional(), id: z.string().optional()}); export const chargedCardResponse = z.object({brand: z.string().optional(), funding: z.string().optional(), lastFour: z.string().optional(), holderName: z.string().optional(), isBusinessCard: z.boolean()}); export const paymentAllocationResponse = z.object({id: z.string(), paymentId: z.string(), paymentRequestId: z.string(), creationTime: z.string(), lastUpdatedTime: z.string().optional(), advance: advance.optional(), prAllocations: z.array(prAllocation).optional(), amount: z.number(), feeDetails: feeDetails.optional(), fees: z.array(feeDetails).optional(), status: z.enum(["PENDING", "SUBMITTED", "SENT", "SUCCESS", "CANCELLED", "FAILED", "SETTLED"]), receiptNo: z.string().optional(), paymentMethod: z.enum(["BANK_PAYMENT", "CARD", "APPLE_PAY", "GOOGLE_PAY", "DIRECT_DEBIT", "IMPORTED", "MANUAL_BANK_TRANSFER", "BANK_TRANSFER", "AMEX"]), channelPaymentId: z.string(), channelPaymentUrl: z.string().optional(), channelReferenceId: z.string().optional(), externalData: z.array(paymentExternalData).optional(), paymentSource: z.enum(["PAYMENT_LINK", "GENERIC_PAYMENT_LINK", "PAYMENT_OVER_PHONE", "POS"]).optional(), cardOnFileId: z.string().optional(), chargedCard: chargedCardResponse.optional(), metadata: z.unknown()}); export const discountDetails = z.object({totalAmount: z.number().optional(), expirationDate: z.string().optional()}); export const paymentLinkDetails = z.object({url: z.string().optional(), lastSeenTime: z.string().optional()}); export const distributionDetails = z.object({collectionMethod: z.enum(["ONE_TIME_PAYMENT", "DIRECT_DEBIT_PAYMENT", "NONE"]).optional(), customMessage: z.string().optional(), templateId: z.string().optional()}); export const customField = z.object({fieldId: z.string().optional(), fieldValueId: z.string().optional()}); export const paymentRequestDetails = z.object({id: z.string().optional(), paymentRequestNo: z.string().optional(), description: z.string().optional(), totalAmount: z.number().optional(), principalAmount: z.number().optional(), paidAmount: z.number().optional(), currencyCode: z.enum(["AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYR", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GGP", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HRK", "HTG", "HUF", "IDR", "ILS", "IMP", "INR", "IQD", "IRR", "ISK", "JEP", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SPL", "SRD", "STD", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TVD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VEF", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWD"]).optional(), fees: z.array(feeResponse).optional(), payByDate: z.string().optional(), creationTime: z.string().optional(), lastNotificationSentTime: z.string().optional(), lastUpdatedTime: z.string().optional(), paidTime: z.string().optional(), paymentInitiationDate: z.string().optional(), chargeDate: z.string().optional(), payoutDate: z.string().optional(), distributionTime: z.string().optional(), status: z.enum(["DRAFT", "UNPAID", "OVERDUE", "SCHEDULED", "SUBMITTED", "PAID", "VOID", "SETTLED"]).optional(), statusReasonCode: z.enum(["MISSING_PAYER_CONTACT_DETAILS", "PENDING_ACTIVATION", "PENDING_DD_MANDATE", "PENDING_DD_CAPABILITY", "MARKED_AS_PAID", "WORKFLOW_COMPLETED", "NOTIFICATION_DELIVERY_FAILED", "BULK_PRUNE", "STALE_DRAFT_CLEANUP", "OTHER", "DIRECT_DEBIT_MANDATE_BANK_ACCOUNT_CHANGED", "HANDED_OVER_TO_BILLER"]).optional(), statusReason: z.string().optional(), reference: z.string().optional(), payments: z.array(paymentAllocationResponse).optional(), discounts: z.array(discountDetails).optional(), paymentLink: paymentLinkDetails.optional(), distribution: distributionDetails.optional(), workflowType: z.enum(["AUTO_COLLECT", "ON_DEMAND", "NONE"]).optional(), customFields: z.array(customField).optional()}); export const scheduleDetails = z.object({scheduleId: z.string(), scheduleNo: z.string(), type: z.literal("RECURRING").optional()}); export const creditNoteExternalData = z.object({connectorType: z.enum(["XERO", "QUICKBOOKS", "PLATFORM"]).optional(), id: z.string().optional()}); export const creditNoteResponse = z.object({id: z.string().optional(), number: z.string().optional(), amount: z.number().optional(), valueDate: z.string().optional(), externalData: z.array(creditNoteExternalData).optional()}); export const invoiceExternalData = z.object({connectorType: z.enum(["XERO", "QUICKBOOKS", "PLATFORM"]).optional(), id: z.string().optional(), brandingThemeId: z.string().optional(), bulkImported: z.boolean().optional()}); export const invoiceResponse = z.object({id: z.string().optional(), invoiceNo: z.string().optional(), description: z.string().optional(), totalAmount: z.string().optional(), taxAmount: z.string().optional(), dueAmount: z.string().optional(), creditNotesAmount: z.string().optional(), dueDate: z.string().optional(), issueDate: z.string().optional(), creationTime: z.string().optional(), lastUpdatedTime: z.string().optional(), paidTime: z.string().optional(), status: z.enum(["DRAFT", "UNPAID", "OVERDUE", "SCHEDULED", "SUBMITTED", "PAID", "VOID", "SETTLED"]).optional(), statusReasonCode: z.enum(["MISSING_PAYER_CONTACT_DETAILS", "PENDING_ACTIVATION", "PENDING_DD_MANDATE", "PENDING_DD_CAPABILITY", "MARKED_AS_PAID", "WORKFLOW_COMPLETED", "NOTIFICATION_DELIVERY_FAILED", "BULK_PRUNE", "STALE_DRAFT_CLEANUP", "OTHER", "DIRECT_DEBIT_MANDATE_BANK_ACCOUNT_CHANGED", "HANDED_OVER_TO_BILLER"]).optional(), statusReason: z.string().optional(), invoiceSource: z.enum(["FILE_UPLOAD", "MANUAL", "PR", "EXTERNAL", "SCHEDULE", "PLATFORM", "EMAIL"]).optional(), customer: customerResponse.optional(), itemsTaxType: z.enum(["EXCLUSIVE", "INCLUSIVE", "NONE"]).optional(), instalmentPlanDetails: instalmentPlanDetails.optional(), items: z.array(lineItemResponse).optional(), paymentRequests: z.array(paymentRequestDetails).optional(), scheduleDetails: scheduleDetails.optional(), creditNotes: z.array(creditNoteResponse).optional(), fileSource: z.enum(["NONE", "FILE_UPLOAD", "EMAIL", "EXTERNAL", "ADFIN", "PENDING_ADFIN"]).optional(), externalData: z.array(invoiceExternalData).optional(), creditControlStatus: z.enum(["AT_RISK", "EXPECTED", "CONFIRMED"]).optional(), workflowType: z.enum(["AUTO_COLLECT", "ON_DEMAND", "NONE"]).optional(), customFields: z.array(customField).optional(), office: invoiceOfficeResponse.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Preview instalment plan for an invoice * * POST /invoices/{invoiceId}/instalments/preview * * Also accepts auth: Biller Access Token (Production) */ export const createApiInvoicesInvoiceIdInstalmentsPreview = async (args: CreateApiInvoicesInvoiceIdInstalmentsPreviewArgs, options?: CreateApiInvoicesInvoiceIdInstalmentsPreviewOptions) => { const {baseUrl = "https://api.adfin.com/api", fetch: fetchFn = fetch, BillerAccessTokenStaging} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (BillerAccessTokenStaging !== undefined) headers.set('authorization', `Bearer ${BillerAccessTokenStaging}`) const url = `${baseUrl.replace(/\/+$/, '')}/invoices/${encodeURIComponent(String(args.invoiceId))}/instalments/preview${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(invoiceResponse, await res.json()) };