@temboplus/tembo-dashboard 0.0.3 → 0.0.4

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/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("zod"),t=require("uuid"),r=require("@temboplus/frontend-core");function o(e){return e&&e.__esModule?e:{default:e}}var n,s,i,a=o(e);class c extends Error{constructor(e){super(e.message),this.name="ApiError",this.statusCode=e.statusCode,this.error&&(this.error=e.error),e.details&&(this.details=e.details)}static is(e){return c.schema.safeParse(e).success}static unknown(e){return new c({message:null!=e?e:"An unknown error occurred",statusCode:502})}static get schema(){return e.z.object({message:e.z.string(),statusCode:e.z.number().int(),error:e.z.string().optional(),details:e.z.object({}).optional()})}}exports.FilterOperator=void 0,(n=exports.FilterOperator||(exports.FilterOperator={})).EQUALS="eq",n.NOT_EQUALS="neq",n.LESS_THAN="lt",n.LESS_THAN_OR_EQUAL="lte",n.GREATER_THAN="gt",n.GREATER_THAN_OR_EQUAL="gte",n.LIKE="like",n.LIKE_LOWER="likeLower",n.IS_NULL="isNull",n.IS_NOT_NULL="isNotNull",n.IN="in",exports.SortDirection=void 0,(s=exports.SortDirection||(exports.SortDirection={})).ASC="asc",s.DESC="desc";const l=Symbol("query-builder-type");class u{constructor(e={}){this.options={filters:[],sort:[],includes:[],groupBy:[],join:[],count:"*",page:1,pageSize:8},this[i]="query-builder",this.options={filters:e.filters||[],sort:e.sort||[],includes:e.includes||[],groupBy:e.groupBy||[],join:e.join||[],page:e.page,pageSize:e.pageSize}}static is(e){return null!==e&&"object"==typeof e&&l in e&&"query-builder"===e[l]}addFilter(e){return this.options.filters=[...this.options.filters||[],e],this}where(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.EQUALS,value:t})}whereNot(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.NOT_EQUALS,value:t})}whereLike(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE,value:t})}whereLikeLower(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:t})}whereContains(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`%${t}%`})}whereStartsWith(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`${t}%`})}whereEndsWith(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`%${t}`})}whereIn(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.IN,value:t})}whereNull(e){return this.addFilter({field:e,operator:exports.FilterOperator.IS_NULL})}whereNotNull(e){return this.addFilter({field:e,operator:exports.FilterOperator.IS_NOT_NULL})}addSort(e){return this.options.sort=[...this.options.sort||[],e],this}orderBy(e,t=exports.SortDirection.ASC){return this.addSort({field:e,direction:t})}orderByAsc(e){return this.orderBy(e,exports.SortDirection.ASC)}orderByDesc(e){return this.orderBy(e,exports.SortDirection.DESC)}paginate(e,t){return this.options.page=e,this.options.pageSize=t,this}with(e){const t=Array.isArray(e)?e:[e];return this.options.includes=[...this.options.includes||[],...t],this}join(e){const t=Array.isArray(e)?e:[e];return this.options.join=[...this.options.join||[],...t],this}groupBy(e){const t=Array.isArray(e)?e:[e];return this.options.groupBy=[...this.options.groupBy||[],...t],this}count(e="*"){return this.options.count=e,this}countAs(e,t){return this.options.count=`${e} as ${t}`,this}build(){const e={};if(void 0!==this.options.page&&void 0!==this.options.pageSize){const t=(this.options.page-1)*this.options.pageSize,r=t+this.options.pageSize-1;e.rangeStart=t,e.rangeEnd=r}if(this.options.filters&&this.options.filters.length>0)for(const t of this.options.filters)switch(t.operator){case exports.FilterOperator.IS_NULL:e[`${t.field}:isNull`]=1;break;case exports.FilterOperator.IS_NOT_NULL:e[`${t.field}:notNull`]=1;break;case exports.FilterOperator.IN:e[`${t.field}:in`]=Array.isArray(t.value)?t.value.join(","):t.value;break;case exports.FilterOperator.LIKE:e[`${t.field}:like`]=t.value;break;default:e[`${t.field}:${t.operator}`]=t.value}if(this.options.sort&&this.options.sort.length>0){const t=this.options.sort.filter(e=>"asc"===e.direction).map(e=>e.field),r=this.options.sort.filter(e=>"desc"===e.direction).map(e=>e.field);t.length>0&&(e.orderBy=t.join(",")),r.length>0&&(e.orderByDesc=r.join(","))}return this.options.includes&&this.options.includes.length>0&&(1===this.options.includes.length?e.eager=this.options.includes[0]:e.eager=`[${this.options.includes.join(",")}]`),this.options.join&&this.options.join.length>0&&(e.join=this.options.join.join(",")),this.options.groupBy&&this.options.groupBy.length>0&&(e.groupBy=this.options.groupBy.join(",")),this.options.count&&(e.count=this.options.count),e}clone(){return new(0,this.constructor)(Object.assign({},this.options))}static create(e){return new u(e)}}i=l;const d=e=>"function"==typeof(null==e?void 0:e.passthrough);e.z.object({name:e.z.literal("ZodError"),issues:e.z.array(e.z.object({path:e.z.array(e.z.union([e.z.string(),e.z.number()])),message:e.z.string().optional(),code:e.z.nativeEnum(e.z.ZodIssueCode)}).catchall(e.z.any()))});const p=Symbol("ContractNoBody"),m=e=>"method"in e&&"path"in e,h=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>{var o,n,s,i,a;return m(r)?[e,{...r,path:(null==t?void 0:t.pathPrefix)?t.pathPrefix+r.path:r.path,headers:(i=null==t?void 0:t.baseHeaders,a=r.headers,d(i)?d(a)?i.merge(a):i:d(a)?a:Object.assign({},i,a)),strictStatusCodes:null!==(o=r.strictStatusCodes)&&void 0!==o?o:null==t?void 0:t.strictStatusCodes,validateResponseOnClient:null!==(n=r.validateResponseOnClient)&&void 0!==n?n:null==t?void 0:t.validateResponseOnClient,responses:{...null==t?void 0:t.commonResponses,...r.responses},metadata:(null==t?void 0:t.metadata)?{...null==t?void 0:t.metadata,...null!==(s=r.metadata)&&void 0!==s?s:{}}:r.metadata}]:[e,h(r,t)]})),A=Symbol("ContractPlainType"),y=()=>({router:(e,t)=>h(e,t),query:e=>e,mutation:e=>e,responses:e=>e,response:()=>A,body:()=>A,type:()=>A,otherResponse:({contentType:e,body:t})=>({contentType:e,body:t}),noBody:()=>p}),g=e=>e?Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>{let r;return r="string"==typeof t&&!["true","false","null"].includes(t.trim())&&isNaN(Number(t))?t:JSON.stringify(t),`${encodeURIComponent(e)}=${encodeURIComponent(r)}`}).join("&"):"",f=e=>e?Object.keys(e).flatMap(t=>T(t,e[t])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&"):"",T=(e,t)=>Array.isArray(t)?t.flatMap((t,r)=>T(`${e}[${r}]`,t)):t instanceof Date?[[`${e}`,t.toISOString()]]:null===t?[[`${e}`,""]]:void 0===t?[]:"object"==typeof t?Object.keys(t).flatMap(r=>T(`${e}[${r}]`,t[r])):[[`${e}`,`${t}`]];class E extends Error{constructor(e,t){super(`Server returned unexpected response. Expected one of: ${t.join(",")} got: ${e.status}`),this.response=e}}const C=async({route:e,path:t,method:r,headers:o,body:n,validateResponse:s,fetchOptions:i})=>{const a=await fetch(t,{...i,method:r,headers:o,body:n}),c=a.headers.get("content-type");if((null==c?void 0:c.includes("application/"))&&(null==c?void 0:c.includes("json"))){const t={status:a.status,body:await a.json(),headers:a.headers},r=e.responses[t.status];return(null!=s?s:e.validateResponseOnClient)&&"function"==typeof(null==(l=r)?void 0:l.safeParse)?{...t,body:r.parse(t.body)}:t}var l;return(null==c?void 0:c.includes("text/"))?{status:a.status,body:await a.text(),headers:a.headers}:{status:a.status,body:await a.blob(),headers:a.headers}},v=e=>{const t=new FormData,r=(e,r)=>{r instanceof File?t.append(e,r):t.append(e,JSON.stringify(r))};return Object.entries(e).forEach(([e,t])=>{if(Array.isArray(t))for(const o of t)r(e,o);else r(e,t)}),t},N=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLowerCase(),t])),I=(e,t,r,o,n)=>{const s=(({path:e,params:t})=>{const r=t;return e.replace(/\/?:([^/?]+)\??/g,(e,t)=>r[t]?`${e.startsWith("/")?"/":""}${r[t]}`:"")})({path:o.path,params:r}),i=((e,t=!1)=>{const r=t?g(e):f(e);return(null==r?void 0:r.length)>0?"?"+r:""})(e,n);return`${t}${s}${i}`},O=(e,t)=>{const r=Object.keys(e.responses);return async o=>{const n=((e,t,r)=>{const{query:o,params:n,body:s,headers:i,extraHeaders:a,overrideClientOptions:c,fetchOptions:l,cache:u,next:d,...p}=r||{},m={...t,...c};return{path:I(o,m.baseUrl,n,e,!!m.jsonQuery),clientArgs:m,route:e,body:s,query:o,extraInputArgs:p,fetchOptions:{...u&&{cache:u},...d&&{next:d},...l},headers:{...a,...i}}})(e,t,o),s=await(e=>{const{path:t,clientArgs:r,route:o,body:n,query:s,extraInputArgs:i,headers:a,fetchOptions:c}=e,l=r.api||C,u=r.baseHeaders&&Object.fromEntries(Object.entries(r.baseHeaders).map(([t,r])=>"function"==typeof r?[t,r(e)]:[t,r])),d={...u&&N(u),...N(a)};Object.keys(d).forEach(e=>{void 0===d[e]&&delete d[e]});let p={route:o,path:t,method:o.method,headers:d,body:void 0,rawBody:n,rawQuery:s,contentType:void 0,validateResponse:r.validateResponse,fetchOptions:{...r.credentials&&{credentials:r.credentials},...c},...(null==c?void 0:c.signal)&&{signal:c.signal},...(null==c?void 0:c.cache)&&{cache:c.cache},...c&&"next"in c&&!!(null==c?void 0:c.next)&&{next:c.next}};return"GET"!==o.method&&("contentType"in o&&"multipart/form-data"===o.contentType?p={...p,contentType:"multipart/form-data",body:n instanceof FormData?n:v(n)}:"contentType"in o&&"application/x-www-form-urlencoded"===o.contentType?p={...p,contentType:"application/x-www-form-urlencoded",headers:{"content-type":"application/x-www-form-urlencoded",...p.headers},body:"string"==typeof n?n:new URLSearchParams(n)}:null!=n&&(p={...p,contentType:"application/json",headers:{"content-type":"application/json",...p.headers},body:JSON.stringify(n)})),l({...p,...i})})(n);if(!t.throwOnUnknownStatus)return s;if(r.includes(s.status.toString()))return s;throw new E(s,r)}},b=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>m(r)?[e,O(r,t)]:[e,b(r,t)]));class S{constructor(e,t,r){this.contract=t,this.endpoint=e,this.root=null==r?void 0:r.root,this.token=null==r?void 0:r.token}getToken(){return this.token&&this.token.trim().length>0?this.token:""}get client(){const e=this.root?this.root.replace(/\/+$/,""):"",r=this.endpoint?this.endpoint.replace(/^\/+/,""):"",o={baseUrl:e?`${e}/${r}`:`https://gateway.temboplus.com/dashboard/${r}`,baseHeaders:{Authorization:`Bearer ${this.getToken()}`,"x-request-id":t.v4()}};return b(this.contract,o)}setToken(e){this.token=e}getCurrentToken(){return this.token}handleResponse(e,t){if(e.status===t)return e.body;if(400===e.status){const t=a.default.object({statusCode:a.default.number(),message:a.default.string(),error:a.default.string(),details:a.default.record(a.default.string()).optional()}).safeParse(e.body);if(t.success)throw new c(t.data);throw new c({message:"Bad request",statusCode:400,error:"BAD_REQUEST"})}if(401===e.status)throw new c({message:"You are not authenticated to perform this action. Please login again",statusCode:401,error:"UNAUTHORIZED"});if(403===e.status)throw new c({message:"You are not authorized to perform this action.",statusCode:403,error:"FORBIDDEN"});if(404===e.status)throw new c({message:"The requested resource was not found.",statusCode:404,error:"NOT_FOUND"});throw new c({message:"We encountered an error trying to process your request. Please try again later",statusCode:520,error:"UNKNOWN_ERROR"})}}const w=a.default.object({page:a.default.number().int().positive(),limit:a.default.number().int().positive(),total:a.default.number().int().min(0),totalPages:a.default.number().int().min(0),hasNext:a.default.boolean(),hasPrev:a.default.boolean()}),_=a.default.object({balance:a.default.number(),availableBalance:a.default.number(),accountNumber:a.default.string(),accountName:a.default.string()}),x={pagination:w,transactionSummary:a.default.object({yesterday:a.default.number(),today:a.default.number(),thisMonth:a.default.number(),lastMonth:a.default.number()}),accountSummary:_},z={user:e.z.object({token:e.z.string(),identity:e.z.string(),name:e.z.string()}),loginRequest:e.z.object({type:e.z.string().default("password"),identity:e.z.string().email(),password:e.z.string()})},L=y().router({login:{method:"POST",path:"/auth/login",body:z.loginRequest,responses:{201:z.user,400:e.z.object({message:e.z.string().optional()}),401:e.z.object({message:e.z.string().optional()})},summary:"User login",description:"Authenticate user with email and password"}});class P{constructor(e){this.token=e.token,this.identity=e.identity,this.name=e.name}hasToken(){return!!this.token&&this.token.length>0}getDisplayName(){return this.name||this.identity}isEmailIdentity(){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.identity)}static from(e){try{return(null==e?void 0:e.token)&&(null==e?void 0:e.identity)&&(null==e?void 0:e.name)?new P(e):void console.error("Missing required User fields:",e)}catch(e){return void console.error("Error creating User:",e)}}static fromJson(e){try{if(!(null==e?void 0:e.token)||!(null==e?void 0:e.identity)||!(null==e?void 0:e.name))return void console.error("Missing required User JSON fields:",e);const t={token:e.token,identity:e.identity,name:e.name};return new P(t)}catch(e){return void console.error("Error creating User from JSON:",e)}}toJson(){return{token:this.token,identity:this.identity,name:this.name}}}var R,F;exports.COLLECTION_STATUS=void 0,(R=exports.COLLECTION_STATUS||(exports.COLLECTION_STATUS={})).PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",R.GENERIC_FAILURE="GENERIC_FAILURE",R.PAYMENT_REJECTED="PAYMENT_REJECTED",R.PENDING_ACK="PENDING_ACK",exports.COLLECTION_CHANNEL=void 0,(F=exports.COLLECTION_CHANNEL||(exports.COLLECTION_CHANNEL={})).AIRTEL="TZ-AIRTEL-C2B",F.TIGO="TZ-TIGO-C2B",F.HALOTEL="TZ-HALOTEL-C2B";const U=e.z.nativeEnum(exports.COLLECTION_STATUS),D=e.z.nativeEnum(exports.COLLECTION_CHANNEL),M=e.z.object({balance:e.z.number(),availableBalance:e.z.number(),accountNumber:e.z.string(),accountName:e.z.string()}),B={collection:e.z.object({id:e.z.string().min(1),status:U,statusMessage:e.z.string(),accountNo:e.z.string().min(1),walletId:e.z.string(),transactionDate:e.z.string().datetime(),narration:e.z.string(),msisdn:e.z.string().min(1),channel:D,amount:e.z.number().min(0),serviceFee:e.z.string().optional(),postedAmount:e.z.string().optional(),reference:e.z.string(),partnerReference:e.z.string().nullable().optional(),transactionId:e.z.string().nullable().optional(),serviceFeeTransactionId:e.z.string().nullable().optional(),requestId:e.z.string().nullable().optional(),completedAt:e.z.string().datetime().nullable().optional(),createdAt:e.z.string().datetime(),updatedAt:e.z.string().datetime(),notes:e.z.string().optional(),currencyCode:e.z.string().default("TZS")}),collectionQueryParams:e.z.object({page:e.z.number().int().positive().default(1),limit:e.z.number().int().positive().max(100).default(20),sortBy:e.z.enum(["transactionDate","amount","status","createdAt"]).default("createdAt"),sortOrder:e.z.enum(["asc","desc"]).default("desc"),startDate:e.z.string().datetime().optional(),endDate:e.z.string().datetime().optional(),msisdn:e.z.string().optional(),id:e.z.string().optional(),reference:e.z.string().optional(),accountNo:e.z.string().optional(),partnerReference:e.z.string().optional(),channel:D.optional(),status:U.optional(),minAmount:e.z.number().min(0).optional(),maxAmount:e.z.number().min(0).optional(),search:e.z.string().optional()}),pagination:x.pagination,paymentStatus:U,paymentChannel:D,accountSummary:M},j=y().router({getCollections:{method:"GET",path:"/",query:e.z.object({}),responses:{200:e.z.object({data:e.z.array(B.collection),total:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"List collections",description:"Retrieve a paginated list of collections with optional filtering"},getCollection:{method:"GET",path:"/:id",pathParams:e.z.object({id:e.z.string()}),responses:{200:B.collection,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()}),404:e.z.object({message:e.z.string().optional()})},summary:"Get collection details",description:"Retrieve detailed information about a specific collection"},getSummary:{method:"GET",path:"/summary",responses:{200:e.z.object({yesterday:e.z.number(),today:e.z.number(),thisMonth:e.z.number(),lastMonth:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get collections summary",description:"Retrieve collection summary statistics for different time periods"},getBalance:{method:"GET",path:"/balance",responses:{200:B.accountSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and summary information"}}),k={[exports.COLLECTION_STATUS.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment received successfully"},[exports.COLLECTION_STATUS.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[exports.COLLECTION_STATUS.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Please try again"},[exports.COLLECTION_STATUS.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred during payment processing",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"}},Y={[exports.COLLECTION_CHANNEL.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money",type:"mobile"},[exports.COLLECTION_CHANNEL.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa",type:"mobile"},[exports.COLLECTION_CHANNEL.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa",type:"mobile"}};class J{constructor(e){var t,o,n;let s="TZS";r.CurrencyValidation.isCurrencyCode(e.currencyCode)&&(s=e.currencyCode),this.id=e.id,this.status=e.status,this.statusMessage=e.statusMessage,this.accountNo=e.accountNo,this.walletId=e.walletId,this.transactionDate=new Date(e.transactionDate),this.narration=e.narration,this.msisdn=e.msisdn,this.channel=e.channel,this.amount=null!==(t=r.Amount.from(e.amount,s))&&void 0!==t?t:r.Amount.from(0,s),this.serviceFee=e.serviceFee?null!==(o=r.Amount.from(parseFloat(e.serviceFee),s))&&void 0!==o?o:r.Amount.from(0,s):void 0,this.postedAmount=e.postedAmount?null!==(n=r.Amount.from(parseFloat(e.postedAmount),s))&&void 0!==n?n:r.Amount.from(0,s):void 0,this.reference=e.reference,this.partnerReference=e.partnerReference,this.transactionId=e.transactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.requestId=e.requestId,this.completedAt=e.completedAt?new Date(e.completedAt):null,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.notes=e.notes,this.currencyCode=e.currencyCode}isPending(){return this.status===exports.COLLECTION_STATUS.PENDING_ACK}isSuccessful(){return this.status===exports.COLLECTION_STATUS.PAYMENT_ACCEPTED}isFailed(){return Object.entries(k).filter(([e,t])=>"failed"===t.category).map(([e])=>e).includes(this.status)}getStatusInfo(){return k[this.status]}getChannelInfo(){return Y[this.channel]}getProviderName(){return this.getChannelInfo().networkOperator}getServiceName(){return this.getChannelInfo().serviceName}isMobileCollection(){return e=this.channel,"mobile"===Y[e].type;var e}isBankCollection(){return e=this.channel,"bank"===Y[e].type;var e}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new J(e):void console.error("Missing required Collection fields:",e)}catch(e){return void console.error("Error creating Collection:",e)}}static createMany(e){return e.map(e=>J.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Collection JSON fields:",e);if(!r.Amount.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!r.Amount.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!r.Amount.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=r.Amount.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let o,n;if(e.serviceFee){const t=r.Amount.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);o=t.numericValue.toString()}if(e.postedAmount){const t=r.Amount.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);n=t.numericValue.toString()}const s={id:e.id,status:e.status,statusMessage:e.statusMessage,accountNo:e.accountNo,walletId:e.walletId,transactionDate:e.transactionDate,narration:e.narration,msisdn:e.msisdn,channel:e.channel,amount:t.numericValue,serviceFee:o,postedAmount:n,reference:e.reference,partnerReference:e.partnerReference,transactionId:e.transactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,requestId:e.requestId,completedAt:e.completedAt,createdAt:e.createdAt,updatedAt:e.updatedAt,notes:e.notes,currencyCode:e.currencyCode};return new J(s)}catch(e){return void console.error("Error creating Collection from JSON:",e)}}static createManyFromJson(e){return e.map(e=>J.fromJson(e)).filter(Boolean)}toJson(){var e,t,r,o;return{id:this.id,status:this.status,statusMessage:this.statusMessage,accountNo:this.accountNo,walletId:this.walletId,transactionDate:this.transactionDate.toISOString(),narration:this.narration,msisdn:this.msisdn,channel:this.channel,amount:this.amount.toJson(),serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),reference:this.reference,partnerReference:this.partnerReference,transactionId:this.transactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,requestId:this.requestId,completedAt:null!==(o=null===(r=this.completedAt)||void 0===r?void 0:r.toISOString())&&void 0!==o?o:null,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),notes:this.notes,currencyCode:this.currencyCode}}}class H extends u{whereStatus(e){return this.where("status",e)}whereChannel(e){return this.where("channel",e)}wherePending(){return this.where("status",exports.COLLECTION_STATUS.PENDING_ACK)}whereSuccessful(){return this.where("status",exports.COLLECTION_STATUS.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("status",[exports.COLLECTION_STATUS.PAYMENT_REJECTED,exports.COLLECTION_STATUS.GENERIC_FAILURE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:exports.FilterOperator.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:exports.FilterOperator.LESS_THAN_OR_EQUAL,value:t})}whereSender(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereAccount(e){return this.whereLikeLower("accountNo",`%${e}%`)}whereReference(e){return this.whereLikeLower("reference",`%${e}%`)}wherePartnerReference(e){return this.whereLikeLower("partnerReference",`%${e}%`)}toCollectionQuery(){const e=this.build();return{page:e.page||1,limit:e.limit||10,sortBy:e.sortBy||"createdAt",sortOrder:e.sortOrder||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,reference:e.reference,accountNo:e.accountNo,partnerReference:e.partnerReference,channel:e.channel,status:e.status,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}}var G,$;exports.PAYOUT_STATUS=void 0,(G=exports.PAYOUT_STATUS||(exports.PAYOUT_STATUS={})).PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",G.GENERIC_FAILURE="GENERIC_FAILURE",G.WALLET_DEBITED="WALLET_DEBITED",G.PAYMENT_REJECTED="PAYMENT_REJECTED",G.PENDING="PENDING",G.AMOUNT_EXCEED_MAXIMUM="AMOUNT_EXCEED_MAXIMUM",G.PENDING_ACK="PENDING_ACK",G.REVERSED="REVERSED",G.INVALID_SERVICE="INVALID_SERVICE",G.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",G.THIRDPARTY_FAILED="THIRDPARTY_FAILED",exports.MOBILE_PAYOUT_CHANNEL=void 0,($=exports.MOBILE_PAYOUT_CHANNEL||(exports.MOBILE_PAYOUT_CHANNEL={})).AIRTEL="TZ-AIRTEL-B2C",$.VODACOM="TZ-VODACOM-B2C",$.TIGO="TZ-TIGO-B2C",$.HALOTEL="TZ-HALOTEL-B2C",exports.BANK_PAYOUT_CHANNEL=void 0,(exports.BANK_PAYOUT_CHANNEL||(exports.BANK_PAYOUT_CHANNEL={})).BANK="TZ-BANK-B2C";const q=e.z.nativeEnum(exports.PAYOUT_STATUS),V=e.z.nativeEnum(exports.MOBILE_PAYOUT_CHANNEL),K=e.z.nativeEnum(exports.BANK_PAYOUT_CHANNEL),Q=e.z.union([V,K]),W={payout:e.z.object({id:e.z.string().min(1),statusCode:e.z.string(),statusCodeText:q,statusDescription:e.z.string(),countryCode:e.z.string(),serviceCode:Q,amount:e.z.number().min(0),serviceFee:e.z.string().optional(),postedAmount:e.z.string().optional(),walletId:e.z.string().optional(),msisdn:e.z.string().min(1),narration:e.z.string(),currencyCode:e.z.string(),recipientNames:e.z.string().optional(),transactionRef:e.z.string(),transactionDate:e.z.string().datetime(),externalId:e.z.string().nullable().optional(),cbaReferenceNo:e.z.string().optional(),beepTransactionId:e.z.string().optional(),receiptNumber:e.z.string().optional(),createdAt:e.z.string().datetime(),reversedTransactionId:e.z.string().nullable().optional(),transactionId:e.z.string(),serviceFeeTransactionId:e.z.string().optional(),isReconciled:e.z.number().optional(),requestId:e.z.string().optional(),notes:e.z.string().optional(),updatedAt:e.z.string().datetime().optional()}),payoutQueryParams:e.z.object({page:e.z.number().int().positive().default(1),limit:e.z.number().int().positive().max(100).default(20),sortBy:e.z.enum(["transactionDate","amount","statusCodeText","createdAt"]).default("createdAt"),sortOrder:e.z.enum(["asc","desc"]).default("desc"),startDate:e.z.string().datetime().optional(),endDate:e.z.string().datetime().optional(),msisdn:e.z.string().optional(),id:e.z.string().optional(),ref:e.z.string().optional(),channel:Q.optional(),status:q.optional(),minAmount:e.z.number().min(0).optional(),maxAmount:e.z.number().min(0).optional(),search:e.z.string().optional()}),pagination:x.pagination,payoutStatus:q,payoutChannel:Q,mobileChannel:V,bankChannel:K},Z=y().router({getPayouts:{method:"GET",path:"",query:W.payoutQueryParams,responses:{200:e.z.object({data:e.z.array(W.payout),total:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"List payouts",description:"Retrieve a paginated list of payouts with optional filtering"},getPayout:{method:"GET",path:"/:id",pathParams:e.z.object({id:e.z.string()}),responses:{200:W.payout,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()}),404:e.z.object({message:e.z.string().optional()})},summary:"Get payout details",description:"Retrieve detailed information about a specific payout"},getPayoutSummary:{method:"GET",path:"/summary",responses:{200:x.transactionSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get payout summary",description:"Retrieve payout statistics including yesterday, today, this month, and last month totals"},getBalance:{method:"GET",path:"/balance",responses:{200:x.accountSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and status information"}}),X={[exports.PAYOUT_STATUS.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment completed successfully"},[exports.PAYOUT_STATUS.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[exports.PAYOUT_STATUS.PENDING]:{label:"Pending",description:"Payment is being processed",category:"pending",color:"warning",userFriendlyMessage:"Payment is in progress"},[exports.PAYOUT_STATUS.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Check payment details and try again"},[exports.PAYOUT_STATUS.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"},[exports.PAYOUT_STATUS.INSUFFICIENT_BALANCE]:{label:"Insufficient Balance",description:"Insufficient funds are available to process the payment",category:"failed",color:"error",userFriendlyMessage:"Insufficient funds to complete the payment"},[exports.PAYOUT_STATUS.THIRDPARTY_FAILED]:{label:"Service Provider Error",description:"There was an error with the third-party service provider",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to service provider issue"},[exports.PAYOUT_STATUS.AMOUNT_EXCEED_MAXIMUM]:{label:"Amount Exceeds Limit",description:"Payment amount exceeds the maximum allowed limit",category:"failed",color:"error",userFriendlyMessage:"Payment amount exceeds the allowed limit"},[exports.PAYOUT_STATUS.WALLET_DEBITED]:{label:"Wallet Debited",description:"Wallet has been debited but payment is not yet complete",category:"failed",color:"error",userFriendlyMessage:"Payment incomplete - wallet debited but recipient may not have received funds"},[exports.PAYOUT_STATUS.REVERSED]:{label:"Payment Reversed",description:"Payment has been reversed and funds returned",category:"failed",color:"error",userFriendlyMessage:"Payment was reversed and funds have been returned"},[exports.PAYOUT_STATUS.INVALID_SERVICE]:{label:"Invalid Service",description:"The requested payment service is not valid or available",category:"failed",color:"error",userFriendlyMessage:"Selected payment service is not available"}},ee={[exports.MOBILE_PAYOUT_CHANNEL.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money"},[exports.MOBILE_PAYOUT_CHANNEL.VODACOM]:{networkOperator:"Vodacom",serviceName:"M-Pesa"},[exports.MOBILE_PAYOUT_CHANNEL.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa"},[exports.MOBILE_PAYOUT_CHANNEL.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa"}};function te(e){return Object.values(exports.MOBILE_PAYOUT_CHANNEL).includes(e)}function re(e){return e===exports.BANK_PAYOUT_CHANNEL.BANK}function oe(){return Object.entries(X).filter(([e,t])=>"failed"===t.category).map(([e])=>e)}class ne{constructor(e){var t,o;let n="TZS";r.CurrencyValidation.isCurrencyCode(e.currencyCode)&&(n=e.currencyCode),this.id=e.id,this.serviceCode=e.serviceCode,this.msisdn=e.msisdn,this.amount=null!==(t=r.Amount.from(e.amount,n))&&void 0!==t?t:r.Amount.from(0,n),this.transactionDate=new Date(e.transactionDate),this.statusDescription=e.statusDescription,this.statusCodeText=e.statusCodeText,this.transactionId=e.transactionId,this.transactionRef=e.transactionRef,this.recipientNames=e.recipientNames,this.narration=e.narration,this.serviceFee=void 0===e.serviceFee?void 0:null!==(o=r.Amount.from(e.serviceFee,n))&&void 0!==o?o:r.Amount.from(0,n),this.notes=e.notes,this.swiftCode=e.swiftCode,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.statusCode=e.statusCode,this.countryCode=e.countryCode,this.postedAmount=e.postedAmount?r.Amount.from(parseFloat(e.postedAmount),n):void 0,this.walletId=e.walletId,this.currencyCode=e.currencyCode,this.externalId=e.externalId,this.cbaReferenceNo=e.cbaReferenceNo,this.beepTransactionId=e.beepTransactionId,this.receiptNumber=e.receiptNumber,this.reversedTransactionId=e.reversedTransactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.isReconciled=e.isReconciled,this.requestId=e.requestId}isPending(){return[exports.PAYOUT_STATUS.PENDING,exports.PAYOUT_STATUS.PENDING_ACK].includes(this.statusCodeText)}isSuccessful(){return this.statusCodeText===exports.PAYOUT_STATUS.PAYMENT_ACCEPTED}isFailed(){return oe().includes(this.statusCodeText)}getStatusInfo(){return X[this.statusCodeText]}getChannelInfo(){if(te(this.serviceCode))return ee[this.serviceCode];if(re(this.serviceCode)){const e=this.msisdn.split(":")[0];if(e&&r.BankValidation.validateSwiftCodeForAnyCountry(e)){const t=r.BankValidation.getCountryFromSwiftCode(e);if(t)try{return r.Bank.from(e,t)}catch(t){console.warn(`Failed to create Bank instance for SWIFT code ${e}:`,t)}}if(this.swiftCode&&r.BankValidation.validateSwiftCodeForAnyCountry(this.swiftCode)){const e=r.BankValidation.getCountryFromSwiftCode(this.swiftCode);if(e)try{return r.Bank.from(this.swiftCode,e)}catch(e){console.warn(`Failed to create Bank instance for SWIFT code ${this.swiftCode}:`,e)}}}}getProviderName(){const e=this.getChannelInfo();return te(this.serviceCode)&&e?e.networkOperator:r.Bank.is(e)?e.shortName:"Bank Transfer"}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new ne(e):void console.error("Missing required Payout fields:",e)}catch(e){return void console.error("Error creating Payout:",e)}}static createMany(e){return e.map(e=>ne.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Payout JSON fields:",e);if(!r.Amount.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!r.Amount.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!r.Amount.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=r.Amount.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let o,n;if(e.serviceFee){const t=r.Amount.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);o=t.numericValue}if(e.postedAmount){const t=r.Amount.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);n=t.numericValue.toString()}const s={id:e.id,serviceCode:e.serviceCode,msisdn:e.msisdn,amount:t.numericValue,transactionDate:e.transactionDate,statusDescription:e.statusDescription,statusCodeText:e.statusCodeText,transactionId:e.transactionId,transactionRef:e.transactionRef,recipientNames:e.recipientNames,narration:e.narration,serviceFee:o,notes:e.notes,swiftCode:e.swiftCode,createdAt:e.createdAt,updatedAt:e.updatedAt,statusCode:e.statusCode,countryCode:e.countryCode,postedAmount:n,walletId:e.walletId,currencyCode:e.currencyCode,externalId:e.externalId,cbaReferenceNo:e.cbaReferenceNo,beepTransactionId:e.beepTransactionId,receiptNumber:e.receiptNumber,reversedTransactionId:e.reversedTransactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,isReconciled:e.isReconciled,requestId:e.requestId};return new ne(s)}catch(e){return void console.error("Error creating Payout from JSON:",e)}}static createManyFromJson(e){return e.map(e=>ne.fromJson(e)).filter(Boolean)}toJson(){var e,t;return{id:this.id,serviceCode:this.serviceCode,msisdn:this.msisdn,amount:this.amount.toJson(),transactionDate:this.transactionDate.toISOString(),statusDescription:this.statusDescription,statusCodeText:this.statusCodeText,transactionId:this.transactionId,transactionRef:this.transactionRef,recipientNames:this.recipientNames,narration:this.narration,serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),notes:this.notes,swiftCode:this.swiftCode,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),statusCode:this.statusCode,countryCode:this.countryCode,postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),walletId:this.walletId,currencyCode:this.currencyCode,externalId:this.externalId,cbaReferenceNo:this.cbaReferenceNo,beepTransactionId:this.beepTransactionId,receiptNumber:this.receiptNumber,reversedTransactionId:this.reversedTransactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,isReconciled:this.isReconciled,requestId:this.requestId}}}class se extends u{whereStatus(e){return this.where("statusCodeText",e)}whereChannel(e){return this.where("serviceCode",e)}wherePending(){return this.whereIn("statusCodeText",[exports.PAYOUT_STATUS.PENDING,exports.PAYOUT_STATUS.PENDING_ACK])}whereSuccessful(){return this.where("statusCodeText",exports.PAYOUT_STATUS.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("statusCodeText",[exports.PAYOUT_STATUS.PAYMENT_REJECTED,exports.PAYOUT_STATUS.GENERIC_FAILURE,exports.PAYOUT_STATUS.AMOUNT_EXCEED_MAXIMUM,exports.PAYOUT_STATUS.INVALID_SERVICE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:exports.FilterOperator.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:exports.FilterOperator.LESS_THAN_OR_EQUAL,value:t})}whereRecipient(e){return this.whereLikeLower("msisdn",`%${e}%`)}toPayoutQuery(){const e=this.build();return{page:e.page||1,limit:e.limit||20,sortBy:e.sortBy||"createdAt",sortOrder:e.sortOrder||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,ref:e.ref,channel:e.channel,status:e.status,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}}class ie{constructor(e,t="TZS"){var o,n,s,i;this.currency=t,this.yesterday=null!==(o=r.Amount.from(e.yesterday,t))&&void 0!==o?o:r.Amount.from(0,t),this.today=null!==(n=r.Amount.from(e.today,t))&&void 0!==n?n:r.Amount.from(0,t),this.thisMonth=null!==(s=r.Amount.from(e.thisMonth,t))&&void 0!==s?s:r.Amount.from(0,t),this.lastMonth=null!==(i=r.Amount.from(e.lastMonth,t))&&void 0!==i?i:r.Amount.from(0,t)}getMonthlyGrowthRate(){return 0===this.lastMonth.numericValue?this.thisMonth.numericValue>0?100:0:(this.thisMonth.numericValue-this.lastMonth.numericValue)/this.lastMonth.numericValue*100}getRecentTotal(){return r.Amount.from(this.today.numericValue+this.yesterday.numericValue,this.currency)}static from(e,t="TZS"){return new ie(e,t)}}class ae{constructor(e){var t,o;let n="TZS";this.accountName=e.accountName,this.currency=n,this.availableBalance=null!==(t=r.Amount.from(e.availableBalance,n))&&void 0!==t?t:r.Amount.from(0,n),this.actualBalance=null!==(o=r.Amount.from(e.balance,n))&&void 0!==o?o:r.Amount.from(0,n)}hasSufficientBalance(e){return this.availableBalance.numericValue>=e}static from(e){return new ae(e)}}exports.APIError=c,exports.AuthDTOSchemas=z,exports.AuthRepository=class extends S{constructor(e){super("auth",L,e)}async login(e){const t={type:e.type||"password",identity:e.identity,password:e.password},r=await this.client.login({body:t}),o=this.handleResponse(r,201),n=P.from(o);if(!n)throw new Error("Invalid user data received from server");return n}},exports.BaseRepository=S,exports.CHANNEL_INFO=Y,exports.COLLECTION_STATUS_INFO=k,exports.Collection=J,exports.CollectionDTOSchemas=B,exports.CollectionQueryBuilder=H,exports.CollectionRepository=class extends S{constructor(e){super("collection",j,e)}async getCollections(e){const t=null==e?B.collectionQueryParams.parse({}):e,r=H.create(t).build(),o=await this.client.getCollections({query:r}),n=this.handleResponse(o,200),s={page:t.page,limit:t.limit,total:n.total,totalPages:n.total>0?Math.ceil(n.total/t.limit):0,hasNext:t.page*t.limit<n.total,hasPrev:t.page>1};return{collections:J.createMany(n.data),pagination:s}}async getCollection(e){const t=await this.client.getCollection({params:{id:e}}),r=this.handleResponse(t,200),o=J.from(r);if(!o)throw new Error("Invalid collection data received from server");return o}async getSummary(){const e=await this.client.getSummary();return this.handleResponse(e,200)}async getBalance(){const e=await this.client.getBalance();return this.handleResponse(e,200)}},exports.CommonSchemas=x,exports.MOBILE_CHANNEL_INFO=ee,exports.PAYOUT_STATUS_INFO=X,exports.Payout=ne,exports.PayoutDTOSchemas=W,exports.PayoutQueryBuilder=se,exports.PayoutRepository=class extends S{constructor(e){super("payout",Z,e)}async getPayouts(e){const t=null==e?W.payoutQueryParams.parse({}):e,r=se.create(t).build(),o=await this.client.getPayouts({query:r}),n=this.handleResponse(o,200),s={page:t.page,limit:t.limit,total:n.total,totalPages:n.total>0?Math.ceil(n.total/t.limit):0,hasNext:t.page*t.limit<n.total,hasPrev:t.page>1};return{payouts:ne.createMany(n.data),pagination:s}}async getPayout(e){const t=await this.client.getPayout({params:{id:e}}),r=this.handleResponse(t,200),o=ne.from(r);if(!o)throw new Error("Invalid payout data received from server");return o}async getPayoutSummary(){const e=await this.client.getPayoutSummary(),t=this.handleResponse(e,200);return ie.from(t)}async getAccountBalance(){const e=await this.client.getBalance(),t=this.handleResponse(e,200);return ae.from(t)}},exports.QUERY_BUILDER_TYPE=l,exports.QueryBuilder=u,exports.User=P,exports.accountSummarySchema=M,exports.authContract=L,exports.collectionContract=j,exports.getFailedStatuses=oe,exports.isBankChannel=re,exports.isMobileChannel=te,exports.payoutContract=Z;
1
+ "use strict";var e=require("zod"),t=require("uuid"),r=require("@temboplus/frontend-core");function o(e){return e&&e.__esModule?e:{default:e}}var s,n,i,a=o(e);class c extends Error{constructor(e){super(e.message),this.name="ApiError",this.statusCode=e.statusCode,this.error&&(this.error=e.error),e.details&&(this.details=e.details)}static is(e){return c.schema.safeParse(e).success}static unknown(e){return new c({message:null!=e?e:"An unknown error occurred",statusCode:502})}static get schema(){return e.z.object({message:e.z.string(),statusCode:e.z.number().int(),error:e.z.string().optional(),details:e.z.object({}).optional()})}}exports.FilterOperator=void 0,(s=exports.FilterOperator||(exports.FilterOperator={})).EQUALS="eq",s.NOT_EQUALS="neq",s.LESS_THAN="lt",s.LESS_THAN_OR_EQUAL="lte",s.GREATER_THAN="gt",s.GREATER_THAN_OR_EQUAL="gte",s.LIKE="like",s.LIKE_LOWER="likeLower",s.IS_NULL="isNull",s.IS_NOT_NULL="isNotNull",s.IN="in",exports.SortDirection=void 0,(n=exports.SortDirection||(exports.SortDirection={})).ASC="asc",n.DESC="desc";const l=Symbol("query-builder-type");class u{constructor(e={}){this.options={filters:[],sort:[],includes:[],groupBy:[],join:[],count:"*",page:1,limit:8},this[i]="query-builder",this.options={filters:e.filters||[],sort:e.sort||[],includes:e.includes||[],groupBy:e.groupBy||[],join:e.join||[],page:e.page,limit:e.limit}}static is(e){return null!==e&&"object"==typeof e&&l in e&&"query-builder"===e[l]}addFilter(e){return this.options.filters=[...this.options.filters||[],e],this}where(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.EQUALS,value:t})}whereNot(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.NOT_EQUALS,value:t})}whereLike(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE,value:t})}whereLikeLower(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:t})}whereContains(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`%${t}%`})}whereStartsWith(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`${t}%`})}whereEndsWith(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LIKE_LOWER,value:`%${t}`})}whereIn(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.IN,value:t})}whereNull(e){return this.addFilter({field:e,operator:exports.FilterOperator.IS_NULL})}whereNotNull(e){return this.addFilter({field:e,operator:exports.FilterOperator.IS_NOT_NULL})}whereGreaterThan(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.GREATER_THAN,value:t})}whereGreaterThanOrEqual(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.GREATER_THAN_OR_EQUAL,value:t})}whereLessThan(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LESS_THAN,value:t})}whereLessThanOrEqual(e,t){return this.addFilter({field:e,operator:exports.FilterOperator.LESS_THAN_OR_EQUAL,value:t})}whereBetween(e,t,r){return this.whereGreaterThanOrEqual(e,t).whereLessThanOrEqual(e,r)}whereDateBetween(e,t){return e&&this.whereGreaterThanOrEqual("createdAt",e),t&&this.whereLessThanOrEqual("createdAt",t),this}addSort(e){return this.options.sort=[...this.options.sort||[],e],this}orderBy(e,t=exports.SortDirection.ASC){return this.addSort({field:e,direction:t})}orderByAsc(e){return this.orderBy(e,exports.SortDirection.ASC)}orderByDesc(e){return this.orderBy(e,exports.SortDirection.DESC)}paginate(e,t){return this.options.page=e,this.options.limit=t,this}with(e){const t=Array.isArray(e)?e:[e];return this.options.includes=[...this.options.includes||[],...t],this}join(e){const t=Array.isArray(e)?e:[e];return this.options.join=[...this.options.join||[],...t],this}groupBy(e){const t=Array.isArray(e)?e:[e];return this.options.groupBy=[...this.options.groupBy||[],...t],this}count(e="*"){return this.options.count=e,this}countAs(e,t){return this.options.count=`${e} as ${t}`,this}build(){var e;const t={};if(void 0!==this.options.page&&void 0!==this.options.limit){const e=(this.options.page-1)*this.options.limit,r=e+this.options.limit-1;t.rangeStart=e,t.rangeEnd=r}if(this.options.filters&&this.options.filters.length>0)for(const e of this.options.filters)switch(e.operator){case exports.FilterOperator.IS_NULL:t[`${e.field}:isNull`]=1;break;case exports.FilterOperator.IS_NOT_NULL:t[`${e.field}:notNull`]=1;break;case exports.FilterOperator.IN:t[`${e.field}:in`]=Array.isArray(e.value)?e.value.join(","):e.value;break;case exports.FilterOperator.LIKE:t[`${e.field}:like`]=e.value;break;case exports.FilterOperator.LIKE_LOWER:t[`${e.field}:likeLower`]=e.value;break;case exports.FilterOperator.GREATER_THAN_OR_EQUAL:t[`${e.field}:gte`]=e.value;break;case exports.FilterOperator.LESS_THAN_OR_EQUAL:t[`${e.field}:lte`]=e.value;break;default:t[`${e.field}:${e.operator}`]=e.value}if(this.options.sort&&this.options.sort.length>0){const e=[],r=[];for(const t of this.options.sort)t.direction===exports.SortDirection.ASC?e.push(t.field):r.push(t.field);e.length>0&&(t.orderBy=e.join(",")),r.length>0&&(t.orderByDesc=r.join(","))}const r=null===(e=this.options.filters)||void 0===e?void 0:e.filter(e=>"createdAt"===e.field&&(e.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL||e.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL));if(r){const e=r.find(e=>e.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL),o=r.find(e=>e.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL);e&&(t.startDate=e.value),o&&(t.endDate=o.value)}return this.options.includes&&this.options.includes.length>0&&(1===this.options.includes.length?t.eager=this.options.includes[0]:t.eager=`[${this.options.includes.join(",")}]`),this.options.join&&this.options.join.length>0&&(t.join=this.options.join.join(",")),this.options.groupBy&&this.options.groupBy.length>0&&(t.groupBy=this.options.groupBy.join(",")),this.options.count&&(t.count=this.options.count),t}clone(){return new(0,this.constructor)(Object.assign(Object.assign({},this.options),{filters:this.options.filters?[...this.options.filters]:[],sort:this.options.sort?[...this.options.sort]:[],includes:this.options.includes?[...this.options.includes]:[],groupBy:this.options.groupBy?[...this.options.groupBy]:[],join:this.options.join?[...this.options.join]:[]}))}static create(e){return new u(e)}}i=l;const d=e=>"function"==typeof(null==e?void 0:e.passthrough);e.z.object({name:e.z.literal("ZodError"),issues:e.z.array(e.z.object({path:e.z.array(e.z.union([e.z.string(),e.z.number()])),message:e.z.string().optional(),code:e.z.nativeEnum(e.z.ZodIssueCode)}).catchall(e.z.any()))});const p=Symbol("ContractNoBody"),m=e=>"method"in e&&"path"in e,h=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>{var o,s,n,i,a;return m(r)?[e,{...r,path:(null==t?void 0:t.pathPrefix)?t.pathPrefix+r.path:r.path,headers:(i=null==t?void 0:t.baseHeaders,a=r.headers,d(i)?d(a)?i.merge(a):i:d(a)?a:Object.assign({},i,a)),strictStatusCodes:null!==(o=r.strictStatusCodes)&&void 0!==o?o:null==t?void 0:t.strictStatusCodes,validateResponseOnClient:null!==(s=r.validateResponseOnClient)&&void 0!==s?s:null==t?void 0:t.validateResponseOnClient,responses:{...null==t?void 0:t.commonResponses,...r.responses},metadata:(null==t?void 0:t.metadata)?{...null==t?void 0:t.metadata,...null!==(n=r.metadata)&&void 0!==n?n:{}}:r.metadata}]:[e,h(r,t)]})),A=Symbol("ContractPlainType"),f=()=>({router:(e,t)=>h(e,t),query:e=>e,mutation:e=>e,responses:e=>e,response:()=>A,body:()=>A,type:()=>A,otherResponse:({contentType:e,body:t})=>({contentType:e,body:t}),noBody:()=>p}),T=e=>e?Object.entries(e).filter(([,e])=>void 0!==e).map(([e,t])=>{let r;return r="string"==typeof t&&!["true","false","null"].includes(t.trim())&&isNaN(Number(t))?t:JSON.stringify(t),`${encodeURIComponent(e)}=${encodeURIComponent(r)}`}).join("&"):"",y=e=>e?Object.keys(e).flatMap(t=>g(t,e[t])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&"):"",g=(e,t)=>Array.isArray(t)?t.flatMap((t,r)=>g(`${e}[${r}]`,t)):t instanceof Date?[[`${e}`,t.toISOString()]]:null===t?[[`${e}`,""]]:void 0===t?[]:"object"==typeof t?Object.keys(t).flatMap(r=>g(`${e}[${r}]`,t[r])):[[`${e}`,`${t}`]];class E extends Error{constructor(e,t){super(`Server returned unexpected response. Expected one of: ${t.join(",")} got: ${e.status}`),this.response=e}}const v=async({route:e,path:t,method:r,headers:o,body:s,validateResponse:n,fetchOptions:i})=>{const a=await fetch(t,{...i,method:r,headers:o,body:s}),c=a.headers.get("content-type");if((null==c?void 0:c.includes("application/"))&&(null==c?void 0:c.includes("json"))){const t={status:a.status,body:await a.json(),headers:a.headers},r=e.responses[t.status];return(null!=n?n:e.validateResponseOnClient)&&"function"==typeof(null==(l=r)?void 0:l.safeParse)?{...t,body:r.parse(t.body)}:t}var l;return(null==c?void 0:c.includes("text/"))?{status:a.status,body:await a.text(),headers:a.headers}:{status:a.status,body:await a.blob(),headers:a.headers}},O=e=>{const t=new FormData,r=(e,r)=>{r instanceof File?t.append(e,r):t.append(e,JSON.stringify(r))};return Object.entries(e).forEach(([e,t])=>{if(Array.isArray(t))for(const o of t)r(e,o);else r(e,t)}),t},C=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLowerCase(),t])),N=(e,t,r,o,s)=>{const n=(({path:e,params:t})=>{const r=t;return e.replace(/\/?:([^/?]+)\??/g,(e,t)=>r[t]?`${e.startsWith("/")?"/":""}${r[t]}`:"")})({path:o.path,params:r}),i=((e,t=!1)=>{const r=t?T(e):y(e);return(null==r?void 0:r.length)>0?"?"+r:""})(e,s);return`${t}${n}${i}`},S=(e,t)=>{const r=Object.keys(e.responses);return async o=>{const s=((e,t,r)=>{const{query:o,params:s,body:n,headers:i,extraHeaders:a,overrideClientOptions:c,fetchOptions:l,cache:u,next:d,...p}=r||{},m={...t,...c};return{path:N(o,m.baseUrl,s,e,!!m.jsonQuery),clientArgs:m,route:e,body:n,query:o,extraInputArgs:p,fetchOptions:{...u&&{cache:u},...d&&{next:d},...l},headers:{...a,...i}}})(e,t,o),n=await(e=>{const{path:t,clientArgs:r,route:o,body:s,query:n,extraInputArgs:i,headers:a,fetchOptions:c}=e,l=r.api||v,u=r.baseHeaders&&Object.fromEntries(Object.entries(r.baseHeaders).map(([t,r])=>"function"==typeof r?[t,r(e)]:[t,r])),d={...u&&C(u),...C(a)};Object.keys(d).forEach(e=>{void 0===d[e]&&delete d[e]});let p={route:o,path:t,method:o.method,headers:d,body:void 0,rawBody:s,rawQuery:n,contentType:void 0,validateResponse:r.validateResponse,fetchOptions:{...r.credentials&&{credentials:r.credentials},...c},...(null==c?void 0:c.signal)&&{signal:c.signal},...(null==c?void 0:c.cache)&&{cache:c.cache},...c&&"next"in c&&!!(null==c?void 0:c.next)&&{next:c.next}};return"GET"!==o.method&&("contentType"in o&&"multipart/form-data"===o.contentType?p={...p,contentType:"multipart/form-data",body:s instanceof FormData?s:O(s)}:"contentType"in o&&"application/x-www-form-urlencoded"===o.contentType?p={...p,contentType:"application/x-www-form-urlencoded",headers:{"content-type":"application/x-www-form-urlencoded",...p.headers},body:"string"==typeof s?s:new URLSearchParams(s)}:null!=s&&(p={...p,contentType:"application/json",headers:{"content-type":"application/json",...p.headers},body:JSON.stringify(s)})),l({...p,...i})})(s);if(!t.throwOnUnknownStatus)return n;if(r.includes(n.status.toString()))return n;throw new E(n,r)}},I=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>m(r)?[e,S(r,t)]:[e,I(r,t)]));class w{constructor(e,t,r){this.contract=t,this.endpoint=e,this.root=null==r?void 0:r.root,this.token=null==r?void 0:r.token}getToken(){return this.token&&this.token.trim().length>0?this.token:""}get client(){const e=this.root?this.root.replace(/\/+$/,""):"",r=this.endpoint?this.endpoint.replace(/^\/+/,""):"",o={baseUrl:e?`${e}/${r}`:`https://gateway.temboplus.com/dashboard/${r}`,baseHeaders:{Authorization:`Bearer ${this.getToken()}`,"x-request-id":t.v4()}};return I(this.contract,o)}setToken(e){this.token=e}getCurrentToken(){return this.token}handleResponse(e,t){if(e.status===t)return e.body;if(400===e.status){const t=a.default.object({statusCode:a.default.number(),message:a.default.string(),error:a.default.string(),details:a.default.record(a.default.string()).optional()}).safeParse(e.body);if(t.success)throw new c(t.data);throw new c({message:"Bad request",statusCode:400,error:"BAD_REQUEST"})}if(401===e.status)throw new c({message:"You are not authenticated to perform this action. Please login again",statusCode:401,error:"UNAUTHORIZED"});if(403===e.status)throw new c({message:"You are not authorized to perform this action.",statusCode:403,error:"FORBIDDEN"});if(404===e.status)throw new c({message:"The requested resource was not found.",statusCode:404,error:"NOT_FOUND"});throw new c({message:"We encountered an error trying to process your request. Please try again later",statusCode:520,error:"UNKNOWN_ERROR"})}}const b=a.default.object({page:a.default.number().int().positive(),limit:a.default.number().int().positive(),total:a.default.number().int().min(0),totalPages:a.default.number().int().min(0),hasNext:a.default.boolean(),hasPrev:a.default.boolean()}),x=a.default.object({balance:a.default.number(),availableBalance:a.default.number(),accountNumber:a.default.string(),accountName:a.default.string()}),_={pagination:b,transactionSummary:a.default.object({yesterday:a.default.number(),today:a.default.number(),thisMonth:a.default.number(),lastMonth:a.default.number()}),accountSummary:x},L={user:e.z.object({token:e.z.string(),identity:e.z.string(),name:e.z.string()}),loginRequest:e.z.object({type:e.z.string().default("password"),identity:e.z.string().email(),password:e.z.string()})},R=f().router({login:{method:"POST",path:"/auth/login",body:L.loginRequest,responses:{201:L.user,400:e.z.object({message:e.z.string().optional()}),401:e.z.object({message:e.z.string().optional()})},summary:"User login",description:"Authenticate user with email and password"}});class F{constructor(e){this.token=e.token,this.identity=e.identity,this.name=e.name}hasToken(){return!!this.token&&this.token.length>0}getDisplayName(){return this.name||this.identity}isEmailIdentity(){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.identity)}static from(e){try{return(null==e?void 0:e.token)&&(null==e?void 0:e.identity)&&(null==e?void 0:e.name)?new F(e):void console.error("Missing required User fields:",e)}catch(e){return void console.error("Error creating User:",e)}}static fromJson(e){try{if(!(null==e?void 0:e.token)||!(null==e?void 0:e.identity)||!(null==e?void 0:e.name))return void console.error("Missing required User JSON fields:",e);const t={token:e.token,identity:e.identity,name:e.name};return new F(t)}catch(e){return void console.error("Error creating User from JSON:",e)}}toJson(){return{token:this.token,identity:this.identity,name:this.name}}}var P,z;exports.COLLECTION_STATUS=void 0,(P=exports.COLLECTION_STATUS||(exports.COLLECTION_STATUS={})).PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",P.GENERIC_FAILURE="GENERIC_FAILURE",P.PAYMENT_REJECTED="PAYMENT_REJECTED",P.PENDING_ACK="PENDING_ACK",exports.COLLECTION_CHANNEL=void 0,(z=exports.COLLECTION_CHANNEL||(exports.COLLECTION_CHANNEL={})).AIRTEL="TZ-AIRTEL-C2B",z.TIGO="TZ-TIGO-C2B",z.HALOTEL="TZ-HALOTEL-C2B";const U=e.z.nativeEnum(exports.COLLECTION_STATUS),D=e.z.nativeEnum(exports.COLLECTION_CHANNEL),B=e.z.object({balance:e.z.number(),availableBalance:e.z.number(),accountNumber:e.z.string(),accountName:e.z.string()}),M={collection:e.z.object({id:e.z.string().min(1),status:U,statusMessage:e.z.string(),accountNo:e.z.string().min(1),walletId:e.z.string(),transactionDate:e.z.string().datetime(),narration:e.z.string(),msisdn:e.z.string().min(1),channel:D,amount:e.z.number().min(0),serviceFee:e.z.string().optional(),postedAmount:e.z.string().optional(),reference:e.z.string(),partnerReference:e.z.string().nullable().optional(),transactionId:e.z.string().nullable().optional(),serviceFeeTransactionId:e.z.string().nullable().optional(),requestId:e.z.string().nullable().optional(),completedAt:e.z.string().datetime().nullable().optional(),createdAt:e.z.string().datetime(),updatedAt:e.z.string().datetime(),notes:e.z.string().optional(),currencyCode:e.z.string().default("TZS")}),collectionQueryParams:e.z.object({page:e.z.number().int().positive().default(1),limit:e.z.number().int().positive().max(100).default(20),sortBy:e.z.string().default("createdAt"),sortOrder:e.z.enum(["asc","desc"]).default("desc"),startDate:e.z.string().datetime().optional(),endDate:e.z.string().datetime().optional(),msisdn:e.z.string().optional(),id:e.z.string().optional(),reference:e.z.string().optional(),accountNo:e.z.string().optional(),partnerReference:e.z.string().optional(),channel:D.optional(),status:U.optional(),minAmount:e.z.number().min(0).optional(),maxAmount:e.z.number().min(0).optional(),search:e.z.string().optional()}),pagination:_.pagination,paymentStatus:U,paymentChannel:D,accountSummary:B},j=f().router({getCollections:{method:"GET",path:"/",query:e.z.object({}),responses:{200:e.z.object({data:e.z.array(M.collection),total:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"List collections",description:"Retrieve a paginated list of collections with optional filtering"},getCollection:{method:"GET",path:"/:id",pathParams:e.z.object({id:e.z.string()}),responses:{200:M.collection,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()}),404:e.z.object({message:e.z.string().optional()})},summary:"Get collection details",description:"Retrieve detailed information about a specific collection"},getSummary:{method:"GET",path:"/summary",responses:{200:e.z.object({yesterday:e.z.number(),today:e.z.number(),thisMonth:e.z.number(),lastMonth:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get collections summary",description:"Retrieve collection summary statistics for different time periods"},getBalance:{method:"GET",path:"/balance",responses:{200:M.accountSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and summary information"}}),k={[exports.COLLECTION_STATUS.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment received successfully"},[exports.COLLECTION_STATUS.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[exports.COLLECTION_STATUS.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Please try again"},[exports.COLLECTION_STATUS.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred during payment processing",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"}},H={[exports.COLLECTION_CHANNEL.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money",type:"mobile"},[exports.COLLECTION_CHANNEL.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa",type:"mobile"},[exports.COLLECTION_CHANNEL.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa",type:"mobile"}};class Y{constructor(e){var t,o,s;let n="TZS";r.CurrencyValidation.isCurrencyCode(e.currencyCode)&&(n=e.currencyCode),this.id=e.id,this.status=e.status,this.statusMessage=e.statusMessage,this.accountNo=e.accountNo,this.walletId=e.walletId,this.transactionDate=new Date(e.transactionDate),this.narration=e.narration,this.msisdn=e.msisdn,this.channel=e.channel,this.amount=null!==(t=r.Amount.from(e.amount,n))&&void 0!==t?t:r.Amount.from(0,n),this.serviceFee=e.serviceFee?null!==(o=r.Amount.from(parseFloat(e.serviceFee),n))&&void 0!==o?o:r.Amount.from(0,n):void 0,this.postedAmount=e.postedAmount?null!==(s=r.Amount.from(parseFloat(e.postedAmount),n))&&void 0!==s?s:r.Amount.from(0,n):void 0,this.reference=e.reference,this.partnerReference=e.partnerReference,this.transactionId=e.transactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.requestId=e.requestId,this.completedAt=e.completedAt?new Date(e.completedAt):null,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.notes=e.notes,this.currencyCode=e.currencyCode}isPending(){return this.status===exports.COLLECTION_STATUS.PENDING_ACK}isSuccessful(){return this.status===exports.COLLECTION_STATUS.PAYMENT_ACCEPTED}isFailed(){return Object.entries(k).filter(([e,t])=>"failed"===t.category).map(([e])=>e).includes(this.status)}getStatusInfo(){return k[this.status]}getChannelInfo(){return H[this.channel]}getProviderName(){return this.getChannelInfo().networkOperator}getServiceName(){return this.getChannelInfo().serviceName}isMobileCollection(){return e=this.channel,"mobile"===H[e].type;var e}isBankCollection(){return e=this.channel,"bank"===H[e].type;var e}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new Y(e):void console.error("Missing required Collection fields:",e)}catch(e){return void console.error("Error creating Collection:",e)}}static createMany(e){return e.map(e=>Y.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Collection JSON fields:",e);if(!r.Amount.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!r.Amount.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!r.Amount.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=r.Amount.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let o,s;if(e.serviceFee){const t=r.Amount.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);o=t.numericValue.toString()}if(e.postedAmount){const t=r.Amount.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);s=t.numericValue.toString()}const n={id:e.id,status:e.status,statusMessage:e.statusMessage,accountNo:e.accountNo,walletId:e.walletId,transactionDate:e.transactionDate,narration:e.narration,msisdn:e.msisdn,channel:e.channel,amount:t.numericValue,serviceFee:o,postedAmount:s,reference:e.reference,partnerReference:e.partnerReference,transactionId:e.transactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,requestId:e.requestId,completedAt:e.completedAt,createdAt:e.createdAt,updatedAt:e.updatedAt,notes:e.notes,currencyCode:e.currencyCode};return new Y(n)}catch(e){return void console.error("Error creating Collection from JSON:",e)}}static createManyFromJson(e){return e.map(e=>Y.fromJson(e)).filter(Boolean)}toJson(){var e,t,r,o;return{id:this.id,status:this.status,statusMessage:this.statusMessage,accountNo:this.accountNo,walletId:this.walletId,transactionDate:this.transactionDate.toISOString(),narration:this.narration,msisdn:this.msisdn,channel:this.channel,amount:this.amount.toJson(),serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),reference:this.reference,partnerReference:this.partnerReference,transactionId:this.transactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,requestId:this.requestId,completedAt:null!==(o=null===(r=this.completedAt)||void 0===r?void 0:r.toISOString())&&void 0!==o?o:null,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),notes:this.notes,currencyCode:this.currencyCode}}}class G extends u{static create(){return new G}static forCollections(){return new G}static fromDTO(e){const t=new G;return(e.page||e.limit)&&t.paginate(e.page||1,e.limit||10),e.sortBy&&e.sortOrder&&("asc"===e.sortOrder?t.orderByAsc(e.sortBy):t.orderByDesc(e.sortBy)),(e.startDate||e.endDate)&&t.whereDateBetween(e.startDate,e.endDate),e.status&&t.whereStatus(e.status),e.channel&&t.whereChannel(e.channel),e.msisdn&&t.whereSender(e.msisdn),e.accountNo&&t.whereAccount(e.accountNo),e.reference&&t.whereReference(e.reference),e.partnerReference&&t.wherePartnerReference(e.partnerReference),e.id&&t.where("id",e.id),void 0===e.minAmount&&void 0===e.maxAmount||(void 0!==e.minAmount&&void 0!==e.maxAmount?t.whereAmountBetween(e.minAmount,e.maxAmount):void 0!==e.minAmount?t.whereGreaterThanOrEqual("amount",e.minAmount):void 0!==e.maxAmount&&t.whereLessThanOrEqual("amount",e.maxAmount)),e.search&&t.whereSearch(e.search),t}whereStatus(e){return this.where("status",e)}whereChannel(e){return this.where("channel",e)}wherePending(){return this.where("status",exports.COLLECTION_STATUS.PENDING_ACK)}whereSuccessful(){return this.where("status",exports.COLLECTION_STATUS.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("status",[exports.COLLECTION_STATUS.PAYMENT_REJECTED,exports.COLLECTION_STATUS.GENERIC_FAILURE])}whereAmountBetween(e,t){return this.addFilter({field:"amount",operator:exports.FilterOperator.GREATER_THAN_OR_EQUAL,value:e}).addFilter({field:"amount",operator:exports.FilterOperator.LESS_THAN_OR_EQUAL,value:t})}whereSender(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereAccount(e){return this.whereLikeLower("accountNo",`%${e}%`)}whereReference(e){return this.whereLikeLower("reference",`%${e}%`)}wherePartnerReference(e){return this.whereLikeLower("partnerReference",`%${e}%`)}whereSearch(e){return this.where("search",e)}toCollectionQuery(){const e=this.extractFilterValues();return{page:this.options.page||1,limit:this.options.limit||10,sortBy:this.extractSortField()||"createdAt",sortOrder:this.extractSortOrder()||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,reference:e.reference,accountNo:e.accountNo,partnerReference:e.partnerReference,channel:this.isValidChannel(e.channel)?e.channel:void 0,status:this.isValidStatus(e.status)?e.status:void 0,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}extractFilterValues(){const e={};if(!this.options.filters)return e;for(const t of this.options.filters)switch(t.field){case"createdAt":t.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL?e.startDate=t.value:t.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL&&(e.endDate=t.value);break;case"amount":t.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL?e.minAmount=t.value:t.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL&&(e.maxAmount=t.value);break;case"msisdn":case"reference":case"accountNo":case"partnerReference":t.operator===exports.FilterOperator.LIKE||t.operator===exports.FilterOperator.LIKE_LOWER?e[t.field]=t.value.replace(/%/g,""):t.operator===exports.FilterOperator.EQUALS&&(e[t.field]=t.value);break;default:t.operator===exports.FilterOperator.EQUALS&&(e[t.field]=t.value)}return e}extractSortField(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].field}extractSortOrder(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].direction}isValidChannel(e){return Object.values(exports.COLLECTION_CHANNEL).includes(e)}isValidStatus(e){return Object.values(exports.COLLECTION_STATUS).includes(e)}}var J,q;exports.PAYOUT_STATUS=void 0,(J=exports.PAYOUT_STATUS||(exports.PAYOUT_STATUS={})).PAYMENT_ACCEPTED="PAYMENT_ACCEPTED",J.GENERIC_FAILURE="GENERIC_FAILURE",J.WALLET_DEBITED="WALLET_DEBITED",J.PAYMENT_REJECTED="PAYMENT_REJECTED",J.PENDING="PENDING",J.AMOUNT_EXCEED_MAXIMUM="AMOUNT_EXCEED_MAXIMUM",J.PENDING_ACK="PENDING_ACK",J.REVERSED="REVERSED",J.INVALID_SERVICE="INVALID_SERVICE",J.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE",J.THIRDPARTY_FAILED="THIRDPARTY_FAILED",exports.MOBILE_PAYOUT_CHANNEL=void 0,(q=exports.MOBILE_PAYOUT_CHANNEL||(exports.MOBILE_PAYOUT_CHANNEL={})).AIRTEL="TZ-AIRTEL-B2C",q.VODACOM="TZ-VODACOM-B2C",q.TIGO="TZ-TIGO-B2C",q.HALOTEL="TZ-HALOTEL-B2C",exports.BANK_PAYOUT_CHANNEL=void 0,(exports.BANK_PAYOUT_CHANNEL||(exports.BANK_PAYOUT_CHANNEL={})).BANK="TZ-BANK-B2C";const $=e.z.nativeEnum(exports.PAYOUT_STATUS),V=e.z.nativeEnum(exports.MOBILE_PAYOUT_CHANNEL),Q=e.z.nativeEnum(exports.BANK_PAYOUT_CHANNEL),K=e.z.union([V,Q]),W={payout:e.z.object({id:e.z.string().min(1),statusCode:e.z.string(),statusCodeText:$,statusDescription:e.z.string(),countryCode:e.z.string(),serviceCode:K,amount:e.z.number().min(0),serviceFee:e.z.string().optional(),postedAmount:e.z.string().optional(),walletId:e.z.string().optional(),msisdn:e.z.string().min(1),narration:e.z.string(),currencyCode:e.z.string(),recipientNames:e.z.string().optional(),transactionRef:e.z.string(),transactionDate:e.z.string().datetime(),externalId:e.z.string().nullable().optional(),cbaReferenceNo:e.z.string().optional(),beepTransactionId:e.z.string().optional(),receiptNumber:e.z.string().optional(),createdAt:e.z.string().datetime(),reversedTransactionId:e.z.string().nullable().optional(),transactionId:e.z.string(),serviceFeeTransactionId:e.z.string().optional(),isReconciled:e.z.number().optional(),requestId:e.z.string().optional(),notes:e.z.string().optional(),updatedAt:e.z.string().datetime().optional()}),payoutQueryParams:e.z.object({page:e.z.number().int().positive().default(1),limit:e.z.number().int().positive().max(100).default(20),sortBy:e.z.string().default("createdAt"),sortOrder:e.z.enum(["asc","desc"]).default("desc"),startDate:e.z.string().datetime().optional(),endDate:e.z.string().datetime().optional(),msisdn:e.z.string().optional(),id:e.z.string().optional(),ref:e.z.string().optional(),channel:K.optional(),status:$.optional(),minAmount:e.z.number().min(0).optional(),maxAmount:e.z.number().min(0).optional(),search:e.z.string().optional()}),pagination:_.pagination,payoutStatus:$,payoutChannel:K,mobileChannel:V,bankChannel:Q},Z=f().router({getPayouts:{method:"GET",path:"",query:W.payoutQueryParams,responses:{200:e.z.object({data:e.z.array(W.payout),total:e.z.number()}),401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"List payouts",description:"Retrieve a paginated list of payouts with optional filtering"},getPayout:{method:"GET",path:"/:id",pathParams:e.z.object({id:e.z.string()}),responses:{200:W.payout,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()}),404:e.z.object({message:e.z.string().optional()})},summary:"Get payout details",description:"Retrieve detailed information about a specific payout"},getPayoutSummary:{method:"GET",path:"/summary",responses:{200:_.transactionSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get payout summary",description:"Retrieve payout statistics including yesterday, today, this month, and last month totals"},getBalance:{method:"GET",path:"/balance",responses:{200:_.accountSummary,401:e.z.object({message:e.z.string().optional()}),403:e.z.object({message:e.z.string().optional()})},summary:"Get account balance",description:"Retrieve current account balance and status information"}}),X={[exports.PAYOUT_STATUS.PAYMENT_ACCEPTED]:{label:"Payment Accepted",description:"The payment was successfully accepted",category:"success",color:"success",userFriendlyMessage:"Payment completed successfully"},[exports.PAYOUT_STATUS.PENDING_ACK]:{label:"Pending Acknowledgment",description:"The payment is pending acknowledgment",category:"pending",color:"warning",userFriendlyMessage:"Payment is being processed"},[exports.PAYOUT_STATUS.PENDING]:{label:"Pending",description:"Payment is being processed",category:"pending",color:"warning",userFriendlyMessage:"Payment is in progress"},[exports.PAYOUT_STATUS.PAYMENT_REJECTED]:{label:"Payment Rejected",description:"The payment was rejected and could not be processed",category:"failed",color:"error",userFriendlyMessage:"Payment was rejected. Check payment details and try again"},[exports.PAYOUT_STATUS.GENERIC_FAILURE]:{label:"Payment Failed",description:"A general error occurred",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to an unexpected error"},[exports.PAYOUT_STATUS.INSUFFICIENT_BALANCE]:{label:"Insufficient Balance",description:"Insufficient funds are available to process the payment",category:"failed",color:"error",userFriendlyMessage:"Insufficient funds to complete the payment"},[exports.PAYOUT_STATUS.THIRDPARTY_FAILED]:{label:"Service Provider Error",description:"There was an error with the third-party service provider",category:"failed",color:"error",userFriendlyMessage:"Payment failed due to service provider issue"},[exports.PAYOUT_STATUS.AMOUNT_EXCEED_MAXIMUM]:{label:"Amount Exceeds Limit",description:"Payment amount exceeds the maximum allowed limit",category:"failed",color:"error",userFriendlyMessage:"Payment amount exceeds the allowed limit"},[exports.PAYOUT_STATUS.WALLET_DEBITED]:{label:"Wallet Debited",description:"Wallet has been debited but payment is not yet complete",category:"failed",color:"error",userFriendlyMessage:"Payment incomplete - wallet debited but recipient may not have received funds"},[exports.PAYOUT_STATUS.REVERSED]:{label:"Payment Reversed",description:"Payment has been reversed and funds returned",category:"failed",color:"error",userFriendlyMessage:"Payment was reversed and funds have been returned"},[exports.PAYOUT_STATUS.INVALID_SERVICE]:{label:"Invalid Service",description:"The requested payment service is not valid or available",category:"failed",color:"error",userFriendlyMessage:"Selected payment service is not available"}},ee={[exports.MOBILE_PAYOUT_CHANNEL.AIRTEL]:{networkOperator:"Airtel",serviceName:"Airtel Money"},[exports.MOBILE_PAYOUT_CHANNEL.VODACOM]:{networkOperator:"Vodacom",serviceName:"M-Pesa"},[exports.MOBILE_PAYOUT_CHANNEL.TIGO]:{networkOperator:"Tigo",serviceName:"Tigo Pesa"},[exports.MOBILE_PAYOUT_CHANNEL.HALOTEL]:{networkOperator:"Halotel",serviceName:"HaloPesa"}};function te(e){return Object.values(exports.MOBILE_PAYOUT_CHANNEL).includes(e)}function re(e){return e===exports.BANK_PAYOUT_CHANNEL.BANK}function oe(){return Object.entries(X).filter(([e,t])=>"failed"===t.category).map(([e])=>e)}class se{constructor(e){var t,o;let s="TZS";r.CurrencyValidation.isCurrencyCode(e.currencyCode)&&(s=e.currencyCode),this.id=e.id,this.serviceCode=e.serviceCode,this.msisdn=e.msisdn,this.amount=null!==(t=r.Amount.from(e.amount,s))&&void 0!==t?t:r.Amount.from(0,s),this.transactionDate=new Date(e.transactionDate),this.statusDescription=e.statusDescription,this.statusCodeText=e.statusCodeText,this.transactionId=e.transactionId,this.transactionRef=e.transactionRef,this.recipientNames=e.recipientNames,this.narration=e.narration,this.serviceFee=void 0===e.serviceFee?void 0:null!==(o=r.Amount.from(e.serviceFee,s))&&void 0!==o?o:r.Amount.from(0,s),this.notes=e.notes,this.swiftCode=e.swiftCode,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),this.statusCode=e.statusCode,this.countryCode=e.countryCode,this.postedAmount=e.postedAmount?r.Amount.from(parseFloat(e.postedAmount),s):void 0,this.walletId=e.walletId,this.currencyCode=e.currencyCode,this.externalId=e.externalId,this.cbaReferenceNo=e.cbaReferenceNo,this.beepTransactionId=e.beepTransactionId,this.receiptNumber=e.receiptNumber,this.reversedTransactionId=e.reversedTransactionId,this.serviceFeeTransactionId=e.serviceFeeTransactionId,this.isReconciled=e.isReconciled,this.requestId=e.requestId}isPending(){return[exports.PAYOUT_STATUS.PENDING,exports.PAYOUT_STATUS.PENDING_ACK].includes(this.statusCodeText)}isSuccessful(){return this.statusCodeText===exports.PAYOUT_STATUS.PAYMENT_ACCEPTED}isFailed(){return oe().includes(this.statusCodeText)}getStatusInfo(){return X[this.statusCodeText]}getChannelInfo(){if(te(this.serviceCode))return ee[this.serviceCode];if(re(this.serviceCode)){const e=this.msisdn.split(":")[0];if(e&&r.BankValidation.validateSwiftCodeForAnyCountry(e)){const t=r.BankValidation.getCountryFromSwiftCode(e);if(t)try{return r.Bank.from(e,t)}catch(t){console.warn(`Failed to create Bank instance for SWIFT code ${e}:`,t)}}if(this.swiftCode&&r.BankValidation.validateSwiftCodeForAnyCountry(this.swiftCode)){const e=r.BankValidation.getCountryFromSwiftCode(this.swiftCode);if(e)try{return r.Bank.from(this.swiftCode,e)}catch(e){console.warn(`Failed to create Bank instance for SWIFT code ${this.swiftCode}:`,e)}}}}getProviderName(){const e=this.getChannelInfo();return te(this.serviceCode)&&e?e.networkOperator:r.Bank.is(e)?e.shortName:"Bank Transfer"}static from(e){try{return(null==e?void 0:e.id)&&(null==e?void 0:e.msisdn)&&void 0!==(null==e?void 0:e.amount)?new se(e):void console.error("Missing required Payout fields:",e)}catch(e){return void console.error("Error creating Payout:",e)}}static createMany(e){return e.map(e=>se.from(e)).filter(Boolean)}static fromJson(e){try{if(!(null==e?void 0:e.id)||!(null==e?void 0:e.msisdn)||!(null==e?void 0:e.amount))return void console.error("Missing required Payout JSON fields:",e);if(!r.Amount.isAmountJson(e.amount))return void console.error("Invalid amount AmountJson structure:",e.amount);if(e.serviceFee&&!r.Amount.isAmountJson(e.serviceFee))return void console.error("Invalid serviceFee AmountJson structure:",e.serviceFee);if(e.postedAmount&&!r.Amount.isAmountJson(e.postedAmount))return void console.error("Invalid postedAmount AmountJson structure:",e.postedAmount);const t=r.Amount.fromJson(e.amount);if(!t)return void console.error("Failed to reconstruct Amount from JSON:",e.amount);let o,s;if(e.serviceFee){const t=r.Amount.fromJson(e.serviceFee);if(!t)return void console.error("Failed to reconstruct serviceFee Amount from JSON:",e.serviceFee);o=t.numericValue}if(e.postedAmount){const t=r.Amount.fromJson(e.postedAmount);if(!t)return void console.error("Failed to reconstruct postedAmount Amount from JSON:",e.postedAmount);s=t.numericValue.toString()}const n={id:e.id,serviceCode:e.serviceCode,msisdn:e.msisdn,amount:t.numericValue,transactionDate:e.transactionDate,statusDescription:e.statusDescription,statusCodeText:e.statusCodeText,transactionId:e.transactionId,transactionRef:e.transactionRef,recipientNames:e.recipientNames,narration:e.narration,serviceFee:o,notes:e.notes,swiftCode:e.swiftCode,createdAt:e.createdAt,updatedAt:e.updatedAt,statusCode:e.statusCode,countryCode:e.countryCode,postedAmount:s,walletId:e.walletId,currencyCode:e.currencyCode,externalId:e.externalId,cbaReferenceNo:e.cbaReferenceNo,beepTransactionId:e.beepTransactionId,receiptNumber:e.receiptNumber,reversedTransactionId:e.reversedTransactionId,serviceFeeTransactionId:e.serviceFeeTransactionId,isReconciled:e.isReconciled,requestId:e.requestId};return new se(n)}catch(e){return void console.error("Error creating Payout from JSON:",e)}}static createManyFromJson(e){return e.map(e=>se.fromJson(e)).filter(Boolean)}toJson(){var e,t;return{id:this.id,serviceCode:this.serviceCode,msisdn:this.msisdn,amount:this.amount.toJson(),transactionDate:this.transactionDate.toISOString(),statusDescription:this.statusDescription,statusCodeText:this.statusCodeText,transactionId:this.transactionId,transactionRef:this.transactionRef,recipientNames:this.recipientNames,narration:this.narration,serviceFee:null===(e=this.serviceFee)||void 0===e?void 0:e.toJson(),notes:this.notes,swiftCode:this.swiftCode,createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString(),statusCode:this.statusCode,countryCode:this.countryCode,postedAmount:null===(t=this.postedAmount)||void 0===t?void 0:t.toJson(),walletId:this.walletId,currencyCode:this.currencyCode,externalId:this.externalId,cbaReferenceNo:this.cbaReferenceNo,beepTransactionId:this.beepTransactionId,receiptNumber:this.receiptNumber,reversedTransactionId:this.reversedTransactionId,serviceFeeTransactionId:this.serviceFeeTransactionId,isReconciled:this.isReconciled,requestId:this.requestId}}}class ne extends u{static create(){return new ne}static fromDTO(e){const t=new ne;return(e.page||e.limit)&&t.paginate(e.page||1,e.limit||20),e.sortBy&&e.sortOrder&&("asc"===e.sortOrder?t.orderByAsc(e.sortBy):t.orderByDesc(e.sortBy)),(e.startDate||e.endDate)&&t.whereDateBetween(e.startDate,e.endDate),e.status&&t.whereStatus(e.status),e.channel&&t.whereChannel(e.channel),e.msisdn&&t.whereRecipient(e.msisdn),e.ref&&t.whereReference(e.ref),e.id&&t.where("id",e.id),void 0===e.minAmount&&void 0===e.maxAmount||(void 0!==e.minAmount&&void 0!==e.maxAmount?t.whereAmountBetween(e.minAmount,e.maxAmount):void 0!==e.minAmount?t.whereGreaterThanOrEqual("amount",e.minAmount):void 0!==e.maxAmount&&t.whereLessThanOrEqual("amount",e.maxAmount)),e.search&&t.whereSearch(e.search),t}whereStatus(e){return this.where("statusCodeText",e)}whereChannel(e){return this.where("serviceCode",e)}wherePending(){return this.whereIn("statusCodeText",[exports.PAYOUT_STATUS.PENDING,exports.PAYOUT_STATUS.PENDING_ACK])}whereSuccessful(){return this.where("statusCodeText",exports.PAYOUT_STATUS.PAYMENT_ACCEPTED)}whereFailed(){return this.whereIn("statusCodeText",[exports.PAYOUT_STATUS.PAYMENT_REJECTED,exports.PAYOUT_STATUS.GENERIC_FAILURE,exports.PAYOUT_STATUS.AMOUNT_EXCEED_MAXIMUM,exports.PAYOUT_STATUS.INVALID_SERVICE])}whereAmountBetween(e,t){return this.whereBetween("amount",e,t)}whereRecipient(e){return this.whereLikeLower("msisdn",`%${e}%`)}whereReference(e){return this.whereLikeLower("ref",`%${e}%`)}whereSearch(e){return this.where("search",e)}toPayoutQuery(){const e=this.extractFilterValues();return{page:this.options.page||1,limit:this.options.limit||20,sortBy:this.extractSortField()||"createdAt",sortOrder:this.extractSortOrder()||"desc",startDate:e.startDate,endDate:e.endDate,msisdn:e.msisdn,id:e.id,ref:e.ref,channel:this.isValidChannel(e.serviceCode)?e.serviceCode:void 0,status:this.isValidStatus(e.statusCodeText)?e.statusCodeText:void 0,minAmount:e.minAmount,maxAmount:e.maxAmount,search:e.search}}extractFilterValues(){const e={};if(!this.options.filters)return e;for(const t of this.options.filters)switch(t.field){case"createdAt":t.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL?e.startDate=t.value:t.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL&&(e.endDate=t.value);break;case"amount":t.operator===exports.FilterOperator.GREATER_THAN_OR_EQUAL?e.minAmount=t.value:t.operator===exports.FilterOperator.LESS_THAN_OR_EQUAL&&(e.maxAmount=t.value);break;case"msisdn":case"ref":t.operator===exports.FilterOperator.LIKE||t.operator===exports.FilterOperator.LIKE_LOWER?e[t.field]=t.value.replace(/%/g,""):t.operator===exports.FilterOperator.EQUALS&&(e[t.field]=t.value);break;default:t.operator===exports.FilterOperator.EQUALS&&(e[t.field]=t.value)}return e}extractSortField(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].field}extractSortOrder(){if(this.options.sort&&0!==this.options.sort.length)return this.options.sort[0].direction}isValidChannel(e){return Object.values(exports.MOBILE_PAYOUT_CHANNEL).includes(e)||e===exports.BANK_PAYOUT_CHANNEL}isValidStatus(e){return Object.values(exports.PAYOUT_STATUS).includes(e)}static forPayouts(){return new ne}}class ie{constructor(e,t="TZS"){var o,s,n,i;this.currency=t,this.yesterday=null!==(o=r.Amount.from(e.yesterday,t))&&void 0!==o?o:r.Amount.from(0,t),this.today=null!==(s=r.Amount.from(e.today,t))&&void 0!==s?s:r.Amount.from(0,t),this.thisMonth=null!==(n=r.Amount.from(e.thisMonth,t))&&void 0!==n?n:r.Amount.from(0,t),this.lastMonth=null!==(i=r.Amount.from(e.lastMonth,t))&&void 0!==i?i:r.Amount.from(0,t)}getMonthlyGrowthRate(){return 0===this.lastMonth.numericValue?this.thisMonth.numericValue>0?100:0:(this.thisMonth.numericValue-this.lastMonth.numericValue)/this.lastMonth.numericValue*100}getRecentTotal(){return r.Amount.from(this.today.numericValue+this.yesterday.numericValue,this.currency)}static from(e,t="TZS"){return new ie(e,t)}}class ae{constructor(e){var t,o;let s="TZS";this.accountName=e.accountName,this.currency=s,this.availableBalance=null!==(t=r.Amount.from(e.availableBalance,s))&&void 0!==t?t:r.Amount.from(0,s),this.actualBalance=null!==(o=r.Amount.from(e.balance,s))&&void 0!==o?o:r.Amount.from(0,s)}hasSufficientBalance(e){return this.availableBalance.numericValue>=e}static from(e){return new ae(e)}}exports.APIError=c,exports.AuthDTOSchemas=L,exports.AuthRepository=class extends w{constructor(e){super("auth",R,e)}async login(e){const t={type:e.type||"password",identity:e.identity,password:e.password},r=await this.client.login({body:t}),o=this.handleResponse(r,201),s=F.from(o);if(!s)throw new Error("Invalid user data received from server");return s}},exports.BaseRepository=w,exports.CHANNEL_INFO=H,exports.COLLECTION_STATUS_INFO=k,exports.Collection=Y,exports.CollectionDTOSchemas=M,exports.CollectionQueryBuilder=G,exports.CollectionRepository=class extends w{constructor(e){super("collection",j,e)}async getCollections(e){const t=null==e?M.collectionQueryParams.parse({}):e,r=G.fromDTO(t).build(),o=await this.client.getCollections({query:r}),s=this.handleResponse(o,200),n={page:t.page,limit:t.limit,total:s.total,totalPages:s.total>0?Math.ceil(s.total/t.limit):0,hasNext:t.page*t.limit<s.total,hasPrev:t.page>1};return{collections:Y.createMany(s.data),pagination:n}}async getCollection(e){const t=await this.client.getCollection({params:{id:e}}),r=this.handleResponse(t,200),o=Y.from(r);if(!o)throw new Error("Invalid collection data received from server");return o}async getSummary(){const e=await this.client.getSummary();return this.handleResponse(e,200)}async getBalance(){const e=await this.client.getBalance();return this.handleResponse(e,200)}},exports.CommonSchemas=_,exports.MOBILE_CHANNEL_INFO=ee,exports.PAYOUT_STATUS_INFO=X,exports.Payout=se,exports.PayoutDTOSchemas=W,exports.PayoutQueryBuilder=ne,exports.PayoutRepository=class extends w{constructor(e){super("payout",Z,e)}async getPayouts(e){const t=null==e?W.payoutQueryParams.parse({}):e,r=ne.fromDTO(t).build(),o=await this.client.getPayouts({query:r}),s=this.handleResponse(o,200),n={page:t.page,limit:t.limit,total:s.total,totalPages:s.total>0?Math.ceil(s.total/t.limit):0,hasNext:t.page*t.limit<s.total,hasPrev:t.page>1};return{payouts:se.createMany(s.data),pagination:n}}async getPayout(e){const t=await this.client.getPayout({params:{id:e}}),r=this.handleResponse(t,200),o=se.from(r);if(!o)throw new Error("Invalid payout data received from server");return o}async getPayoutSummary(){const e=await this.client.getPayoutSummary(),t=this.handleResponse(e,200);return ie.from(t)}async getAccountBalance(){const e=await this.client.getBalance(),t=this.handleResponse(e,200);return ae.from(t)}},exports.QUERY_BUILDER_TYPE=l,exports.QueryBuilder=u,exports.User=F,exports.accountSummarySchema=B,exports.authContract=R,exports.collectionContract=j,exports.getFailedStatuses=oe,exports.isBankChannel=re,exports.isMobileChannel=te,exports.payoutContract=Z;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/lib/query/query.types.ts","../src/lib/error/error.api.ts","../src/lib/query/query.builder.ts","../node_modules/@ts-rest/core/index.esm.mjs","../src/lib/api/base-repository.ts","../src/lib/api/common-schemas.ts","../src/modules/auth/auth.dtos.ts","../src/modules/auth/auth.api-contract.ts","../src/modules/auth/user.model.ts","../src/modules/collection/collection.dtos.ts","../src/modules/collection/collection.api-contract.ts","../src/modules/collection/collection.model.ts","../src/modules/collection/collection.query-builder.ts","../src/modules/payout/payout.dtos.ts","../src/modules/payout/payout.api-contract.ts","../src/modules/payout/payout.model.ts","../src/modules/payout/payout.query-builder.ts","../src/lib/models/transaction-summary.model.ts","../src/lib/models/wallet-info.model.ts","../src/modules/auth/auth.repository.ts","../src/modules/collection/collection.repository.ts","../src/modules/payout/payout.repository.ts"],"sourcesContent":[null,null,null,"import { z } from 'zod';\n\nconst isZodType = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.safeParse) === 'function';\n};\nconst isZodObject = (obj) => {\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function') {\n return true;\n }\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.innerType) === 'function') {\n return isZodObject(obj === null || obj === void 0 ? void 0 : obj.innerType());\n }\n return false;\n};\nconst isZodObjectStrict = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function';\n};\nconst extractZodObjectShape = (obj) => {\n if (!isZodObject(obj)) {\n throw new Error('Unknown zod object type');\n }\n if ('innerType' in obj) {\n return extractZodObjectShape(obj.innerType());\n }\n return obj.shape;\n};\nconst zodMerge = (objectA, objectB) => {\n if (isZodObjectStrict(objectA)) {\n if (isZodObjectStrict(objectB)) {\n return objectA.merge(objectB);\n }\n return objectA;\n }\n if (isZodObjectStrict(objectB)) {\n return objectB;\n }\n return Object.assign({}, objectA, objectB);\n};\nconst checkZodSchema = (data, schema, { passThroughExtraKeys = false } = {}) => {\n if (isZodType(schema)) {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n success: true,\n data: passThroughExtraKeys && typeof data === 'object'\n ? { ...data, ...result.data }\n : result.data,\n };\n }\n return {\n success: false,\n error: result.error,\n };\n }\n return {\n success: true,\n data: data,\n };\n};\n// Convert a ZodError to a plain object because ZodError extends Error and causes problems with NestJS\nconst zodErrorResponse = (error) => {\n return {\n name: error.name,\n issues: error.issues,\n };\n};\nconst ZodErrorSchema = z.object({\n name: z.literal('ZodError'),\n issues: z.array(z\n .object({\n path: z.array(z.union([z.string(), z.number()])),\n message: z.string().optional(),\n code: z.nativeEnum(z.ZodIssueCode),\n })\n // ZodIssuse type are complex and potentially unstable. So we don’t deal with his specific fields other than the common.\n .catchall(z.any())),\n});\n\nconst ContractNoBody = Symbol('ContractNoBody');\n/**\n * Differentiate between a route and a router\n *\n * @param obj\n * @returns\n */\nconst isAppRoute = (obj) => {\n return 'method' in obj && 'path' in obj;\n};\nconst isAppRouteQuery = (route) => {\n return route.method === 'GET';\n};\nconst isAppRouteMutation = (route) => {\n return !isAppRouteQuery(route);\n};\n/**\n *\n * @deprecated Please use {@link initContract} instead.\n */\nconst initTsRest = () => initContract();\nconst recursivelyApplyOptions = (router, options) => {\n return Object.fromEntries(Object.entries(router).map(([key, value]) => {\n var _a, _b, _c;\n if (isAppRoute(value)) {\n return [\n key,\n {\n ...value,\n path: (options === null || options === void 0 ? void 0 : options.pathPrefix)\n ? options.pathPrefix + value.path\n : value.path,\n headers: zodMerge(options === null || options === void 0 ? void 0 : options.baseHeaders, value.headers),\n strictStatusCodes: (_a = value.strictStatusCodes) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.strictStatusCodes,\n validateResponseOnClient: (_b = value.validateResponseOnClient) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.validateResponseOnClient,\n responses: {\n ...options === null || options === void 0 ? void 0 : options.commonResponses,\n ...value.responses,\n },\n metadata: (options === null || options === void 0 ? void 0 : options.metadata)\n ? {\n ...options === null || options === void 0 ? void 0 : options.metadata,\n ...((_c = value.metadata) !== null && _c !== void 0 ? _c : {}),\n }\n : value.metadata,\n },\n ];\n }\n else {\n return [key, recursivelyApplyOptions(value, options)];\n }\n }));\n};\nconst ContractPlainTypeRuntimeSymbol = Symbol('ContractPlainType');\n/**\n * Instantiate a ts-rest client, primarily to access `router`, `response`, and `body`\n *\n * @returns {ContractInstance}\n */\nconst initContract = () => {\n return {\n // @ts-expect-error - this is a type error, but it's not clear how to fix it\n router: (endpoints, options) => recursivelyApplyOptions(endpoints, options),\n query: (args) => args,\n mutation: (args) => args,\n responses: (args) => args,\n response: () => ContractPlainTypeRuntimeSymbol,\n body: () => ContractPlainTypeRuntimeSymbol,\n type: () => ContractPlainTypeRuntimeSymbol,\n otherResponse: ({ contentType, body, }) => ({\n contentType,\n body,\n }),\n noBody: () => ContractNoBody,\n };\n};\n\n/**\n * @param path - The URL e.g. /posts/:id\n * @param params - The params e.g. `{ id: string }`\n * @returns - The URL with the params e.g. /posts/123\n */\nconst insertParamsIntoPath = ({ path, params, }) => {\n const pathParams = params;\n return path.replace(/\\/?:([^/?]+)\\??/g, (matched, p) => pathParams[p]\n ? `${matched.startsWith('/') ? '/' : ''}${pathParams[p]}`\n : '');\n};\n\n/**\n *\n * @param query - Any JSON object\n * @param json - Use JSON.stringify to encode the query values\n * @returns - The query url segment, using explode array syntax, and deep object syntax\n */\nconst convertQueryParamsToUrlString = (query, json = false) => {\n const queryString = json\n ? encodeQueryParamsJson(query)\n : encodeQueryParams(query);\n return (queryString === null || queryString === void 0 ? void 0 : queryString.length) > 0 ? '?' + queryString : '';\n};\nconst encodeQueryParamsJson = (query) => {\n if (!query) {\n return '';\n }\n return Object.entries(query)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n let encodedValue;\n // if value is a string and is not a reserved JSON value or a number, pass it without encoding\n // this makes strings look nicer in the URL (e.g. ?name=John instead of ?name=%22John%22)\n // this is also how OpenAPI will pass strings even if they are marked as application/json types\n if (typeof value === 'string' &&\n !['true', 'false', 'null'].includes(value.trim()) &&\n isNaN(Number(value))) {\n encodedValue = value;\n }\n else {\n encodedValue = JSON.stringify(value);\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(encodedValue)}`;\n })\n .join('&');\n};\nconst encodeQueryParams = (query) => {\n if (!query) {\n return '';\n }\n return (Object.keys(query)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .flatMap((key) => tokeniseValue(key, query[key]))\n .map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&'));\n};\n/**\n * A recursive function to convert an object/string/number/Date/whatever into an array of key=value pairs\n *\n * The output of this should be flatMap-able to a string of key=value pairs which can be\n * joined with & to form a query string\n *\n * This should be fully compatible with the \"qs\" library, but without the need to add a dependency\n */\nconst tokeniseValue = (key, value) => {\n if (Array.isArray(value)) {\n return value.flatMap((v, idx) => tokeniseValue(`${key}[${idx}]`, v));\n }\n if (value instanceof Date) {\n return [[`${key}`, value.toISOString()]];\n }\n if (value === null) {\n return [[`${key}`, '']];\n }\n if (value === undefined) {\n return [];\n }\n if (typeof value === 'object') {\n return Object.keys(value).flatMap((k) => \n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tokeniseValue(`${key}[${k}]`, value[k]));\n }\n return [[`${key}`, `${value}`]];\n};\n/**\n *\n * @param query - A server-side query object where values have been encoded as JSON strings\n * @returns - The same object with the JSON strings decoded. Objects that were encoded using toJSON such as Dates will remain as strings\n */\nconst parseJsonQueryObject = (query) => {\n return Object.fromEntries(Object.entries(query).map(([key, value]) => {\n let parsedValue;\n // if json parse fails, treat the value as a string\n // this allows us to pass strings without having to surround them with quotes\n try {\n parsedValue = JSON.parse(value);\n }\n catch {\n parsedValue = value;\n }\n return [key, parsedValue];\n }));\n};\n\nclass UnknownStatusError extends Error {\n constructor(response, knownResponseStatuses) {\n const expectedStatuses = knownResponseStatuses.join(',');\n super(`Server returned unexpected response. Expected one of: ${expectedStatuses} got: ${response.status}`);\n this.response = response;\n }\n}\n\n/**\n * @deprecated Only safe to use on the client-side. Use `ServerInferResponses`/`ClientInferResponses` instead.\n */\nfunction getRouteResponses(router) {\n return {};\n}\n/**\n * Default fetch api implementation:\n *\n * Can be used as a reference for implementing your own fetcher,\n * or used in the \"api\" field of ClientArgs to allow you to hook\n * into the request to run custom logic\n */\nconst tsRestFetchApi = async ({ route, path, method, headers, body, validateResponse, fetchOptions, }) => {\n const result = await fetch(path, {\n ...fetchOptions,\n method,\n headers,\n body,\n });\n const contentType = result.headers.get('content-type');\n if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/')) && (contentType === null || contentType === void 0 ? void 0 : contentType.includes('json'))) {\n const response = {\n status: result.status,\n body: await result.json(),\n headers: result.headers,\n };\n const responseSchema = route.responses[response.status];\n if ((validateResponse !== null && validateResponse !== void 0 ? validateResponse : route.validateResponseOnClient) &&\n isZodType(responseSchema)) {\n return {\n ...response,\n body: responseSchema.parse(response.body),\n };\n }\n return response;\n }\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('text/')) {\n return {\n status: result.status,\n body: await result.text(),\n headers: result.headers,\n };\n }\n return {\n status: result.status,\n body: await result.blob(),\n headers: result.headers,\n };\n};\nconst createFormData = (body) => {\n const formData = new FormData();\n const appendToFormData = (key, value) => {\n if (value instanceof File) {\n formData.append(key, value);\n }\n else {\n formData.append(key, JSON.stringify(value));\n }\n };\n Object.entries(body).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n for (const item of value) {\n appendToFormData(key, item);\n }\n }\n else {\n appendToFormData(key, value);\n }\n });\n return formData;\n};\nconst normalizeHeaders = (headers) => {\n return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]));\n};\nconst fetchApi = (options) => {\n const { path, clientArgs, route, body, query, extraInputArgs, headers, fetchOptions, } = options;\n const apiFetcher = clientArgs.api || tsRestFetchApi;\n const baseHeaders = clientArgs.baseHeaders &&\n Object.fromEntries(Object.entries(clientArgs.baseHeaders).map(([name, valueOrFunction]) => {\n if (typeof valueOrFunction === 'function') {\n return [name, valueOrFunction(options)];\n }\n else {\n return [name, valueOrFunction];\n }\n }));\n const combinedHeaders = {\n ...(baseHeaders && normalizeHeaders(baseHeaders)),\n ...normalizeHeaders(headers),\n };\n // Remove any headers that are set to undefined\n Object.keys(combinedHeaders).forEach((key) => {\n if (combinedHeaders[key] === undefined) {\n delete combinedHeaders[key];\n }\n });\n let fetcherArgs = {\n route,\n path,\n method: route.method,\n headers: combinedHeaders,\n body: undefined,\n rawBody: body,\n rawQuery: query,\n contentType: undefined,\n validateResponse: clientArgs.validateResponse,\n fetchOptions: {\n ...(clientArgs.credentials && { credentials: clientArgs.credentials }),\n ...fetchOptions,\n },\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.signal) && { signal: fetchOptions.signal }),\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.cache) && { cache: fetchOptions.cache }),\n ...(fetchOptions &&\n 'next' in fetchOptions &&\n !!(fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.next) && { next: fetchOptions.next }),\n };\n if (route.method !== 'GET') {\n if ('contentType' in route && route.contentType === 'multipart/form-data') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'multipart/form-data',\n body: body instanceof FormData ? body : createFormData(body),\n };\n }\n else if ('contentType' in route &&\n route.contentType === 'application/x-www-form-urlencoded') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/x-www-form-urlencoded',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n ...fetcherArgs.headers,\n },\n body: typeof body === 'string'\n ? body\n : new URLSearchParams(body),\n };\n }\n else if (body !== null && body !== undefined) {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/json',\n headers: {\n 'content-type': 'application/json',\n ...fetcherArgs.headers,\n },\n body: JSON.stringify(body),\n };\n }\n }\n return apiFetcher({\n ...fetcherArgs,\n ...extraInputArgs,\n });\n};\nconst evaluateFetchApiArgs = (route, clientArgs, inputArgs) => {\n const { query, params, body, headers, extraHeaders, overrideClientOptions, fetchOptions, \n // TODO: remove in 4.0\n cache, \n // TODO: remove in 4.0\n next, \n // extra input args\n ...extraInputArgs } = inputArgs || {};\n const overriddenClientArgs = {\n ...clientArgs,\n ...overrideClientOptions,\n };\n const completeUrl = getCompleteUrl(query, overriddenClientArgs.baseUrl, params, route, !!overriddenClientArgs.jsonQuery);\n return {\n path: completeUrl,\n clientArgs: overriddenClientArgs,\n route,\n body,\n query,\n extraInputArgs,\n fetchOptions: {\n ...(cache && { cache }),\n ...(next && { next }),\n ...fetchOptions,\n },\n headers: {\n ...extraHeaders,\n ...headers,\n },\n };\n};\n/**\n * @hidden\n */\nconst getCompleteUrl = (query, baseUrl, params, route, jsonQuery) => {\n const path = insertParamsIntoPath({\n path: route.path,\n params: params,\n });\n const queryComponent = convertQueryParamsToUrlString(query, jsonQuery);\n return `${baseUrl}${path}${queryComponent}`;\n};\nconst getRouteQuery = (route, clientArgs) => {\n const knownResponseStatuses = Object.keys(route.responses);\n return async (inputArgs) => {\n const fetchApiArgs = evaluateFetchApiArgs(route, clientArgs, inputArgs);\n const response = await fetchApi(fetchApiArgs);\n // TODO: in next major version, throw by default if `strictStatusCode` is enabled\n if (!clientArgs.throwOnUnknownStatus) {\n return response;\n }\n if (knownResponseStatuses.includes(response.status.toString())) {\n return response;\n }\n throw new UnknownStatusError(response, knownResponseStatuses);\n };\n};\nconst initClient = (router, args) => {\n return Object.fromEntries(Object.entries(router).map(([key, subRouter]) => {\n if (isAppRoute(subRouter)) {\n return [key, getRouteQuery(subRouter, args)];\n }\n else {\n return [key, initClient(subRouter, args)];\n }\n }));\n};\n\nclass ResponseValidationError extends Error {\n constructor(appRoute, cause) {\n super(`[ts-rest] Response validation failed for ${appRoute.method} ${appRoute.path}: ${cause.message}`);\n this.appRoute = appRoute;\n this.cause = cause;\n }\n}\n\nconst isAppRouteResponse = (value) => {\n return (value != null &&\n typeof value === 'object' &&\n 'status' in value &&\n typeof value.status === 'number');\n};\nconst isAppRouteOtherResponse = (response) => {\n return (response != null &&\n typeof response === 'object' &&\n 'contentType' in response);\n};\nconst isAppRouteNoBody = (response) => {\n return response === ContractNoBody;\n};\nconst validateResponse = ({ appRoute, response, }) => {\n if (isAppRouteResponse(response)) {\n const responseType = appRoute.responses[response.status];\n const responseSchema = isAppRouteOtherResponse(responseType)\n ? responseType.body\n : responseType;\n const responseValidation = checkZodSchema(response.body, responseSchema);\n if (!responseValidation.success) {\n throw new ResponseValidationError(appRoute, responseValidation.error);\n }\n return {\n status: response.status,\n body: responseValidation.data,\n };\n }\n return response;\n};\n\nclass TsRestResponseError extends Error {\n constructor(route, response) {\n super();\n this.statusCode = response.status;\n this.body = response.body;\n this.name = this.constructor.name;\n if (typeof response.body === 'string') {\n this.message = response.body;\n }\n else if (typeof response.body === 'object' &&\n response.body !== null &&\n 'message' in response.body &&\n typeof response.body.message === 'string') {\n this.message = response.body['message'];\n }\n else {\n this.message = 'Error';\n }\n }\n}\n\nconst isResponse = (response, contractEndpoint) => {\n return (typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'body' in response &&\n typeof response.status === 'number' &&\n response.status >= 200 &&\n response.status < 600 &&\n ((contractEndpoint === null || contractEndpoint === void 0 ? void 0 : contractEndpoint.strictStatusCodes)\n ? Object.keys(contractEndpoint.responses).includes(response.status.toString())\n : true));\n};\nconst isSuccessResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n response.status >= 200 &&\n response.status < 300);\n};\nconst isErrorResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n !isSuccessResponse(response, contractEndpoint));\n};\nconst isUnknownResponse = (response, contractEndpoint) => {\n return (isResponse(response) &&\n !Object.keys(contractEndpoint.responses).includes(response.status.toString()));\n};\nconst isUnknownSuccessResponse = (response, contractEndpoint) => {\n return (isSuccessResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst isUnknownErrorResponse = (response, contractEndpoint) => {\n return (isErrorResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst exhaustiveGuard = (response) => {\n throw new Error(`Unreachable code: Response status is ${response.status}`);\n};\n\nexport { ContractNoBody, ContractPlainTypeRuntimeSymbol, ResponseValidationError, TsRestResponseError, UnknownStatusError, ZodErrorSchema, checkZodSchema, convertQueryParamsToUrlString, encodeQueryParams, encodeQueryParamsJson, evaluateFetchApiArgs, exhaustiveGuard, extractZodObjectShape, fetchApi, getCompleteUrl, getRouteQuery, getRouteResponses, initClient, initContract, initTsRest, insertParamsIntoPath, isAppRoute, isAppRouteMutation, isAppRouteNoBody, isAppRouteOtherResponse, isAppRouteQuery, isAppRouteResponse, isErrorResponse, isResponse, isSuccessResponse, isUnknownErrorResponse, isUnknownResponse, isUnknownSuccessResponse, isZodObject, isZodObjectStrict, isZodType, parseJsonQueryObject, tsRestFetchApi, validateResponse, zodErrorResponse, zodMerge };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FilterOperator","SortDirection","APIError","Error","constructor","args","super","message","this","name","statusCode","error","details","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","QUERY_BUILDER_TYPE","Symbol","QueryBuilder","options","filters","sort","includes","groupBy","join","count","page","pageSize","_a","obj","addFilter","criteria","where","field","value","operator","EQUALS","whereNot","NOT_EQUALS","whereLike","LIKE","whereLikeLower","LIKE_LOWER","whereContains","whereStartsWith","whereEndsWith","whereIn","values","IN","whereNull","IS_NULL","whereNotNull","IS_NOT_NULL","addSort","orderBy","direction","ASC","orderByAsc","orderByDesc","DESC","paginate","relations","relationsArray","Array","isArray","fields","fieldsArray","expression","countAs","alias","build","result","undefined","rangeStart","rangeEnd","length","filter","ascFields","s","map","descFields","eager","clone","ClonedBuilder","Object","assign","create","isZodObjectStrict","passthrough","literal","issues","array","path","union","code","nativeEnum","ZodIssueCode","catchall","any","ContractNoBody","isAppRoute","recursivelyApplyOptions","router","fromEntries","entries","key","_b","_c","objectA","objectB","pathPrefix","headers","baseHeaders","merge","strictStatusCodes","validateResponseOnClient","responses","commonResponses","metadata","ContractPlainTypeRuntimeSymbol","initContract","endpoints","query","mutation","response","body","type","otherResponse","contentType","noBody","encodeQueryParamsJson","encodedValue","trim","isNaN","Number","JSON","stringify","encodeURIComponent","encodeQueryParams","keys","flatMap","tokeniseValue","v","idx","Date","toISOString","k","UnknownStatusError","knownResponseStatuses","status","tsRestFetchApi","async","route","method","validateResponse","fetchOptions","fetch","get","json","responseSchema","parse","text","blob","createFormData","formData","FormData","appendToFormData","File","append","forEach","item","normalizeHeaders","toLowerCase","getCompleteUrl","baseUrl","params","jsonQuery","pathParams","replace","matched","p","startsWith","insertParamsIntoPath","queryComponent","queryString","convertQueryParamsToUrlString","getRouteQuery","clientArgs","inputArgs","fetchApiArgs","extraHeaders","overrideClientOptions","cache","next","extraInputArgs","overriddenClientArgs","evaluateFetchApiArgs","apiFetcher","api","valueOrFunction","combinedHeaders","fetcherArgs","rawBody","rawQuery","credentials","signal","URLSearchParams","fetchApi","throwOnUnknownStatus","toString","initClient","subRouter","BaseRepository","endpoint","contract","root","token","getToken","client","sanitizedRoot","sanitizedEndpoint","clientConfig","Authorization","uuidv4","setToken","getCurrentToken","handleResponse","successStatusCode","parsedResponse","record","data","paginationSchema","positive","limit","total","min","totalPages","hasNext","boolean","hasPrev","accountSummarySchema","balance","availableBalance","accountNumber","accountName","CommonSchemas","pagination","transactionSummary","yesterday","today","thisMonth","lastMonth","accountSummary","AuthDTOSchemas","user","identity","loginRequest","default","email","password","authContract","login","summary","description","User","hasToken","getDisplayName","isEmailIdentity","test","from","console","fromJson","toJson","COLLECTION_STATUS","COLLECTION_CHANNEL","paymentStatusSchema","paymentChannelSchema","CollectionDTOSchemas","collection","id","statusMessage","accountNo","walletId","transactionDate","datetime","narration","msisdn","channel","amount","serviceFee","postedAmount","reference","partnerReference","nullable","transactionId","serviceFeeTransactionId","requestId","completedAt","createdAt","updatedAt","notes","currencyCode","collectionQueryParams","max","sortBy","enum","sortOrder","startDate","endDate","minAmount","maxAmount","search","paymentStatus","paymentChannel","collectionContract","getCollections","getCollection","getSummary","getBalance","COLLECTION_STATUS_INFO","PAYMENT_ACCEPTED","label","category","color","userFriendlyMessage","PENDING_ACK","PAYMENT_REJECTED","GENERIC_FAILURE","CHANNEL_INFO","AIRTEL","networkOperator","serviceName","TIGO","HALOTEL","Collection","CurrencyValidation","isCurrencyCode","Amount","parseFloat","isPending","isSuccessful","isFailed","_","info","getStatusInfo","getChannelInfo","getProviderName","getServiceName","isMobileCollection","isBankCollection","createMany","dataArray","Boolean","isAmountJson","amountInstance","serviceFeeValue","postedAmountValue","serviceFeeInstance","numericValue","postedAmountInstance","createManyFromJson","jsonArray","_d","CollectionQueryBuilder","whereStatus","whereChannel","wherePending","whereSuccessful","whereFailed","whereAmountBetween","GREATER_THAN_OR_EQUAL","LESS_THAN_OR_EQUAL","whereSender","whereAccount","whereReference","wherePartnerReference","toCollectionQuery","PAYOUT_STATUS","MOBILE_PAYOUT_CHANNEL","BANK_PAYOUT_CHANNEL","payoutStatusSchema","mobileChannelSchema","bankChannelSchema","payoutChannelSchema","PayoutDTOSchemas","payout","statusCodeText","statusDescription","countryCode","serviceCode","recipientNames","transactionRef","externalId","cbaReferenceNo","beepTransactionId","receiptNumber","reversedTransactionId","isReconciled","payoutQueryParams","ref","payoutStatus","payoutChannel","mobileChannel","bankChannel","payoutContract","getPayouts","getPayout","getPayoutSummary","PAYOUT_STATUS_INFO","PENDING","INSUFFICIENT_BALANCE","THIRDPARTY_FAILED","AMOUNT_EXCEED_MAXIMUM","WALLET_DEBITED","REVERSED","INVALID_SERVICE","MOBILE_CHANNEL_INFO","VODACOM","isMobileChannel","isBankChannel","BANK","getFailedStatuses","Payout","swiftCode","potentialSwiftCode","split","BankValidation","validateSwiftCodeForAnyCountry","detectedCountry","getCountryFromSwiftCode","Bank","warn","channelInfo","shortName","PayoutQueryBuilder","whereRecipient","toPayoutQuery","TransactionSummary","currency","getMonthlyGrowthRate","getRecentTotal","WalletInfo","actualBalance","hasSufficientBalance","loginData","userData","Math","ceil","collections","payouts","getAccountBalance"],"mappings":"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","x_google_ignoreList":[3]}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/lib/query/query.types.ts","../src/lib/error/error.api.ts","../src/lib/query/query.builder.ts","../node_modules/@ts-rest/core/index.esm.mjs","../src/lib/api/base-repository.ts","../src/lib/api/common-schemas.ts","../src/modules/auth/auth.dtos.ts","../src/modules/auth/auth.api-contract.ts","../src/modules/auth/user.model.ts","../src/modules/collection/collection.dtos.ts","../src/modules/collection/collection.api-contract.ts","../src/modules/collection/collection.model.ts","../src/modules/collection/collection.query-builder.ts","../src/modules/payout/payout.dtos.ts","../src/modules/payout/payout.api-contract.ts","../src/modules/payout/payout.model.ts","../src/modules/payout/payout.query-builder.ts","../src/lib/models/transaction-summary.model.ts","../src/lib/models/wallet-info.model.ts","../src/modules/auth/auth.repository.ts","../src/modules/collection/collection.repository.ts","../src/modules/payout/payout.repository.ts"],"sourcesContent":[null,null,null,"import { z } from 'zod';\n\nconst isZodType = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.safeParse) === 'function';\n};\nconst isZodObject = (obj) => {\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function') {\n return true;\n }\n if (typeof (obj === null || obj === void 0 ? void 0 : obj.innerType) === 'function') {\n return isZodObject(obj === null || obj === void 0 ? void 0 : obj.innerType());\n }\n return false;\n};\nconst isZodObjectStrict = (obj) => {\n return typeof (obj === null || obj === void 0 ? void 0 : obj.passthrough) === 'function';\n};\nconst extractZodObjectShape = (obj) => {\n if (!isZodObject(obj)) {\n throw new Error('Unknown zod object type');\n }\n if ('innerType' in obj) {\n return extractZodObjectShape(obj.innerType());\n }\n return obj.shape;\n};\nconst zodMerge = (objectA, objectB) => {\n if (isZodObjectStrict(objectA)) {\n if (isZodObjectStrict(objectB)) {\n return objectA.merge(objectB);\n }\n return objectA;\n }\n if (isZodObjectStrict(objectB)) {\n return objectB;\n }\n return Object.assign({}, objectA, objectB);\n};\nconst checkZodSchema = (data, schema, { passThroughExtraKeys = false } = {}) => {\n if (isZodType(schema)) {\n const result = schema.safeParse(data);\n if (result.success) {\n return {\n success: true,\n data: passThroughExtraKeys && typeof data === 'object'\n ? { ...data, ...result.data }\n : result.data,\n };\n }\n return {\n success: false,\n error: result.error,\n };\n }\n return {\n success: true,\n data: data,\n };\n};\n// Convert a ZodError to a plain object because ZodError extends Error and causes problems with NestJS\nconst zodErrorResponse = (error) => {\n return {\n name: error.name,\n issues: error.issues,\n };\n};\nconst ZodErrorSchema = z.object({\n name: z.literal('ZodError'),\n issues: z.array(z\n .object({\n path: z.array(z.union([z.string(), z.number()])),\n message: z.string().optional(),\n code: z.nativeEnum(z.ZodIssueCode),\n })\n // ZodIssuse type are complex and potentially unstable. So we don’t deal with his specific fields other than the common.\n .catchall(z.any())),\n});\n\nconst ContractNoBody = Symbol('ContractNoBody');\n/**\n * Differentiate between a route and a router\n *\n * @param obj\n * @returns\n */\nconst isAppRoute = (obj) => {\n return 'method' in obj && 'path' in obj;\n};\nconst isAppRouteQuery = (route) => {\n return route.method === 'GET';\n};\nconst isAppRouteMutation = (route) => {\n return !isAppRouteQuery(route);\n};\n/**\n *\n * @deprecated Please use {@link initContract} instead.\n */\nconst initTsRest = () => initContract();\nconst recursivelyApplyOptions = (router, options) => {\n return Object.fromEntries(Object.entries(router).map(([key, value]) => {\n var _a, _b, _c;\n if (isAppRoute(value)) {\n return [\n key,\n {\n ...value,\n path: (options === null || options === void 0 ? void 0 : options.pathPrefix)\n ? options.pathPrefix + value.path\n : value.path,\n headers: zodMerge(options === null || options === void 0 ? void 0 : options.baseHeaders, value.headers),\n strictStatusCodes: (_a = value.strictStatusCodes) !== null && _a !== void 0 ? _a : options === null || options === void 0 ? void 0 : options.strictStatusCodes,\n validateResponseOnClient: (_b = value.validateResponseOnClient) !== null && _b !== void 0 ? _b : options === null || options === void 0 ? void 0 : options.validateResponseOnClient,\n responses: {\n ...options === null || options === void 0 ? void 0 : options.commonResponses,\n ...value.responses,\n },\n metadata: (options === null || options === void 0 ? void 0 : options.metadata)\n ? {\n ...options === null || options === void 0 ? void 0 : options.metadata,\n ...((_c = value.metadata) !== null && _c !== void 0 ? _c : {}),\n }\n : value.metadata,\n },\n ];\n }\n else {\n return [key, recursivelyApplyOptions(value, options)];\n }\n }));\n};\nconst ContractPlainTypeRuntimeSymbol = Symbol('ContractPlainType');\n/**\n * Instantiate a ts-rest client, primarily to access `router`, `response`, and `body`\n *\n * @returns {ContractInstance}\n */\nconst initContract = () => {\n return {\n // @ts-expect-error - this is a type error, but it's not clear how to fix it\n router: (endpoints, options) => recursivelyApplyOptions(endpoints, options),\n query: (args) => args,\n mutation: (args) => args,\n responses: (args) => args,\n response: () => ContractPlainTypeRuntimeSymbol,\n body: () => ContractPlainTypeRuntimeSymbol,\n type: () => ContractPlainTypeRuntimeSymbol,\n otherResponse: ({ contentType, body, }) => ({\n contentType,\n body,\n }),\n noBody: () => ContractNoBody,\n };\n};\n\n/**\n * @param path - The URL e.g. /posts/:id\n * @param params - The params e.g. `{ id: string }`\n * @returns - The URL with the params e.g. /posts/123\n */\nconst insertParamsIntoPath = ({ path, params, }) => {\n const pathParams = params;\n return path.replace(/\\/?:([^/?]+)\\??/g, (matched, p) => pathParams[p]\n ? `${matched.startsWith('/') ? '/' : ''}${pathParams[p]}`\n : '');\n};\n\n/**\n *\n * @param query - Any JSON object\n * @param json - Use JSON.stringify to encode the query values\n * @returns - The query url segment, using explode array syntax, and deep object syntax\n */\nconst convertQueryParamsToUrlString = (query, json = false) => {\n const queryString = json\n ? encodeQueryParamsJson(query)\n : encodeQueryParams(query);\n return (queryString === null || queryString === void 0 ? void 0 : queryString.length) > 0 ? '?' + queryString : '';\n};\nconst encodeQueryParamsJson = (query) => {\n if (!query) {\n return '';\n }\n return Object.entries(query)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n let encodedValue;\n // if value is a string and is not a reserved JSON value or a number, pass it without encoding\n // this makes strings look nicer in the URL (e.g. ?name=John instead of ?name=%22John%22)\n // this is also how OpenAPI will pass strings even if they are marked as application/json types\n if (typeof value === 'string' &&\n !['true', 'false', 'null'].includes(value.trim()) &&\n isNaN(Number(value))) {\n encodedValue = value;\n }\n else {\n encodedValue = JSON.stringify(value);\n }\n return `${encodeURIComponent(key)}=${encodeURIComponent(encodedValue)}`;\n })\n .join('&');\n};\nconst encodeQueryParams = (query) => {\n if (!query) {\n return '';\n }\n return (Object.keys(query)\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n .flatMap((key) => tokeniseValue(key, query[key]))\n .map(([key, value]) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n })\n .join('&'));\n};\n/**\n * A recursive function to convert an object/string/number/Date/whatever into an array of key=value pairs\n *\n * The output of this should be flatMap-able to a string of key=value pairs which can be\n * joined with & to form a query string\n *\n * This should be fully compatible with the \"qs\" library, but without the need to add a dependency\n */\nconst tokeniseValue = (key, value) => {\n if (Array.isArray(value)) {\n return value.flatMap((v, idx) => tokeniseValue(`${key}[${idx}]`, v));\n }\n if (value instanceof Date) {\n return [[`${key}`, value.toISOString()]];\n }\n if (value === null) {\n return [[`${key}`, '']];\n }\n if (value === undefined) {\n return [];\n }\n if (typeof value === 'object') {\n return Object.keys(value).flatMap((k) => \n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n tokeniseValue(`${key}[${k}]`, value[k]));\n }\n return [[`${key}`, `${value}`]];\n};\n/**\n *\n * @param query - A server-side query object where values have been encoded as JSON strings\n * @returns - The same object with the JSON strings decoded. Objects that were encoded using toJSON such as Dates will remain as strings\n */\nconst parseJsonQueryObject = (query) => {\n return Object.fromEntries(Object.entries(query).map(([key, value]) => {\n let parsedValue;\n // if json parse fails, treat the value as a string\n // this allows us to pass strings without having to surround them with quotes\n try {\n parsedValue = JSON.parse(value);\n }\n catch {\n parsedValue = value;\n }\n return [key, parsedValue];\n }));\n};\n\nclass UnknownStatusError extends Error {\n constructor(response, knownResponseStatuses) {\n const expectedStatuses = knownResponseStatuses.join(',');\n super(`Server returned unexpected response. Expected one of: ${expectedStatuses} got: ${response.status}`);\n this.response = response;\n }\n}\n\n/**\n * @deprecated Only safe to use on the client-side. Use `ServerInferResponses`/`ClientInferResponses` instead.\n */\nfunction getRouteResponses(router) {\n return {};\n}\n/**\n * Default fetch api implementation:\n *\n * Can be used as a reference for implementing your own fetcher,\n * or used in the \"api\" field of ClientArgs to allow you to hook\n * into the request to run custom logic\n */\nconst tsRestFetchApi = async ({ route, path, method, headers, body, validateResponse, fetchOptions, }) => {\n const result = await fetch(path, {\n ...fetchOptions,\n method,\n headers,\n body,\n });\n const contentType = result.headers.get('content-type');\n if ((contentType === null || contentType === void 0 ? void 0 : contentType.includes('application/')) && (contentType === null || contentType === void 0 ? void 0 : contentType.includes('json'))) {\n const response = {\n status: result.status,\n body: await result.json(),\n headers: result.headers,\n };\n const responseSchema = route.responses[response.status];\n if ((validateResponse !== null && validateResponse !== void 0 ? validateResponse : route.validateResponseOnClient) &&\n isZodType(responseSchema)) {\n return {\n ...response,\n body: responseSchema.parse(response.body),\n };\n }\n return response;\n }\n if (contentType === null || contentType === void 0 ? void 0 : contentType.includes('text/')) {\n return {\n status: result.status,\n body: await result.text(),\n headers: result.headers,\n };\n }\n return {\n status: result.status,\n body: await result.blob(),\n headers: result.headers,\n };\n};\nconst createFormData = (body) => {\n const formData = new FormData();\n const appendToFormData = (key, value) => {\n if (value instanceof File) {\n formData.append(key, value);\n }\n else {\n formData.append(key, JSON.stringify(value));\n }\n };\n Object.entries(body).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n for (const item of value) {\n appendToFormData(key, item);\n }\n }\n else {\n appendToFormData(key, value);\n }\n });\n return formData;\n};\nconst normalizeHeaders = (headers) => {\n return Object.fromEntries(Object.entries(headers).map(([k, v]) => [k.toLowerCase(), v]));\n};\nconst fetchApi = (options) => {\n const { path, clientArgs, route, body, query, extraInputArgs, headers, fetchOptions, } = options;\n const apiFetcher = clientArgs.api || tsRestFetchApi;\n const baseHeaders = clientArgs.baseHeaders &&\n Object.fromEntries(Object.entries(clientArgs.baseHeaders).map(([name, valueOrFunction]) => {\n if (typeof valueOrFunction === 'function') {\n return [name, valueOrFunction(options)];\n }\n else {\n return [name, valueOrFunction];\n }\n }));\n const combinedHeaders = {\n ...(baseHeaders && normalizeHeaders(baseHeaders)),\n ...normalizeHeaders(headers),\n };\n // Remove any headers that are set to undefined\n Object.keys(combinedHeaders).forEach((key) => {\n if (combinedHeaders[key] === undefined) {\n delete combinedHeaders[key];\n }\n });\n let fetcherArgs = {\n route,\n path,\n method: route.method,\n headers: combinedHeaders,\n body: undefined,\n rawBody: body,\n rawQuery: query,\n contentType: undefined,\n validateResponse: clientArgs.validateResponse,\n fetchOptions: {\n ...(clientArgs.credentials && { credentials: clientArgs.credentials }),\n ...fetchOptions,\n },\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.signal) && { signal: fetchOptions.signal }),\n ...((fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.cache) && { cache: fetchOptions.cache }),\n ...(fetchOptions &&\n 'next' in fetchOptions &&\n !!(fetchOptions === null || fetchOptions === void 0 ? void 0 : fetchOptions.next) && { next: fetchOptions.next }),\n };\n if (route.method !== 'GET') {\n if ('contentType' in route && route.contentType === 'multipart/form-data') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'multipart/form-data',\n body: body instanceof FormData ? body : createFormData(body),\n };\n }\n else if ('contentType' in route &&\n route.contentType === 'application/x-www-form-urlencoded') {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/x-www-form-urlencoded',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n ...fetcherArgs.headers,\n },\n body: typeof body === 'string'\n ? body\n : new URLSearchParams(body),\n };\n }\n else if (body !== null && body !== undefined) {\n fetcherArgs = {\n ...fetcherArgs,\n contentType: 'application/json',\n headers: {\n 'content-type': 'application/json',\n ...fetcherArgs.headers,\n },\n body: JSON.stringify(body),\n };\n }\n }\n return apiFetcher({\n ...fetcherArgs,\n ...extraInputArgs,\n });\n};\nconst evaluateFetchApiArgs = (route, clientArgs, inputArgs) => {\n const { query, params, body, headers, extraHeaders, overrideClientOptions, fetchOptions, \n // TODO: remove in 4.0\n cache, \n // TODO: remove in 4.0\n next, \n // extra input args\n ...extraInputArgs } = inputArgs || {};\n const overriddenClientArgs = {\n ...clientArgs,\n ...overrideClientOptions,\n };\n const completeUrl = getCompleteUrl(query, overriddenClientArgs.baseUrl, params, route, !!overriddenClientArgs.jsonQuery);\n return {\n path: completeUrl,\n clientArgs: overriddenClientArgs,\n route,\n body,\n query,\n extraInputArgs,\n fetchOptions: {\n ...(cache && { cache }),\n ...(next && { next }),\n ...fetchOptions,\n },\n headers: {\n ...extraHeaders,\n ...headers,\n },\n };\n};\n/**\n * @hidden\n */\nconst getCompleteUrl = (query, baseUrl, params, route, jsonQuery) => {\n const path = insertParamsIntoPath({\n path: route.path,\n params: params,\n });\n const queryComponent = convertQueryParamsToUrlString(query, jsonQuery);\n return `${baseUrl}${path}${queryComponent}`;\n};\nconst getRouteQuery = (route, clientArgs) => {\n const knownResponseStatuses = Object.keys(route.responses);\n return async (inputArgs) => {\n const fetchApiArgs = evaluateFetchApiArgs(route, clientArgs, inputArgs);\n const response = await fetchApi(fetchApiArgs);\n // TODO: in next major version, throw by default if `strictStatusCode` is enabled\n if (!clientArgs.throwOnUnknownStatus) {\n return response;\n }\n if (knownResponseStatuses.includes(response.status.toString())) {\n return response;\n }\n throw new UnknownStatusError(response, knownResponseStatuses);\n };\n};\nconst initClient = (router, args) => {\n return Object.fromEntries(Object.entries(router).map(([key, subRouter]) => {\n if (isAppRoute(subRouter)) {\n return [key, getRouteQuery(subRouter, args)];\n }\n else {\n return [key, initClient(subRouter, args)];\n }\n }));\n};\n\nclass ResponseValidationError extends Error {\n constructor(appRoute, cause) {\n super(`[ts-rest] Response validation failed for ${appRoute.method} ${appRoute.path}: ${cause.message}`);\n this.appRoute = appRoute;\n this.cause = cause;\n }\n}\n\nconst isAppRouteResponse = (value) => {\n return (value != null &&\n typeof value === 'object' &&\n 'status' in value &&\n typeof value.status === 'number');\n};\nconst isAppRouteOtherResponse = (response) => {\n return (response != null &&\n typeof response === 'object' &&\n 'contentType' in response);\n};\nconst isAppRouteNoBody = (response) => {\n return response === ContractNoBody;\n};\nconst validateResponse = ({ appRoute, response, }) => {\n if (isAppRouteResponse(response)) {\n const responseType = appRoute.responses[response.status];\n const responseSchema = isAppRouteOtherResponse(responseType)\n ? responseType.body\n : responseType;\n const responseValidation = checkZodSchema(response.body, responseSchema);\n if (!responseValidation.success) {\n throw new ResponseValidationError(appRoute, responseValidation.error);\n }\n return {\n status: response.status,\n body: responseValidation.data,\n };\n }\n return response;\n};\n\nclass TsRestResponseError extends Error {\n constructor(route, response) {\n super();\n this.statusCode = response.status;\n this.body = response.body;\n this.name = this.constructor.name;\n if (typeof response.body === 'string') {\n this.message = response.body;\n }\n else if (typeof response.body === 'object' &&\n response.body !== null &&\n 'message' in response.body &&\n typeof response.body.message === 'string') {\n this.message = response.body['message'];\n }\n else {\n this.message = 'Error';\n }\n }\n}\n\nconst isResponse = (response, contractEndpoint) => {\n return (typeof response === 'object' &&\n response !== null &&\n 'status' in response &&\n 'body' in response &&\n typeof response.status === 'number' &&\n response.status >= 200 &&\n response.status < 600 &&\n ((contractEndpoint === null || contractEndpoint === void 0 ? void 0 : contractEndpoint.strictStatusCodes)\n ? Object.keys(contractEndpoint.responses).includes(response.status.toString())\n : true));\n};\nconst isSuccessResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n response.status >= 200 &&\n response.status < 300);\n};\nconst isErrorResponse = (response, contractEndpoint) => {\n return (isResponse(response, contractEndpoint) &&\n !isSuccessResponse(response, contractEndpoint));\n};\nconst isUnknownResponse = (response, contractEndpoint) => {\n return (isResponse(response) &&\n !Object.keys(contractEndpoint.responses).includes(response.status.toString()));\n};\nconst isUnknownSuccessResponse = (response, contractEndpoint) => {\n return (isSuccessResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst isUnknownErrorResponse = (response, contractEndpoint) => {\n return (isErrorResponse(response) && isUnknownResponse(response, contractEndpoint));\n};\nconst exhaustiveGuard = (response) => {\n throw new Error(`Unreachable code: Response status is ${response.status}`);\n};\n\nexport { ContractNoBody, ContractPlainTypeRuntimeSymbol, ResponseValidationError, TsRestResponseError, UnknownStatusError, ZodErrorSchema, checkZodSchema, convertQueryParamsToUrlString, encodeQueryParams, encodeQueryParamsJson, evaluateFetchApiArgs, exhaustiveGuard, extractZodObjectShape, fetchApi, getCompleteUrl, getRouteQuery, getRouteResponses, initClient, initContract, initTsRest, insertParamsIntoPath, isAppRoute, isAppRouteMutation, isAppRouteNoBody, isAppRouteOtherResponse, isAppRouteQuery, isAppRouteResponse, isErrorResponse, isResponse, isSuccessResponse, isUnknownErrorResponse, isUnknownResponse, isUnknownSuccessResponse, isZodObject, isZodObjectStrict, isZodType, parseJsonQueryObject, tsRestFetchApi, validateResponse, zodErrorResponse, zodMerge };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FilterOperator","SortDirection","APIError","Error","constructor","args","super","message","this","name","statusCode","error","details","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","QUERY_BUILDER_TYPE","Symbol","QueryBuilder","options","filters","sort","includes","groupBy","join","count","page","limit","_a","obj","addFilter","criteria","where","field","value","operator","EQUALS","whereNot","NOT_EQUALS","whereLike","LIKE","whereLikeLower","LIKE_LOWER","whereContains","whereStartsWith","whereEndsWith","whereIn","values","IN","whereNull","IS_NULL","whereNotNull","IS_NOT_NULL","whereGreaterThan","GREATER_THAN","whereGreaterThanOrEqual","GREATER_THAN_OR_EQUAL","whereLessThan","LESS_THAN","whereLessThanOrEqual","LESS_THAN_OR_EQUAL","whereBetween","min","max","whereDateBetween","startDate","endDate","addSort","orderBy","direction","ASC","orderByAsc","orderByDesc","DESC","paginate","relations","relationsArray","Array","isArray","fields","fieldsArray","expression","countAs","alias","build","result","undefined","rangeStart","rangeEnd","length","filter","ascFields","descFields","push","dateFilters","_b","f","startDateFilter","find","endDateFilter","eager","clone","ClonedBuilder","Object","assign","create","isZodObjectStrict","passthrough","literal","issues","array","path","union","code","nativeEnum","ZodIssueCode","catchall","any","ContractNoBody","isAppRoute","recursivelyApplyOptions","router","fromEntries","entries","map","key","_c","objectA","objectB","pathPrefix","headers","baseHeaders","merge","strictStatusCodes","validateResponseOnClient","responses","commonResponses","metadata","ContractPlainTypeRuntimeSymbol","initContract","endpoints","query","mutation","response","body","type","otherResponse","contentType","noBody","encodeQueryParamsJson","encodedValue","trim","isNaN","Number","JSON","stringify","encodeURIComponent","encodeQueryParams","keys","flatMap","tokeniseValue","v","idx","Date","toISOString","k","UnknownStatusError","knownResponseStatuses","status","tsRestFetchApi","async","route","method","validateResponse","fetchOptions","fetch","get","json","responseSchema","parse","text","blob","createFormData","formData","FormData","appendToFormData","File","append","forEach","item","normalizeHeaders","toLowerCase","getCompleteUrl","baseUrl","params","jsonQuery","pathParams","replace","matched","p","startsWith","insertParamsIntoPath","queryComponent","queryString","convertQueryParamsToUrlString","getRouteQuery","clientArgs","inputArgs","fetchApiArgs","extraHeaders","overrideClientOptions","cache","next","extraInputArgs","overriddenClientArgs","evaluateFetchApiArgs","apiFetcher","api","valueOrFunction","combinedHeaders","fetcherArgs","rawBody","rawQuery","credentials","signal","URLSearchParams","fetchApi","throwOnUnknownStatus","toString","initClient","subRouter","BaseRepository","endpoint","contract","root","token","getToken","client","sanitizedRoot","sanitizedEndpoint","clientConfig","Authorization","uuidv4","setToken","getCurrentToken","handleResponse","successStatusCode","parsedResponse","record","data","paginationSchema","positive","total","totalPages","hasNext","boolean","hasPrev","accountSummarySchema","balance","availableBalance","accountNumber","accountName","CommonSchemas","pagination","transactionSummary","yesterday","today","thisMonth","lastMonth","accountSummary","AuthDTOSchemas","user","identity","loginRequest","default","email","password","authContract","login","summary","description","User","hasToken","getDisplayName","isEmailIdentity","test","from","console","fromJson","toJson","COLLECTION_STATUS","COLLECTION_CHANNEL","paymentStatusSchema","paymentChannelSchema","CollectionDTOSchemas","collection","id","statusMessage","accountNo","walletId","transactionDate","datetime","narration","msisdn","channel","amount","serviceFee","postedAmount","reference","partnerReference","nullable","transactionId","serviceFeeTransactionId","requestId","completedAt","createdAt","updatedAt","notes","currencyCode","collectionQueryParams","sortBy","sortOrder","enum","minAmount","maxAmount","search","paymentStatus","paymentChannel","collectionContract","getCollections","getCollection","getSummary","getBalance","COLLECTION_STATUS_INFO","PAYMENT_ACCEPTED","label","category","color","userFriendlyMessage","PENDING_ACK","PAYMENT_REJECTED","GENERIC_FAILURE","CHANNEL_INFO","AIRTEL","networkOperator","serviceName","TIGO","HALOTEL","Collection","CurrencyValidation","isCurrencyCode","Amount","parseFloat","isPending","isSuccessful","isFailed","_","info","getStatusInfo","getChannelInfo","getProviderName","getServiceName","isMobileCollection","isBankCollection","createMany","dataArray","Boolean","isAmountJson","amountInstance","serviceFeeValue","postedAmountValue","serviceFeeInstance","numericValue","postedAmountInstance","createManyFromJson","jsonArray","_d","CollectionQueryBuilder","forCollections","fromDTO","dto","builder","whereStatus","whereChannel","whereSender","whereAccount","whereReference","wherePartnerReference","whereAmountBetween","whereSearch","wherePending","whereSuccessful","whereFailed","searchTerm","toCollectionQuery","extractedValues","extractFilterValues","extractSortField","extractSortOrder","isValidChannel","isValidStatus","PAYOUT_STATUS","MOBILE_PAYOUT_CHANNEL","BANK_PAYOUT_CHANNEL","payoutStatusSchema","mobileChannelSchema","bankChannelSchema","payoutChannelSchema","PayoutDTOSchemas","payout","statusCodeText","statusDescription","countryCode","serviceCode","recipientNames","transactionRef","externalId","cbaReferenceNo","beepTransactionId","receiptNumber","reversedTransactionId","isReconciled","payoutQueryParams","ref","payoutStatus","payoutChannel","mobileChannel","bankChannel","payoutContract","getPayouts","getPayout","getPayoutSummary","PAYOUT_STATUS_INFO","PENDING","INSUFFICIENT_BALANCE","THIRDPARTY_FAILED","AMOUNT_EXCEED_MAXIMUM","WALLET_DEBITED","REVERSED","INVALID_SERVICE","MOBILE_CHANNEL_INFO","VODACOM","isMobileChannel","isBankChannel","BANK","getFailedStatuses","Payout","swiftCode","potentialSwiftCode","split","BankValidation","validateSwiftCodeForAnyCountry","detectedCountry","getCountryFromSwiftCode","Bank","warn","channelInfo","shortName","PayoutQueryBuilder","whereRecipient","toPayoutQuery","forPayouts","TransactionSummary","currency","getMonthlyGrowthRate","getRecentTotal","WalletInfo","actualBalance","hasSufficientBalance","loginData","userData","Math","ceil","collections","payouts","getAccountBalance"],"mappings":"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","x_google_ignoreList":[3]}