@zill-protocol/client 4.1.2

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 (108) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +18 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/package.json +58 -0
  7. package/dist/src/NocturneClient.d.ts +68 -0
  8. package/dist/src/NocturneClient.d.ts.map +1 -0
  9. package/dist/src/NocturneClient.js +264 -0
  10. package/dist/src/NocturneClient.js.map +1 -0
  11. package/dist/src/NocturneDB.d.ts +100 -0
  12. package/dist/src/NocturneDB.d.ts.map +1 -0
  13. package/dist/src/NocturneDB.js +525 -0
  14. package/dist/src/NocturneDB.js.map +1 -0
  15. package/dist/src/OpTracker.d.ts +13 -0
  16. package/dist/src/OpTracker.d.ts.map +1 -0
  17. package/dist/src/OpTracker.js +34 -0
  18. package/dist/src/OpTracker.js.map +1 -0
  19. package/dist/src/conversion/converter.d.ts +5 -0
  20. package/dist/src/conversion/converter.d.ts.map +1 -0
  21. package/dist/src/conversion/converter.js +15 -0
  22. package/dist/src/conversion/converter.js.map +1 -0
  23. package/dist/src/conversion/index.d.ts +3 -0
  24. package/dist/src/conversion/index.d.ts.map +1 -0
  25. package/dist/src/conversion/index.js +21 -0
  26. package/dist/src/conversion/index.js.map +1 -0
  27. package/dist/src/conversion/mock.d.ts +6 -0
  28. package/dist/src/conversion/mock.d.ts.map +1 -0
  29. package/dist/src/conversion/mock.js +14 -0
  30. package/dist/src/conversion/mock.js.map +1 -0
  31. package/dist/src/index.d.ts +14 -0
  32. package/dist/src/index.d.ts.map +1 -0
  33. package/dist/src/index.js +39 -0
  34. package/dist/src/index.js.map +1 -0
  35. package/dist/src/opRequestGas.d.ts +20 -0
  36. package/dist/src/opRequestGas.d.ts.map +1 -0
  37. package/dist/src/opRequestGas.js +321 -0
  38. package/dist/src/opRequestGas.js.map +1 -0
  39. package/dist/src/operationRequest/builder.d.ts +40 -0
  40. package/dist/src/operationRequest/builder.d.ts.map +1 -0
  41. package/dist/src/operationRequest/builder.js +192 -0
  42. package/dist/src/operationRequest/builder.js.map +1 -0
  43. package/dist/src/operationRequest/index.d.ts +3 -0
  44. package/dist/src/operationRequest/index.d.ts.map +1 -0
  45. package/dist/src/operationRequest/index.js +6 -0
  46. package/dist/src/operationRequest/index.js.map +1 -0
  47. package/dist/src/operationRequest/operationRequest.d.ts +50 -0
  48. package/dist/src/operationRequest/operationRequest.d.ts.map +1 -0
  49. package/dist/src/operationRequest/operationRequest.js +16 -0
  50. package/dist/src/operationRequest/operationRequest.js.map +1 -0
  51. package/dist/src/prepareOperation.d.ts +21 -0
  52. package/dist/src/prepareOperation.d.ts.map +1 -0
  53. package/dist/src/prepareOperation.js +256 -0
  54. package/dist/src/prepareOperation.js.map +1 -0
  55. package/dist/src/proveOperation.d.ts +7 -0
  56. package/dist/src/proveOperation.d.ts.map +1 -0
  57. package/dist/src/proveOperation.js +79 -0
  58. package/dist/src/proveOperation.js.map +1 -0
  59. package/dist/src/signOperation.d.ts +3 -0
  60. package/dist/src/signOperation.d.ts.map +1 -0
  61. package/dist/src/signOperation.js +61 -0
  62. package/dist/src/signOperation.js.map +1 -0
  63. package/dist/src/snapJsonRpc.d.ts +55 -0
  64. package/dist/src/snapJsonRpc.d.ts.map +1 -0
  65. package/dist/src/snapJsonRpc.js +63 -0
  66. package/dist/src/snapJsonRpc.js.map +1 -0
  67. package/dist/src/syncSDK.d.ts +17 -0
  68. package/dist/src/syncSDK.d.ts.map +1 -0
  69. package/dist/src/syncSDK.js +188 -0
  70. package/dist/src/syncSDK.js.map +1 -0
  71. package/dist/src/types.d.ts +60 -0
  72. package/dist/src/types.d.ts.map +1 -0
  73. package/dist/src/types.js +3 -0
  74. package/dist/src/types.js.map +1 -0
  75. package/dist/src/utils/constants.d.ts +3 -0
  76. package/dist/src/utils/constants.d.ts.map +1 -0
  77. package/dist/src/utils/constants.js +20 -0
  78. package/dist/src/utils/constants.js.map +1 -0
  79. package/dist/src/utils/index.d.ts +3 -0
  80. package/dist/src/utils/index.d.ts.map +1 -0
  81. package/dist/src/utils/index.js +19 -0
  82. package/dist/src/utils/index.js.map +1 -0
  83. package/dist/src/utils/misc.d.ts +13 -0
  84. package/dist/src/utils/misc.d.ts.map +1 -0
  85. package/dist/src/utils/misc.js +77 -0
  86. package/dist/src/utils/misc.js.map +1 -0
  87. package/dist/tsconfig.tsbuildinfo +1 -0
  88. package/package.json +58 -0
  89. package/src/NocturneClient.ts +415 -0
  90. package/src/NocturneDB.ts +761 -0
  91. package/src/OpTracker.ts +44 -0
  92. package/src/conversion/converter.ts +22 -0
  93. package/src/conversion/index.ts +2 -0
  94. package/src/conversion/mock.ts +11 -0
  95. package/src/index.ts +14 -0
  96. package/src/opRequestGas.ts +487 -0
  97. package/src/operationRequest/builder.ts +359 -0
  98. package/src/operationRequest/index.ts +16 -0
  99. package/src/operationRequest/operationRequest.ts +87 -0
  100. package/src/prepareOperation.ts +420 -0
  101. package/src/proveOperation.ts +124 -0
  102. package/src/signOperation.ts +116 -0
  103. package/src/snapJsonRpc.ts +109 -0
  104. package/src/syncSDK.ts +285 -0
  105. package/src/types.ts +83 -0
  106. package/src/utils/constants.ts +16 -0
  107. package/src/utils/index.ts +2 -0
  108. package/src/utils/misc.ts +107 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proveOperation = proveOperation;
4
+ const crypto_1 = require("@zill-protocol/crypto");
5
+ const core_1 = require("@zill-protocol/core");
6
+ // SDK will fire off at most this many provers in parallel
7
+ const DEFAULT_MAX_PARALLEL_PROVERS = 4;
8
+ async function proveOperation(prover, op, opts) {
9
+ const joinSplits = [];
10
+ const maxParallel = opts?.maxParallel ?? DEFAULT_MAX_PARALLEL_PROVERS;
11
+ for (const batch of (0, core_1.iterChunks)(op.joinSplits, maxParallel)) {
12
+ const provenBatch = await Promise.all(batch.map((joinSplit) => proveJoinSplit(prover, joinSplit, opts)));
13
+ joinSplits.push(...provenBatch);
14
+ }
15
+ const operation = {
16
+ ...op,
17
+ joinSplits,
18
+ };
19
+ return core_1.OperationTrait.toSubmittable(operation);
20
+ }
21
+ async function proveJoinSplit(prover, signedJoinSplit, opts) {
22
+ const { opDigest, proofInputs, refundAddr, senderCommitment, joinSplitInfoCommitment, ...baseJoinSplit } = signedJoinSplit;
23
+ if (opts?.debug) {
24
+ console.log("proving joinSplit", {
25
+ proofInputs,
26
+ merkleProofA: proofInputs.merkleProofA,
27
+ merkleProofB: proofInputs.merkleProofB,
28
+ });
29
+ }
30
+ const proof = await prover.proveJoinSplit(proofInputs);
31
+ const [, refundAddrH1CompressedY] = (0, crypto_1.decomposeCompressedPoint)(refundAddr.h1);
32
+ const [, refundAddrH2CompressedY] = (0, crypto_1.decomposeCompressedPoint)(refundAddr.h2);
33
+ // Check that snarkjs output is consistent with our precomputed joinsplit values
34
+ const publicSignals = (0, core_1.joinSplitPublicSignalsFromArray)(proof.publicSignals);
35
+ if (baseJoinSplit.newNoteACommitment !== publicSignals.newNoteACommitment ||
36
+ baseJoinSplit.newNoteBCommitment !== publicSignals.newNoteBCommitment ||
37
+ baseJoinSplit.commitmentTreeRoot !== publicSignals.commitmentTreeRoot ||
38
+ baseJoinSplit.publicSpend !== publicSignals.publicSpend ||
39
+ baseJoinSplit.nullifierA !== publicSignals.nullifierA ||
40
+ baseJoinSplit.nullifierB !== publicSignals.nullifierB ||
41
+ opDigest !== publicSignals.opDigest ||
42
+ refundAddrH1CompressedY !== publicSignals.refundAddrH1CompressedY ||
43
+ refundAddrH2CompressedY !== publicSignals.refundAddrH2CompressedY ||
44
+ senderCommitment !== publicSignals.senderCommitment ||
45
+ joinSplitInfoCommitment !== publicSignals.joinSplitInfoCommitment) {
46
+ console.error("successfully generated proof, but PIs don't match", {
47
+ publicSignalsFromProof: publicSignals,
48
+ publicSignalsExpected: {
49
+ newNoteACommitment: baseJoinSplit.newNoteACommitment,
50
+ newNoteBCommitment: baseJoinSplit.newNoteBCommitment,
51
+ commitmentTreeRoot: baseJoinSplit.commitmentTreeRoot,
52
+ publicSpend: baseJoinSplit.publicSpend,
53
+ nullifierA: baseJoinSplit.nullifierA,
54
+ nullifierB: baseJoinSplit.nullifierB,
55
+ senderCommitment,
56
+ joinSplitInfoCommitment,
57
+ opDigest,
58
+ pubEncododedAssetAddrWithSignBits: proofInputs.pubEncodedAssetAddrWithSignBits,
59
+ pubEncodedAssetID: proofInputs.pubEncodedAssetId,
60
+ refundAddrH1CompressedY: refundAddrH1CompressedY,
61
+ refundAddrH2CompressedY: refundAddrH2CompressedY,
62
+ },
63
+ });
64
+ throw new Error(`snarkjs generated public input differs from precomputed ones`);
65
+ }
66
+ if (opts?.debug) {
67
+ console.log("successfully generated proofs", {
68
+ proofWithPublicSignals: proof,
69
+ });
70
+ }
71
+ const solidityProof = (0, core_1.packToSolidityProof)(proof.proof);
72
+ return {
73
+ proof: solidityProof,
74
+ senderCommitment,
75
+ joinSplitInfoCommitment,
76
+ ...baseJoinSplit,
77
+ };
78
+ }
79
+ //# sourceMappingURL=proveOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proveOperation.js","sourceRoot":"","sources":["../../src/proveOperation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PreSignOperation, SignedOperation, NocturneSigner } from "@zill-protocol/core";
2
+ export declare function signOperation(signer: NocturneSigner, op: PreSignOperation): SignedOperation;
3
+ //# sourceMappingURL=signOperation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.d.ts","sourceRoot":"","sources":["../../src/signOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,gBAAgB,EAEhB,eAAe,EAEf,cAAc,EAIf,MAAM,qBAAqB,CAAC;AAE7B,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,gBAAgB,GACnB,eAAe,CAkCjB"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signOperation = signOperation;
4
+ const core_1 = require("@zill-protocol/core");
5
+ function signOperation(signer, op) {
6
+ const opDigest = core_1.OperationTrait.computeDigest(core_1.OperationTrait.toSignable(op));
7
+ const opSig = signer.sign(opDigest);
8
+ const joinSplits = op.joinSplits.map((joinSplit) => makePreProofJoinSplit(signer, joinSplit, opDigest, opSig));
9
+ const { networkInfo, actions, refundAddr, refunds, encodedGasAsset, gasAssetRefundThreshold, executionGasLimit, gasPrice, deadline, atomicActions, } = op;
10
+ return {
11
+ networkInfo,
12
+ joinSplits,
13
+ refundAddr,
14
+ refunds,
15
+ actions,
16
+ encodedGasAsset,
17
+ gasAssetRefundThreshold,
18
+ executionGasLimit,
19
+ gasPrice,
20
+ deadline,
21
+ atomicActions,
22
+ };
23
+ }
24
+ function makePreProofJoinSplit(signer, preProofJoinSplit, opDigest, opSig) {
25
+ const { merkleProofA, merkleProofB, oldNoteA, oldNoteB, newNoteA, newNoteB, receiver, refundAddr, senderCommitment, publicSpend, ...baseJoinSplit } = preProofJoinSplit;
26
+ const { c, z } = opSig;
27
+ const { x, y } = signer.spendPk;
28
+ const encodedOldNoteA = core_1.NoteTrait.encode(oldNoteA);
29
+ const encodedOldNoteB = core_1.NoteTrait.encode(oldNoteB);
30
+ const encodedNewNoteA = core_1.NoteTrait.encode(newNoteA);
31
+ const encodedNewNoteB = core_1.NoteTrait.encode(newNoteB);
32
+ // if publicSpend is 0, hide the asset info by masking it to 0
33
+ const pubEncodedAssetAddrWithSignBits = (0, core_1.encodeEncodedAssetAddrWithSignBitsPI)(publicSpend === 0n ? 0n : encodedNewNoteA.encodedAssetAddr, refundAddr);
34
+ const pubEncodedAssetId = publicSpend === 0n ? 0n : encodedNewNoteA.encodedAssetId;
35
+ const proofInputs = {
36
+ vk: signer.vk,
37
+ vkNonce: signer.vkNonce,
38
+ spendPk: [x, y],
39
+ c,
40
+ z,
41
+ merkleProofA,
42
+ merkleProofB,
43
+ operationDigest: opDigest,
44
+ oldNoteA: encodedOldNoteA,
45
+ oldNoteB: encodedOldNoteB,
46
+ newNoteA: encodedNewNoteA,
47
+ newNoteB: encodedNewNoteB,
48
+ refundAddr,
49
+ pubEncodedAssetAddrWithSignBits,
50
+ pubEncodedAssetId,
51
+ };
52
+ return {
53
+ opDigest,
54
+ proofInputs,
55
+ refundAddr,
56
+ senderCommitment,
57
+ publicSpend,
58
+ ...baseJoinSplit,
59
+ };
60
+ }
61
+ //# sourceMappingURL=signOperation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signOperation.js","sourceRoot":"","sources":["../../src/signOperation.ts"],"names":[],"mappings":";;AAaA,sCAqCC;AAlDD,8CAW6B;AAE7B,SAAgB,aAAa,CAC3B,MAAsB,EACtB,EAAoB;IAEpB,MAAM,QAAQ,GAAG,qBAAc,CAAC,aAAa,CAAC,qBAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAwB,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACtE,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAC1D,CAAC;IAEF,MAAM,EACJ,WAAW,EACX,OAAO,EACP,UAAU,EACV,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,GAAG,EAAE,CAAC;IAEP,OAAO;QACL,WAAW;QACX,UAAU;QACV,UAAU;QACV,OAAO;QACP,OAAO;QACP,eAAe;QACf,uBAAuB;QACvB,iBAAiB;QACjB,QAAQ;QACR,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAsB,EACtB,iBAAmC,EACnC,QAAgB,EAChB,KAAwB;IAExB,MAAM,EACJ,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,GAAG,aAAa,EACjB,GAAG,iBAAiB,CAAC;IAEtB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAEvB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhC,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEnD,8DAA8D;IAC9D,MAAM,+BAA+B,GAAG,IAAA,2CAAoC,EAC1E,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,EAC1D,UAAU,CACX,CAAC;IACF,MAAM,iBAAiB,GACrB,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC;IAE3D,MAAM,WAAW,GAAoB;QACnC,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QACD,CAAC;QACD,YAAY;QACZ,YAAY;QACZ,eAAe,EAAE,QAAQ;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,eAAe;QACzB,UAAU;QACV,+BAA+B;QAC/B,iBAAiB;KAClB,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,WAAW;QACX,UAAU;QACV,gBAAgB;QAChB,WAAW;QACX,GAAG,aAAa;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { Address, CanonAddrRegistryEntry, PreSignOperation, SignedOperation } from "@zill-protocol/core";
2
+ import { CanonAddress, NocturneSignature, SpendPk, ViewingKey } from "@zill-protocol/crypto";
3
+ import { OperationWithMetadata } from "./types";
4
+ export interface SetSpendKeyMethod {
5
+ method: "nocturne_setSpendKey";
6
+ params: {
7
+ spendKey: string;
8
+ eoaAddress: Address;
9
+ };
10
+ return: string | null;
11
+ }
12
+ export interface SignCanonAddrRegistryEntryMethod {
13
+ method: "nocturne_signCanonAddrRegistryEntry";
14
+ params: {
15
+ entry: CanonAddrRegistryEntry;
16
+ chainId: bigint;
17
+ registryAddress: string;
18
+ };
19
+ return: {
20
+ canonAddr: CanonAddress;
21
+ digest: bigint;
22
+ sig: NocturneSignature;
23
+ spendPubkey: SpendPk;
24
+ vkNonce: bigint;
25
+ };
26
+ }
27
+ export interface SignOperationMethod {
28
+ method: "nocturne_signOperation";
29
+ params: OperationWithMetadata<PreSignOperation>;
30
+ return: SignedOperation;
31
+ }
32
+ export interface RequestSpendKeyEoaMethod {
33
+ method: "nocturne_requestSpendKeyEoa";
34
+ params: null;
35
+ return: Address | null;
36
+ }
37
+ export interface RequestViewingKeyMethodResponse {
38
+ vk: ViewingKey;
39
+ vkNonce: bigint;
40
+ }
41
+ export interface RequestViewingKeyMethod {
42
+ method: "nocturne_requestViewingKey";
43
+ params: null;
44
+ return: RequestViewingKeyMethodResponse;
45
+ }
46
+ export type RpcRequestMethod = SetSpendKeyMethod | SignCanonAddrRegistryEntryMethod | SignOperationMethod | RequestViewingKeyMethod | RequestSpendKeyEoaMethod;
47
+ export type SnapRpcRequestHandlerArgs = {
48
+ origin: string;
49
+ request: RpcRequestMethod;
50
+ };
51
+ export type SnapRpcRequestHandler = (args: SnapRpcRequestHandlerArgs) => Promise<RpcRequestMethod["return"]>;
52
+ export declare function assertAllRpcMethodsHandled(request: never): never;
53
+ export declare function parseObjectValues(params: object): object;
54
+ export declare function stringifyObjectValues(params: object): object;
55
+ //# sourceMappingURL=snapJsonRpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapJsonRpc.d.ts","sourceRoot":"","sources":["../../src/snapJsonRpc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,OAAO,EACP,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,qCAAqC,CAAC;IAC9C,MAAM,EAAE;QACN,KAAK,EAAE,sBAAsB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,SAAS,EAAE,YAAY,CAAC;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,iBAAiB,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC9C,EAAE,EAAE,UAAU,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,4BAA4B,CAAC;IACrC,MAAM,EAAE,IAAI,CAAC;IACb,MAAM,EAAE,+BAA+B,CAAC;CACzC;AAED,MAAM,MAAM,gBAAgB,GACxB,iBAAiB,GACjB,gCAAgC,GAChC,mBAAmB,GACnB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAClC,IAAI,EAAE,yBAAyB,KAC5B,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEzC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK,CAGhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWxD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW5D"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.assertAllRpcMethodsHandled = assertAllRpcMethodsHandled;
37
+ exports.parseObjectValues = parseObjectValues;
38
+ exports.stringifyObjectValues = stringifyObjectValues;
39
+ const JSON = __importStar(require("bigint-json-serialization"));
40
+ function assertAllRpcMethodsHandled(request) {
41
+ // @ts-expect-error on request.method—if this fires at runtime, we want to see the method name
42
+ throw new Error("Snap JSON RPC method not handled: " + request.method);
43
+ }
44
+ function parseObjectValues(params) {
45
+ return Object.fromEntries(Object.entries(params).map(([key, value]) => {
46
+ const parsedValue = JSON.parse(value);
47
+ if (parsedValue && parsedValue.__primitive) {
48
+ return [key, parsedValue.value ?? undefined];
49
+ }
50
+ else {
51
+ return [key, parsedValue];
52
+ }
53
+ }));
54
+ }
55
+ function stringifyObjectValues(params) {
56
+ return Object.fromEntries(Object.entries(params).map(([key, value]) => [
57
+ key,
58
+ JSON.stringify(typeof value === "object"
59
+ ? value
60
+ : { __primitive: true, value: value ?? null }),
61
+ ]));
62
+ }
63
+ //# sourceMappingURL=snapJsonRpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapJsonRpc.js","sourceRoot":"","sources":["../../src/snapJsonRpc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EA,gEAGC;AAED,8CAWC;AAED,sDAWC;AAhGD,gEAAkD;AAmElD,SAAgB,0BAA0B,CAAC,OAAc;IACvD,8FAA8F;IAC9F,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3C,GAAG;QACH,IAAI,CAAC,SAAS,CACZ,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAChD;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { NocturneViewer } from "@zill-protocol/crypto";
2
+ import { NocturneDB } from "./NocturneDB";
3
+ import { PendingOutputRecord } from "./types";
4
+ import { SDKSyncAdapter, SparseMerkleProver } from "@zill-protocol/core";
5
+ export interface SyncOpts {
6
+ endBlock?: number;
7
+ timeoutSeconds?: number;
8
+ timing?: boolean;
9
+ finalityBlocks?: number;
10
+ debug?: boolean;
11
+ onPendingOutputsConfirmed?: (outputs: PendingOutputRecord[]) => void;
12
+ }
13
+ export interface SyncDeps {
14
+ viewer: NocturneViewer;
15
+ }
16
+ export declare function syncSDK({ viewer }: SyncDeps, adapter: SDKSyncAdapter, db: NocturneDB, merkle: SparseMerkleProver, opts?: SyncOpts): Promise<number | undefined>;
17
+ //# sourceMappingURL=syncSDK.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncSDK.d.ts","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAOL,cAAc,EAGd,kBAAkB,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB;AAGD,wBAAsB,OAAO,CAC3B,EAAE,MAAM,EAAE,EAAE,QAAQ,EACpB,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,kBAAkB,EAC1B,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8F7B"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncSDK = syncSDK;
4
+ const core_1 = require("@zill-protocol/core");
5
+ // Sync SDK, returning last synced merkle index of last state diff
6
+ async function syncSDK({ viewer }, adapter, db, merkle, opts) {
7
+ const currTotalEntityIndex = await db.currentTotalEntityIndex();
8
+ const startTotalEntityIndex = currTotalEntityIndex
9
+ ? currTotalEntityIndex + 1n
10
+ : 0n;
11
+ const currentBlock = await adapter.getLatestIndexedBlock();
12
+ const endTotalEntityIndex = core_1.TotalEntityIndexTrait.fromBlockNumber(opts?.endBlock ?? currentBlock);
13
+ const range = {
14
+ startTotalEntityIndex,
15
+ endTotalEntityIndex,
16
+ startBlock: core_1.TotalEntityIndexTrait.toComponents(startTotalEntityIndex)
17
+ .blockNumber,
18
+ endBlock: currentBlock,
19
+ };
20
+ if (opts?.debug) {
21
+ console.log(`[syncSDK] syncing SDK from totalEntityIndex ${startTotalEntityIndex} (block ${range.startBlock}) to ${endTotalEntityIndex} (block ${currentBlock})...`, { range });
22
+ }
23
+ const newDiffs = adapter.iterStateDiffs(startTotalEntityIndex, {
24
+ endTotalEntityIndex,
25
+ timing: opts?.timing,
26
+ finalityBlocks: opts?.finalityBlocks,
27
+ });
28
+ // decrypt notes and compute nullifiers
29
+ const diffHistogram = opts?.timing
30
+ ? new core_1.Histogram("decryptStateDiff time (ms) per note")
31
+ : undefined;
32
+ const diffs = newDiffs.map((diff) => {
33
+ const [decrypted, time] = (0, core_1.timed)(() => decryptStateDiff(viewer, diff));
34
+ diffHistogram?.sample(time / diff.notes.length);
35
+ return decrypted;
36
+ });
37
+ let latestSyncedMerkleIndex = await db.latestSyncedMerkleIndex();
38
+ if (opts?.timeoutSeconds) {
39
+ setTimeout(() => diffs.close(), opts.timeoutSeconds * 1000);
40
+ }
41
+ // apply diffs
42
+ const applyStateDiffHistogram = opts?.timing
43
+ ? new core_1.Histogram("applyStateDiff time (ms) per note or commitment")
44
+ : undefined;
45
+ const updateMerkleHistogram = opts?.timing
46
+ ? new core_1.Histogram("updateMerkle time (ms) per note or commitment")
47
+ : undefined;
48
+ for await (const diff of diffs.iter) {
49
+ if (opts?.debug) {
50
+ console.log("[syncSDK] diff latestNewlySyncedMerkleIndex", diff.latestNewlySyncedMerkleIndex);
51
+ }
52
+ // update notes in DB
53
+ const [nfIndices, nfTime] = await (0, core_1.timedAsync)(() => db.applyStateDiff(diff, opts?.onPendingOutputsConfirmed
54
+ ? { onPendingOutputsConfirmed: opts.onPendingOutputsConfirmed }
55
+ : undefined));
56
+ applyStateDiffHistogram?.sample(nfTime / diff.notesAndCommitments.length);
57
+ latestSyncedMerkleIndex = await db.latestSyncedMerkleIndex();
58
+ // TODO: deal with case where we have failure between applying state diff to DB and merkle being persisted
59
+ if (diff.latestCommittedMerkleIndex) {
60
+ const [_, time] = await (0, core_1.timedAsync)(() => updateMerkle(merkle, diff.latestCommittedMerkleIndex, diff.notesAndCommitments.map((n) => n.inner), nfIndices, opts?.debug ?? false));
61
+ updateMerkleHistogram?.sample(time / diff.notesAndCommitments.length);
62
+ }
63
+ }
64
+ diffHistogram?.print();
65
+ applyStateDiffHistogram?.print();
66
+ updateMerkleHistogram?.print();
67
+ return latestSyncedMerkleIndex;
68
+ }
69
+ async function updateMerkle(merkle, latestCommittedMerkleIndex, notesAndCommitments, nfIndices, logWarnings) {
70
+ const ordered = [...notesAndCommitments].sort((a, b) => a.merkleIndex - b.merkleIndex);
71
+ const currentCount = merkle.count();
72
+ const filtered = ordered.filter((noteOrCommitment) => noteOrCommitment.merkleIndex >= currentCount);
73
+ if (logWarnings && filtered.length !== ordered.length) {
74
+ console.warn("[syncSDK] skipping stale leaves", {
75
+ currentCount,
76
+ skipped: ordered.length - filtered.length,
77
+ first: ordered[0]?.merkleIndex,
78
+ last: ordered[ordered.length - 1]?.merkleIndex,
79
+ });
80
+ }
81
+ // add all new leaves as uncommitted leaves
82
+ const batches = (0, core_1.consecutiveChunks)(filtered, (noteOrCommitment) => noteOrCommitment.merkleIndex);
83
+ for (const batch of batches) {
84
+ const startIndex = batch[0].merkleIndex;
85
+ const leaves = [];
86
+ const includes = [];
87
+ for (const noteOrCommitment of batch) {
88
+ if (core_1.NoteTrait.isCommitment(noteOrCommitment)) {
89
+ leaves.push(noteOrCommitment.noteCommitment);
90
+ includes.push(false);
91
+ }
92
+ else {
93
+ leaves.push(core_1.NoteTrait.toCommitment(noteOrCommitment));
94
+ includes.push(true);
95
+ }
96
+ }
97
+ merkle.insertBatchUncommitted(startIndex, leaves, includes);
98
+ }
99
+ // commit up to latest subtree commit
100
+ merkle.commitUpToIndex(latestCommittedMerkleIndex);
101
+ // mark nullified ones for pruning
102
+ for (const index of nfIndices) {
103
+ try {
104
+ merkle.markForPruning(index);
105
+ }
106
+ catch (err) {
107
+ if (logWarnings) {
108
+ console.warn("[syncSDK] skip pruning missing leaf", {
109
+ index,
110
+ error: err instanceof Error ? err.message : String(err),
111
+ });
112
+ }
113
+ }
114
+ }
115
+ // persist merkle to underlying KV store
116
+ await merkle.persist();
117
+ }
118
+ function decryptStateDiff(viewer, { notes, nullifiers, latestCommittedMerkleIndex, latestCommitTei, latestNewlySyncedMerkleIndex, totalEntityIndex, }) {
119
+ const notesAndCommitments = notes.map(({ inner, totalEntityIndex }) => {
120
+ const note = inner;
121
+ const isEncrypted = core_1.NoteTrait.isEncryptedNote(note);
122
+ if (isEncrypted) {
123
+ // if it's encrypted, attempt to decrypt.
124
+ // if it succeeds, then return the decrypted note
125
+ // if it fails, assume it's not ours and just the commitment and merkle index
126
+ try {
127
+ const { merkleIndex, commitment, ...encryptedNote } = note;
128
+ // TODO: come up with a way to handle sender mismatches when we implement history proofs
129
+ const includedNote = {
130
+ ...(0, core_1.decryptNote)(viewer, encryptedNote),
131
+ merkleIndex,
132
+ };
133
+ const nullifier = core_1.NoteTrait.createNullifier(viewer, includedNote);
134
+ const res = { ...includedNote, nullifier };
135
+ return {
136
+ inner: res,
137
+ totalEntityIndex,
138
+ };
139
+ }
140
+ catch (err) {
141
+ const encryptedNote = note;
142
+ const { commitment, merkleIndex } = encryptedNote;
143
+ const nc = {
144
+ noteCommitment: commitment,
145
+ merkleIndex,
146
+ };
147
+ return {
148
+ inner: nc,
149
+ totalEntityIndex,
150
+ };
151
+ }
152
+ }
153
+ else {
154
+ // if it's not encrypted, check if it's ours.
155
+ // if it is, then return it
156
+ // if it's not, return only the commitment
157
+ const includedNote = note;
158
+ const isOwn = viewer.isOwnAddress(includedNote.owner);
159
+ if (isOwn) {
160
+ const nullifier = core_1.NoteTrait.createNullifier(viewer, includedNote);
161
+ const res = { ...includedNote, nullifier };
162
+ return {
163
+ inner: res,
164
+ totalEntityIndex,
165
+ };
166
+ }
167
+ else {
168
+ const nc = {
169
+ noteCommitment: core_1.NoteTrait.toCommitment(includedNote),
170
+ merkleIndex: includedNote.merkleIndex,
171
+ };
172
+ return {
173
+ inner: nc,
174
+ totalEntityIndex,
175
+ };
176
+ }
177
+ }
178
+ });
179
+ return {
180
+ notesAndCommitments,
181
+ nullifiers,
182
+ latestCommittedMerkleIndex,
183
+ latestCommitTei,
184
+ latestNewlySyncedMerkleIndex,
185
+ totalEntityIndex,
186
+ };
187
+ }
188
+ //# sourceMappingURL=syncSDK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncSDK.js","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { Address, Asset, CanonAddress, Operation, OperationStatus } from "@zill-protocol/core";
2
+ export type OpWithMetadata<O> = {
3
+ op: O;
4
+ metadata: OperationMetadata;
5
+ };
6
+ export interface OptimisticNFRecord {
7
+ nullifier: bigint;
8
+ expirationDate: number;
9
+ }
10
+ export type OpHistoryRecord = {
11
+ digest: bigint;
12
+ metadata: OperationMetadata;
13
+ spentNoteMerkleIndices: number[];
14
+ status?: OperationStatus;
15
+ createdAt: number;
16
+ lastModified: number;
17
+ };
18
+ export interface OperationMetadata {
19
+ items: OperationMetadataItem[];
20
+ }
21
+ export type PendingOutputRecord = {
22
+ commitment: bigint;
23
+ asset: Asset;
24
+ value: bigint;
25
+ createdAt: number;
26
+ opDigest?: bigint;
27
+ expectedInsertionIndex?: number;
28
+ };
29
+ export type OperationMetadataItem = ConfidentialPaymentMetadata | ActionMetadata;
30
+ export type ActionMetadata = {
31
+ type: "Action";
32
+ actionType: "Transfer";
33
+ recipientAddress: Address;
34
+ erc20Address: Address;
35
+ amount: bigint;
36
+ } | {
37
+ type: "Action";
38
+ actionType: "Weth To Wsteth";
39
+ amount: bigint;
40
+ } | {
41
+ type: "Action";
42
+ actionType: "Transfer ETH";
43
+ recipientAddress: Address;
44
+ amount: bigint;
45
+ };
46
+ export interface ConfidentialPaymentMetadata {
47
+ type: "ConfidentialPayment";
48
+ recipient: CanonAddress;
49
+ asset: Asset;
50
+ amount: bigint;
51
+ }
52
+ export interface OpDigestWithMetadata {
53
+ opDigest: bigint;
54
+ metadata?: OperationMetadata;
55
+ }
56
+ export interface OperationWithMetadata<T extends Operation> {
57
+ op: T;
58
+ metadata?: OperationMetadata;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EACL,YAAY,EACZ,SAAS,EACT,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,iBAAiB,CAAC;IAE5B,sBAAsB,EAAE,MAAM,EAAE,CAAC;IAEjC,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B,2BAA2B,GAC3B,cAAc,CAAC;AAEnB,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEN,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,YAAY,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,SAAS;IACxD,EAAE,EAAE,CAAC,CAAC;IACN,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function chainIdToNetworkName(chainId: bigint): string;
2
+ export declare const OPTIMISTIC_RECORD_TTL: number;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAuB,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPTIMISTIC_RECORD_TTL = void 0;
4
+ exports.chainIdToNetworkName = chainIdToNetworkName;
5
+ function chainIdToNetworkName(chainId) {
6
+ switch (chainId) {
7
+ case 1n:
8
+ return "mainnet";
9
+ case 5n:
10
+ return "goerli";
11
+ case 11155111n:
12
+ return "sepolia";
13
+ case 31337n:
14
+ return "localhost";
15
+ default:
16
+ throw new Error(`unsupported chainId: ${chainId}`);
17
+ }
18
+ }
19
+ exports.OPTIMISTIC_RECORD_TTL = 30 * 60 * 1000; // 30 minutes
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":";;;AAAA,oDAaC;AAbD,SAAgB,oBAAoB,CAAC,OAAe;IAClD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,EAAE;YACL,OAAO,SAAS,CAAC;QACnB,KAAK,EAAE;YACL,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAEY,QAAA,qBAAqB,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa"}
@@ -0,0 +1,3 @@
1
+ export * from "./constants";
2
+ export * from "./misc";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}