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
@@ -0,0 +1,36 @@
1
+ // types/transferDetail.ts
2
+ import { type as type2 } from "arktype";
3
+
4
+ // types/utils.ts
5
+ import { type } from "arktype";
6
+ var UINT256_MAX = (1n << 256n) - 1n;
7
+ var uint256 = type("bigint").filter(
8
+ (v, ctx) => v <= UINT256_MAX && v >= 0n ? true : ctx.reject(`must be: 0n <= value <= ${UINT256_MAX}`)
9
+ );
10
+ var reBytes32 = /^0x[0-9a-fA-F]{64}$/;
11
+ var reBytes = /^0x[0-9a-fA-F]+$/;
12
+ var reAddress = /^0x[0-9a-fA-F]{40}$/;
13
+ var bytes32 = type("string").narrow(
14
+ (s) => reBytes32.test(s)
15
+ );
16
+ var bytes = type("string").narrow((s) => reBytes.test(s));
17
+ var address = type("string").narrow(
18
+ (s) => reAddress.test(s)
19
+ );
20
+
21
+ // types/transferDetail.ts
22
+ var transferDetail = type2({
23
+ to: address,
24
+ token: address,
25
+ value: uint256
26
+ });
27
+ var committedTransferDetail = type2({
28
+ to: address,
29
+ token: address,
30
+ value: uint256,
31
+ commitment: bytes32
32
+ });
33
+ export {
34
+ committedTransferDetail,
35
+ transferDetail
36
+ };
@@ -0,0 +1,52 @@
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
+ // types/utils.ts
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
23
+ UINT256_MAX: () => UINT256_MAX,
24
+ address: () => address,
25
+ bytes: () => bytes,
26
+ bytes32: () => bytes32,
27
+ uint256: () => uint256
28
+ });
29
+ module.exports = __toCommonJS(utils_exports);
30
+ var import_arktype = require("arktype");
31
+ var UINT256_MAX = (1n << 256n) - 1n;
32
+ var uint256 = (0, import_arktype.type)("bigint").filter(
33
+ (v, ctx) => v <= UINT256_MAX && v >= 0n ? true : ctx.reject(`must be: 0n <= value <= ${UINT256_MAX}`)
34
+ );
35
+ var reBytes32 = /^0x[0-9a-fA-F]{64}$/;
36
+ var reBytes = /^0x[0-9a-fA-F]+$/;
37
+ var reAddress = /^0x[0-9a-fA-F]{40}$/;
38
+ var bytes32 = (0, import_arktype.type)("string").narrow(
39
+ (s) => reBytes32.test(s)
40
+ );
41
+ var bytes = (0, import_arktype.type)("string").narrow((s) => reBytes.test(s));
42
+ var address = (0, import_arktype.type)("string").narrow(
43
+ (s) => reAddress.test(s)
44
+ );
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ UINT256_MAX,
48
+ address,
49
+ bytes,
50
+ bytes32,
51
+ uint256
52
+ });
@@ -0,0 +1,12 @@
1
+ import * as arktype_internal_variants_string_ts from 'arktype/internal/variants/string.ts';
2
+ import * as arktype from 'arktype';
3
+
4
+ declare const UINT256_MAX: bigint;
5
+ declare const uint256: arktype.BaseType<bigint, {}>;
6
+ /** 0x プレフィックス付き hex(viem `Hex` 互換のブランド) */
7
+ type Hex0x = `0x${string}`;
8
+ declare const bytes32: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
9
+ declare const bytes: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
10
+ declare const address: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
11
+
12
+ export { type Hex0x, UINT256_MAX, address, bytes, bytes32, uint256 };
@@ -0,0 +1,12 @@
1
+ import * as arktype_internal_variants_string_ts from 'arktype/internal/variants/string.ts';
2
+ import * as arktype from 'arktype';
3
+
4
+ declare const UINT256_MAX: bigint;
5
+ declare const uint256: arktype.BaseType<bigint, {}>;
6
+ /** 0x プレフィックス付き hex(viem `Hex` 互換のブランド) */
7
+ type Hex0x = `0x${string}`;
8
+ declare const bytes32: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
9
+ declare const bytes: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
10
+ declare const address: arktype_internal_variants_string_ts.StringType<`0x${string}`, {}>;
11
+
12
+ export { type Hex0x, UINT256_MAX, address, bytes, bytes32, uint256 };
@@ -0,0 +1,23 @@
1
+ // types/utils.ts
2
+ import { type } from "arktype";
3
+ var UINT256_MAX = (1n << 256n) - 1n;
4
+ var uint256 = type("bigint").filter(
5
+ (v, ctx) => v <= UINT256_MAX && v >= 0n ? true : ctx.reject(`must be: 0n <= value <= ${UINT256_MAX}`)
6
+ );
7
+ var reBytes32 = /^0x[0-9a-fA-F]{64}$/;
8
+ var reBytes = /^0x[0-9a-fA-F]+$/;
9
+ var reAddress = /^0x[0-9a-fA-F]{40}$/;
10
+ var bytes32 = type("string").narrow(
11
+ (s) => reBytes32.test(s)
12
+ );
13
+ var bytes = type("string").narrow((s) => reBytes.test(s));
14
+ var address = type("string").narrow(
15
+ (s) => reAddress.test(s)
16
+ );
17
+ export {
18
+ UINT256_MAX,
19
+ address,
20
+ bytes,
21
+ bytes32,
22
+ uint256
23
+ };
package/dist/utils.cjs ADDED
@@ -0,0 +1,123 @@
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
+ // utils.ts
21
+ var utils_exports = {};
22
+ __export(utils_exports, {
23
+ assertEip712DomainFromContractMatchesExpected: () => assertEip712DomainFromContractMatchesExpected,
24
+ assertPublicWalletSameChain: () => assertPublicWalletSameChain,
25
+ assertPublicWalletSameSupportedChain: () => assertPublicWalletSameSupportedChain,
26
+ assertSignedDomainMatchesClientAndConfig: () => assertSignedDomainMatchesClientAndConfig,
27
+ assertSignerMatchesEip712Role: () => assertSignerMatchesEip712Role,
28
+ assertTransferContractDeployed: () => assertTransferContractDeployed,
29
+ chainIdToBig: () => chainIdToBig
30
+ });
31
+ module.exports = __toCommonJS(utils_exports);
32
+
33
+ // twcConstants.ts
34
+ var EIP712_DOMAIN_NAME = "TransferWithCommitment";
35
+ var EIP712_DOMAIN_VERSION = "1";
36
+ var transferWithCommitmentAddress = "0x5C260DD537A9c23Bbd42493e59F3CeA7da2DbC71";
37
+
38
+ // utils.ts
39
+ var chainIdToBig = (id) => typeof id === "bigint" ? id : BigInt(id);
40
+ var assertPublicWalletSameChain = (publicClient, wallet) => {
41
+ const publicId = publicClient.chain?.id;
42
+ const walletId = wallet.chain?.id;
43
+ if (publicId === void 0 || walletId === void 0) {
44
+ throw new Error(
45
+ "Chain is not set on public client and/or wallet client"
46
+ );
47
+ }
48
+ if (publicId !== walletId) {
49
+ throw new Error(
50
+ `PublicClient and WalletClient chain mismatch: ${publicId} vs ${walletId}`
51
+ );
52
+ }
53
+ };
54
+ var assertPublicWalletSameSupportedChain = assertPublicWalletSameChain;
55
+ async function assertTransferContractDeployed(publicClient, contractAddress = transferWithCommitmentAddress) {
56
+ const code = await publicClient.getCode({ address: contractAddress });
57
+ if (code === void 0 || code === "0x") {
58
+ throw new Error(
59
+ `TransferWithCommitment is not deployed at ${contractAddress} on this chain (no contract code). Deploy with CREATE2 (see contracts/TWC_CREATE2.md) or switch network.`
60
+ );
61
+ }
62
+ }
63
+ function assertEip712DomainFromContractMatchesExpected(publicClient, eip712) {
64
+ const chainId = publicClient.chain?.id;
65
+ if (chainId === void 0) {
66
+ throw new Error("Chain is not set on public client");
67
+ }
68
+ const d = eip712.domain;
69
+ if (d.name !== EIP712_DOMAIN_NAME) {
70
+ throw new Error(
71
+ `Unexpected EIP-712 domain name: expected "${EIP712_DOMAIN_NAME}", got "${String(d.name)}"`
72
+ );
73
+ }
74
+ if (d.version !== EIP712_DOMAIN_VERSION) {
75
+ throw new Error(
76
+ `Unexpected EIP-712 domain version: expected "${EIP712_DOMAIN_VERSION}", got "${String(d.version)}"`
77
+ );
78
+ }
79
+ const vc = d.verifyingContract;
80
+ if (vc === void 0 || vc.toLowerCase() !== transferWithCommitmentAddress.toLowerCase()) {
81
+ throw new Error(
82
+ `Unexpected EIP-712 verifyingContract: expected ${transferWithCommitmentAddress}, got ${String(vc)}`
83
+ );
84
+ }
85
+ if (d.chainId !== void 0 && chainIdToBig(d.chainId) !== BigInt(chainId)) {
86
+ throw new Error(
87
+ `EIP-712 domain.chainId (${d.chainId}) does not match public client chain id (${chainId})`
88
+ );
89
+ }
90
+ }
91
+ var assertSignerMatchesEip712Role = (signer, messageAddress, role) => {
92
+ if (signer.toLowerCase() !== messageAddress.toLowerCase()) {
93
+ throw new Error(
94
+ `Signer account (${signer}) does not match EIP-712 message ${role} (${messageAddress})`
95
+ );
96
+ }
97
+ };
98
+ var assertSignedDomainMatchesClientAndConfig = (publicClient, domain, configuredContract) => {
99
+ const publicId = publicClient.chain?.id;
100
+ if (publicId === void 0) {
101
+ throw new Error("Chain is not set on public client");
102
+ }
103
+ if (chainIdToBig(domain.chainId) !== BigInt(publicId)) {
104
+ throw new Error(
105
+ `Signed data domain.chainId (${domain.chainId}) does not match client chain id (${publicId})`
106
+ );
107
+ }
108
+ if (domain.verifyingContract.toLowerCase() !== configuredContract.toLowerCase()) {
109
+ throw new Error(
110
+ `Signed data domain.verifyingContract (${domain.verifyingContract}) does not match transferWithCommitmentAddress (${configuredContract})`
111
+ );
112
+ }
113
+ };
114
+ // Annotate the CommonJS export names for ESM import in node:
115
+ 0 && (module.exports = {
116
+ assertEip712DomainFromContractMatchesExpected,
117
+ assertPublicWalletSameChain,
118
+ assertPublicWalletSameSupportedChain,
119
+ assertSignedDomainMatchesClientAndConfig,
120
+ assertSignerMatchesEip712Role,
121
+ assertTransferContractDeployed,
122
+ chainIdToBig
123
+ });
@@ -0,0 +1,21 @@
1
+ import { PublicClient, GetEip712DomainReturnType, WalletClient, Address, Hex } from 'viem';
2
+
3
+ declare const chainIdToBig: (id: number | bigint) => bigint;
4
+ /** Both clients must have `chain.id` set and it must match. */
5
+ declare const assertPublicWalletSameChain: (publicClient: PublicClient, wallet: WalletClient) => void;
6
+ /** @deprecated Use {@link assertPublicWalletSameChain}. */
7
+ declare const assertPublicWalletSameSupportedChain: (publicClient: PublicClient, wallet: WalletClient) => void;
8
+ declare function assertTransferContractDeployed(publicClient: PublicClient, contractAddress?: Address): Promise<void>;
9
+ declare function assertEip712DomainFromContractMatchesExpected(publicClient: PublicClient, eip712: GetEip712DomainReturnType): void;
10
+ /**
11
+ * `wallet.signTypedData` の `account` が EIP-712 メッセージの `from` または `authorizer` と一致すること。
12
+ * チェックサムの大小文字は無視する。一致しなければオンチェーンの署名検証で失敗するため、署名前に弾く。
13
+ */
14
+ declare const assertSignerMatchesEip712Role: (signer: Hex, messageAddress: Hex, role: "from" | "authorizer") => void;
15
+ /** 署名バンドルの `domain` がクライアントのチェーンおよび期待 TWC アドレスと一致すること */
16
+ declare const assertSignedDomainMatchesClientAndConfig: (publicClient: PublicClient, domain: {
17
+ chainId: number | bigint;
18
+ verifyingContract: Address;
19
+ }, configuredContract: Address) => void;
20
+
21
+ export { assertEip712DomainFromContractMatchesExpected, assertPublicWalletSameChain, assertPublicWalletSameSupportedChain, assertSignedDomainMatchesClientAndConfig, assertSignerMatchesEip712Role, assertTransferContractDeployed, chainIdToBig };
@@ -0,0 +1,21 @@
1
+ import { PublicClient, GetEip712DomainReturnType, WalletClient, Address, Hex } from 'viem';
2
+
3
+ declare const chainIdToBig: (id: number | bigint) => bigint;
4
+ /** Both clients must have `chain.id` set and it must match. */
5
+ declare const assertPublicWalletSameChain: (publicClient: PublicClient, wallet: WalletClient) => void;
6
+ /** @deprecated Use {@link assertPublicWalletSameChain}. */
7
+ declare const assertPublicWalletSameSupportedChain: (publicClient: PublicClient, wallet: WalletClient) => void;
8
+ declare function assertTransferContractDeployed(publicClient: PublicClient, contractAddress?: Address): Promise<void>;
9
+ declare function assertEip712DomainFromContractMatchesExpected(publicClient: PublicClient, eip712: GetEip712DomainReturnType): void;
10
+ /**
11
+ * `wallet.signTypedData` の `account` が EIP-712 メッセージの `from` または `authorizer` と一致すること。
12
+ * チェックサムの大小文字は無視する。一致しなければオンチェーンの署名検証で失敗するため、署名前に弾く。
13
+ */
14
+ declare const assertSignerMatchesEip712Role: (signer: Hex, messageAddress: Hex, role: "from" | "authorizer") => void;
15
+ /** 署名バンドルの `domain` がクライアントのチェーンおよび期待 TWC アドレスと一致すること */
16
+ declare const assertSignedDomainMatchesClientAndConfig: (publicClient: PublicClient, domain: {
17
+ chainId: number | bigint;
18
+ verifyingContract: Address;
19
+ }, configuredContract: Address) => void;
20
+
21
+ export { assertEip712DomainFromContractMatchesExpected, assertPublicWalletSameChain, assertPublicWalletSameSupportedChain, assertSignedDomainMatchesClientAndConfig, assertSignerMatchesEip712Role, assertTransferContractDeployed, chainIdToBig };
package/dist/utils.js ADDED
@@ -0,0 +1,90 @@
1
+ // twcConstants.ts
2
+ var EIP712_DOMAIN_NAME = "TransferWithCommitment";
3
+ var EIP712_DOMAIN_VERSION = "1";
4
+ var transferWithCommitmentAddress = "0x5C260DD537A9c23Bbd42493e59F3CeA7da2DbC71";
5
+
6
+ // utils.ts
7
+ var chainIdToBig = (id) => typeof id === "bigint" ? id : BigInt(id);
8
+ var assertPublicWalletSameChain = (publicClient, wallet) => {
9
+ const publicId = publicClient.chain?.id;
10
+ const walletId = wallet.chain?.id;
11
+ if (publicId === void 0 || walletId === void 0) {
12
+ throw new Error(
13
+ "Chain is not set on public client and/or wallet client"
14
+ );
15
+ }
16
+ if (publicId !== walletId) {
17
+ throw new Error(
18
+ `PublicClient and WalletClient chain mismatch: ${publicId} vs ${walletId}`
19
+ );
20
+ }
21
+ };
22
+ var assertPublicWalletSameSupportedChain = assertPublicWalletSameChain;
23
+ async function assertTransferContractDeployed(publicClient, contractAddress = transferWithCommitmentAddress) {
24
+ const code = await publicClient.getCode({ address: contractAddress });
25
+ if (code === void 0 || code === "0x") {
26
+ throw new Error(
27
+ `TransferWithCommitment is not deployed at ${contractAddress} on this chain (no contract code). Deploy with CREATE2 (see contracts/TWC_CREATE2.md) or switch network.`
28
+ );
29
+ }
30
+ }
31
+ function assertEip712DomainFromContractMatchesExpected(publicClient, eip712) {
32
+ const chainId = publicClient.chain?.id;
33
+ if (chainId === void 0) {
34
+ throw new Error("Chain is not set on public client");
35
+ }
36
+ const d = eip712.domain;
37
+ if (d.name !== EIP712_DOMAIN_NAME) {
38
+ throw new Error(
39
+ `Unexpected EIP-712 domain name: expected "${EIP712_DOMAIN_NAME}", got "${String(d.name)}"`
40
+ );
41
+ }
42
+ if (d.version !== EIP712_DOMAIN_VERSION) {
43
+ throw new Error(
44
+ `Unexpected EIP-712 domain version: expected "${EIP712_DOMAIN_VERSION}", got "${String(d.version)}"`
45
+ );
46
+ }
47
+ const vc = d.verifyingContract;
48
+ if (vc === void 0 || vc.toLowerCase() !== transferWithCommitmentAddress.toLowerCase()) {
49
+ throw new Error(
50
+ `Unexpected EIP-712 verifyingContract: expected ${transferWithCommitmentAddress}, got ${String(vc)}`
51
+ );
52
+ }
53
+ if (d.chainId !== void 0 && chainIdToBig(d.chainId) !== BigInt(chainId)) {
54
+ throw new Error(
55
+ `EIP-712 domain.chainId (${d.chainId}) does not match public client chain id (${chainId})`
56
+ );
57
+ }
58
+ }
59
+ var assertSignerMatchesEip712Role = (signer, messageAddress, role) => {
60
+ if (signer.toLowerCase() !== messageAddress.toLowerCase()) {
61
+ throw new Error(
62
+ `Signer account (${signer}) does not match EIP-712 message ${role} (${messageAddress})`
63
+ );
64
+ }
65
+ };
66
+ var assertSignedDomainMatchesClientAndConfig = (publicClient, domain, configuredContract) => {
67
+ const publicId = publicClient.chain?.id;
68
+ if (publicId === void 0) {
69
+ throw new Error("Chain is not set on public client");
70
+ }
71
+ if (chainIdToBig(domain.chainId) !== BigInt(publicId)) {
72
+ throw new Error(
73
+ `Signed data domain.chainId (${domain.chainId}) does not match client chain id (${publicId})`
74
+ );
75
+ }
76
+ if (domain.verifyingContract.toLowerCase() !== configuredContract.toLowerCase()) {
77
+ throw new Error(
78
+ `Signed data domain.verifyingContract (${domain.verifyingContract}) does not match transferWithCommitmentAddress (${configuredContract})`
79
+ );
80
+ }
81
+ };
82
+ export {
83
+ assertEip712DomainFromContractMatchesExpected,
84
+ assertPublicWalletSameChain,
85
+ assertPublicWalletSameSupportedChain,
86
+ assertSignedDomainMatchesClientAndConfig,
87
+ assertSignerMatchesEip712Role,
88
+ assertTransferContractDeployed,
89
+ chainIdToBig
90
+ };