import {z} from 'zod' export type GetApiV1ReportsDownloadReportIdArgs = {'report-id': string}; export type GetApiV1ReportsDownloadReportIdOptions = {baseUrl?: string | undefined, Bearer?: string | undefined, fetch?: typeof fetch | undefined}; export const endToEndId = z.string().min(1).max(128); export const ripplenetPaymentId = z.string().min(1).max(128); export const senderAddress = z.string().min(1).max(128); export const senderCustomer = z.string().min(1).max(128); export const sentAmount = z.number(); export const sentCurrency = z.string().min(1).max(128); export const withdrawalResultAmount = z.number(); export const receiverAddress = z.string().min(1).max(128); export const receiverCustomer = z.string().min(1).max(128); export const receivedAmount = z.number(); export const receivedCurrency = z.string().min(1).max(128); export const fxSpotRate = z.number(); export const sourceExchange = z.string().min(1).max(128); export const destinationExchange = z.string().min(1).max(128); export const paymentMethod = z.string().min(1).max(128); export const paymentState = z.string().min(1).max(128); export const remitterName = z.string().min(1).max(128); export const remitterAccount = z.string().min(1).max(128); export const beneficiaryName = z.string().min(1).max(128); export const beneficiaryAccount = z.string().min(1).max(128); export const paymentBatchId = z.string().min(1).max(36); export const paymentOpsReportTransaction = z.object({end_to_end_id: endToEndId.optional(), ripplenet_payment_id: ripplenetPaymentId.optional(), quote_ts: z.string().optional(), created_at: z.string().optional(), executed_at: z.string().optional(), sender_address: senderAddress.optional(), sender_customer: senderCustomer.optional(), sent_amount: sentAmount.optional(), sent_currency: sentCurrency.optional(), withdrawal_result_amount: withdrawalResultAmount.optional(), receiver_address: receiverAddress.optional(), receiver_customer: receiverCustomer.optional(), received_amount: receivedAmount.optional(), received_currency: receivedCurrency.optional(), fx_spot_rate: fxSpotRate.optional(), source_exchange: sourceExchange.optional(), destination_exchange: destinationExchange.optional(), payment_method: paymentMethod.optional(), payment_state: paymentState.optional(), remitter_name: remitterName.optional(), remitter_account: remitterAccount.optional(), beneficiary_name: beneficiaryName.optional(), beneficiary_account: beneficiaryAccount.optional(), payment_batch_id: paymentBatchId.optional()}); export const internalPaymentState = z.string().min(1).max(128); export const transactionId = z.string().min(1).max(128); export const transactionType = z.string().min(1).max(128); export const transactionState = z.string().min(1).max(128); export const venueId = z.string().min(1).max(128); export const sourceResultAmount = z.number(); export const sourceResultAdjustedAmount = z.number(); export const sourceResultProceeds = z.number(); export const sourceResultAdjustedProceeds = z.number(); export const withdrawalResultId = z.string().min(1).max(128); export const withdrawalResultDetailsTransactionId = z.string().min(1).max(128); export const withdrawalResultFeeAmount = z.number(); export const withdrawalResultIncentiveValue = z.number(); export const depositResultId = z.string().min(1).max(128); export const depositResultAmount = z.number(); export const depositResultFeeAmount = z.number(); export const balanceChangeCurrency = z.string().min(1).max(128); export const balanceChange = z.number(); export const balanceResult = z.number(); export const destinationResultId = z.string().min(1).max(128); export const destinationResultAmount = z.number(); export const destinationResultAdjustedAmount = z.number(); export const destinationResultIncentiveValue = z.number(); export const destinationResultProceeds = z.number(); export const destinationResultAdjustedProceeds = z.number(); export const liquidationStatus = z.string().min(1).max(128); export const liquidationTradeRequestStatus = z.string().min(1).max(128); export const reconciliationReportTransaction = z.object({end_to_end_id: endToEndId.optional(), ripplenet_payment_id: ripplenetPaymentId.optional(), payment_state: paymentState.optional(), internal_payment_state: internalPaymentState.optional(), quote_ts: z.string().optional(), executed_at: z.string().optional(), sender_address: senderAddress.optional(), sender_customer: senderCustomer.optional(), sent_amount: sentAmount.optional(), sent_currency: sentCurrency.optional(), receiver_address: receiverAddress.optional(), receiver_customer: receiverCustomer.optional(), received_amount: receivedAmount.optional(), received_currency: receivedCurrency.optional(), fx_spot_rate: fxSpotRate.optional(), source_exchange: sourceExchange.optional(), destination_exchange: destinationExchange.optional(), payment_method: paymentMethod.optional(), transaction_id: transactionId.optional(), transaction_type: transactionType.optional(), transaction_state: transactionState.optional(), venue_id: venueId.optional(), source_result_amount: sourceResultAmount.optional(), source_result_adjusted_amount: sourceResultAdjustedAmount.optional(), source_result_proceeds: sourceResultProceeds.optional(), source_result_adjusted_proceeds: sourceResultAdjustedProceeds.optional(), withdrawal_result_id: withdrawalResultId.optional(), withdrawal_result_details_transaction_id: withdrawalResultDetailsTransactionId.optional(), withdrawal_result_amount: withdrawalResultAmount.optional(), withdrawal_result_fee_amount: withdrawalResultFeeAmount.optional(), withdrawal_result_incentive_value: withdrawalResultIncentiveValue.optional(), deposit_result_id: depositResultId.optional(), deposit_result_amount: depositResultAmount.optional(), deposit_result_fee_amount: depositResultFeeAmount.optional(), balance_change_currency: balanceChangeCurrency.optional(), balance_change: balanceChange.optional(), balance_result: balanceResult.optional(), destination_result_id: destinationResultId.optional(), destination_result_amount: destinationResultAmount.optional(), destination_result_adjusted_amount: destinationResultAdjustedAmount.optional(), destination_result_incentive_value: destinationResultIncentiveValue.optional(), destination_result_proceeds: destinationResultProceeds.optional(), destination_result_adjusted_proceeds: destinationResultAdjustedProceeds.optional(), liquidation_status: liquidationStatus.optional(), liquidation_trade_request_status: liquidationTradeRequestStatus.optional(), payment_batch_id: paymentBatchId.optional()}); export const executionResultType = z.string().min(1).max(128); export const fxRate = z.number(); export const intermediaryDelta = z.number(); export const transferCurrency = z.string().min(1).max(128); export const ssaAccount = z.string().min(1).max(128); export const ssaRemoteTransferId = z.string().min(1).max(128); export const ssaTransferAmount = z.number(); export const ssaBalanceChange = z.number(); export const ssaBalanceResult = z.number(); export const ssaTransferCurrency = z.string().min(1).max(128); export const ssaTransferState = z.string().min(1).max(128); export const failureConversionSsaTransaction = z.object({end_to_end_id: endToEndId.optional(), ripplenet_payment_id: ripplenetPaymentId.optional(), execution_result_type: executionResultType.optional(), execution_timestamp: z.string().optional(), fx_rate: fxRate.optional(), intermediary_delta: intermediaryDelta.optional(), payment_state: paymentState.optional(), sent_amount: sentAmount.optional(), sent_currency: sentCurrency.optional(), received_amount: receivedAmount.optional(), received_currency: receivedCurrency.optional(), transfer_currency: transferCurrency.optional(), venue_id: venueId.optional(), ssa_account: ssaAccount.optional(), sender_customer: senderCustomer.optional(), ssa_remote_transfer_id: ssaRemoteTransferId.optional(), ssa_transfer_amount: ssaTransferAmount.optional(), ssa_balance_change: ssaBalanceChange.optional(), ssa_balance_result: ssaBalanceResult.optional(), ssa_transfer_currency: ssaTransferCurrency.optional(), ssa_transfer_state: ssaTransferState.optional()}); export const getApiV1ReportsDownloadReportIdResponse = z.union([paymentOpsReportTransaction, reconciliationReportTransaction, failureConversionSsaTransaction]); 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 }; /** * Download a report * * GET /v1/reports/download/{report-id} */ export const getApiV1ReportsDownloadReportId = async (args: GetApiV1ReportsDownloadReportIdArgs, options?: GetApiV1ReportsDownloadReportIdOptions) => { const {baseUrl = "https://reporting-test.rnc.ripplenet.com", fetch: fetchFn = fetch, Bearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (Bearer !== undefined) headers.set('authorization', `Bearer ${Bearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/reports/download/${encodeURIComponent(String(args['report-id']))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiV1ReportsDownloadReportIdResponse, await res.json()) };