@temboplus/tembo-dashboard 0.0.1

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.
Files changed (35) hide show
  1. package/README.md +130 -0
  2. package/dist/index.cjs.js +2 -0
  3. package/dist/index.cjs.js.map +1 -0
  4. package/dist/index.d.ts +6 -0
  5. package/dist/index.esm.js +2 -0
  6. package/dist/index.esm.js.map +1 -0
  7. package/dist/lib/api/base-repository.d.ts +168 -0
  8. package/dist/lib/api/common-schemas.d.ts +115 -0
  9. package/dist/lib/api/index.d.ts +2 -0
  10. package/dist/lib/error/error.api.d.ts +62 -0
  11. package/dist/lib/error/index.d.ts +1 -0
  12. package/dist/lib/models/index.d.ts +2 -0
  13. package/dist/lib/models/transaction-summary.model.d.ts +22 -0
  14. package/dist/lib/models/wallet-info.model.d.ts +17 -0
  15. package/dist/lib/query/index.d.ts +2 -0
  16. package/dist/lib/query/query.builder.d.ts +65 -0
  17. package/dist/lib/query/query.types.d.ts +36 -0
  18. package/dist/modules/auth/auth.api-contract.d.ts +52 -0
  19. package/dist/modules/auth/auth.dtos.d.ts +31 -0
  20. package/dist/modules/auth/auth.repository.d.ts +17 -0
  21. package/dist/modules/auth/index.d.ts +4 -0
  22. package/dist/modules/auth/user.model.d.ts +48 -0
  23. package/dist/modules/collection/collection.api-contract.d.ts +385 -0
  24. package/dist/modules/collection/collection.dtos.d.ts +195 -0
  25. package/dist/modules/collection/collection.model.d.ts +145 -0
  26. package/dist/modules/collection/collection.query-builder.d.ts +18 -0
  27. package/dist/modules/collection/collection.repository.d.ts +38 -0
  28. package/dist/modules/collection/index.d.ts +5 -0
  29. package/dist/modules/payout/index.d.ts +5 -0
  30. package/dist/modules/payout/payout.api-contract.d.ts +427 -0
  31. package/dist/modules/payout/payout.dtos.d.ts +188 -0
  32. package/dist/modules/payout/payout.model.d.ts +156 -0
  33. package/dist/modules/payout/payout.query-builder.d.ts +15 -0
  34. package/dist/modules/payout/payout.repository.d.ts +34 -0
  35. package/package.json +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/lib/error/error.api.ts","../src/lib/query/query.types.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/auth/auth.repository.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/collection/collection.repository.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/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":["APIError","Error","constructor","args","super","message","this","name","statusCode","error","details","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","FilterOperator","SortDirection","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","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","AuthRepository","loginData","userData","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","CollectionRepository","Math","ceil","collections","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","PayoutRepository","payouts","getAccountBalance"],"mappings":"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","x_google_ignoreList":[3]}
@@ -0,0 +1,168 @@
1
+ import { AppRouter } from "@ts-rest/core";
2
+ import { InitClientArgs } from "@ts-rest/core";
3
+ /**
4
+ * BaseRepository - Generic base class for API repositories
5
+ *
6
+ * Provides a consistent way to interact with the Afloat API using ts-rest contracts.
7
+ * Handles authentication token management through multiple fallback mechanisms.
8
+ *
9
+ * **Token Resolution Order:**
10
+ * 1. Direct token provided in constructor
11
+ * 2. Global authentication state via getCurrentToken()
12
+ *
13
+ * @template TContract - The API contract extending `AppRouter` from `@ts-rest/core`
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // Usage 1: Direct token usage (Recommended for server-side usage)
18
+ * const repo = new WalletRepository("wallet", walletContract, {
19
+ * token: "user-auth-token"
20
+ * });
21
+ *
22
+ * // Usage 2: Global auth state (Recommended for client-side usage)
23
+ * // Token automatically retrieved from AfloatAuth.instance
24
+ * const repo = new WalletRepository("wallet", walletContract);
25
+ * ```
26
+ */
27
+ export declare class BaseRepository<TContract extends AppRouter> {
28
+ /**
29
+ * The ts-rest contract defining the API endpoints
30
+ * @protected
31
+ */
32
+ protected contract: TContract;
33
+ /**
34
+ * The API endpoint path for this repository
35
+ * @protected
36
+ */
37
+ protected endpoint: string;
38
+ /**
39
+ * Optional custom API root URL
40
+ * @protected
41
+ */
42
+ protected root: string | undefined;
43
+ /**
44
+ * Optional authentication token for API calls
45
+ * @protected
46
+ */
47
+ protected token: string | undefined;
48
+ /**
49
+ * Creates a new BaseRepository instance.
50
+ *
51
+ * @param endpoint - The API endpoint path (e.g., "users", "wallets")
52
+ * @param contract - The ts-rest contract defining the API
53
+ * @param options - Optional configuration
54
+ * @param options.root - Custom API root URL (defaults to https://gateway.temboplus.com/dashboard)
55
+ * @param options.token - Authentication token for API calls
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * // Server-side with explicit token
60
+ * const repo = new WalletRepository("wallet", walletContract, {
61
+ * token: "user-auth-token",
62
+ * root: "https://gateway.temboplus.com/dashboard"
63
+ * });
64
+ *
65
+ * // Client-side using global auth state
66
+ * const repo = new WalletRepository("wallet", walletContract);
67
+ * ```
68
+ */
69
+ constructor(endpoint: string, contract: TContract, options?: {
70
+ root?: string;
71
+ token?: string;
72
+ });
73
+ /**
74
+ * Resolves an authentication token for API calls.
75
+ *
76
+ * Uses a fallback chain to find a valid token:
77
+ * 1. Instance token (set in constructor)
78
+ * 2. Return an empty string if no token is found (e.g., for public/unauthenticated endpoints)
79
+ *
80
+ * @protected
81
+ * @returns The authentication token
82
+ * @throws {Error} If no valid token can be found
83
+ */
84
+ protected getToken(): string;
85
+ /**
86
+ * Gets the configured ts-rest client for making API requests.
87
+ *
88
+ * Automatically includes authentication headers and request tracking.
89
+ * The client resolves the authentication token using the fallback chain.
90
+ *
91
+ * @returns Configured ts-rest client instance
92
+ * @throws {Error} If no authentication token is available
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // Client automatically includes token and request ID
97
+ * const result = await this.client.getUsers({ query: { limit: 10 } });
98
+ *
99
+ * // Headers automatically included:
100
+ * // - token: "user-auth-token"
101
+ * // - x-request-id: "uuid-v4-string"
102
+ * ```
103
+ */
104
+ get client(): { [TKey in keyof TContract]: TContract[TKey] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey], InitClientArgs>> : TContract[TKey] extends AppRouter ? TContract[TKey] extends infer T extends AppRouter ? { [TKey_1 in keyof T]: TContract[TKey][TKey_1] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1], InitClientArgs>> : TContract[TKey][TKey_1] extends AppRouter ? TContract[TKey][TKey_1] extends infer T_1 extends AppRouter ? { [TKey_2 in keyof T_1]: TContract[TKey][TKey_1][TKey_2] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2] extends AppRouter ? TContract[TKey][TKey_1][TKey_2] extends infer T_2 extends AppRouter ? { [TKey_3 in keyof T_2]: TContract[TKey][TKey_1][TKey_2][TKey_3] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3] extends infer T_3 extends AppRouter ? { [TKey_4 in keyof T_3]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4] extends infer T_4 extends AppRouter ? { [TKey_5 in keyof T_4]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5] extends infer T_5 extends AppRouter ? { [TKey_6 in keyof T_5]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6] extends infer T_6 extends AppRouter ? { [TKey_7 in keyof T_6]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7] extends infer T_7 extends AppRouter ? { [TKey_8 in keyof T_7]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8] extends infer T_8 extends AppRouter ? { [TKey_9 in keyof T_8]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9] extends AppRouter ? TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9] extends infer T_9 extends AppRouter ? { [TKey_10 in keyof T_9]: TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9][TKey_10] extends import("@ts-rest/core").AppRoute ? import("@ts-rest/core").AppRouteFunction<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9][TKey_10], InitClientArgs, import("@ts-rest/core").PartialClientInferRequest<TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9][TKey_10], InitClientArgs>> : TContract[TKey][TKey_1][TKey_2][TKey_3][TKey_4][TKey_5][TKey_6][TKey_7][TKey_8][TKey_9][TKey_10] extends AppRouter ? /*elided*/ any : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; } : never : never; };
105
+ /**
106
+ * Updates the authentication token used by this repository.
107
+ *
108
+ * @param token - The new authentication token
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * // Useful for switching between different user contexts
113
+ * repository.setToken("new-auth-token");
114
+ *
115
+ * // Or clearing the token to fall back to global auth state
116
+ * repository.setToken(undefined);
117
+ * ```
118
+ */
119
+ setToken(token: string): void;
120
+ /**
121
+ * Gets the currently configured token (if set directly on the instance).
122
+ *
123
+ * @returns The current authentication token or undefined
124
+ *
125
+ * @note This only returns tokens set directly on the instance, not tokens
126
+ * resolved from the global authentication state.
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const directToken = repository.getCurrentToken();
131
+ * if (directToken) {
132
+ * console.log("Repository has a direct token");
133
+ * } else {
134
+ * console.log("Repository will use global auth state");
135
+ * }
136
+ * ```
137
+ */
138
+ getCurrentToken(): string | undefined;
139
+ /**
140
+ * Handles API responses consistently across all repositories.
141
+ *
142
+ * Checks the HTTP status code and either returns the response body for
143
+ * successful requests or throws appropriate errors for failures.
144
+ *
145
+ * @template T - The expected type of the successful response body
146
+ * @param result - The API response object with status and body
147
+ * @param successStatusCode - The expected HTTP status code for success
148
+ * @returns The response body typed as T
149
+ * @throws {APIError} For API errors (400, 401, 403, 404, 500, etc.)
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const result = await this.client.getUser({ params: { id: "123" } });
154
+ * return this.handleResponse<User>(result, 200);
155
+ *
156
+ * // Automatically handles error cases:
157
+ * // - 400: Bad Request with detailed error info
158
+ * // - 401: Unauthorized (authentication required)
159
+ * // - 403: Forbidden (insufficient permissions)
160
+ * // - 404: Not Found
161
+ * // - Other: Generic server error
162
+ * ```
163
+ */
164
+ handleResponse<T>(result: {
165
+ status: number;
166
+ body: unknown;
167
+ }, successStatusCode: number): T;
168
+ }
@@ -0,0 +1,115 @@
1
+ import z from "zod";
2
+ declare const paginationSchema: z.ZodObject<{
3
+ page: z.ZodNumber;
4
+ limit: z.ZodNumber;
5
+ total: z.ZodNumber;
6
+ totalPages: z.ZodNumber;
7
+ hasNext: z.ZodBoolean;
8
+ hasPrev: z.ZodBoolean;
9
+ }, "strip", z.ZodTypeAny, {
10
+ page: number;
11
+ limit: number;
12
+ total: number;
13
+ totalPages: number;
14
+ hasNext: boolean;
15
+ hasPrev: boolean;
16
+ }, {
17
+ page: number;
18
+ limit: number;
19
+ total: number;
20
+ totalPages: number;
21
+ hasNext: boolean;
22
+ hasPrev: boolean;
23
+ }>;
24
+ declare const accountSummarySchema: z.ZodObject<{
25
+ balance: z.ZodNumber;
26
+ availableBalance: z.ZodNumber;
27
+ accountNumber: z.ZodString;
28
+ accountName: z.ZodString;
29
+ }, "strip", z.ZodTypeAny, {
30
+ balance: number;
31
+ availableBalance: number;
32
+ accountNumber: string;
33
+ accountName: string;
34
+ }, {
35
+ balance: number;
36
+ availableBalance: number;
37
+ accountNumber: string;
38
+ accountName: string;
39
+ }>;
40
+ declare const transactionSummarySchema: z.ZodObject<{
41
+ yesterday: z.ZodNumber;
42
+ today: z.ZodNumber;
43
+ thisMonth: z.ZodNumber;
44
+ lastMonth: z.ZodNumber;
45
+ }, "strip", z.ZodTypeAny, {
46
+ yesterday: number;
47
+ today: number;
48
+ thisMonth: number;
49
+ lastMonth: number;
50
+ }, {
51
+ yesterday: number;
52
+ today: number;
53
+ thisMonth: number;
54
+ lastMonth: number;
55
+ }>;
56
+ export declare const CommonSchemas: {
57
+ pagination: z.ZodObject<{
58
+ page: z.ZodNumber;
59
+ limit: z.ZodNumber;
60
+ total: z.ZodNumber;
61
+ totalPages: z.ZodNumber;
62
+ hasNext: z.ZodBoolean;
63
+ hasPrev: z.ZodBoolean;
64
+ }, "strip", z.ZodTypeAny, {
65
+ page: number;
66
+ limit: number;
67
+ total: number;
68
+ totalPages: number;
69
+ hasNext: boolean;
70
+ hasPrev: boolean;
71
+ }, {
72
+ page: number;
73
+ limit: number;
74
+ total: number;
75
+ totalPages: number;
76
+ hasNext: boolean;
77
+ hasPrev: boolean;
78
+ }>;
79
+ transactionSummary: z.ZodObject<{
80
+ yesterday: z.ZodNumber;
81
+ today: z.ZodNumber;
82
+ thisMonth: z.ZodNumber;
83
+ lastMonth: z.ZodNumber;
84
+ }, "strip", z.ZodTypeAny, {
85
+ yesterday: number;
86
+ today: number;
87
+ thisMonth: number;
88
+ lastMonth: number;
89
+ }, {
90
+ yesterday: number;
91
+ today: number;
92
+ thisMonth: number;
93
+ lastMonth: number;
94
+ }>;
95
+ accountSummary: z.ZodObject<{
96
+ balance: z.ZodNumber;
97
+ availableBalance: z.ZodNumber;
98
+ accountNumber: z.ZodString;
99
+ accountName: z.ZodString;
100
+ }, "strip", z.ZodTypeAny, {
101
+ balance: number;
102
+ availableBalance: number;
103
+ accountNumber: string;
104
+ accountName: string;
105
+ }, {
106
+ balance: number;
107
+ availableBalance: number;
108
+ accountNumber: string;
109
+ accountName: string;
110
+ }>;
111
+ };
112
+ export type PaginationDTO = z.infer<typeof paginationSchema>;
113
+ export type TransactionSummaryDTO = z.infer<typeof transactionSummarySchema>;
114
+ export type WalletSummaryDTO = z.infer<typeof accountSummarySchema>;
115
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from "./base-repository";
2
+ export * from "./common-schemas";
@@ -0,0 +1,62 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Custom error class representing API-related errors.
4
+ * Extends the built-in `Error` class to include additional properties such as `statusCode`, `error`, and `details`.
5
+ */
6
+ export declare class APIError extends Error {
7
+ /**
8
+ * The HTTP status code associated with the error.
9
+ * @type {number}
10
+ */
11
+ readonly statusCode: number;
12
+ /**
13
+ * An optional error identifier or code.
14
+ * @type {string | undefined}
15
+ */
16
+ readonly error?: string;
17
+ /**
18
+ * Additional details about the error, often used for debugging purposes.
19
+ * @type {Record<string, unknown> | undefined}
20
+ */
21
+ readonly details?: Record<string, unknown>;
22
+ /**
23
+ * Creates a new `APIError` instance.
24
+ * @param {Object} args - The arguments to initialize the error.
25
+ * @param {string} args.message - The error message.
26
+ * @param {number} args.statusCode - The HTTP status code associated with the error.
27
+ * @param {string} [args.error] - An optional error identifier or code.
28
+ * @param {Record<string, unknown>} [args.details] - Additional details about the error.
29
+ */
30
+ constructor(args: {
31
+ message: string;
32
+ statusCode: number;
33
+ error?: string;
34
+ details?: Record<string, unknown>;
35
+ });
36
+ /**
37
+ * Validates whether an unknown value conforms to the APIError schema.
38
+ * This is more thorough than an instanceof check as it verifies all required properties
39
+ * and their types using the defined schema.
40
+ *
41
+ * @param {unknown} error - Any value to be validated
42
+ * @returns {error is APIError} Type predicate indicating if the value is a valid APIError
43
+ *
44
+ * @example
45
+ * try {
46
+ * throw new Error('Network failed');
47
+ * } catch (err) {
48
+ * if (APIError.is(err)) {
49
+ * // err is typed as APIError here
50
+ * console.log(err.statusCode);
51
+ * }
52
+ * }
53
+ */
54
+ static is(error: unknown): error is APIError;
55
+ static unknown(message?: string): APIError;
56
+ static get schema(): z.ZodObject<{
57
+ message: z.ZodString;
58
+ statusCode: z.ZodNumber;
59
+ error: z.ZodOptional<z.ZodString>;
60
+ details: z.ZodOptional<z.AnyZodObject>;
61
+ }>;
62
+ }
@@ -0,0 +1 @@
1
+ export * from "./error.api";
@@ -0,0 +1,2 @@
1
+ export * from "./transaction-summary.model";
2
+ export * from "./wallet-info.model";
@@ -0,0 +1,22 @@
1
+ import { Amount, CurrencyCode } from "@temboplus/frontend-core";
2
+ import { TransactionSummaryDTO } from "../api";
3
+ /**
4
+ * Represents payout summary statistics
5
+ */
6
+ export declare class TransactionSummary {
7
+ readonly yesterday: Amount;
8
+ readonly today: Amount;
9
+ readonly thisMonth: Amount;
10
+ readonly lastMonth: Amount;
11
+ readonly currency: CurrencyCode;
12
+ constructor(data: TransactionSummaryDTO, currency?: CurrencyCode);
13
+ /**
14
+ * Get growth percentage from last month to this month
15
+ */
16
+ getMonthlyGrowthRate(): number;
17
+ /**
18
+ * Get total for current period (today + yesterday)
19
+ */
20
+ getRecentTotal(): Amount;
21
+ static from(data: TransactionSummaryDTO, currency?: CurrencyCode): TransactionSummary;
22
+ }
@@ -0,0 +1,17 @@
1
+ import { Amount, CurrencyCode } from "@temboplus/frontend-core";
2
+ import { WalletSummaryDTO } from "../api";
3
+ /**
4
+ * Represents account balance information
5
+ */
6
+ export declare class WalletInfo {
7
+ readonly accountName: string;
8
+ readonly availableBalance: Amount;
9
+ readonly actualBalance: Amount;
10
+ readonly currency: CurrencyCode;
11
+ constructor(data: WalletSummaryDTO);
12
+ /**
13
+ * Check if there are sufficient funds for a payout
14
+ */
15
+ hasSufficientBalance(amount: number): boolean;
16
+ static from(data: WalletSummaryDTO): WalletInfo;
17
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./query.builder";
2
+ export * from "./query.types";
@@ -0,0 +1,65 @@
1
+ import { FilterCriteria, QueryOptions, SortCriteria, SortDirection } from "./query.types";
2
+ export declare const QUERY_BUILDER_TYPE: unique symbol;
3
+ export declare class QueryBuilder {
4
+ protected options: QueryOptions;
5
+ constructor(options?: QueryOptions);
6
+ /**
7
+ * Type tag to identify QueryBuilder instances
8
+ */
9
+ [QUERY_BUILDER_TYPE]: string;
10
+ /**
11
+ * Safely check if an object is a QueryBuilder instance
12
+ */
13
+ static is(obj: any): obj is QueryBuilder;
14
+ addFilter(criteria: FilterCriteria): this;
15
+ where(field: string, value: any): this;
16
+ whereNot(field: string, value: any): this;
17
+ whereLike(field: string, value: string): this;
18
+ whereLikeLower(field: string, value: string): this;
19
+ whereContains(field: string, value: string): this;
20
+ whereStartsWith(field: string, value: string): this;
21
+ whereEndsWith(field: string, value: string): this;
22
+ whereIn(field: string, values: any[]): this;
23
+ whereNull(field: string): this;
24
+ whereNotNull(field: string): this;
25
+ addSort(criteria: SortCriteria): this;
26
+ orderBy(field: string, direction?: SortDirection): this;
27
+ orderByAsc(field: string): this;
28
+ orderByDesc(field: string): this;
29
+ paginate(page: number, pageSize: number): this;
30
+ /**
31
+ * Add eager loading for related models
32
+ * @param relations Relation name or array of relation names
33
+ */
34
+ with(relations: string | string[]): this;
35
+ /**
36
+ * Add a JOIN to the query to fetch related models
37
+ * @param relations Relation name or array of relation names to join
38
+ */
39
+ join(relations: string | string[]): this;
40
+ /**
41
+ * Add GROUP BY clause to the query
42
+ * @param fields Field or fields to group by
43
+ */
44
+ groupBy(fields: string | string[]): this;
45
+ /**
46
+ * Enable count mode for the query
47
+ * @param expression Optional count expression (defaults to '*')
48
+ */
49
+ count(expression?: string): this;
50
+ /**
51
+ * Count specific expression with alias
52
+ * @param expression Expression to count
53
+ * @param alias Alias for the count result
54
+ */
55
+ countAs(expression: string, alias: string): this;
56
+ /**
57
+ * @returns an objection-find query
58
+ */
59
+ build(): Record<string, any>;
60
+ /**
61
+ * Create a clone of this query builder
62
+ */
63
+ clone(): this;
64
+ static create(options?: QueryOptions): QueryBuilder;
65
+ }