eth-twc-sdk-js 0.1.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 (54) hide show
  1. package/README.md +29 -0
  2. package/dist/abi.cjs +286 -0
  3. package/dist/abi.d.cts +419 -0
  4. package/dist/abi.d.ts +419 -0
  5. package/dist/abi.js +259 -0
  6. package/dist/config.cjs +41 -0
  7. package/dist/config.d.cts +14 -0
  8. package/dist/config.d.ts +14 -0
  9. package/dist/config.js +11 -0
  10. package/dist/selfTransfer/batch/index.cjs +373 -0
  11. package/dist/selfTransfer/batch/index.d.cts +24 -0
  12. package/dist/selfTransfer/batch/index.d.ts +24 -0
  13. package/dist/selfTransfer/batch/index.js +345 -0
  14. package/dist/selfTransfer/single/index.cjs +360 -0
  15. package/dist/selfTransfer/single/index.d.cts +20 -0
  16. package/dist/selfTransfer/single/index.d.ts +20 -0
  17. package/dist/selfTransfer/single/index.js +332 -0
  18. package/dist/selfTransfer/unified/index.cjs +372 -0
  19. package/dist/selfTransfer/unified/index.d.cts +24 -0
  20. package/dist/selfTransfer/unified/index.d.ts +24 -0
  21. package/dist/selfTransfer/unified/index.js +344 -0
  22. package/dist/signatureTransfer/batch/index.cjs +545 -0
  23. package/dist/signatureTransfer/batch/index.d.cts +100 -0
  24. package/dist/signatureTransfer/batch/index.d.ts +100 -0
  25. package/dist/signatureTransfer/batch/index.js +514 -0
  26. package/dist/signatureTransfer/cancelAuthorization/index.cjs +491 -0
  27. package/dist/signatureTransfer/cancelAuthorization/index.d.cts +49 -0
  28. package/dist/signatureTransfer/cancelAuthorization/index.d.ts +49 -0
  29. package/dist/signatureTransfer/cancelAuthorization/index.js +460 -0
  30. package/dist/signatureTransfer/single/index.cjs +528 -0
  31. package/dist/signatureTransfer/single/index.d.cts +84 -0
  32. package/dist/signatureTransfer/single/index.d.ts +84 -0
  33. package/dist/signatureTransfer/single/index.js +497 -0
  34. package/dist/signatureTransfer/unified/index.cjs +541 -0
  35. package/dist/signatureTransfer/unified/index.d.cts +95 -0
  36. package/dist/signatureTransfer/unified/index.d.ts +95 -0
  37. package/dist/signatureTransfer/unified/index.js +510 -0
  38. package/dist/types/transferDetail.cjs +62 -0
  39. package/dist/types/transferDetail.d.cts +15 -0
  40. package/dist/types/transferDetail.d.ts +15 -0
  41. package/dist/types/transferDetail.js +36 -0
  42. package/dist/types/utils.cjs +52 -0
  43. package/dist/types/utils.d.cts +12 -0
  44. package/dist/types/utils.d.ts +12 -0
  45. package/dist/types/utils.js +23 -0
  46. package/dist/utils.cjs +123 -0
  47. package/dist/utils.d.cts +21 -0
  48. package/dist/utils.d.ts +21 -0
  49. package/dist/utils.js +90 -0
  50. package/dist/verify.cjs +366 -0
  51. package/dist/verify.d.cts +433 -0
  52. package/dist/verify.d.ts +433 -0
  53. package/dist/verify.js +339 -0
  54. package/package.json +100 -0
package/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # eth-twc-sdk-js
2
+
3
+ `TransferWithCommitment` 向けの TypeScript / JavaScript SDK(viem ベース)。
4
+
5
+ ## インストール
6
+
7
+ ```bash
8
+ bun add eth-twc-sdk-js
9
+ ```
10
+
11
+ ## 開発
12
+
13
+ ```bash
14
+ bun install
15
+ bun run build
16
+ ```
17
+
18
+ サブパス import(例: `eth-twc-sdk-js/signatureTransfer/single`、`eth-twc-sdk-js/selfTransfer/single`)を利用する。ルートの一括エントリはない。
19
+
20
+ 利用者向けの操作例・API 一覧は **[docs](https://bunsan-pay.github.io/TransferWithCommitment/sdk-js)** を参照。
21
+
22
+ ## 設定
23
+
24
+ - **`config.transferWithCommitmentAddress`** — CREATE2 **決定論アドレス**(`twcConstants.ts` / `contracts/TWC_CREATE2.md` と一致)。接続チェーンでこのアドレスに **コントラクトが無い**場合、`eth_getCode` により署名・送信・検証前に失敗します。wagmi の `chains` に載せる `chain` 定義は **アプリ側で** `viem/chains` 等から選んでください(SDK はチェーン allowlist を持ちません)。
25
+
26
+ ## セキュリティ・限界(オフチェーン検証)
27
+
28
+ - **`verify`** はレシート上の `TransferWithCommitmentSent` が **`args` と一致し**、かつ **`config` のコントラクトから発火したログ**であることを確認する。**`getTransferWithCommitmentSentEventLogs`** は当該コントラクト由来のログだけを返す(ハッシュのみ分かる場合の列挙用)。いずれも RPC から取得したレシートに依存する。悪意ある RPC、チェーンの取り違え、未確定ブロック/リオーグはこの SDK 単体では防げない。必要に応じて信頼できるエンドポイントや確定数を運用で担保すること。
29
+ - 詳細な型・前提はリポジトリ内の `SPEC.md` を参照。
package/dist/abi.cjs ADDED
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // abi.ts
21
+ var abi_exports = {};
22
+ __export(abi_exports, {
23
+ transferWithCommitmentAbi: () => transferWithCommitmentAbi
24
+ });
25
+ module.exports = __toCommonJS(abi_exports);
26
+
27
+ // ../contracts/abi/generated.ts
28
+ var transferWithCommitmentAbi = [
29
+ {
30
+ type: "constructor",
31
+ inputs: [
32
+ { name: "name", internalType: "string", type: "string" },
33
+ { name: "version", internalType: "string", type: "string" }
34
+ ],
35
+ stateMutability: "nonpayable"
36
+ },
37
+ {
38
+ type: "function",
39
+ inputs: [],
40
+ name: "BATCH_TRANSFER_WITH_COMMIT_TYPEHASH",
41
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
42
+ stateMutability: "view"
43
+ },
44
+ {
45
+ type: "function",
46
+ inputs: [],
47
+ name: "CANCEL_AUTHORIZATION_TYPEHASH",
48
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
49
+ stateMutability: "view"
50
+ },
51
+ {
52
+ type: "function",
53
+ inputs: [],
54
+ name: "TRANSFER_WITH_COMMIT_TYPEHASH",
55
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
56
+ stateMutability: "view"
57
+ },
58
+ {
59
+ type: "function",
60
+ inputs: [],
61
+ name: "UNI_COMMIT_TRANSFER_TYPEHASH",
62
+ outputs: [{ name: "", internalType: "bytes32", type: "bytes32" }],
63
+ stateMutability: "view"
64
+ },
65
+ {
66
+ type: "function",
67
+ inputs: [
68
+ { name: "authorizer", internalType: "address", type: "address" },
69
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
70
+ { name: "signature", internalType: "bytes", type: "bytes" }
71
+ ],
72
+ name: "cancelAuthorization",
73
+ outputs: [],
74
+ stateMutability: "nonpayable"
75
+ },
76
+ {
77
+ type: "function",
78
+ inputs: [
79
+ { name: "payer", internalType: "address", type: "address" },
80
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
81
+ ],
82
+ name: "commitmentState",
83
+ outputs: [{ name: "", internalType: "bool", type: "bool" }],
84
+ stateMutability: "view"
85
+ },
86
+ {
87
+ type: "function",
88
+ inputs: [],
89
+ name: "eip712Domain",
90
+ outputs: [
91
+ { name: "fields", internalType: "bytes1", type: "bytes1" },
92
+ { name: "name", internalType: "string", type: "string" },
93
+ { name: "version", internalType: "string", type: "string" },
94
+ { name: "chainId", internalType: "uint256", type: "uint256" },
95
+ { name: "verifyingContract", internalType: "address", type: "address" },
96
+ { name: "salt", internalType: "bytes32", type: "bytes32" },
97
+ { name: "extensions", internalType: "uint256[]", type: "uint256[]" }
98
+ ],
99
+ stateMutability: "view"
100
+ },
101
+ {
102
+ type: "function",
103
+ inputs: [
104
+ { name: "token", internalType: "address", type: "address" },
105
+ { name: "to", internalType: "address", type: "address" },
106
+ { name: "value", internalType: "uint256", type: "uint256" },
107
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
108
+ ],
109
+ name: "transfer",
110
+ outputs: [],
111
+ stateMutability: "nonpayable"
112
+ },
113
+ {
114
+ type: "function",
115
+ inputs: [
116
+ {
117
+ name: "details",
118
+ internalType: "struct TransferDetail[]",
119
+ type: "tuple[]",
120
+ components: [
121
+ { name: "to", internalType: "address", type: "address" },
122
+ { name: "token", internalType: "address", type: "address" },
123
+ { name: "value", internalType: "uint256", type: "uint256" }
124
+ ]
125
+ },
126
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
127
+ ],
128
+ name: "transfer",
129
+ outputs: [],
130
+ stateMutability: "nonpayable"
131
+ },
132
+ {
133
+ type: "function",
134
+ inputs: [
135
+ {
136
+ name: "details",
137
+ internalType: "struct CommittedTransferDetail[]",
138
+ type: "tuple[]",
139
+ components: [
140
+ { name: "to", internalType: "address", type: "address" },
141
+ { name: "token", internalType: "address", type: "address" },
142
+ { name: "value", internalType: "uint256", type: "uint256" },
143
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
144
+ ]
145
+ }
146
+ ],
147
+ name: "transfer",
148
+ outputs: [],
149
+ stateMutability: "nonpayable"
150
+ },
151
+ {
152
+ type: "function",
153
+ inputs: [
154
+ { name: "from", internalType: "address", type: "address" },
155
+ {
156
+ name: "details",
157
+ internalType: "struct TransferDetail[]",
158
+ type: "tuple[]",
159
+ components: [
160
+ { name: "to", internalType: "address", type: "address" },
161
+ { name: "token", internalType: "address", type: "address" },
162
+ { name: "value", internalType: "uint256", type: "uint256" }
163
+ ]
164
+ },
165
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
166
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
167
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
168
+ { name: "signature", internalType: "bytes", type: "bytes" }
169
+ ],
170
+ name: "transferWithAuthorization",
171
+ outputs: [],
172
+ stateMutability: "nonpayable"
173
+ },
174
+ {
175
+ type: "function",
176
+ inputs: [
177
+ { name: "from", internalType: "address", type: "address" },
178
+ {
179
+ name: "details",
180
+ internalType: "struct CommittedTransferDetail[]",
181
+ type: "tuple[]",
182
+ components: [
183
+ { name: "to", internalType: "address", type: "address" },
184
+ { name: "token", internalType: "address", type: "address" },
185
+ { name: "value", internalType: "uint256", type: "uint256" },
186
+ { name: "commitment", internalType: "bytes32", type: "bytes32" }
187
+ ]
188
+ },
189
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
190
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
191
+ { name: "batchCommitment", internalType: "bytes32", type: "bytes32" },
192
+ { name: "signature", internalType: "bytes", type: "bytes" }
193
+ ],
194
+ name: "transferWithAuthorization",
195
+ outputs: [],
196
+ stateMutability: "nonpayable"
197
+ },
198
+ {
199
+ type: "function",
200
+ inputs: [
201
+ { name: "from", internalType: "address", type: "address" },
202
+ { name: "to", internalType: "address", type: "address" },
203
+ { name: "token", internalType: "address", type: "address" },
204
+ { name: "value", internalType: "uint256", type: "uint256" },
205
+ { name: "validAfter", internalType: "uint256", type: "uint256" },
206
+ { name: "validBefore", internalType: "uint256", type: "uint256" },
207
+ { name: "commitment", internalType: "bytes32", type: "bytes32" },
208
+ { name: "signature", internalType: "bytes", type: "bytes" }
209
+ ],
210
+ name: "transferWithAuthorization",
211
+ outputs: [],
212
+ stateMutability: "nonpayable"
213
+ },
214
+ {
215
+ type: "event",
216
+ anonymous: false,
217
+ inputs: [
218
+ {
219
+ name: "payer",
220
+ internalType: "address",
221
+ type: "address",
222
+ indexed: true
223
+ },
224
+ {
225
+ name: "commitment",
226
+ internalType: "bytes32",
227
+ type: "bytes32",
228
+ indexed: true
229
+ }
230
+ ],
231
+ name: "CommitmentUsed"
232
+ },
233
+ { type: "event", anonymous: false, inputs: [], name: "EIP712DomainChanged" },
234
+ {
235
+ type: "event",
236
+ anonymous: false,
237
+ inputs: [
238
+ { name: "from", internalType: "address", type: "address", indexed: true },
239
+ { name: "to", internalType: "address", type: "address", indexed: true },
240
+ {
241
+ name: "token",
242
+ internalType: "address",
243
+ type: "address",
244
+ indexed: true
245
+ },
246
+ {
247
+ name: "value",
248
+ internalType: "uint256",
249
+ type: "uint256",
250
+ indexed: false
251
+ },
252
+ {
253
+ name: "commitment",
254
+ internalType: "bytes32",
255
+ type: "bytes32",
256
+ indexed: false
257
+ }
258
+ ],
259
+ name: "TransferWithCommitmentSent"
260
+ },
261
+ {
262
+ type: "error",
263
+ inputs: [
264
+ { name: "token", internalType: "address", type: "address" },
265
+ { name: "from", internalType: "address", type: "address" },
266
+ { name: "value", internalType: "uint256", type: "uint256" }
267
+ ],
268
+ name: "AllowanceNotEnough"
269
+ },
270
+ { type: "error", inputs: [], name: "InvalidShortString" },
271
+ { type: "error", inputs: [], name: "ReentrancyGuardReentrantCall" },
272
+ {
273
+ type: "error",
274
+ inputs: [{ name: "token", internalType: "address", type: "address" }],
275
+ name: "SafeERC20FailedOperation"
276
+ },
277
+ {
278
+ type: "error",
279
+ inputs: [{ name: "str", internalType: "string", type: "string" }],
280
+ name: "StringTooLong"
281
+ }
282
+ ];
283
+ // Annotate the CommonJS export names for ESM import in node:
284
+ 0 && (module.exports = {
285
+ transferWithCommitmentAbi
286
+ });