@berachain/berajs 0.2.8-beta.7 → 0.2.8-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/abi/exports.cjs +4452 -1
  2. package/dist/abi/exports.cjs.map +1 -1
  3. package/dist/abi/exports.mjs +4452 -1
  4. package/dist/abi/exports.mjs.map +1 -1
  5. package/dist/actions/exports.cjs +913 -1
  6. package/dist/actions/exports.cjs.map +1 -1
  7. package/dist/actions/exports.mjs +913 -1
  8. package/dist/actions/exports.mjs.map +1 -1
  9. package/dist/chunk-2R73G2PO.mjs +4698 -0
  10. package/dist/{chunk-MASD43N5.mjs.map → chunk-2R73G2PO.mjs.map} +1 -1
  11. package/dist/chunk-3M47ZRXT.mjs +417 -0
  12. package/dist/{chunk-ESAVA5OD.mjs.map → chunk-3M47ZRXT.mjs.map} +1 -1
  13. package/dist/chunk-4GFN4LEP.mjs +97 -0
  14. package/dist/{chunk-5W7UKRHX.mjs.map → chunk-4GFN4LEP.mjs.map} +1 -1
  15. package/dist/chunk-5N7QQS55.cjs +130 -0
  16. package/dist/chunk-5N7QQS55.cjs.map +1 -0
  17. package/dist/chunk-5NMATIH4.mjs +130 -0
  18. package/dist/{chunk-SSPFPAWX.mjs.map → chunk-5NMATIH4.mjs.map} +1 -1
  19. package/dist/chunk-7QKRRIHI.mjs +1844 -0
  20. package/dist/{chunk-RSDCKN4Q.mjs.map → chunk-7QKRRIHI.mjs.map} +1 -1
  21. package/dist/chunk-7TFV6UKF.mjs +24 -0
  22. package/dist/{chunk-MK5NS5B5.mjs.map → chunk-7TFV6UKF.mjs.map} +1 -1
  23. package/dist/chunk-A4FPM7U3.cjs +63 -0
  24. package/dist/chunk-A4FPM7U3.cjs.map +1 -0
  25. package/dist/chunk-BDHINMWQ.cjs +417 -0
  26. package/dist/chunk-BDHINMWQ.cjs.map +1 -0
  27. package/dist/chunk-BEHP54S3.cjs +24 -0
  28. package/dist/chunk-BEHP54S3.cjs.map +1 -0
  29. package/dist/chunk-EGDXV2PT.cjs +36 -0
  30. package/dist/chunk-EGDXV2PT.cjs.map +1 -0
  31. package/dist/chunk-EWBKSMPG.cjs +13 -0
  32. package/dist/chunk-EWBKSMPG.cjs.map +1 -0
  33. package/dist/chunk-F6ZW7ZDD.cjs +403 -0
  34. package/dist/chunk-F6ZW7ZDD.cjs.map +1 -0
  35. package/dist/chunk-FTXTRUYT.cjs +170 -0
  36. package/dist/chunk-FTXTRUYT.cjs.map +1 -0
  37. package/dist/chunk-GLWPRM33.mjs +13 -0
  38. package/dist/{chunk-575OK77P.mjs.map → chunk-GLWPRM33.mjs.map} +1 -1
  39. package/dist/chunk-GWSTVITN.mjs +572 -0
  40. package/dist/{chunk-NLVWRMGD.mjs.map → chunk-GWSTVITN.mjs.map} +1 -1
  41. package/dist/chunk-H3Z37RYU.cjs +15 -0
  42. package/dist/chunk-H3Z37RYU.cjs.map +1 -0
  43. package/dist/chunk-I3FTWD6I.mjs +170 -0
  44. package/dist/{chunk-JDZGYU5T.mjs.map → chunk-I3FTWD6I.mjs.map} +1 -1
  45. package/dist/chunk-JA4DHMTG.mjs +15 -0
  46. package/dist/{chunk-OGBD5YOG.mjs.map → chunk-JA4DHMTG.mjs.map} +1 -1
  47. package/dist/chunk-KL6YZ5VR.mjs +63 -0
  48. package/dist/{chunk-OGJMSGB2.mjs.map → chunk-KL6YZ5VR.mjs.map} +1 -1
  49. package/dist/chunk-MXWPP6MS.cjs +572 -0
  50. package/dist/chunk-MXWPP6MS.cjs.map +1 -0
  51. package/dist/chunk-SGZP4O6R.mjs +135 -0
  52. package/dist/{chunk-6K252BGM.mjs.map → chunk-SGZP4O6R.mjs.map} +1 -1
  53. package/dist/chunk-TDW5SPXR.cjs +244 -0
  54. package/dist/chunk-TDW5SPXR.cjs.map +1 -0
  55. package/dist/chunk-TGK3IXDN.cjs +169 -0
  56. package/dist/chunk-TGK3IXDN.cjs.map +1 -0
  57. package/dist/chunk-TJEW6YCJ.cjs +97 -0
  58. package/dist/chunk-TJEW6YCJ.cjs.map +1 -0
  59. package/dist/chunk-VA3BQ34H.mjs +403 -0
  60. package/dist/{chunk-UENDEN3M.mjs.map → chunk-VA3BQ34H.mjs.map} +1 -1
  61. package/dist/chunk-VA5L5FDG.mjs +36 -0
  62. package/dist/{chunk-3MZ7MLKF.mjs.map → chunk-VA5L5FDG.mjs.map} +1 -1
  63. package/dist/chunk-XSGCRLSD.cjs +1844 -0
  64. package/dist/chunk-XSGCRLSD.cjs.map +1 -0
  65. package/dist/chunk-XV3GG3HC.cjs +135 -0
  66. package/dist/chunk-XV3GG3HC.cjs.map +1 -0
  67. package/dist/chunk-Y5B224UX.cjs +4698 -0
  68. package/dist/chunk-Y5B224UX.cjs.map +1 -0
  69. package/dist/chunk-ZBTRKBSI.mjs +169 -0
  70. package/dist/{chunk-CWKDFUFR.mjs.map → chunk-ZBTRKBSI.mjs.map} +1 -1
  71. package/dist/chunk-ZCEFC2TK.mjs +244 -0
  72. package/dist/{chunk-NAXAZJJY.mjs.map → chunk-ZCEFC2TK.mjs.map} +1 -1
  73. package/dist/contexts/exports.cjs +82 -1
  74. package/dist/contexts/exports.cjs.map +1 -1
  75. package/dist/contexts/exports.mjs +82 -1
  76. package/dist/contexts/exports.mjs.map +1 -1
  77. package/dist/enum/exports.cjs +58 -1
  78. package/dist/enum/exports.cjs.map +1 -1
  79. package/dist/enum/exports.mjs +58 -1
  80. package/dist/enum/exports.mjs.map +1 -1
  81. package/dist/errors/exports.cjs +38 -1
  82. package/dist/errors/exports.cjs.map +1 -1
  83. package/dist/errors/exports.mjs +38 -1
  84. package/dist/hooks/exports.cjs +8332 -3
  85. package/dist/hooks/exports.cjs.map +1 -1
  86. package/dist/hooks/exports.mjs +8332 -3
  87. package/dist/hooks/exports.mjs.map +1 -1
  88. package/dist/utils/exports.cjs +786 -1
  89. package/dist/utils/exports.cjs.map +1 -1
  90. package/dist/utils/exports.mjs +786 -1
  91. package/dist/utils/exports.mjs.map +1 -1
  92. package/package.json +1 -1
  93. package/dist/chunk-3MZ7MLKF.mjs +0 -2
  94. package/dist/chunk-53TSJM6P.cjs +0 -2
  95. package/dist/chunk-53TSJM6P.cjs.map +0 -1
  96. package/dist/chunk-575OK77P.mjs +0 -2
  97. package/dist/chunk-5W7UKRHX.mjs +0 -2
  98. package/dist/chunk-6K252BGM.mjs +0 -2
  99. package/dist/chunk-CWKDFUFR.mjs +0 -2
  100. package/dist/chunk-D6L7LTA2.cjs +0 -2
  101. package/dist/chunk-D6L7LTA2.cjs.map +0 -1
  102. package/dist/chunk-DDEQFR3M.cjs +0 -2
  103. package/dist/chunk-DDEQFR3M.cjs.map +0 -1
  104. package/dist/chunk-DKY4QPWU.cjs +0 -2
  105. package/dist/chunk-DKY4QPWU.cjs.map +0 -1
  106. package/dist/chunk-DTBJO6VT.cjs +0 -2
  107. package/dist/chunk-DTBJO6VT.cjs.map +0 -1
  108. package/dist/chunk-ESAVA5OD.mjs +0 -2
  109. package/dist/chunk-JDZGYU5T.mjs +0 -2
  110. package/dist/chunk-JLFBRMOF.cjs +0 -2
  111. package/dist/chunk-JLFBRMOF.cjs.map +0 -1
  112. package/dist/chunk-KT6L4K4K.cjs +0 -2
  113. package/dist/chunk-KT6L4K4K.cjs.map +0 -1
  114. package/dist/chunk-MASD43N5.mjs +0 -4
  115. package/dist/chunk-MGGPHKA2.cjs +0 -4
  116. package/dist/chunk-MGGPHKA2.cjs.map +0 -1
  117. package/dist/chunk-MK5NS5B5.mjs +0 -2
  118. package/dist/chunk-NAXAZJJY.mjs +0 -2
  119. package/dist/chunk-NLVWRMGD.mjs +0 -2
  120. package/dist/chunk-OGBD5YOG.mjs +0 -2
  121. package/dist/chunk-OGJMSGB2.mjs +0 -2
  122. package/dist/chunk-OIYXOKTT.cjs +0 -2
  123. package/dist/chunk-OIYXOKTT.cjs.map +0 -1
  124. package/dist/chunk-OUD27MU7.cjs +0 -2
  125. package/dist/chunk-OUD27MU7.cjs.map +0 -1
  126. package/dist/chunk-QFLDL4UV.cjs +0 -2
  127. package/dist/chunk-QFLDL4UV.cjs.map +0 -1
  128. package/dist/chunk-RSDCKN4Q.mjs +0 -2
  129. package/dist/chunk-RWOICHRW.cjs +0 -2
  130. package/dist/chunk-RWOICHRW.cjs.map +0 -1
  131. package/dist/chunk-SSPFPAWX.mjs +0 -2
  132. package/dist/chunk-UENDEN3M.mjs +0 -2
  133. package/dist/chunk-UFIM7WQ4.cjs +0 -2
  134. package/dist/chunk-UFIM7WQ4.cjs.map +0 -1
  135. package/dist/chunk-WRFDB3QJ.cjs +0 -2
  136. package/dist/chunk-WRFDB3QJ.cjs.map +0 -1
  137. package/dist/chunk-XNJLSA6P.cjs +0 -2
  138. package/dist/chunk-XNJLSA6P.cjs.map +0 -1
  139. package/dist/chunk-ZYXVUXFQ.cjs +0 -2
  140. package/dist/chunk-ZYXVUXFQ.cjs.map +0 -1
@@ -0,0 +1,135 @@
1
+ import {
2
+ multicall3Abi
3
+ } from "./chunk-ZCEFC2TK.mjs";
4
+ import {
5
+ assertAddress,
6
+ assertDefined,
7
+ assertPublicClient
8
+ } from "./chunk-ZBTRKBSI.mjs";
9
+ import {
10
+ isToken,
11
+ parseBaseArgs
12
+ } from "./chunk-4GFN4LEP.mjs";
13
+
14
+ // src/actions/clients/getEnsoClient.ts
15
+ import { EnsoClient } from "@ensofinance/sdk";
16
+ import { appConfig } from "@berachain/config/internal";
17
+ var isProduction = process.env.NODE_ENV !== "development" && process.env.NODE_ENV !== "test";
18
+ function getEnsoClient({
19
+ useProxy = isProduction,
20
+ ...args
21
+ } = {}) {
22
+ const { config } = parseBaseArgs(args);
23
+ return new EnsoClient({
24
+ baseURL: useProxy ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/` : void 0,
25
+ apiKey: useProxy ? (
26
+ // no API key since proxy has CORS for .berachain.com domains
27
+ ""
28
+ ) : appConfig.apiKeys.public.enso
29
+ });
30
+ }
31
+
32
+ // src/actions/tokens/getWalletBalances.ts
33
+ import { getChainId, getPublicClient } from "@wagmi/core";
34
+ import {
35
+ erc20Abi,
36
+ formatUnits,
37
+ isAddress
38
+ } from "viem";
39
+ function getBalanceCall({
40
+ token,
41
+ account,
42
+ multicallAddress
43
+ }) {
44
+ if (isToken(token, "BERA") || isToken(token, "ETH")) {
45
+ return {
46
+ address: multicallAddress,
47
+ abi: multicall3Abi,
48
+ functionName: "getEthBalance",
49
+ args: [account]
50
+ };
51
+ }
52
+ return {
53
+ address: token.address,
54
+ abi: erc20Abi,
55
+ functionName: "balanceOf",
56
+ args: [account]
57
+ };
58
+ }
59
+ async function getWalletBalances({
60
+ account,
61
+ tokenList,
62
+ wagmiConfig: config
63
+ }) {
64
+ assertDefined(config, "config");
65
+ if (!account || !tokenList)
66
+ throw new Error("account or tokenList is not defined");
67
+ assertAddress(account, "account");
68
+ const filteredTokenList = tokenList.filter(
69
+ (token) => isAddress(token.address)
70
+ );
71
+ const tokensByChainId = Object.groupBy(
72
+ filteredTokenList,
73
+ (token) => token.chainId ?? getChainId(config)
74
+ );
75
+ const res = await Promise.allSettled(
76
+ Object.entries(tokensByChainId).map(async ([chainId, tokens]) => {
77
+ assertDefined(tokens, "tokens");
78
+ const publicClient = getPublicClient(config, {
79
+ chainId: Number(chainId)
80
+ });
81
+ assertPublicClient(publicClient, `publicClient ${chainId}`);
82
+ assertDefined(publicClient.chain, "publicClient.chain");
83
+ assertDefined(
84
+ publicClient.chain.contracts,
85
+ "publicClient.chain.contracts"
86
+ );
87
+ assertDefined(
88
+ publicClient.chain.contracts.multicall3,
89
+ "publicClient.chain.contracts.multicall3"
90
+ );
91
+ const { multicall3 } = publicClient.chain.contracts;
92
+ const multicall3Address = typeof multicall3 === "string" ? multicall3 : multicall3.address;
93
+ assertAddress(multicall3Address, "multicall3Address");
94
+ const call = tokens.map(
95
+ (token) => getBalanceCall({
96
+ token,
97
+ account,
98
+ multicallAddress: multicall3Address
99
+ })
100
+ );
101
+ const result = await publicClient.multicall({
102
+ contracts: call
103
+ });
104
+ return result.map((item, index) => {
105
+ const token = tokens[index];
106
+ if (item.error) {
107
+ return { ...token, balance: { raw: "0", formatted: "0" } };
108
+ }
109
+ const formattedBalance = formatUnits(
110
+ item.result,
111
+ token?.decimals || 18
112
+ );
113
+ const resultBalanceToken = {
114
+ ...token,
115
+ balance: {
116
+ raw: item.result.toString(),
117
+ // TODO: this was done 10 months ago, i'm not sure it's a good solution.
118
+ formatted: formattedBalance.includes("e") ? "0" : formattedBalance
119
+ }
120
+ };
121
+ return resultBalanceToken;
122
+ });
123
+ })
124
+ );
125
+ return res.flatMap(
126
+ (result) => result.status === "fulfilled" ? result.value : []
127
+ );
128
+ }
129
+
130
+ export {
131
+ getEnsoClient,
132
+ getBalanceCall,
133
+ getWalletBalances
134
+ };
135
+ //# sourceMappingURL=chunk-SGZP4O6R.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/actions/clients/getEnsoClient.ts","../src/actions/tokens/getWalletBalances.ts"],"sourcesContent":["import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n","import { type Config, getChainId, getPublicClient } from \"@wagmi/core\";\nimport {\n type Address,\n type ContractFunctionParameters,\n erc20Abi,\n formatUnits,\n isAddress,\n} from \"viem\";\n\nimport { multicall3Abi } from \"../../abi/utils/multicall3\";\nimport {\n assertAddress,\n assertDefined,\n assertPublicClient,\n} from \"../../errors/assert\";\nimport type { BalanceToken, Token } from \"../../types/dex\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport interface GetWalletBalances {\n account: string | undefined;\n tokenList: Token[] | undefined;\n wagmiConfig: Config | undefined;\n}\n\n/**\n * Returns the payload for the balanceOf call for a given token and account.\n *\n * @internal\n * @returns\n */\nexport function getBalanceCall({\n token,\n account,\n multicallAddress,\n}: {\n token: Token;\n account: Address;\n multicallAddress: Address;\n}) {\n if (isToken(token, \"BERA\") || isToken(token, \"ETH\")) {\n return {\n address: multicallAddress,\n abi: multicall3Abi,\n functionName: \"getEthBalance\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof multicall3Abi,\n \"view\",\n \"getEthBalance\"\n >;\n }\n return {\n address: token.address as Address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof erc20Abi,\n \"view\",\n \"balanceOf\"\n >;\n}\n\n/**\n * fetch the balances of a given wallet address\n */\nexport async function getWalletBalances({\n account,\n tokenList,\n wagmiConfig: config,\n}: GetWalletBalances): Promise<BalanceToken[] | undefined> {\n assertDefined(config, \"config\");\n if (!account || !tokenList)\n throw new Error(\"account or tokenList is not defined\");\n\n assertAddress(account, \"account\");\n\n const filteredTokenList = tokenList.filter((token) =>\n isAddress(token.address),\n );\n\n const tokensByChainId = Object.groupBy(\n filteredTokenList,\n (token) => token.chainId ?? getChainId(config),\n );\n\n const res = await Promise.allSettled(\n Object.entries(tokensByChainId).map(async ([chainId, tokens]) => {\n assertDefined(tokens, \"tokens\");\n const publicClient = getPublicClient(config, {\n chainId: Number(chainId),\n });\n assertPublicClient(publicClient, `publicClient ${chainId}`);\n assertDefined(publicClient.chain, \"publicClient.chain\");\n assertDefined(\n publicClient.chain.contracts,\n \"publicClient.chain.contracts\",\n );\n assertDefined(\n publicClient.chain.contracts.multicall3,\n \"publicClient.chain.contracts.multicall3\",\n );\n\n const { multicall3 } = publicClient.chain.contracts;\n\n const multicall3Address =\n typeof multicall3 === \"string\" ? multicall3 : multicall3.address;\n\n assertAddress(multicall3Address, \"multicall3Address\");\n\n const call = tokens.map((token: Token) =>\n getBalanceCall({\n token,\n account,\n multicallAddress: multicall3Address,\n }),\n );\n\n const result = await publicClient.multicall({\n contracts: call,\n });\n\n return result.map((item, index) => {\n const token = tokens[index];\n if (item.error) {\n return { ...token, balance: { raw: \"0\", formatted: \"0\" } };\n }\n const formattedBalance = formatUnits(\n item.result,\n token?.decimals || 18,\n );\n\n const resultBalanceToken: BalanceToken = {\n ...token,\n balance: {\n raw: item.result.toString(),\n // TODO: this was done 10 months ago, i'm not sure it's a good solution.\n formatted: formattedBalance.includes(\"e\") ? \"0\" : formattedBalance,\n },\n } satisfies BalanceToken;\n return resultBalanceToken;\n });\n }),\n );\n\n return res.flatMap((result) =>\n result.status === \"fulfilled\" ? result.value : [],\n );\n}\n"],"mappings":"gJAAA,OAAS,cAAAA,MAAkB,mBAE3B,OAAS,aAAAC,MAAiB,6BAI1B,IAAMC,EACJ,QAAQ,IAAI,WAAa,eAAiB,QAAQ,IAAI,WAAa,OAE9D,SAASC,EAAc,CAC5B,SAAAC,EAAWF,EACX,GAAGG,CACL,EAAsD,CAAC,EAAG,CACxD,GAAM,CAAE,OAAAC,CAAO,EAAIC,EAAcF,CAAI,EACrC,OAAO,IAAIG,EAAW,CACpB,QAASJ,EACL,GAAGE,EAAO,IAAI,mBAAmB,gBACjC,OACJ,OAAQF,EAEJ,GACAK,EAAU,QAAQ,OAAO,IAC/B,CAAC,CACH,CCvBA,OAAsB,cAAAC,EAAY,mBAAAC,MAAuB,cACzD,OAGE,YAAAC,EACA,eAAAC,EACA,aAAAC,MACK,OAuBA,SAASC,EAAe,CAC7B,MAAAC,EACA,QAAAC,EACA,iBAAAC,CACF,EAIG,CACD,OAAIC,EAAQH,EAAO,MAAM,GAAKG,EAAQH,EAAO,KAAK,EACzC,CACL,QAASE,EACT,IAAKE,EACL,aAAc,gBACd,KAAM,CAACH,CAAO,CAChB,EAMK,CACL,QAASD,EAAM,QACf,IAAKK,EACL,aAAc,YACd,KAAM,CAACJ,CAAO,CAChB,CAKF,CAKA,eAAsBK,EAAkB,CACtC,QAAAL,EACA,UAAAM,EACA,YAAaC,CACf,EAA2D,CAEzD,GADAC,EAAcD,EAAQ,QAAQ,EAC1B,CAACP,GAAW,CAACM,EACf,MAAM,IAAI,MAAM,qCAAqC,EAEvDG,EAAcT,EAAS,SAAS,EAEhC,IAAMU,EAAoBJ,EAAU,OAAQP,GAC1CY,EAAUZ,EAAM,OAAO,CACzB,EAEMa,EAAkB,OAAO,QAC7BF,EACCX,GAAUA,EAAM,SAAWc,EAAWN,CAAM,CAC/C,EA6DA,OA3DY,MAAM,QAAQ,WACxB,OAAO,QAAQK,CAAe,EAAE,IAAI,MAAO,CAACE,EAASC,CAAM,IAAM,CAC/DP,EAAcO,EAAQ,QAAQ,EAC9B,IAAMC,EAAeC,EAAgBV,EAAQ,CAC3C,QAAS,OAAOO,CAAO,CACzB,CAAC,EACDI,EAAmBF,EAAc,gBAAgBF,CAAO,EAAE,EAC1DN,EAAcQ,EAAa,MAAO,oBAAoB,EACtDR,EACEQ,EAAa,MAAM,UACnB,8BACF,EACAR,EACEQ,EAAa,MAAM,UAAU,WAC7B,yCACF,EAEA,GAAM,CAAE,WAAAG,CAAW,EAAIH,EAAa,MAAM,UAEpCI,EACJ,OAAOD,GAAe,SAAWA,EAAaA,EAAW,QAE3DV,EAAcW,EAAmB,mBAAmB,EAEpD,IAAMC,EAAON,EAAO,IAAKhB,GACvBD,EAAe,CACb,MAAAC,EACA,QAAAC,EACA,iBAAkBoB,CACpB,CAAC,CACH,EAMA,OAJe,MAAMJ,EAAa,UAAU,CAC1C,UAAWK,CACb,CAAC,GAEa,IAAI,CAACC,EAAMC,IAAU,CACjC,IAAMxB,EAAQgB,EAAOQ,CAAK,EAC1B,GAAID,EAAK,MACP,MAAO,CAAE,GAAGvB,EAAO,QAAS,CAAE,IAAK,IAAK,UAAW,GAAI,CAAE,EAE3D,IAAMyB,EAAmBC,EACvBH,EAAK,OACLvB,GAAO,UAAY,EACrB,EAUA,MARyC,CACvC,GAAGA,EACH,QAAS,CACP,IAAKuB,EAAK,OAAO,SAAS,EAE1B,UAAWE,EAAiB,SAAS,GAAG,EAAI,IAAMA,CACpD,CACF,CAEF,CAAC,CACH,CAAC,CACH,GAEW,QAASE,GAClBA,EAAO,SAAW,YAAcA,EAAO,MAAQ,CAAC,CAClD,CACF","names":["EnsoClient","appConfig","isProduction","getEnsoClient","useProxy","args","config","parseBaseArgs","EnsoClient","appConfig","getChainId","getPublicClient","erc20Abi","formatUnits","isAddress","getBalanceCall","token","account","multicallAddress","isToken","multicall3Abi","erc20Abi","getWalletBalances","tokenList","config","assertDefined","assertAddress","filteredTokenList","isAddress","tokensByChainId","getChainId","chainId","tokens","publicClient","getPublicClient","assertPublicClient","multicall3","multicall3Address","call","item","index","formattedBalance","formatUnits","result"]}
1
+ {"version":3,"sources":["../src/actions/clients/getEnsoClient.ts","../src/actions/tokens/getWalletBalances.ts"],"sourcesContent":["import { EnsoClient } from \"@ensofinance/sdk\";\n\nimport { appConfig } from \"@berachain/config/internal\";\n\nimport { parseBaseArgs } from \"../../utils/parseBaseArgs\";\n\nconst isProduction =\n process.env.NODE_ENV !== \"development\" && process.env.NODE_ENV !== \"test\";\n\nexport function getEnsoClient({\n useProxy = isProduction,\n ...args\n}: BeraJS.BaseFunctionArgs & { useProxy?: boolean } = {}) {\n const { config } = parseBaseArgs(args);\n return new EnsoClient({\n baseURL: useProxy\n ? `${config.bex.aggregatorsProxyUrl}/enso/api/v1/`\n : undefined,\n apiKey: useProxy\n ? // no API key since proxy has CORS for .berachain.com domains\n \"\"\n : appConfig.apiKeys.public.enso,\n });\n}\n","import { type Config, getChainId, getPublicClient } from \"@wagmi/core\";\nimport {\n type Address,\n type ContractFunctionParameters,\n erc20Abi,\n formatUnits,\n isAddress,\n} from \"viem\";\n\nimport { multicall3Abi } from \"../../abi/utils/multicall3\";\nimport {\n assertAddress,\n assertDefined,\n assertPublicClient,\n} from \"../../errors/assert\";\nimport type { BalanceToken, Token } from \"../../types/dex\";\nimport { isToken } from \"../../utils/tokens\";\n\nexport interface GetWalletBalances {\n account: string | undefined;\n tokenList: Token[] | undefined;\n wagmiConfig: Config | undefined;\n}\n\n/**\n * Returns the payload for the balanceOf call for a given token and account.\n *\n * @internal\n * @returns\n */\nexport function getBalanceCall({\n token,\n account,\n multicallAddress,\n}: {\n token: Token;\n account: Address;\n multicallAddress: Address;\n}) {\n if (isToken(token, \"BERA\") || isToken(token, \"ETH\")) {\n return {\n address: multicallAddress,\n abi: multicall3Abi,\n functionName: \"getEthBalance\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof multicall3Abi,\n \"view\",\n \"getEthBalance\"\n >;\n }\n return {\n address: token.address as Address,\n abi: erc20Abi,\n functionName: \"balanceOf\",\n args: [account],\n } as const satisfies ContractFunctionParameters<\n typeof erc20Abi,\n \"view\",\n \"balanceOf\"\n >;\n}\n\n/**\n * fetch the balances of a given wallet address\n */\nexport async function getWalletBalances({\n account,\n tokenList,\n wagmiConfig: config,\n}: GetWalletBalances): Promise<BalanceToken[] | undefined> {\n assertDefined(config, \"config\");\n if (!account || !tokenList)\n throw new Error(\"account or tokenList is not defined\");\n\n assertAddress(account, \"account\");\n\n const filteredTokenList = tokenList.filter((token) =>\n isAddress(token.address),\n );\n\n const tokensByChainId = Object.groupBy(\n filteredTokenList,\n (token) => token.chainId ?? getChainId(config),\n );\n\n const res = await Promise.allSettled(\n Object.entries(tokensByChainId).map(async ([chainId, tokens]) => {\n assertDefined(tokens, \"tokens\");\n const publicClient = getPublicClient(config, {\n chainId: Number(chainId),\n });\n assertPublicClient(publicClient, `publicClient ${chainId}`);\n assertDefined(publicClient.chain, \"publicClient.chain\");\n assertDefined(\n publicClient.chain.contracts,\n \"publicClient.chain.contracts\",\n );\n assertDefined(\n publicClient.chain.contracts.multicall3,\n \"publicClient.chain.contracts.multicall3\",\n );\n\n const { multicall3 } = publicClient.chain.contracts;\n\n const multicall3Address =\n typeof multicall3 === \"string\" ? multicall3 : multicall3.address;\n\n assertAddress(multicall3Address, \"multicall3Address\");\n\n const call = tokens.map((token: Token) =>\n getBalanceCall({\n token,\n account,\n multicallAddress: multicall3Address,\n }),\n );\n\n const result = await publicClient.multicall({\n contracts: call,\n });\n\n return result.map((item, index) => {\n const token = tokens[index];\n if (item.error) {\n return { ...token, balance: { raw: \"0\", formatted: \"0\" } };\n }\n const formattedBalance = formatUnits(\n item.result,\n token?.decimals || 18,\n );\n\n const resultBalanceToken: BalanceToken = {\n ...token,\n balance: {\n raw: item.result.toString(),\n // TODO: this was done 10 months ago, i'm not sure it's a good solution.\n formatted: formattedBalance.includes(\"e\") ? \"0\" : formattedBalance,\n },\n } satisfies BalanceToken;\n return resultBalanceToken;\n });\n }),\n );\n\n return res.flatMap((result) =>\n result.status === \"fulfilled\" ? result.value : [],\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,244 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/abi/utils/multicall3.ts
2
+ var multicall3Abi = [
3
+ {
4
+ inputs: [
5
+ {
6
+ components: [
7
+ { internalType: "address", name: "target", type: "address" },
8
+ { internalType: "bytes", name: "callData", type: "bytes" }
9
+ ],
10
+ internalType: "struct Multicall3.Call[]",
11
+ name: "calls",
12
+ type: "tuple[]"
13
+ }
14
+ ],
15
+ name: "aggregate",
16
+ outputs: [
17
+ { internalType: "uint256", name: "blockNumber", type: "uint256" },
18
+ { internalType: "bytes[]", name: "returnData", type: "bytes[]" }
19
+ ],
20
+ stateMutability: "payable",
21
+ type: "function"
22
+ },
23
+ {
24
+ inputs: [
25
+ {
26
+ components: [
27
+ { internalType: "address", name: "target", type: "address" },
28
+ { internalType: "bool", name: "allowFailure", type: "bool" },
29
+ { internalType: "bytes", name: "callData", type: "bytes" }
30
+ ],
31
+ internalType: "struct Multicall3.Call3[]",
32
+ name: "calls",
33
+ type: "tuple[]"
34
+ }
35
+ ],
36
+ name: "aggregate3",
37
+ outputs: [
38
+ {
39
+ components: [
40
+ { internalType: "bool", name: "success", type: "bool" },
41
+ { internalType: "bytes", name: "returnData", type: "bytes" }
42
+ ],
43
+ internalType: "struct Multicall3.Result[]",
44
+ name: "returnData",
45
+ type: "tuple[]"
46
+ }
47
+ ],
48
+ stateMutability: "payable",
49
+ type: "function"
50
+ },
51
+ {
52
+ inputs: [
53
+ {
54
+ components: [
55
+ { internalType: "address", name: "target", type: "address" },
56
+ { internalType: "bool", name: "allowFailure", type: "bool" },
57
+ { internalType: "uint256", name: "value", type: "uint256" },
58
+ { internalType: "bytes", name: "callData", type: "bytes" }
59
+ ],
60
+ internalType: "struct Multicall3.Call3Value[]",
61
+ name: "calls",
62
+ type: "tuple[]"
63
+ }
64
+ ],
65
+ name: "aggregate3Value",
66
+ outputs: [
67
+ {
68
+ components: [
69
+ { internalType: "bool", name: "success", type: "bool" },
70
+ { internalType: "bytes", name: "returnData", type: "bytes" }
71
+ ],
72
+ internalType: "struct Multicall3.Result[]",
73
+ name: "returnData",
74
+ type: "tuple[]"
75
+ }
76
+ ],
77
+ stateMutability: "payable",
78
+ type: "function"
79
+ },
80
+ {
81
+ inputs: [
82
+ {
83
+ components: [
84
+ { internalType: "address", name: "target", type: "address" },
85
+ { internalType: "bytes", name: "callData", type: "bytes" }
86
+ ],
87
+ internalType: "struct Multicall3.Call[]",
88
+ name: "calls",
89
+ type: "tuple[]"
90
+ }
91
+ ],
92
+ name: "blockAndAggregate",
93
+ outputs: [
94
+ { internalType: "uint256", name: "blockNumber", type: "uint256" },
95
+ { internalType: "bytes32", name: "blockHash", type: "bytes32" },
96
+ {
97
+ components: [
98
+ { internalType: "bool", name: "success", type: "bool" },
99
+ { internalType: "bytes", name: "returnData", type: "bytes" }
100
+ ],
101
+ internalType: "struct Multicall3.Result[]",
102
+ name: "returnData",
103
+ type: "tuple[]"
104
+ }
105
+ ],
106
+ stateMutability: "payable",
107
+ type: "function"
108
+ },
109
+ {
110
+ inputs: [],
111
+ name: "getBasefee",
112
+ outputs: [{ internalType: "uint256", name: "basefee", type: "uint256" }],
113
+ stateMutability: "view",
114
+ type: "function"
115
+ },
116
+ {
117
+ inputs: [{ internalType: "uint256", name: "blockNumber", type: "uint256" }],
118
+ name: "getBlockHash",
119
+ outputs: [{ internalType: "bytes32", name: "blockHash", type: "bytes32" }],
120
+ stateMutability: "view",
121
+ type: "function"
122
+ },
123
+ {
124
+ inputs: [],
125
+ name: "getBlockNumber",
126
+ outputs: [
127
+ { internalType: "uint256", name: "blockNumber", type: "uint256" }
128
+ ],
129
+ stateMutability: "view",
130
+ type: "function"
131
+ },
132
+ {
133
+ inputs: [],
134
+ name: "getChainId",
135
+ outputs: [{ internalType: "uint256", name: "chainid", type: "uint256" }],
136
+ stateMutability: "view",
137
+ type: "function"
138
+ },
139
+ {
140
+ inputs: [],
141
+ name: "getCurrentBlockCoinbase",
142
+ outputs: [{ internalType: "address", name: "coinbase", type: "address" }],
143
+ stateMutability: "view",
144
+ type: "function"
145
+ },
146
+ {
147
+ inputs: [],
148
+ name: "getCurrentBlockDifficulty",
149
+ outputs: [{ internalType: "uint256", name: "difficulty", type: "uint256" }],
150
+ stateMutability: "view",
151
+ type: "function"
152
+ },
153
+ {
154
+ inputs: [],
155
+ name: "getCurrentBlockGasLimit",
156
+ outputs: [{ internalType: "uint256", name: "gaslimit", type: "uint256" }],
157
+ stateMutability: "view",
158
+ type: "function"
159
+ },
160
+ {
161
+ inputs: [],
162
+ name: "getCurrentBlockTimestamp",
163
+ outputs: [{ internalType: "uint256", name: "timestamp", type: "uint256" }],
164
+ stateMutability: "view",
165
+ type: "function"
166
+ },
167
+ {
168
+ inputs: [{ internalType: "address", name: "addr", type: "address" }],
169
+ name: "getEthBalance",
170
+ outputs: [{ internalType: "uint256", name: "balance", type: "uint256" }],
171
+ stateMutability: "view",
172
+ type: "function"
173
+ },
174
+ {
175
+ inputs: [],
176
+ name: "getLastBlockHash",
177
+ outputs: [{ internalType: "bytes32", name: "blockHash", type: "bytes32" }],
178
+ stateMutability: "view",
179
+ type: "function"
180
+ },
181
+ {
182
+ inputs: [
183
+ { internalType: "bool", name: "requireSuccess", type: "bool" },
184
+ {
185
+ components: [
186
+ { internalType: "address", name: "target", type: "address" },
187
+ { internalType: "bytes", name: "callData", type: "bytes" }
188
+ ],
189
+ internalType: "struct Multicall3.Call[]",
190
+ name: "calls",
191
+ type: "tuple[]"
192
+ }
193
+ ],
194
+ name: "tryAggregate",
195
+ outputs: [
196
+ {
197
+ components: [
198
+ { internalType: "bool", name: "success", type: "bool" },
199
+ { internalType: "bytes", name: "returnData", type: "bytes" }
200
+ ],
201
+ internalType: "struct Multicall3.Result[]",
202
+ name: "returnData",
203
+ type: "tuple[]"
204
+ }
205
+ ],
206
+ stateMutability: "payable",
207
+ type: "function"
208
+ },
209
+ {
210
+ inputs: [
211
+ { internalType: "bool", name: "requireSuccess", type: "bool" },
212
+ {
213
+ components: [
214
+ { internalType: "address", name: "target", type: "address" },
215
+ { internalType: "bytes", name: "callData", type: "bytes" }
216
+ ],
217
+ internalType: "struct Multicall3.Call[]",
218
+ name: "calls",
219
+ type: "tuple[]"
220
+ }
221
+ ],
222
+ name: "tryBlockAndAggregate",
223
+ outputs: [
224
+ { internalType: "uint256", name: "blockNumber", type: "uint256" },
225
+ { internalType: "bytes32", name: "blockHash", type: "bytes32" },
226
+ {
227
+ components: [
228
+ { internalType: "bool", name: "success", type: "bool" },
229
+ { internalType: "bytes", name: "returnData", type: "bytes" }
230
+ ],
231
+ internalType: "struct Multicall3.Result[]",
232
+ name: "returnData",
233
+ type: "tuple[]"
234
+ }
235
+ ],
236
+ stateMutability: "payable",
237
+ type: "function"
238
+ }
239
+ ];
240
+
241
+
242
+
243
+ exports.multicall3Abi = multicall3Abi;
244
+ //# sourceMappingURL=chunk-TDW5SPXR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/pong/coding/monobera/packages/berajs/dist/chunk-TDW5SPXR.cjs","../src/abi/utils/multicall3.ts"],"names":[],"mappings":"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","file":"/Users/pong/coding/monobera/packages/berajs/dist/chunk-TDW5SPXR.cjs","sourcesContent":[null,"/**\n * This ABI is needed because viem exports a reduced version of this ABI.\n * For instance\n */\nexport const multicall3Abi = [\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes[]\", name: \"returnData\", type: \"bytes[]\" },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bool\", name: \"allowFailure\", type: \"bool\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call3[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate3\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bool\", name: \"allowFailure\", type: \"bool\" },\n { internalType: \"uint256\", name: \"value\", type: \"uint256\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call3Value[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"aggregate3Value\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"blockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBasefee\",\n outputs: [{ internalType: \"uint256\", name: \"basefee\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" }],\n name: \"getBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getBlockNumber\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n ],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getChainId\",\n outputs: [{ internalType: \"uint256\", name: \"chainid\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockCoinbase\",\n outputs: [{ internalType: \"address\", name: \"coinbase\", type: \"address\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockDifficulty\",\n outputs: [{ internalType: \"uint256\", name: \"difficulty\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockGasLimit\",\n outputs: [{ internalType: \"uint256\", name: \"gaslimit\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getCurrentBlockTimestamp\",\n outputs: [{ internalType: \"uint256\", name: \"timestamp\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [{ internalType: \"address\", name: \"addr\", type: \"address\" }],\n name: \"getEthBalance\",\n outputs: [{ internalType: \"uint256\", name: \"balance\", type: \"uint256\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [],\n name: \"getLastBlockHash\",\n outputs: [{ internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryAggregate\",\n outputs: [\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n {\n inputs: [\n { internalType: \"bool\", name: \"requireSuccess\", type: \"bool\" },\n {\n components: [\n { internalType: \"address\", name: \"target\", type: \"address\" },\n { internalType: \"bytes\", name: \"callData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Call[]\",\n name: \"calls\",\n type: \"tuple[]\",\n },\n ],\n name: \"tryBlockAndAggregate\",\n outputs: [\n { internalType: \"uint256\", name: \"blockNumber\", type: \"uint256\" },\n { internalType: \"bytes32\", name: \"blockHash\", type: \"bytes32\" },\n {\n components: [\n { internalType: \"bool\", name: \"success\", type: \"bool\" },\n { internalType: \"bytes\", name: \"returnData\", type: \"bytes\" },\n ],\n internalType: \"struct Multicall3.Result[]\",\n name: \"returnData\",\n type: \"tuple[]\",\n },\n ],\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n"]}
@@ -0,0 +1,169 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+
5
+
6
+ var _chunkXSGCRLSDcjs = require('./chunk-XSGCRLSD.cjs');
7
+
8
+ // src/errors/initBeraError.ts
9
+ var _viem = require('viem');
10
+ function initBeraError({
11
+ cause: error,
12
+ level
13
+ }) {
14
+ if (error instanceof _viem.BaseError) {
15
+ const parsed = _chunkXSGCRLSDcjs.parseViemError.call(void 0, {
16
+ error,
17
+ revertIfUnknown: false
18
+ });
19
+ if (parsed.isRequestError && parsed.rootCause instanceof _viem.BaseError && "url" in parsed.rootCause && typeof parsed.rootCause.url === "string") {
20
+ return new (0, _chunkXSGCRLSDcjs.RequestError)({
21
+ cause: parsed.rootCause,
22
+ response: void 0,
23
+ endpoint: {
24
+ url: parsed.rootCause.url,
25
+ type: "rpc"
26
+ },
27
+ level
28
+ });
29
+ }
30
+ }
31
+ const err = error instanceof _chunkXSGCRLSDcjs.BeraError ? error : new (0, _chunkXSGCRLSDcjs.BeraError)({
32
+ cause: error,
33
+ level
34
+ });
35
+ return err;
36
+ }
37
+
38
+ // src/errors/assert.ts
39
+
40
+ function _isDefined(value) {
41
+ return value !== void 0 && value !== null;
42
+ }
43
+ function _assert({
44
+ value,
45
+ property,
46
+ fn
47
+ }) {
48
+ const result = fn(value);
49
+ if (!result.isValid) {
50
+ throw new (0, _chunkXSGCRLSDcjs.InvalidArgumentError)({
51
+ property,
52
+ value,
53
+ expected: result.expectedType
54
+ });
55
+ }
56
+ }
57
+ function _assertDefined({
58
+ value,
59
+ property,
60
+ fn
61
+ }) {
62
+ _assert({
63
+ value,
64
+ property,
65
+ fn: (value2) => {
66
+ const isDefined = _isDefined(value2);
67
+ const { isValid, expectedType } = fn(value2);
68
+ return {
69
+ expectedType,
70
+ isValid: isDefined && isValid
71
+ };
72
+ }
73
+ });
74
+ }
75
+ function assertDefined(value, property) {
76
+ _assertDefined({
77
+ value,
78
+ property,
79
+ fn: (value2) => ({ expectedType: "defined", isValid: _isDefined(value2) })
80
+ });
81
+ }
82
+ function assertPublicClient(value, property = "publicClient") {
83
+ assertDefined(value, property);
84
+ }
85
+ function assertAddress(value, property) {
86
+ _assertDefined({
87
+ value,
88
+ property,
89
+ fn: (value2) => ({
90
+ expectedType: "Address",
91
+ isValid: typeof value2 === "string" && _viem.isAddress.call(void 0, value2)
92
+ })
93
+ });
94
+ }
95
+ function assertPositive(value, property) {
96
+ const isPositive = typeof value === "bigint" ? value > 0n : Number(value) > 0;
97
+ if (!isPositive) {
98
+ throw new (0, _chunkXSGCRLSDcjs.InvalidArgumentError)({
99
+ property,
100
+ value,
101
+ expected: "positive amount"
102
+ });
103
+ }
104
+ }
105
+ function assertAmount(value, property) {
106
+ _assertDefined({
107
+ value,
108
+ property,
109
+ fn: (value2) => ({
110
+ expectedType: "number",
111
+ isValid: (typeof value2 === "string" || typeof value2 === "number") && Number(value2) > 0
112
+ })
113
+ });
114
+ }
115
+
116
+ // src/utils/createEmitter.ts
117
+ function createEmitter() {
118
+ const events = {};
119
+ return {
120
+ emit(event, ...args) {
121
+ for (const callback of events[event] || []) {
122
+ callback(...args);
123
+ }
124
+ },
125
+ events,
126
+ on(event, cb) {
127
+ if (!events[event]) {
128
+ events[event] = [];
129
+ }
130
+ events[event].push(cb);
131
+ return () => {
132
+ events[event] = _optionalChain([events, 'access', _ => _[event], 'optionalAccess', _2 => _2.filter, 'call', _3 => _3((i) => cb !== i)]);
133
+ };
134
+ }
135
+ };
136
+ }
137
+
138
+ // src/errors/BeraMonitoring.ts
139
+ var _emitter = createEmitter();
140
+ var BeraMonitoring = {
141
+ /**
142
+ * Capture an exception. Notifies all subscribers.
143
+ */
144
+ captureException(exception) {
145
+ const event = {
146
+ exception,
147
+ timestamp: Date.now()
148
+ };
149
+ _emitter.emit("exception", event);
150
+ },
151
+ /**
152
+ * Subscribe to error events.
153
+ * @returns An unsubscribe function.
154
+ */
155
+ on(...args) {
156
+ return _emitter.on(...args);
157
+ }
158
+ };
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+ exports.initBeraError = initBeraError; exports.assertDefined = assertDefined; exports.assertPublicClient = assertPublicClient; exports.assertAddress = assertAddress; exports.assertPositive = assertPositive; exports.assertAmount = assertAmount; exports.BeraMonitoring = BeraMonitoring;
169
+ //# sourceMappingURL=chunk-TGK3IXDN.cjs.map