@rhinestone/sdk 1.4.1 → 1.5.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 (131) hide show
  1. package/README.md +89 -1
  2. package/dist/src/accounts/index.d.ts +1 -0
  3. package/dist/src/accounts/index.d.ts.map +1 -1
  4. package/dist/src/accounts/index.js +8 -2
  5. package/dist/src/accounts/json-rpc/providers.js +1 -1
  6. package/dist/src/accounts/signing/common.d.ts +8 -2
  7. package/dist/src/accounts/signing/common.d.ts.map +1 -1
  8. package/dist/src/auth/provider.d.ts +7 -0
  9. package/dist/src/auth/provider.d.ts.map +1 -0
  10. package/dist/src/auth/provider.js +41 -0
  11. package/dist/src/execution/index.d.ts +3 -2
  12. package/dist/src/execution/index.d.ts.map +1 -1
  13. package/dist/src/execution/index.js +11 -9
  14. package/dist/src/execution/utils.d.ts +7 -2
  15. package/dist/src/execution/utils.d.ts.map +1 -1
  16. package/dist/src/execution/utils.js +109 -20
  17. package/dist/src/index.d.ts +3 -3
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +6 -5
  20. package/dist/src/jwt-server/digest.d.ts +11 -0
  21. package/dist/src/jwt-server/digest.d.ts.map +1 -0
  22. package/dist/src/jwt-server/digest.js +22 -0
  23. package/dist/src/jwt-server/express.d.ts +16 -0
  24. package/dist/src/jwt-server/express.d.ts.map +1 -0
  25. package/dist/src/jwt-server/express.js +24 -0
  26. package/dist/src/jwt-server/handlers.d.ts +10 -0
  27. package/dist/src/jwt-server/handlers.d.ts.map +1 -0
  28. package/dist/src/jwt-server/handlers.js +41 -0
  29. package/dist/src/jwt-server/index.d.ts +8 -0
  30. package/dist/src/jwt-server/index.d.ts.map +1 -0
  31. package/dist/src/jwt-server/index.js +18 -0
  32. package/dist/src/jwt-server/jcs.d.ts +12 -0
  33. package/dist/src/jwt-server/jcs.d.ts.map +1 -0
  34. package/dist/src/jwt-server/jcs.js +60 -0
  35. package/dist/src/jwt-server/signer.d.ts +18 -0
  36. package/dist/src/jwt-server/signer.d.ts.map +1 -0
  37. package/dist/src/jwt-server/signer.js +71 -0
  38. package/dist/src/jwt-server/sponsorship.d.ts +19 -0
  39. package/dist/src/jwt-server/sponsorship.d.ts.map +1 -0
  40. package/dist/src/jwt-server/sponsorship.js +56 -0
  41. package/dist/src/jwt-server/web.d.ts +4 -0
  42. package/dist/src/jwt-server/web.d.ts.map +1 -0
  43. package/dist/src/jwt-server/web.js +27 -0
  44. package/dist/src/modules/validators/index.d.ts +2 -2
  45. package/dist/src/modules/validators/index.d.ts.map +1 -1
  46. package/dist/src/modules/validators/index.js +4 -1
  47. package/dist/src/modules/validators/policies/claim/permit2.d.ts +55 -0
  48. package/dist/src/modules/validators/policies/claim/permit2.d.ts.map +1 -0
  49. package/dist/src/modules/validators/policies/claim/permit2.js +239 -0
  50. package/dist/src/modules/validators/policies/claim/types.d.ts +12 -0
  51. package/dist/src/modules/validators/policies/claim/types.d.ts.map +1 -0
  52. package/dist/src/modules/validators/policies/claim/types.js +18 -0
  53. package/dist/src/modules/validators/smart-sessions.d.ts +15 -4
  54. package/dist/src/modules/validators/smart-sessions.d.ts.map +1 -1
  55. package/dist/src/modules/validators/smart-sessions.js +63 -19
  56. package/dist/src/orchestrator/client.d.ts +9 -4
  57. package/dist/src/orchestrator/client.d.ts.map +1 -1
  58. package/dist/src/orchestrator/client.js +29 -17
  59. package/dist/src/orchestrator/consts.d.ts +3 -2
  60. package/dist/src/orchestrator/consts.d.ts.map +1 -1
  61. package/dist/src/orchestrator/consts.js +4 -2
  62. package/dist/src/orchestrator/index.d.ts +4 -3
  63. package/dist/src/orchestrator/index.d.ts.map +1 -1
  64. package/dist/src/orchestrator/index.js +2 -2
  65. package/dist/src/orchestrator/registry.d.ts.map +1 -1
  66. package/dist/src/orchestrator/registry.js +5 -1
  67. package/dist/src/orchestrator/types.d.ts +6 -1
  68. package/dist/src/orchestrator/types.d.ts.map +1 -1
  69. package/dist/src/types.d.ts +64 -3
  70. package/dist/src/types.d.ts.map +1 -1
  71. package/package.json +18 -4
  72. package/dist/src/accounts/index.test.d.ts +0 -2
  73. package/dist/src/accounts/index.test.d.ts.map +0 -1
  74. package/dist/src/accounts/index.test.js +0 -33
  75. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  76. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  77. package/dist/src/accounts/json-rpc/index.test.js +0 -35
  78. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  79. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  80. package/dist/src/accounts/json-rpc/providers.test.js +0 -43
  81. package/dist/src/accounts/kernel.test.d.ts +0 -2
  82. package/dist/src/accounts/kernel.test.d.ts.map +0 -1
  83. package/dist/src/accounts/kernel.test.js +0 -132
  84. package/dist/src/accounts/nexus.test.d.ts +0 -2
  85. package/dist/src/accounts/nexus.test.d.ts.map +0 -1
  86. package/dist/src/accounts/nexus.test.js +0 -118
  87. package/dist/src/accounts/safe.test.d.ts +0 -2
  88. package/dist/src/accounts/safe.test.d.ts.map +0 -1
  89. package/dist/src/accounts/safe.test.js +0 -168
  90. package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
  91. package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
  92. package/dist/src/accounts/signing/passkeys.test.js +0 -88
  93. package/dist/src/accounts/startale.test.d.ts +0 -2
  94. package/dist/src/accounts/startale.test.d.ts.map +0 -1
  95. package/dist/src/accounts/startale.test.js +0 -189
  96. package/dist/src/accounts/utils.test.d.ts +0 -2
  97. package/dist/src/accounts/utils.test.d.ts.map +0 -1
  98. package/dist/src/accounts/utils.test.js +0 -49
  99. package/dist/src/actions/ecdsa.test.d.ts +0 -2
  100. package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
  101. package/dist/src/actions/ecdsa.test.js +0 -99
  102. package/dist/src/actions/passkeys.test.d.ts +0 -2
  103. package/dist/src/actions/passkeys.test.d.ts.map +0 -1
  104. package/dist/src/actions/passkeys.test.js +0 -54
  105. package/dist/src/actions/recovery.test.d.ts +0 -2
  106. package/dist/src/actions/recovery.test.d.ts.map +0 -1
  107. package/dist/src/actions/recovery.test.js +0 -168
  108. package/dist/src/execution/utils.test.d.ts +0 -2
  109. package/dist/src/execution/utils.test.d.ts.map +0 -1
  110. package/dist/src/execution/utils.test.js +0 -205
  111. package/dist/src/modules/index.test.d.ts +0 -2
  112. package/dist/src/modules/index.test.d.ts.map +0 -1
  113. package/dist/src/modules/index.test.js +0 -81
  114. package/dist/src/modules/validators/core.test.d.ts +0 -2
  115. package/dist/src/modules/validators/core.test.d.ts.map +0 -1
  116. package/dist/src/modules/validators/core.test.js +0 -101
  117. package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
  118. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
  119. package/dist/src/modules/validators/smart-sessions.test.js +0 -61
  120. package/dist/src/orchestrator/registry.test.d.ts +0 -2
  121. package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
  122. package/dist/src/orchestrator/registry.test.js +0 -154
  123. package/dist/src/utils/index.test.d.ts +0 -2
  124. package/dist/src/utils/index.test.d.ts.map +0 -1
  125. package/dist/src/utils/index.test.js +0 -42
  126. package/dist/test/consts.d.ts +0 -10
  127. package/dist/test/consts.d.ts.map +0 -1
  128. package/dist/test/consts.js +0 -22
  129. package/dist/test/utils/utils.d.ts +0 -5
  130. package/dist/test/utils/utils.d.ts.map +0 -1
  131. package/dist/test/utils/utils.js +0 -20
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const viem_1 = require("viem");
4
- const vitest_1 = require("vitest");
5
- const consts_1 = require("../../../test/consts");
6
- const common_1 = require("../common");
7
- const core_1 = require("./core");
8
- (0, vitest_1.describe)('Validators Core', () => {
9
- (0, vitest_1.describe)('Validator', () => {
10
- (0, vitest_1.test)('ECDSA: single address', () => {
11
- const validator = (0, core_1.getValidator)({
12
- type: 'ecdsa',
13
- accounts: [consts_1.accountA],
14
- });
15
- (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
16
- (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
17
- (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
18
- (0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
19
- });
20
- (0, vitest_1.test)('ECDSA: two addresses', () => {
21
- const validator = (0, core_1.getValidator)({
22
- type: 'ecdsa',
23
- accounts: [consts_1.accountA, consts_1.accountB],
24
- });
25
- (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
26
- (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
27
- (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
28
- (0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
29
- });
30
- (0, vitest_1.test)('ECDSA: three addresses, custom threshold', () => {
31
- const validator = (0, core_1.getValidator)({
32
- type: 'ecdsa',
33
- accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
34
- threshold: 2,
35
- });
36
- (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
37
- (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
38
- (0, vitest_1.expect)(validator.address).toEqual('0x000000000013fdb5234e4e3162a810f54d9f7e98');
39
- (0, vitest_1.expect)(validator.initData).toEqual('0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000c27b7578151c5ef713c62c65db09763d57ac3596000000000000000000000000f6c02c78ded62973b43bfa523b247da099486936');
40
- });
41
- (0, vitest_1.test)('Passkey', () => {
42
- const validator = (0, core_1.getValidator)({
43
- type: 'passkey',
44
- accounts: [consts_1.passkeyAccount],
45
- });
46
- (0, vitest_1.expect)(validator.type).toEqual(common_1.MODULE_TYPE_ID_VALIDATOR);
47
- (0, vitest_1.expect)((0, viem_1.isAddress)(validator.address)).toEqual(true);
48
- (0, vitest_1.expect)(validator.address).toEqual('0x0000000000578c4cb0e472a5462da43c495c3f33');
49
- (0, vitest_1.expect)(validator.initData).toEqual('0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d10000000000000000000000000000000000000000000000000000000000000000');
50
- });
51
- });
52
- (0, vitest_1.describe)('Mock Signature', () => {
53
- (0, vitest_1.test)('ECDSA: single address', () => {
54
- const signature = (0, core_1.getMockSignature)({
55
- type: 'ecdsa',
56
- accounts: [consts_1.accountA],
57
- });
58
- (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(65);
59
- });
60
- (0, vitest_1.test)('ECDSA: multiple addresses', () => {
61
- const signature = (0, core_1.getMockSignature)({
62
- type: 'ecdsa',
63
- accounts: [consts_1.accountA, consts_1.accountB, consts_1.accountC],
64
- });
65
- (0, vitest_1.expect)((0, viem_1.size)(signature)).toEqual(3 * 65);
66
- });
67
- (0, vitest_1.test)('Passkey', () => {
68
- const signature = (0, core_1.getMockSignature)({
69
- type: 'passkey',
70
- accounts: [consts_1.passkeyAccount],
71
- });
72
- // Should have the proper schema
73
- (0, viem_1.decodeAbiParameters)([
74
- {
75
- type: 'bytes',
76
- name: 'authenticatorData',
77
- },
78
- {
79
- type: 'string',
80
- name: 'clientDataJSON',
81
- },
82
- {
83
- type: 'uint256',
84
- name: 'challengeIndex',
85
- },
86
- {
87
- type: 'uint256',
88
- name: 'typeIndex',
89
- },
90
- {
91
- type: 'uint256',
92
- name: 'r',
93
- },
94
- {
95
- type: 'uint256',
96
- name: 's',
97
- },
98
- ], signature);
99
- });
100
- });
101
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=smart-sessions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-sessions.test.d.ts","sourceRoot":"","sources":["../../../../modules/validators/smart-sessions.test.ts"],"names":[],"mappings":""}
@@ -1,61 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const viem_1 = require("viem");
4
- const chains_1 = require("viem/chains");
5
- const vitest_1 = require("vitest");
6
- const consts_1 = require("../../../test/consts");
7
- const smart_sessions_1 = require("./smart-sessions");
8
- // Minimal session with a single ecdsa owner, no custom actions
9
- const baseSession = {
10
- chain: chains_1.base,
11
- owners: {
12
- type: 'ecdsa',
13
- accounts: [consts_1.accountA],
14
- },
15
- };
16
- // Session with an explicit action + sudo policy
17
- const sessionWithAction = {
18
- chain: chains_1.base,
19
- owners: {
20
- type: 'ecdsa',
21
- accounts: [consts_1.accountA],
22
- },
23
- actions: [
24
- {
25
- target: '0x1111111111111111111111111111111111111111',
26
- selector: '0xa9059cbb', // transfer(address,uint256)
27
- policies: [{ type: 'sudo' }],
28
- },
29
- ],
30
- };
31
- (0, vitest_1.describe)('buildMockSignature', () => {
32
- (0, vitest_1.test)('first 20 bytes are the emissary address', () => {
33
- const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
34
- const validatorBytes = (0, viem_1.slice)(sig, 0, 20);
35
- (0, vitest_1.expect)((0, viem_1.isAddressEqual)(validatorBytes, smart_sessions_1.SMART_SESSION_EMISSARY_ADDRESS)).toBe(true);
36
- });
37
- (0, vitest_1.test)('byte 20 is SMART_SESSION_MODE_ENABLE (0x01)', () => {
38
- const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
39
- // byte 21 in the sig = index 20 = the mode byte from packSignature
40
- const modeByte = (0, viem_1.slice)(sig, 20, 21);
41
- (0, vitest_1.expect)(modeByte).toBe('0x01');
42
- });
43
- (0, vitest_1.test)('total length is larger than just emissary + mode byte (has compressed payload)', () => {
44
- const sig = (0, smart_sessions_1.buildMockSignature)(baseSession);
45
- // 20 bytes emissary + 1 mode byte + at least some compressed data
46
- const byteLen = (sig.length - 2) / 2; // strip '0x', convert hex chars to bytes
47
- (0, vitest_1.expect)(byteLen).toBeGreaterThan(21);
48
- });
49
- (0, vitest_1.test)('sessions with different actions produce different sigData', () => {
50
- const sigBase = (0, smart_sessions_1.buildMockSignature)(baseSession);
51
- const sigWithAction = (0, smart_sessions_1.buildMockSignature)(sessionWithAction);
52
- // The session data (policies, targets) should differ → different compressed payloads
53
- (0, vitest_1.expect)(sigBase).not.toBe(sigWithAction);
54
- });
55
- (0, vitest_1.test)('useDevContracts=true produces different emissary prefix', () => {
56
- const sigProd = (0, smart_sessions_1.buildMockSignature)(baseSession, false);
57
- const sigDev = (0, smart_sessions_1.buildMockSignature)(baseSession, true);
58
- // First 20 bytes differ because prod vs dev emissary addresses differ
59
- (0, vitest_1.expect)((0, viem_1.slice)(sigProd, 0, 20)).not.toBe((0, viem_1.slice)(sigDev, 0, 20));
60
- });
61
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=registry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../orchestrator/registry.test.ts"],"names":[],"mappings":""}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const viem_1 = require("viem");
4
- const chains_1 = require("viem/chains");
5
- const vitest_1 = require("vitest");
6
- const registry_1 = require("./registry");
7
- const DEPRECATED_CHAIN_ID = 5; // Goerli
8
- const UNSUPPORTED_CHAIN_ID = 81457; // Blast
9
- const TOKEN_SYMBOLS = {
10
- ETH: 'ETH',
11
- USDC: 'USDC',
12
- USDT: 'USDT',
13
- WETH: 'WETH',
14
- };
15
- const TOKEN_ADDRESSES = {
16
- ARBTRUM_USDC: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
17
- BASE_WETH: '0x4200000000000000000000000000000000000006',
18
- };
19
- const UNSUPPORTED_TOKEN_ADDRESS = '0x1234567890123456789012345678901234567890';
20
- (0, vitest_1.describe)('Registry', () => {
21
- (0, vitest_1.describe)('getSupportedChainIds', () => {
22
- (0, vitest_1.test)('returns supported chain IDs', () => {
23
- const chainIds = (0, registry_1.getSupportedChainIds)();
24
- (0, vitest_1.expect)(chainIds).toContain(chains_1.arbitrum.id);
25
- (0, vitest_1.expect)(chainIds).toContain(chains_1.base.id);
26
- (0, vitest_1.expect)(chainIds).toContain(chains_1.sepolia.id);
27
- });
28
- (0, vitest_1.test)('does not include unsupported chains', () => {
29
- const chainIds = (0, registry_1.getSupportedChainIds)();
30
- (0, vitest_1.expect)(chainIds).not.toContain(DEPRECATED_CHAIN_ID);
31
- (0, vitest_1.expect)(chainIds).not.toContain(UNSUPPORTED_CHAIN_ID);
32
- });
33
- });
34
- (0, vitest_1.describe)('getTokenSymbol', () => {
35
- (0, vitest_1.test)('returns correct symbol for supported token', () => {
36
- const symbol = (0, registry_1.getTokenSymbol)(TOKEN_ADDRESSES.ARBTRUM_USDC, chains_1.arbitrum.id);
37
- (0, vitest_1.expect)(symbol).toBe(TOKEN_SYMBOLS.USDC);
38
- });
39
- (0, vitest_1.test)('throws error for unsupported chain', () => {
40
- (0, vitest_1.expect)(() => (0, registry_1.getTokenSymbol)(TOKEN_ADDRESSES.ARBTRUM_USDC, UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
41
- });
42
- (0, vitest_1.test)('returns undefined for unsupported token on supported chain', () => {
43
- const symbol = (0, registry_1.getTokenSymbol)(UNSUPPORTED_TOKEN_ADDRESS, chains_1.arbitrum.id);
44
- (0, vitest_1.expect)(symbol).toBeUndefined();
45
- });
46
- });
47
- (0, vitest_1.describe)('getTokenAddress', () => {
48
- (0, vitest_1.test)('returns zero address for ETH', () => {
49
- const address = (0, registry_1.getTokenAddress)(TOKEN_SYMBOLS.ETH, chains_1.arbitrum.id);
50
- (0, vitest_1.expect)(address).toBe(viem_1.zeroAddress);
51
- });
52
- (0, vitest_1.test)('returns correct address for token symbol', () => {
53
- const address = (0, registry_1.getTokenAddress)(TOKEN_SYMBOLS.USDC, chains_1.arbitrum.id);
54
- (0, vitest_1.expect)(address).toBe(TOKEN_ADDRESSES.ARBTRUM_USDC);
55
- });
56
- (0, vitest_1.test)('throws error for unsupported chain', () => {
57
- (0, vitest_1.expect)(() => (0, registry_1.getTokenAddress)(TOKEN_SYMBOLS.USDC, UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
58
- });
59
- });
60
- (0, vitest_1.describe)('getTokenDecimals', () => {
61
- (0, vitest_1.test)('returns 18 for ETH', () => {
62
- const address = (0, registry_1.getTokenDecimals)(TOKEN_SYMBOLS.ETH, chains_1.arbitrum.id);
63
- (0, vitest_1.expect)(address).toBe(18);
64
- });
65
- (0, vitest_1.test)('returns correct decimals for token symbol', () => {
66
- const address = (0, registry_1.getTokenDecimals)(TOKEN_SYMBOLS.USDC, chains_1.arbitrum.id);
67
- (0, vitest_1.expect)(address).toBe(6);
68
- });
69
- (0, vitest_1.test)('throws error for unsupported chain', () => {
70
- (0, vitest_1.expect)(() => (0, registry_1.getTokenDecimals)(TOKEN_SYMBOLS.USDC, UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
71
- });
72
- });
73
- (0, vitest_1.describe)('getWethAddress', () => {
74
- (0, vitest_1.test)('returns correct WETH address', () => {
75
- const address = (0, registry_1.getWethAddress)(chains_1.base);
76
- (0, vitest_1.expect)(address).toBe(TOKEN_ADDRESSES.BASE_WETH);
77
- });
78
- (0, vitest_1.test)('throws error for unsupported chain', () => {
79
- const unsupportedChain = {
80
- id: UNSUPPORTED_CHAIN_ID,
81
- name: 'Unsupported',
82
- };
83
- (0, vitest_1.expect)(() => (0, registry_1.getWethAddress)(unsupportedChain)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
84
- });
85
- });
86
- (0, vitest_1.describe)('getChainById', () => {
87
- (0, vitest_1.test)('returns correct chain for supported ID', () => {
88
- const chain = (0, registry_1.getChainById)(chains_1.arbitrum.id);
89
- (0, vitest_1.expect)(chain.id).toBe(chains_1.arbitrum.id);
90
- (0, vitest_1.expect)(chain.name).toBe(chains_1.arbitrum.name);
91
- });
92
- (0, vitest_1.test)('throws error for unsupported chain', () => {
93
- (0, vitest_1.expect)(() => (0, registry_1.getChainById)(UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
94
- });
95
- });
96
- (0, vitest_1.describe)('isTestnet', () => {
97
- (0, vitest_1.test)('returns false for arbitrum', () => {
98
- (0, vitest_1.expect)((0, registry_1.isTestnet)(chains_1.arbitrum.id)).toBe(false);
99
- });
100
- (0, vitest_1.test)('returns true for testnet', () => {
101
- (0, vitest_1.expect)((0, registry_1.isTestnet)(chains_1.sepolia.id)).toBe(true);
102
- });
103
- (0, vitest_1.test)('throws error for unsupported chain', () => {
104
- (0, vitest_1.expect)(() => (0, registry_1.isTestnet)(UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
105
- });
106
- });
107
- (0, vitest_1.describe)('isTokenAddressSupported', () => {
108
- (0, vitest_1.test)('returns true for supported token', () => {
109
- const isSupported = (0, registry_1.isTokenAddressSupported)(TOKEN_ADDRESSES.ARBTRUM_USDC, chains_1.arbitrum.id);
110
- (0, vitest_1.expect)(isSupported).toBe(true);
111
- });
112
- (0, vitest_1.test)('returns false for unsupported token or chain', () => {
113
- (0, vitest_1.expect)((0, registry_1.isTokenAddressSupported)(UNSUPPORTED_TOKEN_ADDRESS, chains_1.arbitrum.id)).toBe(false);
114
- (0, vitest_1.expect)((0, registry_1.isTokenAddressSupported)(TOKEN_ADDRESSES.ARBTRUM_USDC, UNSUPPORTED_CHAIN_ID)).toBe(false);
115
- });
116
- });
117
- (0, vitest_1.describe)('getSupportedTokens', () => {
118
- (0, vitest_1.test)('returns tokens for supported chain', () => {
119
- const tokens = (0, registry_1.getSupportedTokens)(chains_1.arbitrum.id);
120
- (0, vitest_1.expect)(tokens.length).toBeGreaterThan(0);
121
- (0, vitest_1.expect)(tokens.find((t) => t.symbol === TOKEN_SYMBOLS.USDC)).toBeDefined();
122
- });
123
- (0, vitest_1.test)('throws error for unsupported chain', () => {
124
- (0, vitest_1.expect)(() => (0, registry_1.getSupportedTokens)(UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
125
- });
126
- });
127
- (0, vitest_1.describe)('getDefaultAccountAccessList', () => {
128
- (0, vitest_1.test)('filters chains by testnet status', () => {
129
- const arbitrumList = (0, registry_1.getDefaultAccountAccessList)(false);
130
- const testnetList = (0, registry_1.getDefaultAccountAccessList)(true);
131
- (0, vitest_1.expect)(arbitrumList.chainIds).toContain(chains_1.arbitrum.id);
132
- (0, vitest_1.expect)(arbitrumList.chainIds).not.toContain(chains_1.sepolia.id);
133
- (0, vitest_1.expect)(testnetList.chainIds).toContain(chains_1.sepolia.id);
134
- (0, vitest_1.expect)(testnetList.chainIds).not.toContain(chains_1.arbitrum.id);
135
- });
136
- });
137
- (0, vitest_1.describe)('resolveTokenAddress', () => {
138
- (0, vitest_1.test)('returns address as-is when given valid address', () => {
139
- const address = TOKEN_ADDRESSES.ARBTRUM_USDC;
140
- const result = (0, registry_1.resolveTokenAddress)(address, chains_1.arbitrum.id);
141
- (0, vitest_1.expect)(result).toBe(address);
142
- });
143
- (0, vitest_1.test)('resolves token symbol to address', () => {
144
- const result = (0, registry_1.resolveTokenAddress)(TOKEN_SYMBOLS.USDC, chains_1.arbitrum.id);
145
- (0, vitest_1.expect)(result).toBe(TOKEN_ADDRESSES.ARBTRUM_USDC);
146
- });
147
- (0, vitest_1.test)('throw error for unsupported token', () => {
148
- (0, vitest_1.expect)(() => (0, registry_1.resolveTokenAddress)(TOKEN_SYMBOLS.USDT, chains_1.baseSepolia.id)).toThrow(`Unsupported token ${TOKEN_SYMBOLS.USDT} for chain ${chains_1.baseSepolia.id}`);
149
- });
150
- (0, vitest_1.test)('throws error for unsupported chain', () => {
151
- (0, vitest_1.expect)(() => (0, registry_1.resolveTokenAddress)(TOKEN_SYMBOLS.USDC, UNSUPPORTED_CHAIN_ID)).toThrow(`Unsupported chain ${UNSUPPORTED_CHAIN_ID}`);
152
- });
153
- });
154
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../utils/index.test.ts"],"names":[],"mappings":""}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const consts_1 = require("../../test/consts");
5
- const index_1 = require("./index");
6
- (0, vitest_1.describe)('Utils', () => {
7
- (0, vitest_1.test)('experimental_getV0InitData accepts session-enabled safe config', () => {
8
- const baseConfig = {
9
- account: {
10
- type: 'safe',
11
- },
12
- owners: {
13
- type: 'ecdsa',
14
- accounts: [consts_1.accountA],
15
- },
16
- };
17
- const withoutSessions = (0, index_1.experimental_getV0InitData)(baseConfig);
18
- const withSessions = (0, index_1.experimental_getV0InitData)({
19
- ...baseConfig,
20
- experimental_sessions: {
21
- enabled: true,
22
- },
23
- });
24
- (0, vitest_1.expect)(withSessions.address).toMatch(/^0x[a-fA-F0-9]{40}$/);
25
- (0, vitest_1.expect)(withSessions.factoryData).not.toEqual(withoutSessions.factoryData);
26
- });
27
- (0, vitest_1.test)('experimental_getRhinestoneInitData accepts session-enabled safe config', () => {
28
- const initData = (0, index_1.experimental_getRhinestoneInitData)({
29
- account: {
30
- type: 'safe',
31
- },
32
- owners: {
33
- type: 'ecdsa',
34
- accounts: [consts_1.accountA],
35
- },
36
- experimental_sessions: {
37
- enabled: true,
38
- },
39
- });
40
- (0, vitest_1.expect)('factory' in initData).toBe(true);
41
- });
42
- });
@@ -1,10 +0,0 @@
1
- import { type WebAuthnAccount } from 'viem/account-abstraction';
2
- import { type Account } from 'viem/accounts';
3
- declare const accountA: Account;
4
- declare const accountB: Account;
5
- declare const accountC: Account;
6
- declare const accountD: Account;
7
- declare const passkeyAccount: WebAuthnAccount;
8
- declare const MOCK_API_KEY = "MOCK_KEY";
9
- export { accountA, accountB, accountC, accountD, passkeyAccount, MOCK_API_KEY };
10
- //# sourceMappingURL=consts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../test/consts.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,KAAK,OAAO,EAAuB,MAAM,eAAe,CAAA;AAEjE,QAAA,MAAM,QAAQ,EAAE,OAEf,CAAA;AACD,QAAA,MAAM,QAAQ,EAAE,OAEf,CAAA;AACD,QAAA,MAAM,QAAQ,EAAE,OAEf,CAAA;AACD,QAAA,MAAM,QAAQ,EAAE,OAEf,CAAA;AACD,QAAA,MAAM,cAAc,EAAE,eAMpB,CAAA;AAEF,QAAA,MAAM,YAAY,aAAa,CAAA;AAE/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,CAAA"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MOCK_API_KEY = exports.passkeyAccount = exports.accountD = exports.accountC = exports.accountB = exports.accountA = void 0;
4
- const account_abstraction_1 = require("viem/account-abstraction");
5
- const accounts_1 = require("viem/accounts");
6
- const accountA = (0, accounts_1.privateKeyToAccount)('0x2be89d993f98bbaab8b83f1a2830cb9414e19662967c7ba2a0f43d2a9125bd6d');
7
- exports.accountA = accountA;
8
- const accountB = (0, accounts_1.privateKeyToAccount)('0x39e2fec1a04c088f939d81de8f1abebdebf899a6cfb9968f9b663a7afba8301b');
9
- exports.accountB = accountB;
10
- const accountC = (0, accounts_1.privateKeyToAccount)('0xb63c74af219a3949cf95f5e3a3d20b0137425de053bb03e5cc0f46fe0d19f22f');
11
- exports.accountC = accountC;
12
- const accountD = (0, accounts_1.privateKeyToAccount)('0xa4aba81871b7b51fff56bfe441ea7f9a4879dd4bc8ce8c15fdb06dc92e63d1d7');
13
- exports.accountD = accountD;
14
- const passkeyAccount = (0, account_abstraction_1.toWebAuthnAccount)({
15
- credential: {
16
- id: '9IwX9n6cn-l9SzqFzfQXvDHRuTM',
17
- publicKey: '0x580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d1',
18
- },
19
- });
20
- exports.passkeyAccount = passkeyAccount;
21
- const MOCK_API_KEY = 'MOCK_KEY';
22
- exports.MOCK_API_KEY = MOCK_API_KEY;
@@ -1,5 +0,0 @@
1
- import type { Chain } from 'viem';
2
- declare function getForkUrl(chain: Chain): string;
3
- declare function assertNotNull<T>(value: T | null): asserts value is T;
4
- export { getForkUrl, assertNotNull };
5
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../test/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAIjC,iBAAS,UAAU,CAAC,KAAK,EAAE,KAAK,UAU/B;AAED,iBAAS,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAE7D;AAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,CAAA"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getForkUrl = getForkUrl;
4
- exports.assertNotNull = assertNotNull;
5
- const chains_1 = require("viem/chains");
6
- const vitest_1 = require("vitest");
7
- function getForkUrl(chain) {
8
- // @ts-ignore
9
- const alchemyApiKey = import.meta.env.VITE_ALCHEMY_API_KEY;
10
- if (!alchemyApiKey) {
11
- throw new Error('VITE_ALCHEMY_API_KEY is not set');
12
- }
13
- if (chain.id === chains_1.base.id) {
14
- return `https://base-mainnet.g.alchemy.com/v2/${alchemyApiKey}`;
15
- }
16
- throw new Error(`Unsupported chain: ${chain.id}`);
17
- }
18
- function assertNotNull(value) {
19
- (0, vitest_1.expect)(value).not.toBeNull();
20
- }