UNPKG

@aajsa/moyasar-client

Version:

A lightweight and type-safe TypeScript client for interacting with Moyasar Payment Gateway APIs.

175 lines (173 loc) 5.8 kB
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs'); const require_common = require('./common.cjs'); const zod_v4_mini = require_rolldown_runtime.__toESM(require("zod/v4-mini")); //#region src/schema/payout.ts const PayoutAccountTypeEnum = zod_v4_mini.z.enum(["bank", "wallet"]); const PayoutStatusEnum = zod_v4_mini.z.enum([ "queued", "initiated", "paid", "failed", "canceled", "returned" ]); const PayoutPurposeEnum = zod_v4_mini.z.enum([ "bills_or_rent", "expenses_services", "purchase_assets", "saving_investment", "government_dues", "money_exchange", "credit_card_loan", "gift_or_reward", "personal", "investment_transaction", "family_assistance", "donation", "payroll_benefits", "online_purchase", "hajj_and_umra", "dividend_payment", "government_payment", "investment_house", "payment_to_merchant", "own_account_transfer" ]); const PayoutChannelEnum = zod_v4_mini.z.enum([ "internal", "ips", "sarie" ]); const PayoutResponseSchema = zod_v4_mini.z.object({ id: zod_v4_mini.z.uuid(), source_id: zod_v4_mini.z.uuid(), sequence_number: zod_v4_mini.z.string().check(zod_v4_mini.z.maxLength(16)), channel: PayoutChannelEnum, status: PayoutStatusEnum, amount: zod_v4_mini.z.number(), currency: zod_v4_mini.z.string().check(zod_v4_mini.z.length(3)), purpose: PayoutPurposeEnum, comment: zod_v4_mini.z.string(), destination: zod_v4_mini.z.discriminatedUnion("type", [zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("bank"), iban: zod_v4_mini.z.string(), name: zod_v4_mini.z.string(), mobile: zod_v4_mini.z.string(), country: zod_v4_mini.z.string(), city: zod_v4_mini.z.string() }), zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("wallet"), mobile: zod_v4_mini.z.string() })]), message: zod_v4_mini.z.string(), failure_reason: zod_v4_mini.z.string(), created_at: zod_v4_mini.z.string(), updated_at: zod_v4_mini.z.string(), metadata: zod_v4_mini.z.nullish(zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())) }); const PayoutAccountResponseSchema = zod_v4_mini.z.object({ id: zod_v4_mini.z.uuid(), account_type: PayoutAccountTypeEnum, currency: zod_v4_mini.z.string().check(zod_v4_mini.z.length(3)), properties: zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string()), created_at: zod_v4_mini.z.string() }); const createPayoutSchema = zod_v4_mini.z.object({ source_id: zod_v4_mini.z.uuid(), sequence_number: zod_v4_mini.z.optional(zod_v4_mini.z.string().check(zod_v4_mini.z.length(16))), amount: zod_v4_mini.z.number().check(zod_v4_mini.z.positive()), purpose: PayoutPurposeEnum, destination: zod_v4_mini.z.discriminatedUnion("type", [zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("bank"), iban: zod_v4_mini.z.string(), name: zod_v4_mini.z.string(), mobile: zod_v4_mini.z.string(), country: zod_v4_mini.z.string(), city: zod_v4_mini.z.string() }), zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("wallet"), mobile: zod_v4_mini.z.string() })]), comment: zod_v4_mini.z.optional(zod_v4_mini.z.string()), metadata: zod_v4_mini.z.nullish(zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())) }); const createBulkPayoutsSchema = zod_v4_mini.z.object({ source_id: zod_v4_mini.z.uuid(), payouts: zod_v4_mini.z.array(zod_v4_mini.z.object({ sequence_number: zod_v4_mini.z.optional(zod_v4_mini.z.string().check(zod_v4_mini.z.length(16))), amount: zod_v4_mini.z.number().check(zod_v4_mini.z.positive()), purpose: PayoutPurposeEnum, destination: zod_v4_mini.z.discriminatedUnion("type", [zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("bank"), iban: zod_v4_mini.z.string(), name: zod_v4_mini.z.string(), mobile: zod_v4_mini.z.string(), country: zod_v4_mini.z.string(), city: zod_v4_mini.z.string() }), zod_v4_mini.z.object({ type: zod_v4_mini.z.literal("wallet"), mobile: zod_v4_mini.z.string() })]), comment: zod_v4_mini.z.optional(zod_v4_mini.z.string()), metadata: zod_v4_mini.z.optional(zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string())) })) }); const payoutAccountEndpoint = { getPayoutAccountId: { path: "/payout_accounts/:id", method: "GET", params: require_common.paramPathIdSchema, output: PayoutAccountResponseSchema }, listPayoutAccounts: { path: "/payout_accounts", method: "GET", query: zod_v4_mini.z.optional(zod_v4_mini.z.object({ page: zod_v4_mini.z.number() })), output: zod_v4_mini.z.object({ payout_accounts: zod_v4_mini.z.nullish(zod_v4_mini.z.array(PayoutAccountResponseSchema)), meta: require_common.MetaResponseSchema }) }, createPayoutAccount: { path: "/payout_accounts", method: "POST", input: zod_v4_mini.z.object({ account_type: PayoutAccountTypeEnum, properties: zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string()), credentials: zod_v4_mini.z.record(zod_v4_mini.z.string(), zod_v4_mini.z.string()) }), output: PayoutAccountResponseSchema } }; const payoutsEndpoints = { getPayoutId: { path: "/payout/:id", method: "GET", params: require_common.paramPathIdSchema, output: PayoutResponseSchema }, listPayouts: { path: "/payouts", method: "GET", query: zod_v4_mini.z.optional(zod_v4_mini.z.object({ page: zod_v4_mini.z.number() })), output: zod_v4_mini.z.object({ payouts: zod_v4_mini.z.nullish(zod_v4_mini.z.array(PayoutResponseSchema)), meta: require_common.MetaResponseSchema }) }, createPayout: { path: "/payouts", method: "POST", input: createPayoutSchema, output: PayoutResponseSchema }, createBulkPayout: { path: "/payout/bulk", method: "POST", input: createBulkPayoutsSchema, output: PayoutResponseSchema } }; //#endregion exports.payoutAccountEndpoint = payoutAccountEndpoint; exports.payoutsEndpoints = payoutsEndpoints;