@temboplus/afloat 0.1.72 → 0.1.73
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/features/admin/admin.contract.d.ts +53 -53
- package/dist/features/admin/admin.repository.d.ts +5 -5
- package/dist/features/admin/index.d.ts +2 -2
- package/dist/features/auth/access/access.repository.d.ts +2 -2
- package/dist/features/auth/auth.manager.d.ts +2 -2
- package/dist/features/auth/auth.repository.d.ts +3 -3
- package/dist/features/auth/auth.store.d.ts +1 -1
- package/dist/features/auth/identity/identity.repository.d.ts +2 -2
- package/dist/features/auth/index.d.ts +5 -5
- package/dist/features/auth/profile/profile.repository.d.ts +3 -3
- package/dist/features/auth/storage/client-store.d.ts +2 -2
- package/dist/features/auth/storage/client-token-handler.d.ts +1 -1
- package/dist/features/contact/contact-input-handler.d.ts +2 -2
- package/dist/features/contact/contact.api-contract.d.ts +38 -38
- package/dist/features/contact/contact.dtos.d.ts +6 -6
- package/dist/features/contact/contact.repository.d.ts +4 -4
- package/dist/features/contact/index.d.ts +2 -2
- package/dist/features/payout/index.d.ts +3 -3
- package/dist/features/payout/payout-channel-handler.d.ts +3 -3
- package/dist/features/payout/payout.api-contract.d.ts +93 -93
- package/dist/features/payout/payout.dtos.d.ts +12 -12
- package/dist/features/payout/payout.repository.d.ts +5 -5
- package/dist/features/wallet/index.d.ts +4 -4
- package/dist/features/wallet/wallet-manager.session.d.ts +2 -2
- package/dist/features/wallet/wallet.contract.d.ts +7 -7
- package/dist/features/wallet/wallet.dtos.d.ts +14 -14
- package/dist/features/wallet/wallet.repository.d.ts +5 -5
- package/dist/features/wallet/wallet.utils.d.ts +1 -1
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/lib/api/index.d.ts +2 -2
- package/dist/lib/error/error.permission.d.ts +1 -1
- package/dist/lib/error/index.d.ts +3 -3
- package/dist/models/contact-info.model.d.ts +2 -2
- package/dist/models/contact.model.d.ts +2 -2
- package/dist/models/index.d.ts +11 -11
- package/dist/models/managed-user.model.d.ts +2 -2
- package/dist/models/narration.model.d.ts +1 -1
- package/dist/models/payout.model.d.ts +2 -2
- package/dist/models/profile.model.d.ts +1 -1
- package/dist/models/role.model.d.ts +1 -1
- package/dist/models/statement-entry.model.d.ts +2 -2
- package/dist/models/user.model.d.ts +1 -1
- package/dist/models/wallet.model.d.ts +1 -1
- package/package.json +12 -8
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/lib/error/error.api.ts","../src/models/permission.ts","../src/lib/error/error.permission.ts","../src/features/contact/contact.dtos.ts","../src/models/contact-info.model.ts","../src/models/contact.model.ts","../src/features/payout/payout.dtos.ts","../src/models/payout.model.ts","../src/features/auth/profile/profile.dtos.ts","../src/models/profile.model.ts","../src/models/user.model.ts","../src/features/wallet/wallet.dtos.ts","../src/models/wallet.model.ts","../src/models/narration.model.ts","../src/models/statement-entry.model.ts","../src/models/role.model.ts","../src/models/managed-user.model.ts","../node_modules/zustand/esm/middleware.mjs","../src/features/wallet/wallet.utils.ts","../node_modules/@ts-rest/core/index.esm.mjs","../src/features/wallet/wallet.contract.ts","../src/features/auth/auth.store.ts","../src/lib/api/base-repository.ts","../src/features/wallet/wallet.repository.ts","../src/features/wallet/wallet-manager.session.ts","../src/features/auth/auth.contract.ts","../src/features/auth/identity/identity.api-contract.ts","../src/features/auth/identity/identity.repository.ts","../src/features/auth/auth.repository.ts","../src/features/auth/auth.manager.ts","../src/features/auth/access/access.api-contract.ts","../src/features/auth/profile/profile.api-contract.ts","../src/features/contact/contact-input-handler.ts","../src/lib/api/common-responses.ts","../src/features/contact/contact.api-contract.ts","../src/features/payout/payout-channel-handler.ts","../src/features/payout/payout.api-contract.ts","../src/features/admin/admin.dtos.ts","../src/features/admin/admin.contract.ts","../src/features/auth/access/access.repository.ts","../src/features/contact/contact.repository.ts","../src/features/payout/payout.repository.ts","../src/features/auth/profile/profile.repository.ts","../src/features/admin/admin.repository.ts","../src/lib/error/error.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (_e) {\n }\n if (!extensionConnector) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format. \n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (!api.dispatchFromDevtools) return;\n if (typeof api.dispatch !== \"function\") return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (_e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(\n name,\n JSON.stringify(newValue, options == null ? void 0 : options.replacer)\n ),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst oldImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (_e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst newImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return [\n true,\n options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n )\n ];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persistImpl = (config, baseOptions) => {\n if (\"getStorage\" in baseOptions || \"serialize\" in baseOptions || \"deserialize\" in baseOptions) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead.\"\n );\n }\n return oldImpl(config, baseOptions);\n }\n return newImpl(config, baseOptions);\n};\nconst persist = persistImpl;\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector };\n",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,null,null,null,null,null,null,null],"names":["APIError","Error","statusCode","error","details","constructor","args","super","message","this","name","is","schema","safeParse","success","unknown","z","object","string","number","int","optional","Permissions","Profile","ViewCurrent","Update","Contact","View","List","Create","Delete","Payment","Payout","Approve","Transfer","Wallet","ViewBalance","ViewStatement","Role","ViewRoles","ViewRole","UserManagement","ViewUsers","ViewUser","CreateUser","UpdateUser","ArchiveUser","UnArchiveUser","ResetPassword","PermissionError","requiredPermissions","join","permissionSchema","union","enum","Object","values","literal","array","ContactType","contactTypeSchema","nativeEnum","contactInputSchema","displayName","min","accountNo","channel","type","ContactDTOSchemas","contactDTO","id","profileId","createdAt","datetime","updatedAt","merge","contactInputDTO","contactType","ContactInfoError","context","BaseContactInfo","countryCode","MobileContactInfo","phoneNumber","mnoId","Mobile","trim","operation","e164Format","validate","MNOUtils","requiresExplicitMNO","isValidMNOForCountry","validMNOs","getCountryMNOs","map","mno","getMNOByPhoneNumber","fromContactDTO","info","phoneNumberString","startsWith","phone","PhoneNumber","from","console","warn","fromPayoutDTO","CountryValidation","isISO2CountryCode","msisdn","defaultCountry","payeeName","obj","mobileContactInfo","phone_number","phoneObj","derivedMNO","validateMNOForPhoneNumber","getValidationDetails","errors","push","isValid","length","warnings","accountName","accountNumber","getWithFormat","PhoneNumberFormat","E164","accountNameLabel","accountNumberLabel","channelLabel","channelId","channelName","getMNOById","mobileMoneyService","BankContactInfo","accName","bank","accNo","Bank","BankValidation","validateAccountName","validateAccountNumber","swiftCode","getCountryFromSwiftCode","validateSwiftCode","text","split","swiftcode","bankContactInfo","accNumber","validAccName","validAccNumber","shortName","data","parse","Date","accNoLabel","accNameLabel","create","createMany","dataArray","createSafe","canConstruct","result","toJSON","PayoutChannel","PayoutStatus","PayoutApprovalStatus","AuthorizerSchema","identity","PayoutStatusSchema","PayoutApprovalStatusSchema","BasePayoutSchema","amount","coerce","description","notes","nullish","PayoutInputDTOSchema","extend","PayoutDTOSchemas","PayoutDTO","default","refine","code","currencyCode","CurrencyValidation","isCurrencyCode","status","statusMessage","partnerReference","date","actionedAt","approvalStatus","createdBy","actionedBy","PayoutInputDTO","PayoutAuthorizer","Amount","REJECTED","FAILED","PAID","PENDING","contactInfo","ProfileDTOSchemas","profileDTOSchema","firstName","lastName","email","autoApprove","boolean","_id","_firstName","_lastName","_displayName","_phone","_accountNo","_email","_autoApprove","getName","toObject","JSON","stringify","fromJSON","jsonString","maybeProfile","undefined","User","profile","token","resetPassword","access","accessMap","permission","forEach","perm","includes","can","key","e","parsedData","rawProfile","Array","isArray","makeOptional","transform","val","WalletDTOSchemas","walletDTO","walletQuery","ISO2CountryCodesSet","has","currency","Currency","CurrencyCodesSet","statementEntry","debitOrCredit","tranRefNo","narration","txnDate","errorMap","valueDate","amountCredited","amountDebited","balance","_profileId","_accountName","_channel","_countryCode","_currencyCode","_createdAt","_updatedAt","validationResult","flatten","createdAtDate","updatedAtDate","maybeWallet","ECOBANK_PREFIX","NARR_V2_PREFIX","BANK_NARR_PREFIX","LEGACY_BANK_NARR_PREFIX","MOBILE_NARR_PREFIX","LEGACY_MOBILE_NARR_PREFIX","Narration","mediumText","substring","shortText","generateDefaultPayoutNarration","generateMobilePayoutNarrationV2","generateBankPayoutNarrationV2","toUpperCase","getContactDetails","bankResult","getBankContactDetails","mobileResult","getMobileContactDetails","narr","replace","potentialSwift","slice","capitalizeFirstLetter","test","country","json","banks","BankService","getInstance","searchBanks","_","potentialPhone","username","TZMobileNumber","names","filter","n","toJson","version","fromJson","isNarrationJson","maybeNarration","str","charAt","toLowerCase","WalletStatementEntry","_debitOrCredit","_tranRefNo","_narration","_txnDate","_valueDate","_amountCredited","_amountDebited","_balance","narrationInstance","validationData","restData","toISOString","numericValue","isWalletStatementEntryJson","maybeJson","isAmountJson","maybeEntry","equals","other","clone","toString","isPositive","label","toJsonArray","entries","entry","fromJsonArray","jsonArray","item","creditedAmount","debitedAmount","balanceAmount","Number","isFinite","permissions","Set","hasPermission","UserEntity","canAny","some","p","canAll","every","ManagedUser","roleId","isActive","isArchived","role","isAccountActive","isAccountArchived","needsPasswordReset","getAccountStatus","color","getRoleName","getCreatedDate","toLocaleDateString","getLastUpdateInfo","diffMs","getTime","diffDays","Math","floor","Boolean","createJSONStorage","getStorage","options","storage","_e","getItem","_a","str2","reviver","Promise","then","setItem","newValue","replacer","removeItem","toThenable","fn","input","onFulfilled","_onRejected","_onFulfilled","catch","onRejected","persist","config","baseOptions","set","get","api","localStorage","serialize","deserialize","partialize","state","persistedState","currentState","hasHydrated","hydrationListeners","finishHydrationListeners","thenableSerialize","errorInSync","thenable","serializedValue","savedSetState","setState","configResult","stateFromStorage","hydrate","cb","postRehydrationCallback","onRehydrateStorage","call","bind","storageValue","deserializedStorageValue","migrate","migratedState","_a2","setOptions","newOptions","clearStorage","getOptions","rehydrate","onHydrate","add","delete","onFinishHydration","oldImpl","getInitialState","_b","migrationResult","migrated","skipHydration","newImpl","WalletUtils","getUniqueCountries","wallets","uniqueCountries","wallet","getWalletsByCountry","isZodObjectStrict","passthrough","issues","path","ZodIssueCode","catchall","any","ContractNoBody","Symbol","isAppRoute","recursivelyApplyOptions","router","fromEntries","value","_c","objectA","objectB","pathPrefix","headers","baseHeaders","assign","strictStatusCodes","validateResponseOnClient","responses","commonResponses","metadata","ContractPlainTypeRuntimeSymbol","initContract","endpoints","query","mutation","response","body","otherResponse","contentType","noBody","encodeQueryParamsJson","encodedValue","isNaN","encodeURIComponent","encodeQueryParams","keys","flatMap","tokeniseValue","v","idx","k","UnknownStatusError","knownResponseStatuses","tsRestFetchApi","async","route","method","validateResponse","fetchOptions","fetch","responseSchema","blob","createFormData","formData","FormData","appendToFormData","File","append","normalizeHeaders","getCompleteUrl","baseUrl","params","jsonQuery","pathParams","matched","insertParamsIntoPath","queryComponent","queryString","convertQueryParamsToUrlString","getRouteQuery","clientArgs","inputArgs","fetchApiArgs","extraHeaders","overrideClientOptions","cache","next","extraInputArgs","overriddenClientArgs","evaluateFetchApiArgs","apiFetcher","valueOrFunction","combinedHeaders","fetcherArgs","rawBody","rawQuery","credentials","signal","URLSearchParams","fetchApi","throwOnUnknownStatus","initClient","subRouter","contract","getWallets","getBalance","availableBalance","getStatement","summary","endDate","startDate","authStore","user","getUser","jsonUser","setUser","getToken","setToken","setUserAndToken","clearAuth","window","sessionStorage","getCurrentToken","getState","BaseRepository","endpoint","root","globalToken","client","clientConfig","uuidv4","handleResponse","successStatusCode","WalletRepository","props","rawWallets","walletData","now","monthStart","getFullYear","getMonth","monthEnd","dateRange","range","targetWallet","targetAccountNo","requestBody","reduce","acc","entryData","walletsStore","userId","selectedWalletId","selectedCountryCode","lastSynced","isInitialized","setWallets","validatedWallets","w","currentSelectedId","isCurrentlyInitialized","walletToSelect","currentWalletStillValid","find","setSelectedWallet","setSelectedCountry","countryWallets","_getWalletsByCountry","reset","_getSelectedWallet","walletCount","instance","walletInstance","WalletSessionManager","repo","static","_instance","initialize","refreshWallets","getCountries","getSelectedWallet","getSelectedCountryCode","getSelectedCountry","Country","fromCode","changeWallet","walletId","store","changeCountry","authContract","logIn","password","currentPassword","newPassword","identityContract","getUserCredentials","IdentityRepository","getIdentity","AuthRepository","loginCredentials","updatePassword","AfloatAuth","getUserToken","currentUser","getCurrentUser","isAuthenticated","useCurrentUser","useStore","checkPermission","authRepo","clearSavedData","logOut","refresh","getDebugInfo","hasUser","hasToken","userName","tokenLength","managerInstance","accessContract","getAccessList","profileContract","getCurrentProfile","MobileInputHandler","canHandle","createInput","BankInputHandler","ValidatedContactInputFactory","handlers","resolve","handler","h","commonAPIResponses","record","createContact","editContact","getContacts","orderByDesc","getByID","deleteContact","PAYOUT_CONSTANTS","SUPPORTED_COUNTRY_CODES","ERROR_MESSAGES","INVALID_PHONE_NUMBER","INELIGIBLE_FOR_PAYOUT","MOBILE_NUMBER_MNO_MISMATCH","UNSUPPORTED_COUNTRY_BANK","UNSUPPORTED_COUNTRY_MOBILE","NO_HANDLER_FOUND","PayoutInputUtils","processNotes","trimmedNotes","PayoutChannelCodeFactory","forBank","forMobile","PhoneNumberFactory","checkPayoutEligibility","operatorInfo","TZMNOId","VODACOM","TIGO","MobileMoneyPayoutHandler","receiver","MOBILE","processedNotes","INTERNATIONAL_NUMERIC","BankTransferPayoutHandler","BANK","PayoutInputFactory","getPayoutInput","createPayoutChannelCode","mobile","getPayouts","rangeStart","rangeEnd","eager","nullable","results","total","getPayoutsByApprovalStatus","postPayout","approve","action","getPayout","passwordSchema","max","regex","pattern","roleSchema","managedUserSchema","UserManagementDTOSchemas","managedUser","managedUserQueryParams","createUserRequest","updateUserRequest","resetPasswordRequest","sendNotification","createUserResponse","userManagementContract","getUsers","createUser","updateUser","archiveUser","unArchiveUser","getRoles","getRole","edit","remove","getAll","pendingStatus","pending","pay","defaultMin","defaultMax","getTransactionLimits","lessThan","greaterThan","reject","resetUserPassword","getAllUsers","getAllRoles","roleData","stack"],"mappings":"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","x_google_ignoreList":[17,19]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./lib/error/index";
|
|
2
|
-
export * from "./models/index";
|
|
3
|
-
export * from "./features/auth/index";
|
|
4
|
-
export * from "./features/contact/index";
|
|
5
|
-
export * from "./features/payout/index";
|
|
6
|
-
export * from "./features/wallet/index";
|
|
7
|
-
export * from "./features/admin/index";
|
|
1
|
+
export * from "./lib/error/index.js";
|
|
2
|
+
export * from "./models/index.js";
|
|
3
|
+
export * from "./features/auth/index.js";
|
|
4
|
+
export * from "./features/contact/index.js";
|
|
5
|
+
export * from "./features/payout/index.js";
|
|
6
|
+
export * from "./features/wallet/index.js";
|
|
7
|
+
export * from "./features/admin/index.js";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{z as e}from"zod";import{MNOUtils as t,PhoneNumber as r,CountryValidation as n,PhoneNumberFormat as o,BankValidation as a,Bank as s,CurrencyValidation as i,Amount as c,Currency as d,CurrencyCodesSet as u,ISO2CountryCodesSet as l,BankService as m,TZMobileNumber as h,Country as p,PhoneNumberFactory as y,TZMNOId as f}from"@temboplus/frontend-core";import{create as g,useStore as w}from"zustand";import{v4 as b}from"uuid";class v extends Error{statusCode;error;details;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 v.schema.safeParse(e).success}static unknown(e){return new v({message:e??"An unknown error occurred",statusCode:502})}static get schema(){return e.object({message:e.string(),statusCode:e.number().int(),error:e.string().optional(),details:e.object({}).optional()})}}const N={Profile:{ViewCurrent:"profile.getCurrent",Update:"profile.update"},Contact:{View:"contact.findById",List:"contact.findAll",Create:"contact.create",Update:"contact.update",Delete:"contact.delete"},Payment:{View:"payment.findById",List:"payment.findAll",Create:"payment.create"},Payout:{View:"payout.findById",List:"payout.findAll",Create:"payout.create",Approve:"payout.approve"},Transfer:{View:"transfer.findById",List:"transfer.findAll",Create:"transfer.create",Approve:"transfer.approve"},Wallet:{ViewBalance:"wallet.getBalance",ViewStatement:"wallet.getStatement"},Role:{ViewRoles:"role.findAll",ViewRole:"role.findById"},UserManagement:{ViewUsers:"login.findAll",ViewUser:"login.findById",CreateUser:"login.create",UpdateUser:"login.update",ArchiveUser:"login.archive",UnArchiveUser:"login.unarchive",ResetPassword:"login.resetPassword"}};class C extends Error{requiredPermissions;constructor(e){super(e.message??`Missing required permissions: ${e.requiredPermissions.join(", ")}`),this.name="PermissionError",this.requiredPermissions=e.requiredPermissions}static is(t){const r=e.union([e.enum(Object.values(N.Profile)),e.enum(Object.values(N.Contact)),e.enum(Object.values(N.Payment)),e.enum(Object.values(N.Payout)),e.enum(Object.values(N.Transfer)),e.enum(Object.values(N.Wallet))]);return e.object({name:e.literal("PermissionError"),message:e.string(),requiredPermissions:e.array(r)}).safeParse(t).success}}function O(e){const t=e;return t&&"string"==typeof t.stack&&"string"==typeof t.message}var I;!function(e){e.Bank="Bank",e.Mobile="Mobile"}(I||(I={}));const S=e.nativeEnum(I),A=e.object({displayName:e.string().min(1,"Display name is required"),accountNo:e.string().min(1,"Account number is required"),channel:e.string().min(1,"Channel is required"),type:S}),E={contactDTO:e.object({id:e.string().min(1,"Contact id is required"),profileId:e.string(),createdAt:e.string().datetime(),updatedAt:e.string().datetime()}).merge(A),contactInputDTO:A,contactType:S};class _ extends Error{context;constructor(e,t={}){super(e),this.context=t,this.name="ContactInfoError"}}class D{type;countryCode;constructor(e,t){this.type=e,this.countryCode=t}}class P extends D{name;phoneNumber;mnoId;constructor(e,r,n){if(super(I.Mobile,r.countryCode),this.name=e,this.phoneNumber=r,!e?.trim())throw new _("Name is required and cannot be empty",{operation:"constructor",countryCode:r.countryCode,phoneNumber:r.e164Format});if(!r?.validate())throw new _("Invalid phone number",{operation:"constructor",countryCode:r.countryCode,phoneNumber:r.e164Format});if(t.requiresExplicitMNO(r.countryCode)){if(!n)throw new _(`MNO must be explicitly provided for phone numbers in ${r.countryCode} due to Mobile Number Portability`,{phoneNumber:r.e164Format,countryCode:r.countryCode,operation:"constructor"});if(!t.isValidMNOForCountry(n,r.countryCode)){const e=t.getCountryMNOs(r.countryCode).map(e=>e.id);throw new _(`Invalid MNO ${n} for country ${r.countryCode}. Valid MNOs: ${e.join(", ")}`,{phoneNumber:r.e164Format,countryCode:r.countryCode,mnoId:n,operation:"constructor"})}this.mnoId=n}else{const e=t.getMNOByPhoneNumber(r.e164Format,r.countryCode);if(!e?.id)throw new _(`Failed to determine MNO for phone number ${r.e164Format}`,{phoneNumber:r.e164Format,countryCode:r.countryCode,operation:"constructor"});this.mnoId=e.id}}static fromContactDTO(e){if("Mobile"!==e.type)return;let n=e.accountNo;n.startsWith("+")||(n=`+${n}`);const o=r.from(n);if(!o)return void console.error(`Failed to parse phone number ${n}`);const a=o.countryCode;try{let r;if(t.requiresExplicitMNO(a)){if(e.channel&&"string"==typeof e.channel){if(!t.isValidMNOForCountry(e.channel,a))return void console.warn(`Invalid MNO ${e.channel} for country ${a}`);r=e.channel}}else if(r=t.getMNOByPhoneNumber(o.e164Format,a)?.id,!r)return void console.warn(`Failed to auto-detect MNO for phone number ${o.e164Format}`);return new P(e.displayName,o,r)}catch(e){return void console.error(`Failed to create MobileContactInfo: ${e}`)}}static fromPayoutDTO(e){try{if(!n.isISO2CountryCode(e.countryCode))return void console.error(`Invalid country code: ${e.countryCode}`);const o=r.from(e.msisdn,{defaultCountry:e.countryCode});if(!o)return void console.error(`Failed to parse phone number: ${e.msisdn}`);let a;if(t.requiresExplicitMNO(o.countryCode)){if(e.channel&&"string"==typeof e.channel){if(!t.isValidMNOForCountry(e.channel,o.countryCode))return void console.warn(`Invalid MNO ${e.channel} for country ${o.countryCode} in PayoutDTO`);a=e.channel}}else if(a=t.getMNOByPhoneNumber(o.e164Format,o.countryCode)?.id,!a)return void console.warn(`Failed to auto-detect MNO for phone number ${o.e164Format}`);return new P(e.payeeName,o,a)}catch(t){return void console.error("Failed to create MobileContactInfo from PayoutDTO: ",e,t)}}static is(e){if(!e||"object"!=typeof e)return!1;const n=e;if("string"!=typeof n.name||!n.name.trim())return!1;let o;if("string"==typeof n.phoneNumber)o=r.from(n.phoneNumber);else if("object"==typeof n.phoneNumber){const e=n.phoneNumber;r.is(e)&&(o=r.from(e.e164Format))}if(!o)return!1;const a=n.mnoId;if("string"!=typeof a)return!1;if(!t.isValidMNOForCountry(a,o.countryCode))return!1;if(t.requiresExplicitMNO(o.countryCode))return!0;{const e=t.getMNOByPhoneNumber(o.e164Format,o.countryCode);return e?.id===a}}validate(){try{return!!this.name?.trim()&&(!!this.phoneNumber?.validate()&&(!!t.isValidMNOForCountry(this.mnoId,this.countryCode)&&(!!t.requiresExplicitMNO(this.countryCode)||t.validateMNOForPhoneNumber(this.phoneNumber.e164Format,this.mnoId,this.countryCode))))}catch{return!1}}getValidationDetails(){const e=[];if(this.name?.trim()||e.push("Name is required"),this.phoneNumber?.validate()||e.push("Phone number is invalid"),t.isValidMNOForCountry(this.mnoId,this.countryCode)||e.push(`Invalid MNO ${this.mnoId} for country ${this.countryCode}`),!t.requiresExplicitMNO(this.countryCode)){const r=t.getMNOByPhoneNumber(this.phoneNumber.e164Format,this.countryCode);r?.id!==this.mnoId&&e.push("MNO doesn't match auto-detected value from phone number prefix")}return{isValid:0===e.length,errors:e,warnings:[]}}get accountName(){return this.name}get accountNumber(){return this.phoneNumber.getWithFormat(o.E164)}get accountNameLabel(){return"Name"}get accountNumberLabel(){return"Phone Number"}get channelLabel(){return"Channel"}get channelId(){return this.mnoId}get channelName(){const e=t.getMNOById(this.mnoId,this.countryCode);return e?.mobileMoneyService??e?.displayName??this.mnoId}}class j extends D{accName;bank;accNo;constructor(e,t,r){if(super(I.Bank,t.countryCode),this.accName=e,this.bank=t,this.accNo=r,!a.validateAccountName(e))throw new _("Invalid account name",{operation:"constructor",countryCode:t.countryCode});if(!a.validateAccountNumber(r,t.countryCode))throw new _("Invalid account number",{operation:"constructor",countryCode:t.countryCode})}static fromContactDTO(e){if("Bank"!==e.type)return;const t=e.channel;if(!t||"string"!=typeof t)return void console.error("SWIFT code is required for bank contacts");const r=a.getCountryFromSwiftCode(t);if(r)if(a.validateSwiftCode(t,r))try{const n=s.from(t,r);if(!n)throw new Error(`Bank with SWIFT code ${t} not found`);return new j(e.displayName,n,e.accountNo)}catch(e){return void console.error(`Failed to create BankContactInfo: ${e}`)}else console.error(`Invalid SWIFT code ${t} for country ${r}`);else console.error(`Could not identify country from SWIFT code: ${t}`)}static fromPayoutDTO(e){try{if(!n.isISO2CountryCode(e.countryCode))return void console.error(`Invalid country code: ${e.countryCode}`);const t=e.msisdn.trim().split(":");if(2!==t.length)return void console.error("Invalid PayoutDTO format for bank - expected 'swiftcode:accountno'");const[r,o]=t;if(!a.validateSwiftCode(r,e.countryCode))return void console.error(`Invalid SWIFT code ${r} for country ${e.countryCode}`);const i=s.from(r,e.countryCode);return i?new j(e.payeeName,i,o):void console.error(`Bank with SWIFT code ${r} not found`)}catch(t){return void console.error("Failed to create BankContactInfo from PayoutDTO: ",e,t)}}static is(e){if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t.accName)return!1;if("string"!=typeof t.accNo)return!1;if(!t.bank||!s.is(t.bank))return!1;const r=t.accName,n=t.accNo,o=t.bank,i=a.validateAccountName(r),c=a.validateAccountNumber(n,o.countryCode);return i&&c}validate(){try{return a.validateAccountName(this.accName)&&a.validateAccountNumber(this.accNo,this.bank.countryCode)&&s.is(this.bank)}catch{return!1}}get accountName(){return this.accName}get accountNumber(){return this.accNo}get accountNameLabel(){return"Acc. Name"}get accountNumberLabel(){return"Bank Acc. No."}get channelLabel(){return"Bank"}get channelId(){return this.bank.swiftCode}get channelName(){return this.bank.shortName}}class T{data;constructor(e){this.data=E.contactDTO.parse(e)}get id(){return this.data.id}get profileId(){return this.data.profileId}get displayName(){return this.data.displayName}get type(){return this.data.type}get createdAt(){return new Date(this.data.createdAt)}get updatedAt(){return new Date(this.data.updatedAt)}get info(){return this.data.type===I.Mobile?P.fromContactDTO(this.data):this.data.type===I.Bank?j.fromContactDTO(this.data):void 0}get accNo(){const e=this.info;return e?e.accountNumber:this.data.accountNo}get accName(){return this.data.displayName}get accNoLabel(){const e=this.info;return e instanceof P?"Phone Number":e instanceof j?"Bank Account Number":"Account Number"}get channelLabel(){const e=this.info;return e instanceof P?"Channel":e instanceof j?"Bank":"Channel"}get accNameLabel(){const e=this.info;return e instanceof P?"Full Name":e instanceof j?"Bank Account Name":"Display Name"}get channelName(){const e=this.info;return e instanceof P||e instanceof j?e.channelName:""}static create(e){return new T(e)}static createMany(e){return e.map(e=>new T(e))}static createSafe(e){try{return new T(e)}catch{return null}}static canConstruct(e){if(!e||"object"!=typeof e)return!1;const t=E.contactDTO.safeParse(e);if(!t.success)return!1;return null!==T.createSafe(t.data)}static is(e){return!(!e||"object"!=typeof e)&&("data"in e&&T.canConstruct(e.data))}toJSON(){return{...this.data}}}var R,U,k;!function(e){e.MOBILE="Mobile",e.BANK="Bank"}(R||(R={})),function(e){e.CREATED="CREATED",e.PENDING="PENDING",e.PAID="PAID",e.FAILED="FAILED",e.REJECTED="REJECTED",e.REVERSED="REVERSED"}(U||(U={})),function(e){e.PENDING="Pending",e.APPROVED="Approved",e.REJECTED="Rejected"}(k||(k={}));const M=e.object({id:e.string(),name:e.string(),identity:e.string()}),x=e.nativeEnum(U),B=e.nativeEnum(k),$=e.object({channel:e.string(),msisdn:e.string(),amount:e.coerce.number(),description:e.string(),notes:e.string().nullish()}),J=$.extend({payeeName:e.string()}),W={PayoutDTO:$.extend({id:e.string(),profileId:e.string(),payeeName:e.string(),countryCode:e.string().default("TZ").refine(e=>n.isISO2CountryCode(e),{message:"Provided country code is not a valid ISO2 code."}),currencyCode:e.string().default("TZS").refine(e=>i.isCurrencyCode(e),{message:"Provided currency code is not a valid currency code."}),channel:e.string(),status:x,statusMessage:e.string(),partnerReference:e.string().nullish(),createdAt:e.coerce.date(),updatedAt:e.coerce.date(),actionedAt:e.coerce.date().nullish(),approvalStatus:B.nullish(),createdBy:M.nullish(),actionedBy:M.nullish()}),PayoutInputDTO:J,PayoutStatus:x,PayoutApprovalStatus:B,PayoutAuthorizer:M};class F{data;constructor(e){this.data=W.PayoutDTO.parse(e)}get id(){return this.data.id}get profileId(){return this.data.profileId}get payeeName(){return this.data.payeeName}get channel(){return this.data.channel}get msisdn(){return this.data.msisdn}get amount(){return c.from(this.data.amount,this.data.currencyCode)}get description(){return this.data.description}get notes(){return this.data.notes}get status(){return"Rejected"===this.data.approvalStatus?U.REJECTED:"Approved"===this.data.approvalStatus?"FAILED"===this.data.status?U.FAILED:U.PAID:"Pending"===this.data.approvalStatus?U.PENDING:this.data.status}get statusMessage(){return this.data.statusMessage}get partnerReference(){return this.data.partnerReference}get createdAt(){return this.data.createdAt}get updatedAt(){return this.data.updatedAt}get actionedAt(){return this.data.actionedAt}get approvalStatus(){return this.data.approvalStatus}get createdBy(){return this.data.createdBy}get actionedBy(){return this.data.actionedBy}get contactInfo(){return"TZ-BANK-B2C"===this.channel?j.fromPayoutDTO(this.data):P.fromPayoutDTO(this.data)}static create(e){return new F(e)}static createMany(e){return e.map(e=>new F(e))}static createSafe(e){try{return new F(e)}catch{return null}}static canConstruct(e){if(!e||"object"!=typeof e)return!1;const t=W.PayoutDTO.safeParse(e);if(!t.success)return!1;return null!==F.createSafe(t.data)}static is(e){return!(!e||"object"!=typeof e)&&("data"in e&&F.canConstruct(e.data))}toJSON(){return{...this.data}}}const q={profileDTOSchema:e.object({id:e.string(),firstName:e.string().nullish(),lastName:e.string().nullish(),displayName:e.string(),phone:e.string().nullish(),accountNo:e.string().min(1),email:e.string().email().nullish(),autoApprove:e.boolean().nullish()})};class z{_id;_firstName;_lastName;_displayName;_phone;_accountNo;_email;_autoApprove;static get schema(){return q.profileDTOSchema}constructor(e){this._id=e.id,this._firstName=e.firstName,this._lastName=e.lastName,this._displayName=e.displayName,this._phone=e.phone,this._accountNo=e.accountNo,this._email=e.email,this._autoApprove=e.autoApprove}static create(e){return new z({id:e.id,firstName:e.firstName,lastName:e.lastName,displayName:e.displayName,phone:e.phone,accountNo:e.accountNo,email:e.email,autoApprove:e.autoApprove})}get id(){return this._id}get firstName(){return this._firstName}get lastName(){return this._lastName}get displayName(){return this._displayName}get phone(){return this._phone}get accountNo(){return this._accountNo}get email(){return this._email}get autoApprove(){return this._autoApprove}getName(){if(this._displayName&&""!==this._displayName.trim())return this._displayName;return`${this._firstName??""} ${this._lastName??""}`.trim()}toObject(){return{id:this._id,firstName:this._firstName,lastName:this._lastName,displayName:this._displayName,phone:this._phone,accountNo:this._accountNo,email:this._email,autoApprove:this._autoApprove}}toJSON(){return JSON.stringify(this.toObject())}validate(){try{return z.schema.safeParse(this.toObject()).success}catch(e){return console.error("Profile validation error:",e),!1}}static fromJSON(e){try{const t=JSON.parse(e);return z.from(t)}catch(e){return void console.error("Error parsing profile JSON:",e)}}static from(e){try{return e?"object"!=typeof e?void console.error("Data is not an object"):e.id&&e.accountNo&&e.displayName?z.create({id:e.id,firstName:e.firstName,lastName:e.lastName,displayName:e.displayName,phone:e.phone,accountNo:e.accountNo,email:e.email,autoApprove:e.autoApprove}):void console.error("Missing required profile fields"):void console.error("Data is null or undefined")}catch(e){return void console.error("Error creating profile from object:",e)}}static is(e){if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t._id||"string"!=typeof t._displayName||"string"!=typeof t._accountNo)return!1;if(null!==t._firstName&&void 0!==t._firstName&&"string"!=typeof t._firstName)return!1;if(null!==t._lastName&&void 0!==t._lastName&&"string"!=typeof t._lastName)return!1;if(null!==t._email&&void 0!==t._email&&"string"!=typeof t._email)return!1;const r=t._phone;if(null!=r&&"string"!=typeof r)return!1;const n=t._autoApprove;return null==n||"boolean"==typeof n}}class L{name;identity;profile;token;resetPassword;access;accessMap;constructor(e){const{profile:t,token:r,access:n,resetPassword:o,name:a,identity:s}=e;this.profile=t,this.token=r,this.resetPassword=o,this.name=a,this.identity=s,this.access=n,this.accessMap={};for(const e of Object.values(N))"object"==typeof e?Object.values(e).forEach(e=>{this.accessMap[e]=n.includes(e)}):this.accessMap[e]=n.includes(e)}can(e){return this.accessMap[e]??!1}toObject(){return{profile:this.profile.toObject(),token:this.token,resetPassword:this.resetPassword,name:this.name,identity:this.identity,access:this.access}}toJSON(){return JSON.stringify(this.toObject())}static fromJSON(e){try{return L.from(JSON.parse(e))}catch(e){return void console.error("Invalid JSON string:",e)}}static from(e){let t,r;if("string"==typeof e)try{t=JSON.parse(e)}catch(e){return void console.error("Invalid JSON string:",e)}else t=e;if(!t)return void console.error("Data is null or undefined.");let n=t.profile;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return void console.error("Failed to parse profile JSON string:",e)}if(z.is(n))r=n;else{if("object"!=typeof n||null===n)return void console.error("Invalid profile format:",typeof n);if(r=z.from(n),!r)return void console.error("Failed to create Profile from data:",n)}if(t.token&&"string"==typeof t.token&&t.name&&"string"==typeof t.name&&t.identity&&"string"==typeof t.identity&&Array.isArray(t.access)&&"boolean"==typeof t.resetPassword)return new L({profile:r,token:t.token,access:t.access,resetPassword:t.resetPassword,name:t.name,identity:t.identity});console.error("Missing or invalid required User fields:",{token:typeof t.token,name:typeof t.name,identity:typeof t.identity,access:Array.isArray(t.access),resetPassword:typeof t.resetPassword})}}const V=e=>e.optional().transform(e=>e??void 0),G={walletDTO:e.object({id:e.string().min(1,{message:"Wallet ID is required."}),profileId:e.string().min(1,{message:"Profile ID is required."}),accountNo:e.string().min(1,{message:"Account number is required."}),accountName:e.string().min(1,{message:"Account name is required."}),channel:e.string().min(1,{message:"Channel is required."}),countryCode:e.string().default("TZ").refine(e=>n.isISO2CountryCode(e),{message:"Provided country code is not a valid ISO2 code."}),currencyCode:e.string().default("TZS").refine(e=>i.isCurrencyCode(e),{message:"Provided currency code is not a valid currency code."}),createdAt:e.string().datetime({message:"Creation timestamp must be a valid ISO 8601 datetime string."}),updatedAt:e.string().datetime({message:"Update timestamp must be a valid ISO 8601 datetime string."})}),walletQuery:e.object({id:e.string().optional(),profileId:e.string().optional(),accountNo:e.string().optional(),accountName:e.string().optional(),channel:e.string().optional(),countryCode:e.string().default("TZ").refine(e=>l.has(e),{message:"Provided country code is not a valid ISO2 code."}).optional(),currencyCode:e.string().default("TZS").refine(e=>{const t=d.from(e);return void 0!==t&&u.has(t.code)},{message:"Provided currency code is not a valid currency code."}).optional()}),statementEntry:e.object({accountNo:V(e.string()),debitOrCredit:e.string().min(1,"Transaction type is required"),tranRefNo:e.string().min(1,"Transaction reference is required"),narration:e.string().min(1,"Transaction description is required"),txnDate:e.coerce.date({errorMap:()=>({message:"Invalid transaction date format"})}),valueDate:e.coerce.date({errorMap:()=>({message:"Invalid value date format"})}),amountCredited:e.number().min(0,"Credited amount must be non-negative"),amountDebited:e.number().min(0,"Debited amount must be non-negative"),balance:e.number(),currencyCode:V(e.string().min(3,"Currency code must be at least 3 characters")).default("TZS")})};class H{_id;_profileId;_accountNo;_accountName;_channel;_countryCode;_currencyCode;_createdAt;_updatedAt;static get schema(){return G.walletDTO}constructor(e){this._id=e.id,this._profileId=e.profileId,this._accountNo=e.accountNo,this._accountName=e.accountName,this._channel=e.channel,this._countryCode=e.countryCode,this._currencyCode=e.currencyCode,this._createdAt=e.createdAt,this._updatedAt=e.updatedAt}static create(e){const t=H.schema.safeParse(e);if(t.success)return new H(t.data);console.error("Wallet data validation failed:",t.error.flatten())}get id(){return this._id}get profileId(){return this._profileId}get accountNo(){return this._accountNo}get accountName(){return this._accountName}get channel(){return this._channel}get countryCode(){return this._countryCode}get currencyCode(){return this._currencyCode}get createdAt(){return this._createdAt}get updatedAt(){return this._updatedAt}get createdAtDate(){return new Date(this._createdAt)}get updatedAtDate(){return new Date(this._updatedAt)}toObject(){return{id:this._id,profileId:this._profileId,accountNo:this._accountNo,accountName:this._accountName,channel:this._channel,countryCode:this._countryCode,createdAt:this._createdAt,updatedAt:this._updatedAt,currencyCode:this._currencyCode}}toJSON(){return JSON.stringify(this.toObject())}validate(){const e=H.schema.safeParse(this.toObject());return e.success||console.warn("Wallet instance validation failed:",e.error.flatten()),e.success}static fromJSON(e){try{const t=JSON.parse(e);return H.from(t)}catch(e){return void console.error("Error parsing wallet JSON:",e)}}static from(e){if(e&&"object"==typeof e)return H.create({id:e.id,profileId:e.profileId,accountNo:e.accountNo,accountName:e.accountName,channel:e.channel,countryCode:e.countryCode,createdAt:e.createdAt,updatedAt:e.updatedAt,currencyCode:e.currencyCode});console.error("Invalid data provided to Wallet.from: Input must be an object.")}static is(e){if(!e||"object"!=typeof e)return!1;const t=e;return"string"==typeof t.id&&"string"==typeof t.profileId&&"string"==typeof t.accountNo&&"string"==typeof t.accountName&&"string"==typeof t.channel&&"string"==typeof t.countryCode&&n.isISO2CountryCode(t.countryCode)&&"string"==typeof t.currencyCode&&i.isCurrencyCode(t.currencyCode)&&"string"==typeof t.createdAt&&"string"==typeof t.updatedAt&&"function"==typeof t.toObject&&"function"==typeof t.validate}}const Z="MOBILE TRANSFER ",Y="PAYOUT",K="PAYOUT TO BANK",Q="TO_BANK",X="PAYOUT TO MOBILE",ee="TO_MOMO";class te{text;constructor(e){this.text=e}get mediumText(){return this.text.length>50?this.text.substring(0,47)+"...":this.text}get shortText(){return this.text.length>35?this.text.substring(0,32)+"...":this.text}static generateDefaultPayoutNarration(e){return P.is(e)?te.generateMobilePayoutNarrationV2(e):j.is(e)?te.generateBankPayoutNarrationV2(e):""}static generateMobilePayoutNarrationV2(e){const{phoneNumber:t,name:r}=e;return`${Y.toUpperCase()} ${t.e164Format.trim()} ${r.trim()}`.toUpperCase()}static generateBankPayoutNarrationV2(e){const{bank:t,accName:r,accNo:n}=e;return`${Y.toUpperCase()} ${t.swiftCode.trim()} ${n.trim()} ${r.trim()}`.toUpperCase()}getContactDetails=()=>{const e=this.getBankContactDetails(),t=this.getMobileContactDetails();return e||(t||void 0)};getBankContactDetails=()=>{let e=this.text.trim();e.startsWith(Z)&&(e=e.substring(16));try{if(e.startsWith(Y)){const t=e.replace(Y,"").trim().split(" ");if(t.length>=3){const e=t[0],r=t[1],n=t.slice(2).map(re).join(" ");if(e.length>=8&&e.length<=11&&/^[A-Z0-9]+$/i.test(e)){const t=a.getCountryFromSwiftCode(e);if(t){if(a.validateSwiftCode(e,t)){const o=s.from(e,t);if(r&&n&&o)return new j(n,o,r)}}}}}if(e.startsWith(Q)){const t=e.split("=>")[1].trim(),r=JSON.parse(t),n=r.account_number,o=r.account_name,i=r.swift_code,c=a.getCountryFromSwiftCode(i);if(!c)return;if(!a.validateSwiftCode(i,c))return;const d=s.from(i,c);if(n&&o&&d)return new j(o,d,n)}if(e.startsWith(K)){const t=e.replace(K,"").trim().split(" "),r=m.getInstance().searchBanks("TZ",t[0]),n=r.length>0?r[0]:void 0,o=t[1],a=t.slice(2).map(re).join(" ");if(a&&o&&n)return new j(a,n,o)}}catch(e){return}};getMobileContactDetails=()=>{let e=this.text.trim();e.startsWith(Z)&&(e=e.substring(16));try{if(e.startsWith(Y)){const t=e.replace(Y,"").trim().split(" ");if(t.length>=2){const e=t[0],n=t.slice(1).map(re).join(" ");if(e.startsWith("+")){const t=r.from(e);if(t&&n)return new P(n,t)}}}if(e.startsWith(ee)){const t=e.split("=>")[1].trim(),r=JSON.parse(t),n=h.from(r.phone_number);let o=r.username;void 0===o&&(o="");let a=o.split(" ");if(a=a.filter(e=>e.trim().length>0),o=a.map(re).join(" "),n&&o)return new P(o,n)}if(e.startsWith(X)){const t=e.replace(X,"").trim().split(" "),r=h.from(t[0]),n=t.slice(1).map(re).join(" ");if(r&&n)return new P(n,r)}}catch(e){return}};toJson(){return{text:this.text,version:"2.0"}}static fromJson(e){try{let t;return t="string"==typeof e?JSON.parse(e):e,t&&"object"==typeof t&&"string"==typeof t.text?new te(t.text):void console.warn("Invalid NarrationJson: missing or invalid text property")}catch(e){return void console.error("Error parsing NarrationJson:",e)}}static isNarrationJson(e){if(!e||"object"!=typeof e)return!1;return"string"==typeof e.text}static is(e){if(!e||"object"!=typeof e)return!1;const t=e;try{return"string"==typeof t.text&&"function"==typeof t.getContactDetails&&"function"==typeof t.toJson}catch(e){return!1}}}function re(e){if(0===e.length)return e;return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}class ne{_accountNo;_debitOrCredit;_tranRefNo;_narration;_txnDate;_valueDate;_amountCredited;_amountDebited;_balance;_currencyCode;static get schema(){return G.statementEntry}constructor(e,t){this._accountNo=e.accountNo,this._debitOrCredit=e.debitOrCredit,this._tranRefNo=e.tranRefNo,this._narration=t,this._txnDate=e.txnDate,this._valueDate=e.valueDate,this._currencyCode=e.currencyCode;const r=d.from(e.currencyCode);if(!r)throw new Error(`Currency not found for code: ${e.currencyCode}`);const n=c.from(e.amountCredited,r.code),o=c.from(e.amountDebited,r.code),a=c.from(e.balance,r.code);if(!n||!o||!a)throw new Error(`Failed to create Amount instances with currency code: ${e.currencyCode}`);this._amountCredited=n,this._amountDebited=o,this._balance=a}static create(e){const t="string"==typeof e.narration?new te(e.narration):e.narration,r={...e,narration:t.text},n=ne.schema.safeParse(r);if(n.success)try{const{narration:e,...r}=n.data;return new ne(r,t)}catch(e){return void console.error("Failed to create WalletStatementEntry:",e)}else console.error("WalletStatementEntry data validation failed:",n.error.flatten())}get accountNo(){return this._accountNo}get debitOrCredit(){return this._debitOrCredit}get tranRefNo(){return this._tranRefNo}get narration(){return this._narration}get txnDate(){return this._txnDate}get valueDate(){return this._valueDate}get amountCredited(){return this._amountCredited}get amountDebited(){return this._amountDebited}get balance(){return this._balance}get currencyCode(){return this._currencyCode}toJson(){return{accountNo:this._accountNo,debitOrCredit:this._debitOrCredit,tranRefNo:this._tranRefNo,narration:this._narration.toJson(),txnDate:this._txnDate.toISOString(),valueDate:this._valueDate.toISOString(),amountCredited:this._amountCredited.toJson(),amountDebited:this._amountDebited.toJson(),balance:this._balance.toJson(),currencyCode:this._currencyCode,version:"2.0"}}static fromJson(e){try{let t;if(t="string"==typeof e?JSON.parse(e):e,!(t&&"object"==typeof t&&"string"==typeof t.debitOrCredit&&"string"==typeof t.tranRefNo&&t.narration&&"string"==typeof t.txnDate&&"string"==typeof t.valueDate&&"string"==typeof t.currencyCode&&t.amountCredited&&t.amountDebited&&t.balance))return void console.warn("Invalid WalletStatementEntryJson: missing or invalid required properties");const r=te.fromJson(t.narration);if(!r)return void console.warn("Invalid WalletStatementEntryJson: failed to deserialize narration");const n=c.fromJson(t.amountCredited),o=c.fromJson(t.amountDebited),a=c.fromJson(t.balance);return n&&o&&a?n.currencyCode!==t.currencyCode||o.currencyCode!==t.currencyCode||a.currencyCode!==t.currencyCode?void console.warn("Invalid WalletStatementEntryJson: currency code mismatch"):ne.create({accountNo:t.accountNo,debitOrCredit:t.debitOrCredit,tranRefNo:t.tranRefNo,narration:r,txnDate:t.txnDate,valueDate:t.valueDate,amountCredited:n.numericValue,amountDebited:o.numericValue,balance:a.numericValue,currencyCode:t.currencyCode}):void console.warn("Invalid WalletStatementEntryJson: failed to deserialize Amount objects")}catch(e){return void console.error("Error parsing WalletStatementEntryJson:",e)}}static isWalletStatementEntryJson(e){if(!e||"object"!=typeof e)return!1;const t=e;return"string"==typeof t.debitOrCredit&&"string"==typeof t.tranRefNo&&te.isNarrationJson(t.narration)&&"string"==typeof t.txnDate&&"string"==typeof t.valueDate&&"string"==typeof t.currencyCode&&(void 0===t.accountNo||"string"==typeof t.accountNo)&&c.isAmountJson(t.amountCredited)&&c.isAmountJson(t.amountDebited)&&c.isAmountJson(t.balance)}validate(){const e={accountNo:this._accountNo,debitOrCredit:this._debitOrCredit,tranRefNo:this._tranRefNo,narration:this._narration.text,txnDate:this._txnDate,valueDate:this._valueDate,amountCredited:this._amountCredited.numericValue,amountDebited:this._amountDebited.numericValue,balance:this._balance.numericValue,currencyCode:this._currencyCode},t=ne.schema.safeParse(e);return t.success||console.warn("WalletStatementEntry instance validation failed:",t.error.flatten()),t.success}static is(e){if(!e||"object"!=typeof e)return!1;const t=e;try{return("string"==typeof t.accountNo||void 0===t.accountNo)&&"string"==typeof t.debitOrCredit&&"string"==typeof t.tranRefNo&&te.is(t.narration)&&t.txnDate instanceof Date&&t.valueDate instanceof Date&&c.is(t.amountCredited)&&c.is(t.amountDebited)&&c.is(t.balance)&&"string"==typeof t.currencyCode&&"function"==typeof t.toJson&&"function"==typeof t.validate}catch(e){return!1}}equals(e){return this._tranRefNo===e._tranRefNo}clone(){return ne.create({accountNo:this._accountNo,debitOrCredit:this._debitOrCredit,tranRefNo:this._tranRefNo,narration:this._narration,txnDate:this._txnDate,valueDate:this._valueDate,amountCredited:this._amountCredited.numericValue,amountDebited:this._amountDebited.numericValue,balance:this._balance.numericValue,currencyCode:this._currencyCode})}toString(){return`WalletStatementEntry(${this._tranRefNo}: ${this._debitOrCredit} ${this._amountCredited.isPositive()?this._amountCredited.label:this._amountDebited.label} on ${this._txnDate.toISOString().split("T")[0]}${this._narration})`}static toJsonArray(e){return e.map(e=>e.toJson())}static fromJsonArray(e){try{let t;return t="string"==typeof e?JSON.parse(e):e,Array.isArray(t)?t.map(e=>ne.fromJson(e)).filter(e=>void 0!==e):(console.warn("fromJsonArray expects an array"),[])}catch(e){return console.error("Error parsing WalletStatementEntryJson array:",e),[]}}toObject(){return{accountNo:this._accountNo,debitOrCredit:this._debitOrCredit,tranRefNo:this._tranRefNo,narration:this._narration.text,txnDate:this._txnDate,valueDate:this._valueDate,amountCredited:this._amountCredited.toJson(),amountDebited:this._amountDebited.toJson(),balance:this._balance.toJson(),currencyCode:this._currencyCode}}toJSON(){return JSON.stringify(this.toJson())}static fromJSON(e){return ne.fromJson(e)}static from(e){if(e&&"object"==typeof e)try{let t,r,n,o,a=e.currencyCode||"TZS";if(e.amountCredited&&"object"==typeof e.amountCredited&&"value"in e.amountCredited){const o=c.fromJson(e.amountCredited),s=c.fromJson(e.amountDebited),i=c.fromJson(e.balance);if(!o||!s||!i)return void console.error("Failed to deserialize Amount objects from JSON");t=o.numericValue,r=s.numericValue,n=i.numericValue,e.currencyCode||(a=o.currencyCode)}else if(t=Number(e.amountCredited),r=Number(e.amountDebited),n=Number(e.balance),!Number.isFinite(t)||!Number.isFinite(r)||!Number.isFinite(n))return void console.error("Invalid numeric values for amounts");if("string"==typeof e.narration)o=e.narration;else if(te.is(e.narration))o=e.narration;else{if(!te.isNarrationJson(e.narration))return void console.error("Invalid narration data");{const t=te.fromJson(e.narration);if(!t)return void console.error("Failed to create Narration from NarrationJson");o=t}}return ne.create({accountNo:e.accountNo,debitOrCredit:e.debitOrCredit,tranRefNo:e.tranRefNo,narration:o,txnDate:e.txnDate,valueDate:e.valueDate,amountCredited:t,amountDebited:r,balance:n,currencyCode:a})}catch(e){return void console.error("Error in WalletStatementEntry.from:",e)}else console.error("Invalid data provided to WalletStatementEntry.from: not an object or null.")}}class oe{id;name;description;permissions;createdAt;updatedAt;constructor(e){this.id=e.id,this.name=e.name,this.description=e.description,this.permissions=new Set(e.access),this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt)}hasPermission(e){return this.permissions.has(e)}static from(e){try{if(!e?.id||!e?.name||!Array.isArray(e?.access))return;return new oe(e)}catch(e){return void console.error("Error creating Role:",e)}}toJSON(){return{id:this.id,name:this.name,description:this.description,access:Array.from(this.permissions),createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString()}}}class ae{id;name;identity;profileId;permissions;constructor(e){this.id=e.id,this.name=e.name,this.identity=e.identity,this.profileId=e.profileId,this.permissions=new Set(e.permissions)}can(e){return this.permissions.has(e)}canAny(e){return e.some(e=>this.permissions.has(e))}canAll(e){return e.every(e=>this.permissions.has(e))}}class se extends ae{type;roleId;resetPassword;isActive;isArchived;role;createdAt;updatedAt;constructor(e){if(super({id:e.id,name:e.name,identity:e.identity,profileId:e.profileId,permissions:e.role?.access??[]}),this.type=e.type,this.roleId=e.roleId,this.resetPassword=e.resetPassword,this.isActive=e.isActive,this.isArchived=e.isArchived,this.createdAt=new Date(e.createdAt),this.updatedAt=new Date(e.updatedAt),e.role)try{this.role=new oe(e.role)}catch(e){}}isAccountActive(){return this.isActive}isAccountArchived(){return this.isArchived}needsPasswordReset(){return this.resetPassword}getAccountStatus(){return this.isArchived?{status:"archived",label:"Archived",color:"default",description:"Account has been archived and is no longer accessible"}:this.isActive?this.resetPassword?{status:"password_reset_required",label:"Password Reset Required",color:"warning",description:"User must reset their password on next login"}:{status:"active",label:"Active",color:"success",description:"Account is active and ready to use"}:{status:"inactive",label:"Inactive",color:"error",description:"Account has been deactivated by an administrator"}}getRoleName(){return this.role?.name??""}getCreatedDate(){return this.createdAt.toLocaleDateString()}getLastUpdateInfo(){const e=(new Date).getTime()-this.updatedAt.getTime(),t=Math.floor(e/864e5);return 0===t?"Today":1===t?"Yesterday":t<7?`${t} days ago`:t<30?`${Math.floor(t/7)} weeks ago`:this.updatedAt.toLocaleDateString()}static from(e){try{return e?.id&&e?.name&&e?.identity&&e?.roleId?new se(e):void console.error("Missing required ManagedUser fields:",e)}catch(e){return void console.error("Error creating ManagedUser:",e)}}static createMany(e){return e.map(e=>se.from(e)).filter(Boolean)}toJSON(){return{id:this.id,name:this.name,identity:this.identity,type:this.type,profileId:this.profileId,roleId:this.roleId,resetPassword:this.resetPassword,isActive:this.isActive,isArchived:this.isArchived,role:this.role?.toJSON(),createdAt:this.createdAt.toISOString(),updatedAt:this.updatedAt.toISOString()}}}function ie(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var n;const o=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),a=null!=(n=r.getItem(e))?n:null;return a instanceof Promise?a.then(o):o(a)},setItem:(e,n)=>r.setItem(e,JSON.stringify(n,null==t?void 0:t.replacer)),removeItem:e=>r.removeItem(e)}}const ce=e=>t=>{try{const r=e(t);return r instanceof Promise?r:{then:e=>ce(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>ce(t)(e)}}},de=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?("production"!==(import.meta.env?import.meta.env.MODE:void 0)&&console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),((e,t)=>(r,n,o)=>{let a={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1;const i=new Set,c=new Set;let d;try{d=a.getStorage()}catch(e){}if(!d)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),r(...e)},n,o);const u=ce(a.serialize),l=()=>{const e=a.partialize({...n()});let t;const r=u({state:e,version:a.version}).then(e=>d.setItem(a.name,e)).catch(e=>{t=e});if(t)throw t;return r},m=o.setState;o.setState=(e,t)=>{m(e,t),l()};const h=e((...e)=>{r(...e),l()},n,o);let p;const y=()=>{var e;if(!d)return;s=!1,i.forEach(e=>e(n()));const t=(null==(e=a.onRehydrateStorage)?void 0:e.call(a,n()))||void 0;return ce(d.getItem.bind(d))(a.name).then(e=>{if(e)return a.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===a.version)return e.state;if(a.migrate)return a.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return p=a.merge(e,null!=(t=n())?t:h),r(p,!0),l()}).then(()=>{null==t||t(p,void 0),s=!0,c.forEach(e=>e(p))}).catch(e=>{null==t||t(void 0,e)})};return o.persist={setOptions:e=>{a={...a,...e},e.getStorage&&(d=e.getStorage())},clearStorage:()=>{null==d||d.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>y(),hasHydrated:()=>s,onHydrate:e=>(i.add(e),()=>{i.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},y(),p||h})(e,t)):((e,t)=>(r,n,o)=>{let a={storage:ie(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1;const i=new Set,c=new Set;let d=a.storage;if(!d)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),r(...e)},n,o);const u=()=>{const e=a.partialize({...n()});return d.setItem(a.name,{state:e,version:a.version})},l=o.setState;o.setState=(e,t)=>{l(e,t),u()};const m=e((...e)=>{r(...e),u()},n,o);let h;o.getInitialState=()=>m;const p=()=>{var e,t;if(!d)return;s=!1,i.forEach(e=>{var t;return e(null!=(t=n())?t:m)});const o=(null==(t=a.onRehydrateStorage)?void 0:t.call(a,null!=(e=n())?e:m))||void 0;return ce(d.getItem.bind(d))(a.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===a.version)return[!1,e.state];if(a.migrate)return[!0,a.migrate(e.state,e.version)];console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;const[o,s]=e;if(h=a.merge(s,null!=(t=n())?t:m),r(h,!0),o)return u()}).then(()=>{null==o||o(h,void 0),h=n(),s=!0,c.forEach(e=>e(h))}).catch(e=>{null==o||o(void 0,e)})};return o.persist={setOptions:e=>{a={...a,...e},e.storage&&(d=e.storage)},clearStorage:()=>{null==d||d.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>p(),hasHydrated:()=>s,onHydrate:e=>(i.add(e),()=>{i.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||p(),h||m})(e,t),ue={getUniqueCountries(e){const t=new Set;return e.forEach(e=>{e.countryCode&&t.add(e.countryCode)}),Array.from(t)},getWalletsByCountry:(e,t)=>e.filter(e=>e.countryCode===t)},le=e=>"function"==typeof(null==e?void 0:e.passthrough);e.object({name:e.literal("ZodError"),issues:e.array(e.object({path:e.array(e.union([e.string(),e.number()])),message:e.string().optional(),code:e.nativeEnum(e.ZodIssueCode)}).catchall(e.any()))});const me=Symbol("ContractNoBody"),he=e=>"method"in e&&"path"in e,pe=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>{var n,o,a,s,i;return he(r)?[e,{...r,path:(null==t?void 0:t.pathPrefix)?t.pathPrefix+r.path:r.path,headers:(s=null==t?void 0:t.baseHeaders,i=r.headers,le(s)?le(i)?s.merge(i):s:le(i)?i:Object.assign({},s,i)),strictStatusCodes:null!==(n=r.strictStatusCodes)&&void 0!==n?n:null==t?void 0:t.strictStatusCodes,validateResponseOnClient:null!==(o=r.validateResponseOnClient)&&void 0!==o?o: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!==(a=r.metadata)&&void 0!==a?a:{}}:r.metadata}]:[e,pe(r,t)]})),ye=Symbol("ContractPlainType"),fe=()=>({router:(e,t)=>pe(e,t),query:e=>e,mutation:e=>e,responses:e=>e,response:()=>ye,body:()=>ye,type:()=>ye,otherResponse:({contentType:e,body:t})=>({contentType:e,body:t}),noBody:()=>me}),ge=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("&"):"",we=e=>e?Object.keys(e).flatMap(t=>be(t,e[t])).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&"):"",be=(e,t)=>Array.isArray(t)?t.flatMap((t,r)=>be(`${e}[${r}]`,t)):t instanceof Date?[[`${e}`,t.toISOString()]]:null===t?[[`${e}`,""]]:void 0===t?[]:"object"==typeof t?Object.keys(t).flatMap(r=>be(`${e}[${r}]`,t[r])):[[`${e}`,`${t}`]];class ve extends Error{constructor(e,t){super(`Server returned unexpected response. Expected one of: ${t.join(",")} got: ${e.status}`),this.response=e}}const Ne=async({route:e,path:t,method:r,headers:n,body:o,validateResponse:a,fetchOptions:s})=>{const i=await fetch(t,{...s,method:r,headers:n,body:o}),c=i.headers.get("content-type");if((null==c?void 0:c.includes("application/"))&&(null==c?void 0:c.includes("json"))){const t={status:i.status,body:await i.json(),headers:i.headers},r=e.responses[t.status];return(null!=a?a:e.validateResponseOnClient)&&"function"==typeof(null==(d=r)?void 0:d.safeParse)?{...t,body:r.parse(t.body)}:t}var d;return(null==c?void 0:c.includes("text/"))?{status:i.status,body:await i.text(),headers:i.headers}:{status:i.status,body:await i.blob(),headers:i.headers}},Ce=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 n of t)r(e,n);else r(e,t)}),t},Oe=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e.toLowerCase(),t])),Ie=(e,t,r,n,o)=>{const a=(({path:e,params:t})=>{const r=t;return e.replace(/\/?:([^/?]+)\??/g,(e,t)=>r[t]?`${e.startsWith("/")?"/":""}${r[t]}`:"")})({path:n.path,params:r}),s=((e,t=!1)=>{const r=t?ge(e):we(e);return(null==r?void 0:r.length)>0?"?"+r:""})(e,o);return`${t}${a}${s}`},Se=(e,t)=>{const r=Object.keys(e.responses);return async n=>{const o=((e,t,r)=>{const{query:n,params:o,body:a,headers:s,extraHeaders:i,overrideClientOptions:c,fetchOptions:d,cache:u,next:l,...m}=r||{},h={...t,...c};return{path:Ie(n,h.baseUrl,o,e,!!h.jsonQuery),clientArgs:h,route:e,body:a,query:n,extraInputArgs:m,fetchOptions:{...u&&{cache:u},...l&&{next:l},...d},headers:{...i,...s}}})(e,t,n),a=await(e=>{const{path:t,clientArgs:r,route:n,body:o,query:a,extraInputArgs:s,headers:i,fetchOptions:c}=e,d=r.api||Ne,u=r.baseHeaders&&Object.fromEntries(Object.entries(r.baseHeaders).map(([t,r])=>"function"==typeof r?[t,r(e)]:[t,r])),l={...u&&Oe(u),...Oe(i)};Object.keys(l).forEach(e=>{void 0===l[e]&&delete l[e]});let m={route:n,path:t,method:n.method,headers:l,body:void 0,rawBody:o,rawQuery:a,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"!==n.method&&("contentType"in n&&"multipart/form-data"===n.contentType?m={...m,contentType:"multipart/form-data",body:o instanceof FormData?o:Ce(o)}:"contentType"in n&&"application/x-www-form-urlencoded"===n.contentType?m={...m,contentType:"application/x-www-form-urlencoded",headers:{"content-type":"application/x-www-form-urlencoded",...m.headers},body:"string"==typeof o?o:new URLSearchParams(o)}:null!=o&&(m={...m,contentType:"application/json",headers:{"content-type":"application/json",...m.headers},body:JSON.stringify(o)})),d({...m,...s})})(o);if(!t.throwOnUnknownStatus)return a;if(r.includes(a.status.toString()))return a;throw new ve(a,r)}},Ae=(e,t)=>Object.fromEntries(Object.entries(e).map(([e,r])=>he(r)?[e,Se(r,t)]:[e,Ae(r,t)])),Ee=fe().router({getWallets:{method:"GET",path:"/",query:G.walletQuery,responses:{200:e.array(H.schema)}},getBalance:{method:"POST",path:"/balance",body:e.object({accountNo:e.string().optional()}),responses:{201:e.object({availableBalance:e.number()})}},getStatement:{method:"POST",path:"/statement",summary:"Get Wallet Statement",body:e.object({endDate:e.date(),startDate:e.date(),accountNo:e.string().optional()}),responses:{201:e.array(ne.schema)}}}),_e=g(de((e,t)=>({user:void 0,token:void 0,getUser:()=>{try{const e=t().user;if(e)return L.fromJSON(e)}catch(e){console.warn("Failed to deserialize user from store:",e)}},setUser:t=>{try{e({user:t.toJSON()})}catch(e){console.error("Failed to serialize user to store:",e)}},getToken:()=>t().token,setToken:t=>e({token:t}),setUserAndToken:(t,r)=>{try{e({user:t.toJSON(),token:r})}catch(e){console.error("Failed to serialize user and token to store:",e)}},clearAuth:()=>e({user:void 0,token:void 0})}),{name:"auth-store",storage:ie(()=>"undefined"==typeof window?{getItem:()=>null,setItem:()=>{},removeItem:()=>{}}:sessionStorage)})),De=()=>{if("undefined"!=typeof window)return _e.getState().getToken()};class Pe{contract;endpoint;root;token;constructor(e,t,r){this.contract=t,this.endpoint=e,this.root=r?.root,this.token=r?.token}getToken(){if(this.token&&this.token.trim().length>0)return this.token;try{const e=De();if(e&&e.trim().length>0)return e;console.warn(`No token available from global auth state for ${this.endpoint} repository`)}catch(e){console.warn(`No valid token available for ${this.endpoint} repository. Please provide a token directly in the constructor or ensure a user is logged in via AfloatAuth.instance.`)}return""}get client(){const e={baseUrl:this.root?`${this.root}/${this.endpoint}`:`https://api.afloat.money/v1/${this.endpoint}`,baseHeaders:{token:this.getToken(),"x-request-id":b()}};return Ae(this.contract,e)}setToken(e){this.token=e}getCurrentToken(){return this.token}handleResponse(e,t){if(e.status===t)return e.body;if(400===e.status)throw new v(e.body);if(401===e.status)throw new v({message:"You are not authenticated to perform this action. Please login again",statusCode:401,error:"UNAUTHORIZED"});if(403===e.status)throw new v({message:"You are not authorized to perform this action.",statusCode:403,error:"FORBIDDEN"});if(404===e.status)throw new v({message:"The requested resource was not found.",statusCode:404,error:"NOT_FOUND"});throw new v({message:"We encountered an error trying to process your request. Please try again later",statusCode:520,error:"UNKNOWN_ERROR"})}}class je extends Pe{constructor(e){super("wallet",Ee,e)}async getBalance(e){if(!e.wallet&&!e.accountNo)throw new Error("Either wallet or accountNo must be provided");if(e.wallet){const t=await this.client.getBalance({body:{accountNo:e.wallet.accountNo}});if(201===t.status){const r=t.body.availableBalance,n=c.from(r,e.wallet.currencyCode);if(n)return n}}if(e.accountNo){const t=await this.getWallets({accountNo:e.accountNo});if(0===t.length)throw new Error(`No wallet found for accountNo: ${e.accountNo}`);const r=t[0],n=await this.client.getBalance({body:{accountNo:e.accountNo}});if(201===n.status){const e=n.body.availableBalance,t=c.from(e,r.currencyCode);if(t)return t}}throw new Error("Failed to fetch balance")}async getWallets(e){const t=await this.client.getWallets({query:e});if(200===t.status){const e=t.body;try{return e.map(e=>{const t=H.from(e);if(!t)throw new Error(`Invalid wallet data: ${JSON.stringify(e)}`);return t})}catch(e){throw console.error("[WalletRepository] Error processing wallet data:",e),new Error("Failed to process wallet data from API")}}throw new Error(`Failed to fetch wallets. Status: ${t.status}`)}async getStatement(e){if(!e.wallet&&!e.accountNo)throw new Error("Either wallet or accountNo must be provided");const t=new Date,r=new Date(t.getFullYear(),t.getMonth(),1),n=new Date(t.getFullYear(),t.getMonth()+1,0),o=e.range??{startDate:r,endDate:n};let a,s;if(e.wallet)a=e.wallet,s=e.wallet.accountNo;else{if(!e.accountNo)throw new Error("Either wallet or accountNo must be provided");{const t=await this.getWallets({accountNo:e.accountNo});if(0===t.length)throw new Error(`No wallet found for accountNo: ${e.accountNo}`);a=t[0],s=e.accountNo}}const i={...o,accountNo:s},c=await this.client.getStatement({body:i});if(201===c.status){return c.body.map(e=>({...e,currencyCode:a.currencyCode})).reduce((e,t)=>{const r=ne.create(t);return r?e.push(r):console.warn("[WalletRepository] Skipping invalid statement entry:",t),e},[])}throw new Error(`Failed to fetch statement. Status: ${c.status}`)}}const Te=g()(de((e,t)=>({userId:"",wallets:[],selectedWalletId:"",selectedCountryCode:"TZ",lastSynced:new Date,isInitialized:!1,setWallets:r=>{const n=r.filter(e=>H.is(e));if(0===n.length)throw new Error("setWallets received an empty or invalid wallet list. User must have at least one valid wallet.");const o=t().selectedWalletId,a=t().isInitialized;let s;const i=n.some(e=>e.id===o);a&&i&&""!==o?(s=n.find(e=>e.id===o),s||(console.error("Inconsistency: currentWalletStillValid was true, but find failed."),s=n[0])):s=n[0],e({wallets:n,selectedWalletId:s.id,selectedCountryCode:s.countryCode,lastSynced:new Date,isInitialized:!0})},setSelectedWallet:r=>{if(!H.is(r))throw new Error("setSelectedWallet called with an invalid Wallet object.");if(!t().wallets.some(e=>e.id===r.id))throw new Error(`Attempted to select wallet (ID: ${r.id}) which is not present in the current wallet list.`);e({selectedWalletId:r.id,selectedCountryCode:r.countryCode})},setSelectedCountry:r=>{const n=t()._getWalletsByCountry(r);if(0===n.length)throw new Error(`Cannot select country ${r}: No wallets found for this country (check if code is valid or state is consistent).`);e({selectedCountryCode:r,selectedWalletId:n[0].id})},reset:()=>{e({userId:"",wallets:[],selectedWalletId:"",selectedCountryCode:"TZ",lastSynced:new Date,isInitialized:!1})},_getWalletsByCountry:e=>t().wallets.filter(t=>t.countryCode===e),_getSelectedWallet:()=>{const e=t();if(!e.isInitialized)throw new Error("Cannot get selected wallet: Wallet session not initialized.");if(""===e.selectedWalletId)throw new Error("Cannot get selected wallet: Selection is still placeholder (initialization incomplete?).");const r=e.wallets.find(t=>t.id===e.selectedWalletId);if(!r)throw console.error("Inconsistent state details:",{id:e.selectedWalletId,walletCount:e.wallets.length}),new Error(`Inconsistent state: Selected wallet ID '${e.selectedWalletId}' not found in wallet list.`);return r}}),{name:"wallet-session-storage",storage:ie(()=>sessionStorage,{reviver:(e,t)=>{if("wallets"===e&&Array.isArray(t))return t.map(e=>{try{const t=H.from(e);return t||void console.warn("Filtering out invalid wallet data during rehydration:",e)}catch(t){return void console.error("Error rehydrating Wallet instance from persisted data:",e,t)}}).filter(e=>void 0!==e);if("lastSynced"===e&&"string"==typeof t)try{const e=new Date(t);return isNaN(e.getTime())?new Date:e}catch{return new Date}return t},replacer:(e,t)=>"lastSynced"===e&&t instanceof Date?t.toISOString():"wallets"===e&&Array.isArray(t)?t.map(e=>e instanceof H&&"function"==typeof e.toObject?e.toObject():e):t}),partialize:e=>({userId:e.userId,wallets:e.wallets,selectedWalletId:e.selectedWalletId,selectedCountryCode:e.selectedCountryCode,lastSynced:e.lastSynced,isInitialized:e.isInitialized})}));class Re{repo;static _instance;constructor(){this.repo=new je}static get instance(){return this._instance||(this._instance=new Re),this._instance}isInitialized(){return Te.getState().isInitialized}async initialize(e){if(!this.isInitialized()){if(!e)throw new Error("User must be authenticated to initialize wallet manager");await this.refreshWallets()}}async refreshWallets(){try{const e=await this.repo.getWallets();if(!e||0===e.length)throw new Error("User has no wallets associated with their account. Cannot proceed.");Te.getState().setWallets(e)}catch(e){throw console.error("Failed to refresh wallets:",e),e}}getWallets(){const e=Te.getState();if(!e.isInitialized)throw new Error("Cannot get wallets: Wallet session not initialized.");return e.wallets}getCountries(){const e=this.getWallets();return ue.getUniqueCountries(e)}getWalletsByCountry(e){if(!this.isInitialized())throw new Error("Cannot get wallets by country: Wallet session not initialized.");return Te.getState()._getWalletsByCountry(e)}getSelectedWallet(){return Te.getState()._getSelectedWallet()}getSelectedCountryCode(){const e=Te.getState();if(!e.isInitialized)throw new Error("Cannot get selected country code: Wallet session not initialized.");return e.selectedCountryCode}getSelectedCountry(){const e=this.getSelectedCountryCode();try{const t=p.fromCode(e);if(!t)throw new Error(`Country.fromCode returned invalid result for code: ${e}`);return t}catch(t){throw console.error(`Failed to get Country object for code ${e}:`,t),new Error(`Failed to create Country object for selected code ${e}.`)}}changeWallet(e){if(!this.isInitialized())throw new Error("Cannot change wallet: Wallet session not initialized.");const t=Te.getState(),r=t.wallets.find(t=>t.id===e);if(!r)throw new Error(`Cannot change wallet: Wallet with ID ${e} not found.`);t.setSelectedWallet(r)}changeCountry(e){if(!this.isInitialized())throw new Error("Cannot change country: Wallet session not initialized.");Te.getState().setSelectedCountry(e)}reset(){Te.getState().reset()}}const Ue=fe().router({logIn:{method:"POST",path:"/login",body:e.object({type:e.string().default("password"),identity:e.string().email(),password:e.string()}),responses:{201:e.object({profile:q.profileDTOSchema,token:e.string(),access:e.array(e.string()),resetPassword:e.boolean()}),400:e.object({})}},access:{method:"GET",path:"/access",headers:e.object({token:e.string()}),responses:{200:e.string().array()}},resetPassword:{method:"PUT",path:"/password",body:e.object({currentPassword:e.string(),newPassword:e.string()}),responses:{}}}),ke=fe().router({getUserCredentials:{method:"GET",path:"/me",responses:{200:e.object({name:e.string(),identity:e.string()})}}});class Me extends Pe{constructor(e){super("login",ke,e)}async getIdentity(){const e=await this.client.getUserCredentials();if(200===e.status)return e.body;throw new Error(`Failed to get user identity. Status: ${e.status}`)}}class xe extends Pe{constructor(e){super("auth",Ue,e)}async logIn(e,t){const r={type:"password",identity:e,password:t},n=await this.client.logIn({body:r});if(400===n.status)throw new v({message:"Invalid email or password",statusCode:400});if(201===n.status){const e=new Me({token:n.body.token}),t=await e.getIdentity(),r=L.from({...n.body,...t});if(r)return r}throw new v({message:"An error occurred while trying to log in",statusCode:502})}async updatePassword(e,t){const r=await this.client.resetPassword({body:{currentPassword:e,newPassword:t}});if(200===r.status)return!0;if(400===r.status)throw new v({message:"Invalid current password",statusCode:400});throw new v({message:"An error occurred while trying to update password",statusCode:502})}}class Be{static _instance=null;constructor(){}static get instance(){return Be._instance||(Be._instance=new Be),Be._instance}get repo(){return new xe({token:this.getUserToken()})}getUserToken(){return De()}get currentUser(){return(()=>{if("undefined"!=typeof window)return _e.getState().getUser()})()}get isAuthenticated(){return!!this.currentUser&&!!this.getUserToken()}useCurrentUser(){return(()=>{if("undefined"==typeof window)throw new Error("useCurrentUser must only be used in a React component on the client side");const e=w(_e,e=>e.user);try{return e?L.fromJSON(e):void 0}catch(e){return void console.warn("Failed to deserialize user from hook:",e)}})()}checkPermission(e){return this.currentUser?.can(e)??!1}async logIn(e,t){if(!e||!t)throw new Error("Email and password are required");const r=new xe,n=await r.logIn(e,t);this.clearSavedData(),_e.getState().setUserAndToken(n,n.token);try{await Re.instance.initialize(n)}catch(e){throw console.warn("Failed to initialize wallet session manager:",e),e}return n}async resetPassword(e,t){if(!this.isAuthenticated)throw new Error("User must be authenticated to reset password");if(!e||!t)throw new Error("Current password and new password are required");return await this.repo.updatePassword(e,t),this.clearSavedData(),!0}logOut(){this.clearSavedData()}refresh(){this.clearSavedData()}getDebugInfo(){return{hasUser:!!this.currentUser,hasToken:!!this.getUserToken(),isAuthenticated:this.isAuthenticated,userName:this.currentUser?.name||"Not logged in",tokenLength:this.getUserToken()?.length||0,managerInstance:"AfloatAuth singleton"}}clearSavedData(){_e.getState().clearAuth();try{Re.instance.reset()}catch(e){console.warn("Failed to reset wallet session manager:",e)}}}const $e=fe().router({getAccessList:{method:"GET",path:"/access",responses:{200:e.string().array()}}});class Je extends Pe{constructor(e){super("auth",$e,e)}async getAccessList(){const e=await this.client.getAccessList();if(200===e.status)return e.body;throw new Error(`Failed to get access list. Status: ${e.status}`)}}const We=fe().router({getCurrentProfile:{method:"GET",path:"/me",responses:{200:z.schema}}});class Fe extends Pe{constructor(e){super("profile",We,e)}async getCurrentProfile(){const e=await this.client.getCurrentProfile();if(200===e.status){const t=z.from(e.body);if(t)return t;throw new Error("Invalid profile data received from server")}throw new Error(`Failed to get current profile. Status: ${e.status}`)}}class qe{canHandle(e){return"Mobile"===e.type&&P.is(e)}createInput(e){if(P.is(e))return{type:I.Mobile,displayName:e.accountName,accountNo:e.accountNumber,channel:e.channelId};throw new Error("Expected Mobile Contact Info")}}class ze{canHandle(e){return"Bank"===e.type&&j.is(e)}createInput(e){if(j.is(e))return{type:I.Bank,displayName:e.accountName,accountNo:e.accountNumber,channel:e.channelId};throw new Error("Expected Mobile Contact Info")}}class Le{handlers=[new qe,new ze];resolve(e){const t=this.handlers.find(t=>t.canHandle(e));if(!t)throw new Error("Please check your data and try again");return t.createInput(e)}}const Ve={400:e.object({statusCode:e.number(),message:e.string(),error:e.string(),details:e.record(e.string()).optional()})},Ge=fe().router({createContact:{method:"POST",path:"/",body:E.contactInputDTO,responses:{201:E.contactDTO}},editContact:{method:"PATCH",path:"/:id",body:E.contactInputDTO,responses:{200:E.contactDTO}},getContacts:{method:"GET",path:"/",query:e.object({orderByDesc:e.string()}),responses:{200:e.array(E.contactDTO)}},getByID:{method:"GET",path:"/:id",responses:{200:E.contactDTO}},deleteContact:{method:"DELETE",path:"/:id",body:e.object({}),responses:{200:e.object({})}}},{commonResponses:Ve});class He extends Pe{constructor(e){super("contact",Ge,e)}async create(e){const t=(new Le).resolve(e),r=await this.client.createContact({body:t}),n=this.handleResponse(r,201);return T.create(n)}async edit(e,t){const r=(new Le).resolve(t),n=await this.client.editContact({params:{id:e},body:r}),o=this.handleResponse(n,200);return T.create(o)}async remove(e){const t=await this.client.deleteContact({params:{id:e}});this.handleResponse(t,200)}async getAll(){const e=await this.client.getContacts({query:{orderByDesc:"createdAt"}}),t=this.handleResponse(e,200);return T.createMany(t)}async getByID(e){const t=await this.client.getByID({params:{id:e}}),r=this.handleResponse(t,200);return T.create(r)}}const Ze={SUPPORTED_COUNTRY_CODES:["TZ","KE"],ERROR_MESSAGES:{INVALID_PHONE_NUMBER:"Invalid phone number",INELIGIBLE_FOR_PAYOUT:"The provided phone number is not eligible for payout. Please make sure it is a valid mobile number.",MOBILE_NUMBER_MNO_MISMATCH:"There is a mismatch between the phone number provided and the MNO used.",UNSUPPORTED_COUNTRY_BANK:"Only Tanzanian Banks are supported for now",UNSUPPORTED_COUNTRY_MOBILE:"Only Tanzanian mobile numbers are supported for now",NO_HANDLER_FOUND:"Cannot create payout input!"}};class Ye{static processNotes(e){if(!e)return;const t=e.trim();return t.length>0?t:void 0}}class Ke{static forBank(e,t){if(!Ze.SUPPORTED_COUNTRY_CODES.includes(e.countryCode))throw new Error(Ze.ERROR_MESSAGES.UNSUPPORTED_COUNTRY_BANK);return`${t.countryCode}-BANK-B2C`}static forMobile(e,n,o){if(!r.is(e))throw new Error(Ze.ERROR_MESSAGES.INVALID_PHONE_NUMBER);if(!Ze.SUPPORTED_COUNTRY_CODES.includes(e.countryCode))throw new Error(Ze.ERROR_MESSAGES.UNSUPPORTED_COUNTRY_MOBILE);if(!y.checkPayoutEligibility(e))throw new Error(Ze.ERROR_MESSAGES.INELIGIBLE_FOR_PAYOUT);const a=t.getMNOById(n,e.countryCode);if(!a)throw new Error(Ze.ERROR_MESSAGES.MOBILE_NUMBER_MNO_MISMATCH);return a.id===f.VODACOM?`${o.countryCode}-${f.TIGO.toString().toUpperCase()}-B2C`:`${o.countryCode}-${a.id.toString().toUpperCase()}-B2C`}}class Qe{canHandle(e,t,r){return e===R.MOBILE&&P.is(t)&&r.countryCode===t.countryCode&&r.currencyCode===p.from(t.countryCode)?.currencyCode}createInput(e,t){const r=e.receiver,n=Ye.processNotes(e.notes),a=r.phoneNumber;return{channel:Ke.forMobile(a,r.mnoId,t),msisdn:a.getWithFormat(o.INTERNATIONAL_NUMERIC),description:n??te.generateDefaultPayoutNarration(r),payeeName:r.name,notes:n,amount:e.amount.numericValue}}}class Xe{canHandle(e,t,r){return e===R.BANK&&j.is(t)&&r.countryCode===t.countryCode&&r.currencyCode===p.from(t.countryCode)?.currencyCode}createInput(e,t){const r=e.receiver,n=Ye.processNotes(e.notes);return{channel:Ke.forBank(r,t),msisdn:`${r.bank.swiftCode}:${r.accNo}`,description:n??te.generateDefaultPayoutNarration(r),payeeName:r.accName,notes:n,amount:e.amount.numericValue}}}class et{handlers=[new Qe,new Xe];getPayoutInput(e,t){const r=this.handlers.find(r=>r.canHandle(e.channel,e.receiver,t));if(!r)throw new Error(Ze.ERROR_MESSAGES.NO_HANDLER_FOUND);return r.createInput({receiver:e.receiver,amount:e.amount,notes:e.notes},t)}}const tt={bank:Ke.forBank,mobile:Ke.forMobile},rt=fe().router({getPayouts:{method:"GET",path:"",query:e.object({rangeStart:e.number(),rangeEnd:e.number(),eager:e.string(),approvalStatus:W.PayoutApprovalStatus.nullable().optional(),orderByDesc:e.string(),msisdn:e.string().optional()}),responses:{200:e.object({results:e.array(W.PayoutDTO),total:e.number()})}},getPayoutsByApprovalStatus:{method:"GET",path:"",query:e.object({rangeStart:e.number(),rangeEnd:e.number(),eager:e.string(),approvalStatus:W.PayoutApprovalStatus,orderByDesc:e.string()}),responses:{200:e.object({results:e.array(W.PayoutDTO),total:e.number()})}},postPayout:{method:"POST",path:"",body:W.PayoutInputDTO,responses:{201:W.PayoutDTO,400:v.schema}},approve:{method:"POST",path:"/:id/approve",body:e.object({action:e.enum(["Approve","Reject"]),notes:e.string().optional()}),responses:{201:W.PayoutDTO,404:e.object({}),409:e.object({})}},getPayout:{method:"GET",path:"/:id/",responses:{200:W.PayoutDTO,404:e.object({})}}});class nt extends Pe{constructor(e){super("payout",rt,e)}async getAll(e){const t=e?.rangeStart??0,r=e?.rangeEnd??10,n=k.PENDING,o={rangeStart:t,rangeEnd:r,eager:"[createdBy,actionedBy]",orderByDesc:"createdAt"};if(e?.pending&&Object.assign(o,{approvalStatus:n}),e?.msisdn&&Object.assign(o,{msisdn:e.msisdn}),r<=t)throw new v({message:"Invalid range: end-date must be greater than start-date",statusCode:400});const a=await this.client.getPayouts({query:o});if(200===a.status)return{results:F.createMany(a.body.results),total:a.body.total};throw v.unknown("An error occurred while fetching payouts")}async pay(e){const{min:t,max:r}=c.getTransactionLimits(e.amount.currencyCode);if(e.amount.lessThan(t)||e.amount.greaterThan(r))throw new v({statusCode:400,message:`Please make sure the amount is between ${t.label} - ${r.label}`});const n=Re.instance.getSelectedWallet();if(!n)throw new Error("You have not selected a wallet to process this payout");const o=(new et).getPayoutInput(e,n),a=await this.client.postPayout({body:o});if(201===a.status)return F.create(a.body);if(400===a.status)throw new v(a.body);throw v.unknown()}async approve(e,t){const r=await this.client.approve({params:{id:e},body:{action:"Approve",notes:t?.notes}});if(201===r.status)return F.create(r.body);if(404===r.status)throw new v({message:"Payout not found",statusCode:404});if(409===r.status)throw new v({message:"Payout already approved",statusCode:409});throw v.unknown()}async reject(e,t){const r=await this.client.approve({params:{id:e},body:{action:"Reject",notes:t?.notes}});if(201===r.status)return F.create(r.body);if(404===r.status)throw new v({message:"Payout not found",statusCode:404});if(409===r.status)throw new v({message:"Payout already rejected",statusCode:409});throw v.unknown()}async getByID(e){const t=await this.client.getPayout({params:{id:e}});if(200===t.status)return F.create(t.body);if(404===t.status)throw new v({message:"Payout not found",statusCode:404});throw v.unknown()}}const ot=e.string().min(8,"Password must be at least 8 characters long").max(128,"Password must not exceed 128 characters").regex(/[A-Z]/,"Password must contain at least one uppercase letter").regex(/[a-z]/,"Password must contain at least one lowercase letter").regex(/[0-9]/,"Password must contain at least one number").regex(/[!@#$%^&*()_+\-=\[\]{}|;:,.<>?]/,"Password must contain at least one special character (!@#$%^&*()_+-=[]{}|;:,.<>?)").refine(e=>![/(.)\1{2,}/,/123456|654321|abcdef|qwerty|password|admin|user/i,/^[0-9]+$/,/^[a-zA-Z]+$/].some(t=>t.test(e)),"Password contains weak patterns. Avoid repeated characters, common words, or simple sequences").refine(e=>!/(?:abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|012|123|234|345|456|567|678|789)/i.test(e),"Password should not contain sequential characters").refine(e=>!/(?:qwer|wert|erty|rtyu|tyui|yuio|uiop|asdf|sdfg|dfgh|fghj|ghjk|hjkl|zxcv|xcvb|cvbn|vbnm)/i.test(e),"Password should not contain keyboard patterns"),at=e.object({id:e.string().min(1),name:e.string().min(1,"Role name is required"),description:e.string().optional(),access:e.array(e.string()),createdAt:e.string().datetime("Invalid creation timestamp"),updatedAt:e.string().datetime("Invalid update timestamp")}),st=e.object({id:e.string().min(1),name:e.string().min(1,"User name is required"),identity:e.string().email("Invalid email address"),type:e.string().min(1,"User type is required"),profileId:e.string().min(1,"Profile ID is required"),roleId:e.string().min(1,"Role ID is required"),resetPassword:e.boolean(),isActive:e.boolean(),isArchived:e.boolean(),role:at.optional(),createdAt:e.string().datetime("Invalid creation timestamp"),updatedAt:e.string().datetime("Invalid update timestamp")}),it={role:at,managedUser:st,managedUserQueryParams:e.object({id:e.string().min(1).optional(),name:e.string().min(1).optional(),identity:e.string().email("Invalid email address").optional(),type:e.string().min(1).optional(),profileId:e.string().min(1).optional(),roleId:e.string().min(1).optional(),resetPassword:e.number().optional(),isActive:e.number().optional(),isArchived:e.number().optional(),createdAt:e.string().datetime("Invalid creation timestamp").optional(),updatedAt:e.string().datetime("Invalid update timestamp").optional(),eager:e.string().optional()}),createUserRequest:e.object({name:e.string().min(1,"User name is required"),identity:e.string().email("Valid email address is required"),password:ot.optional(),roleId:e.string().optional(),resetPassword:e.boolean().optional()}),updateUserRequest:e.object({name:e.string().min(1,"User name cannot be empty").optional(),roleId:e.string().min(1,"Role ID cannot be empty").optional(),password:ot.optional(),resetPassword:e.boolean().optional(),isActive:e.boolean().optional()}),resetPasswordRequest:e.object({newPassword:ot.optional(),sendNotification:e.boolean().optional()}),createUserResponse:e.object({id:e.string(),name:e.string(),identity:e.string(),type:e.string(),profileId:e.string(),roleId:e.string(),isActive:e.boolean(),isArchived:e.boolean(),createdAt:e.string().datetime()}),password:ot},ct=fe().router({getUsers:{method:"GET",path:"/login",query:it.managedUserQueryParams,responses:{200:e.array(it.managedUser),401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()})},summary:"List all user accounts",description:"Retrieve a list of all user accounts in the system"},getUser:{method:"GET",path:"/login/:id",pathParams:e.object({id:e.string()}),query:it.managedUserQueryParams,responses:{200:it.managedUser,401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Get user account details",description:"Retrieve detailed information about a specific user account"},createUser:{method:"POST",path:"/login",body:it.createUserRequest,responses:{201:it.createUserResponse,400:e.object({message:e.string().optional(),errors:e.array(e.string()).optional()}),401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),409:e.object({message:e.string().optional()})},summary:"Create new user account",description:"Create a new user account with specified role and permissions"},updateUser:{method:"PATCH",path:"/login/:id",pathParams:e.object({id:e.string()}),body:it.updateUserRequest,responses:{200:it.managedUser,400:e.object({message:e.string().optional(),errors:e.array(e.string()).optional()}),401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Update user account",description:"Update user account information, role, status, or force password reset"},archiveUser:{method:"POST",path:"/login/:id/archive",pathParams:e.object({id:e.string()}),body:e.object({}),responses:{200:it.managedUser,401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Archive user account",description:"Archive (soft delete) a user account"},unArchiveUser:{method:"POST",path:"/login/:id/unarchive",pathParams:e.object({id:e.string()}),body:e.object({}),responses:{200:it.managedUser,401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Un-archive user account",description:"Un-archive (soft delete) a user account"},resetPassword:{method:"POST",path:"/login/:id/reset-password",pathParams:e.object({id:e.string()}),body:it.resetPasswordRequest,responses:{200:e.object({success:e.boolean()}),400:e.object({message:e.string().optional()}),401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Reset user password",description:"Reset a user's password and optionally send notification"},getRoles:{method:"GET",path:"/role",responses:{200:e.array(it.role),401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()})},summary:"List all roles",description:"Retrieve a list of all available roles in the system"},getRole:{method:"GET",path:"/role/:id",pathParams:e.object({id:e.string()}),responses:{200:it.role,401:e.object({message:e.string().optional()}),403:e.object({message:e.string().optional()}),404:e.object({message:e.string().optional()})},summary:"Get role details",description:"Retrieve detailed information about a specific role"}});class dt extends Pe{constructor(e){super("admin",ct,e)}async createUser(e){const t=await this.client.createUser({body:e});return this.handleResponse(t,201)}async updateUser(e,t){const r=await this.client.updateUser({params:{id:e},body:t}),n=this.handleResponse(r,200),o=se.from(n);if(!o)throw new Error("Invalid user data received from server");return o}async archiveUser(e){const t=await this.client.archiveUser({params:{id:e}}),r=this.handleResponse(t,201),n=se.from(r);if(!n)throw new Error("Invalid user data received from server");return n}async unArchiveUser(e){const t=await this.client.unArchiveUser({params:{id:e}}),r=this.handleResponse(t,201),n=se.from(r);if(!n)throw new Error("Invalid user data received from server");return n}async resetUserPassword(e,t={}){const r=await this.client.resetPassword({params:{id:e},body:t});return this.handleResponse(r,201)}async getAllUsers(e={eager:"role"}){const t=await this.client.getUsers({query:e}),r=this.handleResponse(t,200);return se.createMany(r)}async getUser(e,t={eager:"role"}){const r=await this.client.getUser({params:{id:e},query:t}),n=this.handleResponse(r,200),o=se.from(n);if(!o)throw new Error("Invalid user data received from server");return o}async getAllRoles(){const e=await this.client.getRoles();return this.handleResponse(e,200).map(e=>{const t=oe.from(e);if(!t)throw new Error("Invalid role data received from server");return t})}async getRole(e){const t=await this.client.getRole({params:{id:e}}),r=this.handleResponse(t,200),n=oe.from(r);if(!n)throw new Error("Invalid role data received from server");return n}}export{v as APIError,Je as AccessRepository,Be as AfloatAuth,xe as AuthRepository,K as BANK_NARR_PREFIX,j as BankContactInfo,T as Contact,E as ContactDTOSchemas,He as ContactRepository,I as ContactType,Z as ECOBANK_PREFIX,Me as IdentityRepository,Q as LEGACY_BANK_NARR_PREFIX,ee as LEGACY_MOBILE_NARR_PREFIX,X as MOBILE_NARR_PREFIX,se as ManagedUser,P as MobileContactInfo,Y as NARR_V2_PREFIX,te as Narration,F as Payout,k as PayoutApprovalStatus,R as PayoutChannel,W as PayoutDTOSchemas,et as PayoutInputFactory,nt as PayoutRepository,U as PayoutStatus,C as PermissionError,N as Permissions,z as Profile,Fe as ProfileRepository,oe as Role,L as User,ae as UserEntity,it as UserManagementDTOSchemas,dt as UserManagementRepository,H as Wallet,G as WalletDTOSchemas,je as WalletRepository,Re as WalletSessionManager,ne as WalletStatementEntry,ue as WalletUtils,tt as createPayoutChannelCode,O as isError,Te as walletsStore};
|
|
2
|
+
//# sourceMappingURL=index.esm.js.map
|