import {z} from 'zod' export type CreateApiV1CustomersIdSubmitArgs = {'X-API-Key'?: string | undefined, id: string}; export type CreateApiV1CustomersIdSubmitOptions = {baseUrl?: string | undefined, bearer?: string | undefined, fetch?: typeof fetch | undefined}; export const customerCapabilityStateDto = z.object({capability: z.enum(["USD_ACH_PAYIN", "USD_ACH_PAYOUT", "USD_WIRE_PAYIN", "USD_WIRE_PAYOUT", "USD_BALANCE", "USD_YIELD", "SWIFT_PAYIN", "SWIFT_PAYOUT", "STABLECOIN_PAYIN", "STABLECOIN_PAYOUT", "STABLECOIN_SWAPS", "AED_FX_PAYOUT", "AUD_FX_PAYOUT", "BHD_FX_PAYOUT", "BOB_FX_PAYOUT", "BRL_FX_PAYOUT", "CLP_FX_PAYOUT", "CNY_FX_PAYOUT", "COP_FX_PAYOUT", "DOP_FX_PAYOUT", "EGP_FX_PAYOUT", "EUR_FX_PAYOUT", "GBP_FX_PAYOUT", "HKD_FX_PAYOUT", "IDR_FX_PAYOUT", "INR_FX_PAYOUT", "JPY_FX_PAYOUT", "KRW_FX_PAYOUT", "KWD_FX_PAYOUT", "MXN_FX_PAYOUT", "MYR_FX_PAYOUT", "PEN_FX_PAYOUT", "PHP_FX_PAYOUT", "PYG_FX_PAYOUT", "QAR_FX_PAYOUT", "SAR_FX_PAYOUT", "SGD_FX_PAYOUT", "THB_FX_PAYOUT", "TRY_FX_PAYOUT", "TWD_FX_PAYOUT", "USD_FX_PAYOUT", "VND_FX_PAYOUT"]), status: z.enum(["READY", "IN_REVIEW", "UNAVAILABLE"])}); export const individualDetailsDto = z.object({firstName: z.string().min(1).max(1024).optional(), lastName: z.string().min(1).max(1024).optional(), middleName: z.string().min(1).max(1024).optional(), transliteratedFirstName: z.string().min(1).max(256).optional(), transliteratedMiddleName: z.string().min(1).max(256).optional(), transliteratedLastName: z.string().min(1).max(256).optional(), dateOfBirth: z.string().optional(), nationality: z.string().optional(), taxResidenceCountry: z.string().optional(), phone: z.string().min(1).max(16).optional(), occupation: z.string().optional(), employmentStatus: z.enum(["EMPLOYED", "SELF_EMPLOYED", "UNEMPLOYED", "STUDENT", "RETIRED", "HOMEMAKER"]).optional(), sourceOfIncome: z.enum(["COMPANY_FUNDS", "ECOMMERCE_RESELLER", "GAMBLING_PROCEEDS", "GIFTS", "GOVERNMENT_BENEFITS", "INHERITANCE", "INVESTMENTS_LOANS", "PENSION_RETIREMENT", "SALARY", "SALE_OF_ASSETS_REAL_ESTATE", "SAVINGS", "SOMEONE_ELSES_FUNDS"]).optional(), sourceOfFundsDescription: z.string().optional()}); export const businessDetailsDto = z.object({businessName: z.string().min(1).max(1024).optional(), businessType: z.enum(["CORPORATION", "LLC", "PARTNERSHIP", "GEN_PARTNERSHIP", "LLP", "LP", "SOLE_PROPRIETORSHIP", "NON_PROFIT", "TRUST", "COOPERATIVE", "PRIVATE_LIMITED_COMPANY", "SPV", "JOINT_VENTURE"]).optional(), taxIdentificationNumber: z.string().min(1).max(50).optional(), website: z.string().min(1).max(512).optional(), industry: z.string().min(6).max(6).optional(), isCrypto: z.boolean().optional(), isRemoteCompany: z.boolean().optional(), industryCryptoSubtype: z.enum(["PROTOCOL", "EXCHANGE", "INVESTMENT", "LENDER", "MARKET_MAKER", "SAAS", "MINER"]).optional(), yearEstablished: z.number().gte(1800).optional(), numberOfEmployees: z.number().gte(0).optional(), tradeName: z.string().max(1024).optional(), description: z.string().min(20).max(2048).optional(), email: z.string().min(1).max(255).optional(), phone: z.string().min(1).max(16).optional(), registrationDate: z.string().optional(), registrationNumber: z.string().min(1).max(50).optional(), regulator: z.string().min(1).max(200).nullable().optional(), licenseNumber: z.string().min(1).max(100).nullable().optional(), hasMaterialIntermediaryOwnership: z.boolean().optional(), accountPurpose: z.enum(["PAYROLL", "VENDOR_PAYMENTS", "TREASURY", "OPERATIONS", "CAPITAL_DEPLOYMENT", "CROSS_BORDER_PAYMENTS", "STABLECOIN_CONVERSION", "ECOMMERCE", "OTHER"]).optional(), accountPurposeExplanation: z.string().min(1).max(2048).optional(), sourceOfFunds: z.enum(["BUSINESS_REVENUE", "INVESTMENT", "OWNER_CAPITAL", "LOAN", "GRANTS", "EQUITY", "INHERITANCE", "GIFT", "OTHER"]).optional(), sourceOfFundsDescription: z.string().min(1).max(2048).optional(), estimatedAnnualRevenueUsd: z.enum(["PRE_REVENUE", "LESS_THAN_10K", "10K_TO_50K", "50K_TO_100K", "100K_TO_500K", "500K_TO_1M", "1M_TO_5M", "5M_TO_10M", "10M_TO_50M", "50M_TO_250M", "MORE_THAN_250M", "LESS_THAN_100K"]).optional(), expectedMonthlyPaymentsUsd: z.number().gte(0).optional(), primaryTargetMarket: z.enum(["RETAIL", "COMMERCIAL", "GOVERNMENT", "OTHER"]).optional(), primaryTargetMarketExplanation: z.string().min(1).max(2048).optional(), operatesInProhibitedCountries: z.boolean().optional(), highRiskActivities: z.array(z.enum(["MONEY_SERVICES", "LENDING_BANKING", "OTC_FX_CRYPTO_BROKERAGE", "HOLD_CLIENT_FUNDS", "INVESTMENT_SERVICES", "SAFE_DEPOSIT_BOX", "PRECIOUS_METALS_STONES_JEWELRY", "NICOTINE_TOBACCO", "MARIJUANA", "PHARMACEUTICALS", "THIRD_PARTY_PAYMENT_PROCESSING", "ADULT_ENTERTAINMENT", "WEAPONS_FIREARMS_EXPLOSIVES", "GAMBLING"])).optional(), highRiskActivitiesExplanation: z.string().min(1).max(2048).optional(), signedAgreementId: z.string().min(1).max(256).optional()}); export const individualEntityDetailsDto = z.object({firstName: z.string().optional(), nickname: z.string().optional(), lastName: z.string().optional(), middleName: z.string().optional(), dateOfBirth: z.string().optional(), taxResidenceCountry: z.string().optional(), transliteratedFirstName: z.string().optional(), transliteratedMiddleName: z.string().optional(), transliteratedLastName: z.string().optional(), taxIdentificationDocumentType: z.string().optional()}); export const transliteratedAddressDto = z.object({addressLine1: z.string().min(1).max(1024).optional(), addressLine2: z.string().min(1).max(1024).optional(), city: z.string().min(1).max(256).optional(), state: z.string().min(1).max(256).optional()}); export const addressDto = z.object({addressLine1: z.string().min(1).max(1024), addressLine2: z.string().min(1).max(1024).optional(), city: z.string().min(1).max(256), state: z.string().min(1).max(256).optional(), postalCode: z.string().min(1).max(50), country: z.string().min(2).max(2), transliterated: transliteratedAddressDto.optional()}); export const businessEntityDetailsDto = z.object({businessName: z.string().optional(), registrationNumber: z.string().optional(), dateOfIncorporation: z.string().optional(), businessAddress: addressDto.optional()}); export const verificationLinkDto = z.object({sessionId: z.string(), verificationUrl: z.string(), expiresAt: z.string(), status: z.enum(["PENDING", "ACTIVE", "IN_PROGRESS", "COMPLETED", "EXPIRED", "CANCELLED", "SUBMITTED"])}); export const associatedEntityResponseDto = z.object({id: z.string(), createdAt: z.string(), updatedAt: z.string(), entityType: z.enum(["INDIVIDUAL", "BUSINESS"]), parentEntityId: z.string().optional(), details: z.union([individualEntityDetailsDto, businessEntityDetailsDto]).optional(), countryCode: z.string().optional(), email: z.string().optional(), phone: z.string().optional(), address: addressDto.optional(), hasOwnership: z.boolean(), hasControl: z.boolean(), ownershipPercentage: z.number().optional(), isSigner: z.boolean().optional(), isDirector: z.boolean().optional(), role: z.enum(["CEO", "CFO", "COO", "PRESIDENT", "GENERAL_COUNSEL", "MANAGING_MEMBER", "TREASURER", "OTHER"]).optional(), title: z.string().optional(), documents: z.array(z.string()).optional(), attestedOwnershipStructureAt: z.string().optional(), displayName: z.string().optional(), verificationLink: verificationLinkDto.optional()}); export const customerAddressDto = z.object({addressLine1: z.string().min(1).max(1024), addressLine2: z.string().min(1).max(1024).optional(), city: z.string().min(1).max(256), state: z.string().min(1).max(256).optional(), postalCode: z.string().min(1).max(50), country: z.string().min(2).max(2), transliterated: transliteratedAddressDto.optional(), label: z.enum(["REGISTERED", "OPERATIONAL", "US_REGISTERED", "HEADQUARTERS", "BILLING", "SHIPPING", "HOME", "OFFICE"]).optional(), isDefault: z.boolean().optional()}); export const missingComplianceRequirementDto = z.object({requirementType: z.enum(["FIELD", "DOCUMENT"]), key: z.string(), displayName: z.string(), entityId: z.string().optional(), entityDisplayName: z.string().optional()}); export const accountMetadataDto = z.object({nickname: z.string().max(256).optional(), purpose: z.string().max(512).optional(), tags: z.array(z.string()).optional()}); export const counterpartyResponseDto = z.object({id: z.string(), name: z.string(), beneficiaryType: z.enum(["INDIVIDUAL", "BUSINESS"]), address: addressDto.nullable().optional(), createdAt: z.string(), updatedAt: z.string()}); export const accountResponseDto: z.ZodType = z.object({id: z.string(), customerId: z.string(), type: z.enum(["VIRTUAL_BANK", "VIRTUAL_WALLET", "INFINITE_BANK", "INFINITE_WALLET", "EXTERNAL_BANK", "EXTERNAL_WALLET", "EXTERNAL_PROXY", "PROVIDER_BALANCE"]), externalReference: z.string().optional(), bankDetails: z.object({accountNumber: z.string().optional(), routingNumber: z.string().optional(), iban: z.string().optional(), swiftCode: z.string().optional(), bankName: z.string().optional(), bankCountryCode: z.string().optional(), bankAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).optional(), beneficiaryName: z.string().optional(), beneficiaryPhone: z.string().optional(), beneficiaryAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).optional(), supportedNetworks: z.array(z.string()).optional()}).optional(), walletDetails: z.object({walletAddress: z.string().optional(), addressType: z.enum(["EVM", "TRON", "BITCOIN", "SOLANA"]).optional(), chains: z.array(z.string()).optional(), walletType: z.enum(["TREASURY", "TRANSACTION", "VIRTUAL"]).optional(), sweepTargetAccountId: z.string().nullable().optional(), fixedRouteEnabled: z.boolean().optional()}).optional(), status: z.enum(["IN_REVIEW", "ACTIVE", "CLOSED"]), currencyCodes: z.array(z.string()).optional(), virtualBankAccount: z.object({id: z.string().optional(), depositInstructions: z.object({bankName: z.string().optional(), bankAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).nullable().optional(), accountNumber: z.string().optional(), routingNumber: z.string().optional(), iban: z.string().optional(), swiftBic: z.string().optional(), bankCountryCode: z.string().optional(), reference: z.string().optional(), depositMessage: z.string().optional(), beneficiaryName: z.string().optional(), beneficiaryAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).nullable().optional()}).optional(), depositInstructionsByRail: z.record(z.string(), z.object({bankName: z.string().optional(), bankAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).nullable().optional(), accountNumber: z.string().optional(), routingNumber: z.string().optional(), iban: z.string().optional(), swiftBic: z.string().optional(), bankCountryCode: z.string().optional(), reference: z.string().optional(), depositMessage: z.string().optional(), beneficiaryName: z.string().optional(), beneficiaryAddress: z.object({addressLine1: z.string().optional(), addressLine2: z.string().optional(), city: z.string().optional(), state: z.string().optional(), postalCode: z.string().optional(), country: z.string().optional()}).nullable().optional()})).optional(), developerFeeFixed: z.string().optional(), developerFeePercent: z.number().optional(), sourceRail: z.string().optional(), sourceCurrency: z.string().optional(), destinationRail: z.string().optional(), destinationCurrency: z.string().optional(), sweepTargetAccountId: z.string().optional(), originCapable: z.boolean().optional(), originAccountId: z.string().optional()}).optional(), virtualWallet: z.object({id: z.string().optional(), state: z.enum(["ACTIVE", "DEACTIVATED"]).optional(), destinationCurrency: z.string().optional(), destinationRail: z.string().optional(), sweepTargetAccountId: z.string().optional(), originCapable: z.boolean().optional(), originAccountId: z.string().optional()}).optional(), proxyDetails: z.object({aliasType: z.enum(["PHONE", "EMAIL", "NATIONAL_ID", "TAX_ID", "RANDOM", "CORPORATE_ID"]).optional(), aliasValue: z.string().optional(), paymentRail: z.string().optional(), beneficiaryName: z.string().optional(), beneficiaryType: z.enum(["INDIVIDUAL", "BUSINESS"]).optional()}).optional(), isThirdParty: z.boolean().optional(), counterpartyId: z.string().nullable().optional(), referenceId: z.string().optional(), originCapable: z.boolean().nullable().optional(), originAccountId: z.string().nullable().optional(), metadata: accountMetadataDto.optional(), createdAt: z.string(), updatedAt: z.string(), created: z.boolean().optional(), holdsBalance: z.boolean().optional(), paymentRail: z.string().optional(), lastSentAt: z.string().nullable().optional(), lastReceivedAt: z.string().nullable().optional(), customer: z.lazy(() => customerResponseDto.nullable().optional()), sweepTargetAccount: z.lazy(() => accountResponseDto.nullable().optional()), counterparty: counterpartyResponseDto.nullable().optional(), screeningStatus: z.string().nullable().optional()}); export const documentResponseDto = z.object({id: z.string(), organizationId: z.string(), customerId: z.string(), transferId: z.string().nullable().optional(), documentType: z.enum(["IDENTITY", "LIVENESS_CHECK", "PROOF_OF_ADDRESS", "INVOICE", "CONTRACT", "BANK_STATEMENT", "BUSINESS_LICENSE", "ARTICLES_OF_INCORPORATION", "ARTICLES_OF_ASSOCIATION", "CERTIFICATE_OF_FORMATION", "CERTIFICATE_OF_INCUMBENCY", "OPERATING_AGREEMENT", "PARTNERSHIP_AGREEMENT", "OWNERSHIP_STRUCTURE", "SHAREHOLDER_AGREEMENT", "STOCK_CERTIFICATE", "TAX_RETURN", "FINANCIAL_STATEMENT", "MARKETING_MATERIALS", "DOMAIN_OWNERSHIP_PROOF", "BUSINESS_PLAN", "BILL_OF_LADING", "AML_POLICY", "AML_COMFORT_LETTER", "FUNDS_FLOW_DIAGRAM", "GOOD_STANDING_CERTIFICATE", "TIN_VERIFICATION", "MSB_LICENSE", "DIRECTORS_REGISTRY", "OWNERSHIP_CHART", "PROOF_OF_SIGNATORY_AUTHORITY", "PROOF_OF_SOURCE_OF_FUNDS", "PROOF_OF_ENTITY_NAME_CHANGE", "REMOTE_ADDRESS_ATTESTATION", "E_SIGNATURE_CERTIFICATE", "COMPLIANCE_NOTES", "PROOF_OF_SOURCE_OF_WEALTH", "TAX_EXEMPT_ENTITY_CONFIRMATION", "OTHER"]), documentSubtype: z.string().optional(), fileName: z.string(), contentType: z.string(), sizeBytes: z.number(), remarks: z.string().nullable().optional(), fileHash: z.string().nullable().optional(), downloadUrl: z.string().optional(), status: z.enum(["PENDING", "UPLOADING", "UPLOADED", "FAILED"]), createdAt: z.string(), uploadedAt: z.string().nullable().optional(), associatedEntityId: z.string().nullable().optional()}); export const moneyOutputDto = z.object({currency: z.string(), exponent: z.number(), value: z.string(), displayValue: z.string()}); export const treasuryBalanceDto = z.object({available: moneyOutputDto, pending: moneyOutputDto.nullable().optional(), unallocated: moneyOutputDto.nullable().optional()}); export const treasuryFundingMethodDto = z.object({id: z.string(), type: z.enum(["BANK_ACCOUNT", "CRYPTO_ADDRESS"]), provider: z.enum(["BRALE", "BRIDGE", "CAPA", "CODEX", "DUE", "EREBOR", "INFINIA", "MANSA", "MESTA", "ONE_MONEY", "STABLES", "TURNKEY", "PRIVY", "INFINITE", "SOCURE", "SARDINE"]), currency: z.string().optional(), currencyCodes: z.array(z.string()).optional(), rail: z.string().optional(), rails: z.array(z.string()).optional(), bankName: z.string().optional(), beneficiaryName: z.string().optional(), accountNumber: z.string().optional(), routingNumber: z.string().optional(), iban: z.string().optional(), swiftBic: z.string().optional(), address: z.string().optional(), addressType: z.enum(["EVM", "TRON", "BITCOIN", "SOLANA"]).optional(), chains: z.array(z.enum(["ETHEREUM", "BASE", "POLYGON", "SOLANA", "TRON", "BITCOIN", "ARBITRUM", "ROBINHOOD"])).optional()}); export const walletTokenBalanceDto = z.object({currency: z.string(), balance: moneyOutputDto, chain: z.string()}); export const treasuryWalletDto = z.object({accountId: z.string(), address: z.string(), addressType: z.enum(["EVM", "TRON", "BITCOIN", "SOLANA"]), balances: z.array(walletTokenBalanceDto)}); export const treasuryDto = z.object({id: z.string(), name: z.string().nullable().optional(), provider: z.enum(["BRALE", "BRIDGE", "CAPA", "CODEX", "DUE", "EREBOR", "INFINIA", "MANSA", "MESTA", "ONE_MONEY", "STABLES", "TURNKEY", "PRIVY", "INFINITE", "SOCURE", "SARDINE"]).optional(), balances: z.record(z.string(), treasuryBalanceDto), fundingMethods: z.array(treasuryFundingMethodDto), wallets: z.array(treasuryWalletDto)}); export const customerTreasuryResponseDto = z.object({customerId: z.string(), treasuries: z.array(treasuryDto)}); export const customerVerificationSessionResponseDto = z.object({id: z.string(), status: z.string(), createdAt: z.string(), completedAt: z.string().nullable().optional(), progressPercentage: z.number().nullable().optional()}); export const customerResponseDto: z.ZodType = z.object({id: z.string(), customerName: z.string(), organizationId: z.string(), type: z.enum(["INDIVIDUAL", "BUSINESS"]), status: z.enum(["DRAFT", "IN_REVIEW", "NEED_ACTIONS", "REJECTED", "ACTIVE", "INACTIVE", "SUSPENDED"]), email: z.string().optional(), countryCode: z.enum(["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AR", "AS", "AT", "AU", "AW", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "EU", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SY", "SZ", "TC", "TD", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"]).optional(), imageUrl: z.string().optional(), requestedCapabilities: z.array(z.enum(["USD_ACH_PAYIN", "USD_ACH_PAYOUT", "USD_WIRE_PAYIN", "USD_WIRE_PAYOUT", "USD_BALANCE", "USD_YIELD", "SWIFT_PAYIN", "SWIFT_PAYOUT", "STABLECOIN_PAYIN", "STABLECOIN_PAYOUT", "STABLECOIN_SWAPS", "AED_FX_PAYOUT", "AUD_FX_PAYOUT", "BHD_FX_PAYOUT", "BOB_FX_PAYOUT", "BRL_FX_PAYOUT", "CLP_FX_PAYOUT", "CNY_FX_PAYOUT", "COP_FX_PAYOUT", "DOP_FX_PAYOUT", "EGP_FX_PAYOUT", "EUR_FX_PAYOUT", "GBP_FX_PAYOUT", "HKD_FX_PAYOUT", "IDR_FX_PAYOUT", "INR_FX_PAYOUT", "JPY_FX_PAYOUT", "KRW_FX_PAYOUT", "KWD_FX_PAYOUT", "MXN_FX_PAYOUT", "MYR_FX_PAYOUT", "PEN_FX_PAYOUT", "PHP_FX_PAYOUT", "PYG_FX_PAYOUT", "QAR_FX_PAYOUT", "SAR_FX_PAYOUT", "SGD_FX_PAYOUT", "THB_FX_PAYOUT", "TRY_FX_PAYOUT", "TWD_FX_PAYOUT", "USD_FX_PAYOUT", "VND_FX_PAYOUT"])).nullable().optional(), capabilities: z.array(customerCapabilityStateDto).optional(), createdAt: z.string(), updatedAt: z.string(), customerDetails: z.union([individualDetailsDto, businessDetailsDto]).optional(), associatedEntities: z.array(associatedEntityResponseDto).optional(), addresses: z.array(customerAddressDto).optional(), missingRequirements: z.array(missingComplianceRequirementDto).optional(), accounts: z.array(z.array(accountResponseDto)), documents: z.array(documentResponseDto).optional(), treasury: customerTreasuryResponseDto.optional(), verificationSessions: z.array(customerVerificationSessionResponseDto).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 }; /** * Submit customer for verification * * POST /v1/customers/{id}/submit */ export const createApiV1CustomersIdSubmit = async (args: CreateApiV1CustomersIdSubmitArgs, options?: CreateApiV1CustomersIdSubmitOptions) => { const {baseUrl = "https://sandbox.api.infinite.dev", fetch: fetchFn = fetch, bearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args['X-API-Key'] != null) headers.set("X-API-Key", String(args['X-API-Key'])) if (bearer !== undefined) headers.set('authorization', `Bearer ${bearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/customers/${encodeURIComponent(String(args.id))}/submit${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(customerResponseDto, await res.json()) };