@unionlabs/payments 0.2.1 → 0.3.0

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 (126) hide show
  1. package/dist/cjs/Attestor.js +9 -2
  2. package/dist/cjs/Attestor.js.map +1 -1
  3. package/dist/cjs/Domain.js +8 -2
  4. package/dist/cjs/Domain.js.map +1 -1
  5. package/dist/cjs/Error.js +1 -1
  6. package/dist/cjs/Error.js.map +1 -1
  7. package/dist/cjs/EvmPublicClient.js +5 -277
  8. package/dist/cjs/EvmPublicClient.js.map +1 -1
  9. package/dist/cjs/EvmWalletClient.js +7 -642
  10. package/dist/cjs/EvmWalletClient.js.map +1 -1
  11. package/dist/cjs/Payment.js +84 -79
  12. package/dist/cjs/Payment.js.map +1 -1
  13. package/dist/cjs/Prover.js +2 -2
  14. package/dist/cjs/Prover.js.map +1 -1
  15. package/dist/cjs/PublicClient.js +2 -2
  16. package/dist/cjs/PublicClient.js.map +1 -1
  17. package/dist/cjs/WalletClient.js +2 -2
  18. package/dist/cjs/WalletClient.js.map +1 -1
  19. package/dist/cjs/constants/ibc-core-registry.js +6 -6
  20. package/dist/cjs/constants/ibc-core-registry.js.map +1 -1
  21. package/dist/cjs/internal/evmPublicClient.js +261 -0
  22. package/dist/cjs/internal/evmPublicClient.js.map +1 -0
  23. package/dist/cjs/internal/evmWalletClient.js +695 -0
  24. package/dist/cjs/internal/evmWalletClient.js.map +1 -1
  25. package/dist/cjs/internal/publicClient.js +0 -2
  26. package/dist/cjs/internal/publicClient.js.map +1 -1
  27. package/dist/cjs/promises/Payment.js +4 -3
  28. package/dist/cjs/promises/Payment.js.map +1 -1
  29. package/dist/cjs/promises/PublicClient.js +1 -2
  30. package/dist/cjs/promises/PublicClient.js.map +1 -1
  31. package/dist/cjs/promises/WalletClient.js +0 -1
  32. package/dist/cjs/promises/WalletClient.js.map +1 -1
  33. package/dist/cjs/rpc.js +3 -5
  34. package/dist/cjs/rpc.js.map +1 -1
  35. package/dist/dts/Attestor.d.ts +21 -6
  36. package/dist/dts/Attestor.d.ts.map +1 -1
  37. package/dist/dts/Domain.d.ts +92 -59
  38. package/dist/dts/Domain.d.ts.map +1 -1
  39. package/dist/dts/Error.d.ts +2 -2
  40. package/dist/dts/Error.d.ts.map +1 -1
  41. package/dist/dts/EvmPublicClient.d.ts +7 -19
  42. package/dist/dts/EvmPublicClient.d.ts.map +1 -1
  43. package/dist/dts/EvmWalletClient.d.ts +7 -23
  44. package/dist/dts/EvmWalletClient.d.ts.map +1 -1
  45. package/dist/dts/Payment.d.ts +71 -69
  46. package/dist/dts/Payment.d.ts.map +1 -1
  47. package/dist/dts/Prover.d.ts +6 -0
  48. package/dist/dts/Prover.d.ts.map +1 -1
  49. package/dist/dts/PublicClient.d.ts +7 -11
  50. package/dist/dts/PublicClient.d.ts.map +1 -1
  51. package/dist/dts/WalletClient.d.ts +10 -4
  52. package/dist/dts/WalletClient.d.ts.map +1 -1
  53. package/dist/dts/constants/ibc-core-registry.d.ts +5 -6
  54. package/dist/dts/constants/ibc-core-registry.d.ts.map +1 -1
  55. package/dist/dts/internal/evm.d.ts +3 -3
  56. package/dist/dts/internal/evm.d.ts.map +1 -1
  57. package/dist/dts/internal/evmPublicClient.d.ts +6 -0
  58. package/dist/dts/internal/evmPublicClient.d.ts.map +1 -0
  59. package/dist/dts/promises/Attestor.d.ts +5 -5
  60. package/dist/dts/promises/EvmPublicClient.d.ts +73 -74
  61. package/dist/dts/promises/EvmPublicClient.d.ts.map +1 -1
  62. package/dist/dts/promises/EvmWalletClient.d.ts +4 -5
  63. package/dist/dts/promises/EvmWalletClient.d.ts.map +1 -1
  64. package/dist/dts/promises/Payment.d.ts +39 -17
  65. package/dist/dts/promises/Payment.d.ts.map +1 -1
  66. package/dist/dts/promises/PublicClient.d.ts +3 -4
  67. package/dist/dts/promises/PublicClient.d.ts.map +1 -1
  68. package/dist/dts/promises/WalletClient.d.ts +77 -34
  69. package/dist/dts/promises/WalletClient.d.ts.map +1 -1
  70. package/dist/dts/rpc.d.ts +31 -0
  71. package/dist/dts/rpc.d.ts.map +1 -1
  72. package/dist/esm/Attestor.js +8 -1
  73. package/dist/esm/Attestor.js.map +1 -1
  74. package/dist/esm/Domain.js +7 -1
  75. package/dist/esm/Domain.js.map +1 -1
  76. package/dist/esm/Error.js +1 -1
  77. package/dist/esm/Error.js.map +1 -1
  78. package/dist/esm/EvmPublicClient.js +4 -275
  79. package/dist/esm/EvmPublicClient.js.map +1 -1
  80. package/dist/esm/EvmWalletClient.js +5 -638
  81. package/dist/esm/EvmWalletClient.js.map +1 -1
  82. package/dist/esm/Payment.js +82 -78
  83. package/dist/esm/Payment.js.map +1 -1
  84. package/dist/esm/Prover.js +1 -1
  85. package/dist/esm/Prover.js.map +1 -1
  86. package/dist/esm/PublicClient.js +2 -2
  87. package/dist/esm/PublicClient.js.map +1 -1
  88. package/dist/esm/Schema.js +8 -4
  89. package/dist/esm/Schema.js.map +1 -1
  90. package/dist/esm/WalletClient.js +2 -2
  91. package/dist/esm/WalletClient.js.map +1 -1
  92. package/dist/esm/constants/ibc-core-registry.js +4 -4
  93. package/dist/esm/constants/ibc-core-registry.js.map +1 -1
  94. package/dist/esm/internal/evmPublicClient.js +253 -0
  95. package/dist/esm/internal/evmPublicClient.js.map +1 -0
  96. package/dist/esm/internal/evmWalletClient.js +691 -1
  97. package/dist/esm/internal/evmWalletClient.js.map +1 -1
  98. package/dist/esm/internal/publicClient.js +0 -2
  99. package/dist/esm/internal/publicClient.js.map +1 -1
  100. package/dist/esm/promises/Payment.js +2 -2
  101. package/dist/esm/promises/Payment.js.map +1 -1
  102. package/dist/esm/promises/PublicClient.js +2 -3
  103. package/dist/esm/promises/PublicClient.js.map +1 -1
  104. package/dist/esm/promises/WalletClient.js +0 -1
  105. package/dist/esm/promises/WalletClient.js.map +1 -1
  106. package/dist/esm/rpc.js +2 -4
  107. package/dist/esm/rpc.js.map +1 -1
  108. package/package.json +7 -3
  109. package/src/Attestor.ts +12 -3
  110. package/src/Domain.ts +30 -9
  111. package/src/Error.ts +1 -0
  112. package/src/EvmPublicClient.ts +9 -488
  113. package/src/EvmWalletClient.ts +21 -973
  114. package/src/Payment.ts +216 -149
  115. package/src/Prover.ts +2 -2
  116. package/src/PublicClient.ts +7 -14
  117. package/src/WalletClient.ts +11 -5
  118. package/src/constants/ibc-core-registry.ts +9 -13
  119. package/src/internal/evmPublicClient.ts +459 -0
  120. package/src/internal/evmWalletClient.ts +1063 -0
  121. package/src/internal/publicClient.ts +0 -3
  122. package/src/promises/Payment.ts +26 -25
  123. package/src/promises/PublicClient.ts +2 -3
  124. package/src/promises/WalletClient.ts +0 -1
  125. package/src/rpc.ts +2 -4
  126. package/unionlabs-payments-0.3.0.tgz +0 -0
@@ -0,0 +1,253 @@
1
+ import * as Duration from "effect/Duration";
2
+ import * as Effect from "effect/Effect";
3
+ import { pipe } from "effect/Function";
4
+ import * as S from "effect/Schema";
5
+ import { bytesToHex, hexToBytes } from "viem";
6
+ import * as Abi from "../Abi.js";
7
+ import * as ZAssetRegistry from "../constants/z-asset-registry.js";
8
+ import * as Domain from "../Domain.js";
9
+ import * as Error from "../Error.js";
10
+ import * as Client from "../PublicClient.js";
11
+ import * as PS from "../Schema.js";
12
+ /** @internal */
13
+ export const TypeId = /*#__PURE__*/Symbol.for("@unionlabs/payments/EvmPublicClient");
14
+ export const makeViem = client => Effect.gen(function* () {
15
+ // const Viem = yield* Effect.tryPromise({
16
+ // try: () => import("viem").then((x) => x.default),
17
+ // catch: (cause) =>
18
+ // new Error.SystemError({
19
+ // reason: "DynamicImport",
20
+ // method: "makeViem",
21
+ // module: "EvmPublicClient",
22
+ // cause,
23
+ // description: "could not import viem",
24
+ // }),
25
+ // });
26
+ const readContract = Effect.fn("readContract")((params, schema) => pipe(Effect.tryPromise({
27
+ try: () => client.readContract(params),
28
+ catch: cause => new Error.SystemError({
29
+ method: "readContract",
30
+ module: "EvmPublicClient",
31
+ reason: "ReadContract",
32
+ cause
33
+ })
34
+ }), Effect.flatMap(S.decodeUnknown(schema)), Effect.catchTag("ParseError", cause => new Error.SystemError({
35
+ method: "readContract",
36
+ module: "EvmPublicClient",
37
+ reason: "InvalidData",
38
+ cause
39
+ }))));
40
+ const getLatestHeight = Effect.fn("getLatestHeight")((lightClientAddress, clientId) => readContract({
41
+ address: lightClientAddress,
42
+ abi: Abi.LIGHT_CLIENT_ABI,
43
+ functionName: "getLatestHeight",
44
+ args: [clientId]
45
+ }, S.BigIntFromSelf));
46
+ const getLightClientAddress = Effect.fn("getLightClientAddress")(function* (ibcStoreAddress, clientId) {
47
+ const res = yield* readContract({
48
+ address: ibcStoreAddress,
49
+ abi: Abi.IBC_STORE_ABI,
50
+ functionName: "getClient",
51
+ args: [clientId]
52
+ }, PS.Hex);
53
+ return Domain.LightClientAddress(res);
54
+ });
55
+ const getStateRootIndex = Effect.fn("getStateRootIndex")((zAssetAddress, clientId) => readContract({
56
+ address: zAssetAddress,
57
+ abi: Abi.ZASSET_ABI,
58
+ functionName: "stateRootIndex",
59
+ args: [clientId]
60
+ }, S.BigIntFromSelf));
61
+ const getConsensusState = Effect.fn("getConsensusState")((lightClientAddress, clientId, height, stateRootIndex) => pipe(readContract({
62
+ address: lightClientAddress,
63
+ abi: Abi.LIGHT_CLIENT_ABI,
64
+ functionName: "getConsensusState",
65
+ args: [clientId, height]
66
+ }, PS.Hex),
67
+ // XXX: this can definitely fail
68
+ Effect.map(consensusBytes => {
69
+ const bytes = hexToBytes(consensusBytes);
70
+ const idx = Number(stateRootIndex);
71
+ const stateRoot = bytesToHex(bytes.slice(idx, idx + 32));
72
+ return {
73
+ stateRoot
74
+ };
75
+ })));
76
+ const getIbcHandlerAddress = Effect.fn("getIbcHandlerAddress")(function* (zAssetAddress) {
77
+ return Domain.IbcCoreAddress(yield* readContract({
78
+ address: zAssetAddress,
79
+ abi: Abi.ZASSET_ABI,
80
+ functionName: "ibcHandler"
81
+ }, PS.Hex));
82
+ });
83
+ const readZAssetTokenBalance = Effect.fn("readZAssetTokenBalance")((tokenAddress, accountAddress, blockNumber) => readContract({
84
+ address: tokenAddress,
85
+ abi: [{
86
+ inputs: [{
87
+ name: "account",
88
+ type: "address"
89
+ }],
90
+ name: "balanceOf",
91
+ outputs: [{
92
+ name: "",
93
+ type: "uint256"
94
+ }],
95
+ stateMutability: "view",
96
+ type: "function"
97
+ }],
98
+ functionName: "balanceOf",
99
+ args: [accountAddress],
100
+ blockNumber
101
+ }, S.BigIntFromSelf));
102
+ const readNullifierBalance = Effect.fn("readNullifierBalance")((zAssetAddress, nullifier) => readContract({
103
+ address: zAssetAddress,
104
+ abi: Abi.ZASSET_ABI,
105
+ functionName: "nullifierBalance",
106
+ args: [nullifier]
107
+ }, S.BigIntFromSelf));
108
+ const getLatestBlockNumber = Effect.tryPromise({
109
+ try: () => client.getBlockNumber(),
110
+ catch: cause => new Error.SystemError({
111
+ method: "getLatestBlockNumber",
112
+ module: "EvmPublicClient",
113
+ reason: "InvalidData",
114
+ cause
115
+ })
116
+ });
117
+ const readBalanceAtHeight = Effect.fn("readBalanceAtHeight")(opts => Effect.gen(function* () {
118
+ const latestHeight = yield* getLatestBlockNumber;
119
+ const srcZAssetAddress = yield* ZAssetRegistry.getZAsset(opts.srcChainId, opts.srcErc20Address).pipe(Effect.mapError(cause => new Error.SystemError({
120
+ method: "readBalanceAtHeight",
121
+ module: "EvmPublicClient",
122
+ reason: "InvalidData",
123
+ cause
124
+ })));
125
+ const dstZAssetAddress = yield* ZAssetRegistry.getZAsset(opts.dstChainId, opts.dstErc20Address).pipe(Effect.mapError(cause => new Error.SystemError({
126
+ method: "readBalanceAtHeight",
127
+ module: "EvmPublicClient",
128
+ reason: "InvalidData",
129
+ cause
130
+ })));
131
+ const [balanceAtTip, confirmed, redeemed] = yield* Effect.all([
132
+ // ZAsset balance of the deposit address ZAsset on the source chain at the tip of the chain
133
+ readZAssetTokenBalance(srcZAssetAddress, opts.depositAddress, latestHeight),
134
+ // ZAsset balance of the deposit address on the source chain at the (latest) light client height
135
+ readZAssetTokenBalance(srcZAssetAddress, opts.depositAddress, opts.height),
136
+ // amount that has already been redeemed under the specified nullifier
137
+ readNullifierBalance(dstZAssetAddress, opts.nullifier)], {
138
+ concurrency: "unbounded"
139
+ });
140
+ const available = confirmed > redeemed ? confirmed - redeemed : 0n;
141
+ const pending = balanceAtTip > confirmed ? balanceAtTip - confirmed : 0n;
142
+ return {
143
+ confirmed,
144
+ redeemed,
145
+ available,
146
+ pending,
147
+ latestHeight
148
+ };
149
+ }));
150
+ const readBalance = Effect.fn("readBalance")(opts => Effect.gen(function* () {
151
+ const dstZAssetAddress = yield* ZAssetRegistry.getZAsset(opts.dstChainId, opts.dstErc20Address).pipe(Effect.mapError(cause => new Error.SystemError({
152
+ method: "readBalance",
153
+ module: "EvmPublicClient",
154
+ reason: "InvalidData",
155
+ cause
156
+ })));
157
+ yield* Effect.log({
158
+ opts,
159
+ dstZAssetAddress
160
+ });
161
+ const ibcHandlerAddress = yield* getIbcHandlerAddress(dstZAssetAddress);
162
+ const lightClientAddress = yield* getLightClientAddress(ibcHandlerAddress, opts.clientId);
163
+ const lightClientHeight = yield* getLatestHeight(lightClientAddress, opts.clientId);
164
+ const balance = yield* readBalanceAtHeight({
165
+ srcErc20Address: opts.srcErc20Address,
166
+ srcChainId: opts.srcChainId,
167
+ dstErc20Address: opts.dstErc20Address,
168
+ dstChainId: opts.dstChainId,
169
+ depositAddress: opts.depositAddress,
170
+ nullifier: opts.nullifier,
171
+ height: lightClientHeight
172
+ });
173
+ return {
174
+ ...balance,
175
+ lightClientHeight
176
+ };
177
+ }));
178
+ const getCounterparty = Effect.fn("getCounterparty")((zAssetAddress, clientId) => readContract({
179
+ address: zAssetAddress,
180
+ abi: Abi.ZASSET_ABI,
181
+ functionName: "counterparty",
182
+ args: [clientId]
183
+ }, Domain.CounterpartyInfo));
184
+ const getProof = Effect.fn("getProof")(options => Effect.tryPromise({
185
+ try: () => client.getProof(options),
186
+ catch: cause => new Error.SystemError({
187
+ method: "getProof",
188
+ module: "EvmPublicClient",
189
+ reason: "InvalidData",
190
+ cause
191
+ })
192
+ }));
193
+ const waitForTransactionReceipt = Effect.fn("waitForTransactionReceipt")(hash => pipe(Effect.tryPromise({
194
+ try: () => client.waitForTransactionReceipt({
195
+ hash
196
+ }),
197
+ catch: cause => new Error.SystemError({
198
+ method: "waitForTransactionReceipt",
199
+ module: "EvmPublicClient",
200
+ reason: "InvalidData",
201
+ cause
202
+ })
203
+ }), Effect.flatMap(x => x.status === "success" ? Effect.succeed(x) : Effect.fail(new Error.SystemError({
204
+ method: "waitForTransactionReceipt",
205
+ module: "EvmPublicClient",
206
+ reason: "InvalidData",
207
+ description: "contract reverted"
208
+ })))));
209
+ const waitForBlock = Effect.fn("waitForBlock")(targetHeight => pipe(getLatestBlockNumber, Effect.flatMap(initial => Effect.iterate(initial, {
210
+ // one block extra to avoid loadbalancer issues
211
+ while: height => height <= targetHeight,
212
+ body: () => pipe(Effect.sleep(Duration.seconds(1)), Effect.andThen(getLatestBlockNumber))
213
+ }))));
214
+ const simulateCalls = Effect.fn("simulateCalls")(params => Effect.tryPromise({
215
+ try: async () => {
216
+ const {
217
+ simulateCalls
218
+ } = await import("viem/actions");
219
+ return simulateCalls(client, {
220
+ calls: params.calls.map(call => ({
221
+ to: call.to,
222
+ data: call.data,
223
+ value: call.value
224
+ })),
225
+ account: params.account
226
+ });
227
+ },
228
+ catch: cause => new Error.SystemError({
229
+ method: "simulateCalls",
230
+ module: "EvmPublicClient",
231
+ reason: "InvalidData",
232
+ cause
233
+ })
234
+ }));
235
+ return Object.assign(yield* Client.make({
236
+ getLatestHeight,
237
+ getLatestBlockNumber,
238
+ readBalance,
239
+ readBalanceAtHeight,
240
+ getLightClientAddress,
241
+ getStateRootIndex,
242
+ getConsensusState,
243
+ getIbcHandlerAddress,
244
+ getCounterparty,
245
+ getProof,
246
+ waitForBlock
247
+ }), {
248
+ [TypeId]: TypeId,
249
+ waitForTransactionReceipt,
250
+ simulateCalls
251
+ });
252
+ });
253
+ //# sourceMappingURL=evmPublicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evmPublicClient.js","names":["Duration","Effect","pipe","S","bytesToHex","hexToBytes","Abi","ZAssetRegistry","Domain","Error","Client","PS","TypeId","Symbol","for","makeViem","client","gen","readContract","fn","params","schema","tryPromise","try","catch","cause","SystemError","method","module","reason","flatMap","decodeUnknown","catchTag","getLatestHeight","lightClientAddress","clientId","address","abi","LIGHT_CLIENT_ABI","functionName","args","BigIntFromSelf","getLightClientAddress","ibcStoreAddress","res","IBC_STORE_ABI","Hex","LightClientAddress","getStateRootIndex","zAssetAddress","ZASSET_ABI","getConsensusState","height","stateRootIndex","map","consensusBytes","bytes","idx","Number","stateRoot","slice","getIbcHandlerAddress","IbcCoreAddress","readZAssetTokenBalance","tokenAddress","accountAddress","blockNumber","inputs","name","type","outputs","stateMutability","readNullifierBalance","nullifier","getLatestBlockNumber","getBlockNumber","readBalanceAtHeight","opts","latestHeight","srcZAssetAddress","getZAsset","srcChainId","srcErc20Address","mapError","dstZAssetAddress","dstChainId","dstErc20Address","balanceAtTip","confirmed","redeemed","all","depositAddress","concurrency","available","pending","readBalance","log","ibcHandlerAddress","lightClientHeight","balance","getCounterparty","CounterpartyInfo","getProof","options","waitForTransactionReceipt","hash","x","status","succeed","fail","description","waitForBlock","targetHeight","initial","iterate","while","body","sleep","seconds","andThen","simulateCalls","calls","call","to","data","value","account","Object","assign","make"],"sources":["../../../src/internal/evmPublicClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}