@rhinestone/sdk 1.0.40 → 1.0.41-alpha.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 (208) hide show
  1. package/package.json +1 -1
  2. package/dist/src/accounts/error.d.ts +0 -114
  3. package/dist/src/accounts/error.d.ts.map +0 -1
  4. package/dist/src/accounts/error.js +0 -174
  5. package/dist/src/accounts/index.d.ts +0 -50
  6. package/dist/src/accounts/index.d.ts.map +0 -1
  7. package/dist/src/accounts/index.js +0 -669
  8. package/dist/src/accounts/index.test.d.ts +0 -2
  9. package/dist/src/accounts/index.test.d.ts.map +0 -1
  10. package/dist/src/accounts/index.test.js +0 -33
  11. package/dist/src/accounts/json-rpc/index.d.ts +0 -5
  12. package/dist/src/accounts/json-rpc/index.d.ts.map +0 -1
  13. package/dist/src/accounts/json-rpc/index.js +0 -20
  14. package/dist/src/accounts/json-rpc/index.test.d.ts +0 -2
  15. package/dist/src/accounts/json-rpc/index.test.d.ts.map +0 -1
  16. package/dist/src/accounts/json-rpc/index.test.js +0 -33
  17. package/dist/src/accounts/json-rpc/providers.d.ts +0 -5
  18. package/dist/src/accounts/json-rpc/providers.d.ts.map +0 -1
  19. package/dist/src/accounts/json-rpc/providers.js +0 -22
  20. package/dist/src/accounts/json-rpc/providers.test.d.ts +0 -2
  21. package/dist/src/accounts/json-rpc/providers.test.d.ts.map +0 -1
  22. package/dist/src/accounts/json-rpc/providers.test.js +0 -43
  23. package/dist/src/accounts/kernel.d.ts +0 -29
  24. package/dist/src/accounts/kernel.d.ts.map +0 -1
  25. package/dist/src/accounts/kernel.js +0 -297
  26. package/dist/src/accounts/kernel.test.d.ts +0 -2
  27. package/dist/src/accounts/kernel.test.d.ts.map +0 -1
  28. package/dist/src/accounts/kernel.test.js +0 -132
  29. package/dist/src/accounts/nexus.d.ts +0 -35
  30. package/dist/src/accounts/nexus.d.ts.map +0 -1
  31. package/dist/src/accounts/nexus.js +0 -471
  32. package/dist/src/accounts/nexus.test.d.ts +0 -2
  33. package/dist/src/accounts/nexus.test.d.ts.map +0 -1
  34. package/dist/src/accounts/nexus.test.js +0 -118
  35. package/dist/src/accounts/passport.d.ts +0 -12
  36. package/dist/src/accounts/passport.d.ts.map +0 -1
  37. package/dist/src/accounts/passport.js +0 -173
  38. package/dist/src/accounts/safe.d.ts +0 -35
  39. package/dist/src/accounts/safe.d.ts.map +0 -1
  40. package/dist/src/accounts/safe.js +0 -365
  41. package/dist/src/accounts/safe.test.d.ts +0 -2
  42. package/dist/src/accounts/safe.test.d.ts.map +0 -1
  43. package/dist/src/accounts/safe.test.js +0 -118
  44. package/dist/src/accounts/signing/common.d.ts +0 -27
  45. package/dist/src/accounts/signing/common.d.ts.map +0 -1
  46. package/dist/src/accounts/signing/common.js +0 -183
  47. package/dist/src/accounts/signing/message.d.ts +0 -5
  48. package/dist/src/accounts/signing/message.d.ts.map +0 -1
  49. package/dist/src/accounts/signing/message.js +0 -47
  50. package/dist/src/accounts/signing/passkeys.d.ts +0 -36
  51. package/dist/src/accounts/signing/passkeys.d.ts.map +0 -1
  52. package/dist/src/accounts/signing/passkeys.js +0 -125
  53. package/dist/src/accounts/signing/passkeys.test.d.ts +0 -2
  54. package/dist/src/accounts/signing/passkeys.test.d.ts.map +0 -1
  55. package/dist/src/accounts/signing/passkeys.test.js +0 -88
  56. package/dist/src/accounts/signing/typedData.d.ts +0 -5
  57. package/dist/src/accounts/signing/typedData.d.ts.map +0 -1
  58. package/dist/src/accounts/signing/typedData.js +0 -35
  59. package/dist/src/accounts/startale.d.ts +0 -27
  60. package/dist/src/accounts/startale.d.ts.map +0 -1
  61. package/dist/src/accounts/startale.js +0 -116
  62. package/dist/src/accounts/startale.test.d.ts +0 -2
  63. package/dist/src/accounts/startale.test.d.ts.map +0 -1
  64. package/dist/src/accounts/startale.test.js +0 -92
  65. package/dist/src/accounts/utils.d.ts +0 -33
  66. package/dist/src/accounts/utils.d.ts.map +0 -1
  67. package/dist/src/accounts/utils.js +0 -201
  68. package/dist/src/accounts/utils.test.d.ts +0 -2
  69. package/dist/src/accounts/utils.test.d.ts.map +0 -1
  70. package/dist/src/accounts/utils.test.js +0 -49
  71. package/dist/src/accounts/walletClient.d.ts +0 -34
  72. package/dist/src/accounts/walletClient.d.ts.map +0 -1
  73. package/dist/src/accounts/walletClient.js +0 -121
  74. package/dist/src/actions/compact.d.ts +0 -13
  75. package/dist/src/actions/compact.d.ts.map +0 -1
  76. package/dist/src/actions/compact.js +0 -210
  77. package/dist/src/actions/deployment.d.ts +0 -19
  78. package/dist/src/actions/deployment.d.ts.map +0 -1
  79. package/dist/src/actions/deployment.js +0 -78
  80. package/dist/src/actions/ecdsa.d.ts +0 -35
  81. package/dist/src/actions/ecdsa.d.ts.map +0 -1
  82. package/dist/src/actions/ecdsa.js +0 -114
  83. package/dist/src/actions/ecdsa.test.d.ts +0 -2
  84. package/dist/src/actions/ecdsa.test.d.ts.map +0 -1
  85. package/dist/src/actions/ecdsa.test.js +0 -99
  86. package/dist/src/actions/index.d.ts +0 -17
  87. package/dist/src/actions/index.d.ts.map +0 -1
  88. package/dist/src/actions/index.js +0 -53
  89. package/dist/src/actions/mfa.d.ts +0 -37
  90. package/dist/src/actions/mfa.d.ts.map +0 -1
  91. package/dist/src/actions/mfa.js +0 -133
  92. package/dist/src/actions/passkeys.d.ts +0 -37
  93. package/dist/src/actions/passkeys.d.ts.map +0 -1
  94. package/dist/src/actions/passkeys.js +0 -129
  95. package/dist/src/actions/passkeys.test.d.ts +0 -2
  96. package/dist/src/actions/passkeys.test.d.ts.map +0 -1
  97. package/dist/src/actions/passkeys.test.js +0 -54
  98. package/dist/src/actions/recovery.d.ts +0 -33
  99. package/dist/src/actions/recovery.d.ts.map +0 -1
  100. package/dist/src/actions/recovery.js +0 -193
  101. package/dist/src/actions/recovery.test.d.ts +0 -2
  102. package/dist/src/actions/recovery.test.d.ts.map +0 -1
  103. package/dist/src/actions/recovery.test.js +0 -168
  104. package/dist/src/actions/smart-sessions.d.ts +0 -14
  105. package/dist/src/actions/smart-sessions.d.ts.map +0 -1
  106. package/dist/src/actions/smart-sessions.js +0 -16
  107. package/dist/src/errors/index.d.ts +0 -5
  108. package/dist/src/errors/index.d.ts.map +0 -1
  109. package/dist/src/errors/index.js +0 -53
  110. package/dist/src/execution/compact.d.ts +0 -151
  111. package/dist/src/execution/compact.d.ts.map +0 -1
  112. package/dist/src/execution/compact.js +0 -122
  113. package/dist/src/execution/error.d.ts +0 -61
  114. package/dist/src/execution/error.d.ts.map +0 -1
  115. package/dist/src/execution/error.js +0 -87
  116. package/dist/src/execution/index.d.ts +0 -41
  117. package/dist/src/execution/index.d.ts.map +0 -1
  118. package/dist/src/execution/index.js +0 -233
  119. package/dist/src/execution/permit2.d.ts +0 -148
  120. package/dist/src/execution/permit2.d.ts.map +0 -1
  121. package/dist/src/execution/permit2.js +0 -291
  122. package/dist/src/execution/singleChainOps.d.ts +0 -28
  123. package/dist/src/execution/singleChainOps.d.ts.map +0 -1
  124. package/dist/src/execution/singleChainOps.js +0 -32
  125. package/dist/src/execution/smart-session.d.ts +0 -13
  126. package/dist/src/execution/smart-session.d.ts.map +0 -1
  127. package/dist/src/execution/smart-session.js +0 -178
  128. package/dist/src/execution/types.d.ts +0 -36
  129. package/dist/src/execution/types.d.ts.map +0 -1
  130. package/dist/src/execution/types.js +0 -2
  131. package/dist/src/execution/utils.d.ts +0 -83
  132. package/dist/src/execution/utils.d.ts.map +0 -1
  133. package/dist/src/execution/utils.js +0 -705
  134. package/dist/src/index.d.ts +0 -74
  135. package/dist/src/index.d.ts.map +0 -1
  136. package/dist/src/index.js +0 -317
  137. package/dist/src/modules/abi/smart-sessions.d.ts +0 -104
  138. package/dist/src/modules/abi/smart-sessions.d.ts.map +0 -1
  139. package/dist/src/modules/abi/smart-sessions.js +0 -131
  140. package/dist/src/modules/chain-abstraction.d.ts +0 -5
  141. package/dist/src/modules/chain-abstraction.d.ts.map +0 -1
  142. package/dist/src/modules/chain-abstraction.js +0 -7
  143. package/dist/src/modules/common.d.ts +0 -30
  144. package/dist/src/modules/common.d.ts.map +0 -1
  145. package/dist/src/modules/common.js +0 -42
  146. package/dist/src/modules/index.d.ts +0 -10
  147. package/dist/src/modules/index.d.ts.map +0 -1
  148. package/dist/src/modules/index.js +0 -94
  149. package/dist/src/modules/index.test.d.ts +0 -2
  150. package/dist/src/modules/index.test.d.ts.map +0 -1
  151. package/dist/src/modules/index.test.js +0 -81
  152. package/dist/src/modules/legacy.d.ts +0 -10
  153. package/dist/src/modules/legacy.d.ts.map +0 -1
  154. package/dist/src/modules/legacy.js +0 -65
  155. package/dist/src/modules/read.d.ts +0 -9
  156. package/dist/src/modules/read.d.ts.map +0 -1
  157. package/dist/src/modules/read.js +0 -125
  158. package/dist/src/modules/validators/core.d.ts +0 -29
  159. package/dist/src/modules/validators/core.d.ts.map +0 -1
  160. package/dist/src/modules/validators/core.js +0 -278
  161. package/dist/src/modules/validators/core.test.d.ts +0 -2
  162. package/dist/src/modules/validators/core.test.d.ts.map +0 -1
  163. package/dist/src/modules/validators/core.test.js +0 -101
  164. package/dist/src/modules/validators/index.d.ts +0 -4
  165. package/dist/src/modules/validators/index.d.ts.map +0 -1
  166. package/dist/src/modules/validators/index.js +0 -15
  167. package/dist/src/modules/validators/smart-sessions.d.ts +0 -96
  168. package/dist/src/modules/validators/smart-sessions.d.ts.map +0 -1
  169. package/dist/src/modules/validators/smart-sessions.js +0 -497
  170. package/dist/src/modules/validators/smart-sessions.test.d.ts +0 -2
  171. package/dist/src/modules/validators/smart-sessions.test.d.ts.map +0 -1
  172. package/dist/src/modules/validators/smart-sessions.test.js +0 -219
  173. package/dist/src/orchestrator/client.d.ts +0 -27
  174. package/dist/src/orchestrator/client.d.ts.map +0 -1
  175. package/dist/src/orchestrator/client.js +0 -354
  176. package/dist/src/orchestrator/consts.d.ts +0 -5
  177. package/dist/src/orchestrator/consts.d.ts.map +0 -1
  178. package/dist/src/orchestrator/consts.js +0 -9
  179. package/dist/src/orchestrator/error.d.ts +0 -232
  180. package/dist/src/orchestrator/error.d.ts.map +0 -1
  181. package/dist/src/orchestrator/error.js +0 -268
  182. package/dist/src/orchestrator/index.d.ts +0 -10
  183. package/dist/src/orchestrator/index.d.ts.map +0 -1
  184. package/dist/src/orchestrator/index.js +0 -57
  185. package/dist/src/orchestrator/registry.d.ts +0 -22
  186. package/dist/src/orchestrator/registry.d.ts.map +0 -1
  187. package/dist/src/orchestrator/registry.js +0 -121
  188. package/dist/src/orchestrator/registry.test.d.ts +0 -2
  189. package/dist/src/orchestrator/registry.test.d.ts.map +0 -1
  190. package/dist/src/orchestrator/registry.test.js +0 -150
  191. package/dist/src/orchestrator/types.d.ts +0 -295
  192. package/dist/src/orchestrator/types.d.ts.map +0 -1
  193. package/dist/src/orchestrator/types.js +0 -17
  194. package/dist/src/orchestrator/utils.d.ts +0 -3
  195. package/dist/src/orchestrator/utils.d.ts.map +0 -1
  196. package/dist/src/orchestrator/utils.js +0 -24
  197. package/dist/src/types.d.ts +0 -278
  198. package/dist/src/types.d.ts.map +0 -1
  199. package/dist/src/types.js +0 -2
  200. package/dist/src/utils/index.d.ts +0 -26
  201. package/dist/src/utils/index.d.ts.map +0 -1
  202. package/dist/src/utils/index.js +0 -63
  203. package/dist/test/consts.d.ts +0 -10
  204. package/dist/test/consts.d.ts.map +0 -1
  205. package/dist/test/consts.js +0 -22
  206. package/dist/test/utils/utils.d.ts +0 -5
  207. package/dist/test/utils/utils.d.ts.map +0 -1
  208. package/dist/test/utils/utils.js +0 -20
@@ -1,365 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEip712Domain = getEip712Domain;
4
- exports.getInstallData = getInstallData;
5
- exports.getAddress = getAddress;
6
- exports.packSignature = packSignature;
7
- exports.getDeployArgs = getDeployArgs;
8
- exports.getV0DeployArgs = getV0DeployArgs;
9
- exports.getSmartAccount = getSmartAccount;
10
- exports.getSessionSmartAccount = getSessionSmartAccount;
11
- exports.getGuardianSmartAccount = getGuardianSmartAccount;
12
- const viem_1 = require("viem");
13
- const account_abstraction_1 = require("viem/account-abstraction");
14
- const modules_1 = require("../modules");
15
- const legacy_1 = require("../modules/legacy");
16
- const validators_1 = require("../modules/validators");
17
- const error_1 = require("./error");
18
- const utils_1 = require("./utils");
19
- const SAFE_7579_LAUNCHPAD_V2_ADDRESS = '0x75798463024Bda64D83c94A64Bc7D7eaB41300eF';
20
- const SAFE_7579_ADAPTER_V2_ADDRESS = '0x7579f2AD53b01c3D8779Fe17928e0D48885B0003';
21
- const SAFE_7579_LAUNCHPAD_V1_ADDRESS = '0x7579011aB74c46090561ea277Ba79D510c6C00ff';
22
- const SAFE_7579_ADAPTER_V1_ADDRESS = '0x7579ee8307284f293b1927136486880611f20002';
23
- const SAFE_SINGLETON_ADDRESS = '0x29fcb43b46531bca003ddc8fcb67ffe91900c762';
24
- const SAFE_PROXY_FACTORY_ADDRESS = '0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67';
25
- const NO_SAFE_OWNER_ADDRESS = '0xbabe99e62d8bcbd3acf5ccbcfcd4f64fe75e5e72';
26
- const SAFE_PROXY_INIT_CODE = '0x608060405234801561001057600080fd5b506040516101e63803806101e68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806101c46022913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060ab806101196000396000f3fe608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea264697066735822122003d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f31441364736f6c63430007060033496e76616c69642073696e676c65746f6e20616464726573732070726f7669646564';
27
- function getDeployArgs(config) {
28
- if (config.initData) {
29
- if (!('factory' in config.initData)) {
30
- return null;
31
- }
32
- const factoryData = (0, viem_1.decodeFunctionData)({
33
- abi: (0, viem_1.parseAbi)([
34
- 'function createProxyWithNonce(address singleton,bytes calldata initializer,uint256 saltNonce) external payable returns (address)',
35
- ]),
36
- data: config.initData.factoryData,
37
- });
38
- if (factoryData.functionName !== 'createProxyWithNonce') {
39
- throw new error_1.AccountConfigurationNotSupportedError('Invalid factory data', 'safe');
40
- }
41
- const implementation = factoryData.args[0];
42
- const initData = factoryData.args[1];
43
- const saltNonce = factoryData.args[2];
44
- const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'uint256'], [(0, viem_1.keccak256)(initData), saltNonce]));
45
- return {
46
- factory: config.initData.factory,
47
- factoryData: config.initData.factoryData,
48
- salt,
49
- implementation,
50
- initializationCallData: null,
51
- };
52
- }
53
- const owners = getOwners(config);
54
- const threshold = getThreshold(config);
55
- const moduleSetup = (0, modules_1.getSetup)(config);
56
- const modules = [
57
- ...moduleSetup.validators,
58
- ...moduleSetup.executors,
59
- ...moduleSetup.fallbacks,
60
- ...moduleSetup.hooks,
61
- ];
62
- const adapter = SAFE_7579_ADAPTER_V2_ADDRESS;
63
- const launchpad = SAFE_7579_LAUNCHPAD_V2_ADDRESS;
64
- const calldata = (0, viem_1.encodeFunctionData)({
65
- abi: (0, viem_1.parseAbi)([
66
- 'struct ModuleInit {address module;bytes initData;uint256 moduleType}',
67
- 'function addSafe7579(address safe7579,ModuleInit[] calldata modules,address[] calldata attesters,uint8 threshold) external',
68
- ]),
69
- functionName: 'addSafe7579',
70
- args: [
71
- adapter,
72
- modules.map((m) => ({
73
- module: m.address,
74
- initData: m.initData,
75
- moduleType: m.type,
76
- })),
77
- [],
78
- 0,
79
- ],
80
- });
81
- const initData = (0, viem_1.encodeFunctionData)({
82
- abi: (0, viem_1.parseAbi)([
83
- 'function setup(address[] calldata _owners,uint256 _threshold,address to,bytes calldata data,address fallbackHandler,address paymentToken,uint256 payment, address paymentReceiver) external',
84
- ]),
85
- functionName: 'setup',
86
- args: [
87
- owners,
88
- threshold,
89
- launchpad,
90
- calldata,
91
- adapter,
92
- viem_1.zeroAddress,
93
- BigInt(0),
94
- viem_1.zeroAddress,
95
- ],
96
- });
97
- const account = config.account;
98
- const saltNonce = account?.nonce ?? 0n;
99
- const factoryData = (0, viem_1.encodeFunctionData)({
100
- abi: (0, viem_1.parseAbi)([
101
- 'function createProxyWithNonce(address singleton,bytes calldata initializer,uint256 saltNonce) external payable returns (address)',
102
- ]),
103
- functionName: 'createProxyWithNonce',
104
- args: [SAFE_SINGLETON_ADDRESS, initData, saltNonce],
105
- });
106
- const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'uint256'], [(0, viem_1.keccak256)(initData), saltNonce]));
107
- return {
108
- factory: SAFE_PROXY_FACTORY_ADDRESS,
109
- factoryData,
110
- salt,
111
- implementation: SAFE_SINGLETON_ADDRESS,
112
- initializationCallData: null,
113
- };
114
- }
115
- function getV0DeployArgs(config) {
116
- if (config.initData) {
117
- throw new error_1.AccountConfigurationNotSupportedError('Custom V0 accounts are not supported', 'safe');
118
- }
119
- const owners = getOwners(config);
120
- const threshold = getThreshold(config);
121
- const attesters = (0, legacy_1.getV0Attesters)();
122
- const moduleSetup = (0, legacy_1.getV0Setup)(config);
123
- const adapter = SAFE_7579_ADAPTER_V1_ADDRESS;
124
- const launchpad = SAFE_7579_LAUNCHPAD_V1_ADDRESS;
125
- const calldata = (0, viem_1.encodeFunctionData)({
126
- abi: (0, viem_1.parseAbi)([
127
- 'struct ModuleInit {address module;bytes initData;}',
128
- 'function addSafe7579(address safe7579,ModuleInit[] calldata validators,ModuleInit[] calldata executors,ModuleInit[] calldata fallbacks, ModuleInit[] calldata hooks,address[] calldata attesters,uint8 threshold) external',
129
- ]),
130
- functionName: 'addSafe7579',
131
- args: [
132
- adapter,
133
- moduleSetup.validators.map((v) => ({
134
- module: v.address,
135
- initData: v.initData,
136
- })),
137
- moduleSetup.executors.map((e) => ({
138
- module: e.address,
139
- initData: e.initData,
140
- })),
141
- moduleSetup.fallbacks.map((f) => ({
142
- module: f.address,
143
- initData: f.initData,
144
- })),
145
- moduleSetup.hooks.map((h) => ({
146
- module: h.address,
147
- initData: h.initData,
148
- })),
149
- attesters.addresses,
150
- attesters.threshold,
151
- ],
152
- });
153
- const initData = (0, viem_1.encodeFunctionData)({
154
- abi: (0, viem_1.parseAbi)([
155
- 'function setup(address[] calldata _owners,uint256 _threshold,address to,bytes calldata data,address fallbackHandler,address paymentToken,uint256 payment, address paymentReceiver) external',
156
- ]),
157
- functionName: 'setup',
158
- args: [
159
- owners,
160
- threshold,
161
- launchpad,
162
- calldata,
163
- adapter,
164
- viem_1.zeroAddress,
165
- BigInt(0),
166
- viem_1.zeroAddress,
167
- ],
168
- });
169
- const account = config.account;
170
- const saltNonce = account?.nonce ?? 0n;
171
- const factoryData = (0, viem_1.encodeFunctionData)({
172
- abi: (0, viem_1.parseAbi)([
173
- 'function createProxyWithNonce(address singleton,bytes calldata initializer,uint256 saltNonce) external payable returns (address)',
174
- ]),
175
- functionName: 'createProxyWithNonce',
176
- args: [SAFE_SINGLETON_ADDRESS, initData, saltNonce],
177
- });
178
- const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['bytes32', 'uint256'], [(0, viem_1.keccak256)(initData), saltNonce]));
179
- return {
180
- factory: SAFE_PROXY_FACTORY_ADDRESS,
181
- factoryData,
182
- salt,
183
- implementation: SAFE_SINGLETON_ADDRESS,
184
- initializationCallData: null,
185
- };
186
- }
187
- function getAddress(config) {
188
- const deployArgs = getDeployArgs(config);
189
- if (!deployArgs) {
190
- throw new Error('Cannot derive address: deploy args not available');
191
- }
192
- const { factory, implementation, salt } = deployArgs;
193
- const constructorArgs = (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)('address singleton'), [implementation]);
194
- const address = (0, viem_1.getContractAddress)({
195
- opcode: 'CREATE2',
196
- from: factory,
197
- salt,
198
- bytecode: (0, viem_1.concat)([SAFE_PROXY_INIT_CODE, constructorArgs]),
199
- });
200
- return address;
201
- }
202
- function getEip712Domain(config, chain) {
203
- if (config.initData) {
204
- throw new error_1.Eip712DomainNotAvailableError('Existing Safe-7579 accounts are not yet supported');
205
- }
206
- return {
207
- name: 'rhinestone safe7579',
208
- version: 'v1.0.0',
209
- chainId: chain.id,
210
- verifyingContract: getAddress(config),
211
- salt: viem_1.zeroHash,
212
- };
213
- }
214
- function getInstallData(module) {
215
- return (0, viem_1.encodeFunctionData)({
216
- abi: [
217
- {
218
- type: 'function',
219
- name: 'installModule',
220
- inputs: [
221
- {
222
- type: 'uint256',
223
- name: 'moduleTypeId',
224
- },
225
- {
226
- type: 'address',
227
- name: 'module',
228
- },
229
- {
230
- type: 'bytes',
231
- name: 'initData',
232
- },
233
- ],
234
- outputs: [],
235
- stateMutability: 'nonpayable',
236
- },
237
- ],
238
- functionName: 'installModule',
239
- args: [module.type, module.address, module.initData],
240
- });
241
- }
242
- async function packSignature(signature, validator, transformSignature = (signature) => signature) {
243
- return (0, viem_1.encodePacked)(['address', 'bytes'], [validator.address, transformSignature(signature)]);
244
- }
245
- async function getSmartAccount(client, address, owners, validatorAddress, sign) {
246
- return getBaseSmartAccount(address, client, validatorAddress, async () => {
247
- return (0, validators_1.getMockSignature)(owners);
248
- }, sign);
249
- }
250
- async function getSessionSmartAccount(client, address, session, validatorAddress, enableData, sign) {
251
- return await getBaseSmartAccount(address, client, validatorAddress, async () => {
252
- const dummyOpSignature = (0, validators_1.getMockSignature)(session.owners);
253
- if (enableData) {
254
- return (0, validators_1.encodeSmartSessionSignature)(validators_1.SMART_SESSION_MODE_ENABLE, (0, validators_1.getPermissionId)(session), dummyOpSignature, enableData);
255
- }
256
- return (0, validators_1.encodeSmartSessionSignature)(validators_1.SMART_SESSION_MODE_USE, (0, validators_1.getPermissionId)(session), dummyOpSignature);
257
- }, async (hash) => {
258
- const signature = await sign(hash);
259
- if (enableData) {
260
- return (0, validators_1.encodeSmartSessionSignature)(validators_1.SMART_SESSION_MODE_ENABLE, (0, validators_1.getPermissionId)(session), signature, enableData);
261
- }
262
- return (0, validators_1.encodeSmartSessionSignature)(validators_1.SMART_SESSION_MODE_USE, (0, validators_1.getPermissionId)(session), signature);
263
- });
264
- }
265
- async function getGuardianSmartAccount(client, address, guardians, validatorAddress, sign) {
266
- return await getBaseSmartAccount(address, client, validatorAddress, async () => {
267
- return (0, validators_1.getMockSignature)(guardians);
268
- }, async (hash) => {
269
- return await sign(hash);
270
- });
271
- }
272
- async function getBaseSmartAccount(address, client, validatorAddress, getStubSignature, signUserOperation) {
273
- return await (0, account_abstraction_1.toSmartAccount)({
274
- client,
275
- entryPoint: {
276
- abi: account_abstraction_1.entryPoint07Abi,
277
- address: account_abstraction_1.entryPoint07Address,
278
- version: '0.7',
279
- },
280
- async decodeCalls() {
281
- throw new Error('Not implemented');
282
- },
283
- async encodeCalls(calls) {
284
- return (0, utils_1.encode7579Calls)({
285
- mode: {
286
- type: calls.length > 1 ? 'batchcall' : 'call',
287
- revertOnError: false,
288
- selector: '0x',
289
- context: '0x',
290
- },
291
- callData: calls,
292
- });
293
- },
294
- async getAddress() {
295
- return address;
296
- },
297
- async getFactoryArgs() {
298
- return {};
299
- },
300
- async getNonce() {
301
- const key = (0, viem_1.concat)([validatorAddress, '0x00000000']);
302
- const nonce = await (0, utils_1.getAccountNonce)(client, {
303
- address,
304
- entryPointAddress: account_abstraction_1.entryPoint07Address,
305
- key: BigInt(key),
306
- });
307
- return nonce;
308
- },
309
- async getStubSignature() {
310
- return getStubSignature();
311
- },
312
- async signMessage() {
313
- throw new Error('Not implemented');
314
- },
315
- async signTypedData() {
316
- throw new Error('Not implemented');
317
- },
318
- async signUserOperation(parameters) {
319
- const { chainId = client.chain?.id, ...userOperation } = parameters;
320
- if (!chainId)
321
- throw new Error('Chain id not found');
322
- const hash = (0, account_abstraction_1.getUserOperationHash)({
323
- userOperation: {
324
- ...userOperation,
325
- sender: userOperation.sender ?? (await this.getAddress()),
326
- signature: '0x',
327
- },
328
- entryPointAddress: account_abstraction_1.entryPoint07Address,
329
- entryPointVersion: '0.7',
330
- chainId: chainId,
331
- });
332
- return await signUserOperation(hash);
333
- },
334
- });
335
- }
336
- function getOwners(config) {
337
- if (!config.owners) {
338
- throw new error_1.OwnersFieldRequiredError();
339
- }
340
- const ownerSet = config.owners;
341
- switch (ownerSet.type) {
342
- case 'ecdsa':
343
- case 'ens':
344
- return ownerSet.accounts.map((account) => account.address);
345
- case 'passkey':
346
- return [NO_SAFE_OWNER_ADDRESS];
347
- case 'multi-factor':
348
- return [NO_SAFE_OWNER_ADDRESS];
349
- }
350
- }
351
- function getThreshold(config) {
352
- if (!config.owners) {
353
- throw new error_1.OwnersFieldRequiredError();
354
- }
355
- const ownerSet = config.owners;
356
- switch (ownerSet.type) {
357
- case 'ecdsa':
358
- case 'ens':
359
- return ownerSet.threshold ? BigInt(ownerSet.threshold) : 1n;
360
- case 'passkey':
361
- return 1n;
362
- case 'multi-factor':
363
- return 1n;
364
- }
365
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=safe.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safe.test.d.ts","sourceRoot":"","sources":["../../../accounts/safe.test.ts"],"names":[],"mappings":""}
@@ -1,118 +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 utils_1 = require("../../test/utils/utils");
6
- const common_1 = require("../modules/common");
7
- const safe_1 = require("./safe");
8
- const MOCK_MODULE_ADDRESS = '0x28de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f';
9
- (0, vitest_1.describe)('Accounts: Safe', () => {
10
- (0, vitest_1.describe)('Deploy Args', () => {
11
- (0, vitest_1.test)('ECDSA owners', () => {
12
- const deployArgs = (0, safe_1.getDeployArgs)({
13
- owners: {
14
- type: 'ecdsa',
15
- accounts: [consts_1.accountA, consts_1.accountB],
16
- },
17
- });
18
- (0, utils_1.assertNotNull)(deployArgs);
19
- const { factory, factoryData, salt, implementation, initializationCallData, } = deployArgs;
20
- (0, vitest_1.expect)(factory).toEqual('0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67');
21
- (0, vitest_1.expect)(factoryData).toEqual('0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000075798463024bda64d83c94a64bc7d7eab41300ef00000000000000000000000000000000000000000000000000000000000001600000000000000000000000007579f2ad53b01c3d8779fe17928e0d48885b00030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f6c02c78ded62973b43bfa523b247da0994869360000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb700000000000000000000000000000000000000000000000000000000000002a447cbbdca0000000000000000000000007579f2ad53b01c3d8779fe17928e0d48885b0003000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000013fdb5234e4e3162a810f54d9f7e980000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000006092086a3dc0020cd604a68fcf5d430007d51bb7000000000000000000000000f6c02c78ded62973b43bfa523b247da09948693600000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
22
- (0, vitest_1.expect)(salt).toEqual('0xf31933c8d3ab801f5d7dbfd374464b228d509d625a72334e218cbe08be7716e6');
23
- (0, vitest_1.expect)(implementation).toEqual('0x29fcb43b46531bca003ddc8fcb67ffe91900c762');
24
- (0, vitest_1.expect)(initializationCallData).toEqual(null);
25
- });
26
- (0, vitest_1.test)('Passkey owner', () => {
27
- const deployArgs = (0, safe_1.getDeployArgs)({
28
- owners: {
29
- type: 'passkey',
30
- accounts: [consts_1.passkeyAccount],
31
- },
32
- });
33
- (0, utils_1.assertNotNull)(deployArgs);
34
- const { factory, factoryData, salt, implementation, initializationCallData, } = deployArgs;
35
- (0, vitest_1.expect)(factory).toEqual('0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67');
36
- (0, vitest_1.expect)(factoryData).toEqual('0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000444b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000075798463024bda64d83c94a64bc7d7eab41300ef00000000000000000000000000000000000000000000000000000000000001400000000000000000000000007579f2ad53b01c3d8779fe17928e0d48885b00030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000babe99e62d8bcbd3acf5ccbcfcd4f64fe75e5e7200000000000000000000000000000000000000000000000000000000000002c447cbbdca0000000000000000000000007579f2ad53b01c3d8779fe17928e0d48885b0003000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000578c4cb0e472a5462da43c495c3f330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001580a9af0569ad3905b26a703201b358aa0904236642ebe79b22a19d00d3737637d46f725a5427ae45a9569259bf67e1e16b187d7b3ad1ed70138c4f0409677d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005ad9ce1f5035fd62ca96cef16adaaf00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
37
- (0, vitest_1.expect)(salt).toEqual('0xdc83fad4a7d91e2ee81a5adc74eb2bca07d012c5259cb8ea10e89cf05de74c8d');
38
- (0, vitest_1.expect)(implementation).toEqual('0x29fcb43b46531bca003ddc8fcb67ffe91900c762');
39
- (0, vitest_1.expect)(initializationCallData).toEqual(null);
40
- });
41
- (0, vitest_1.test)('Existing account', () => {
42
- const deployArgs = (0, safe_1.getDeployArgs)({
43
- owners: {
44
- type: 'ecdsa',
45
- accounts: [consts_1.accountA, consts_1.accountB],
46
- },
47
- initData: {
48
- factory: '0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67',
49
- factoryData: '0x1688f0b90000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000844fff40e1ec88f0966a6bc17a138345cdf7519caf9a1e0bb840330108a6a4315f1028c39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
50
- address: '0xc41bb9cfB2658dD3D74Ada0862044f5f30304b38',
51
- intentExecutorInstalled: true,
52
- },
53
- });
54
- (0, utils_1.assertNotNull)(deployArgs);
55
- const { factory, factoryData } = deployArgs;
56
- (0, vitest_1.expect)(factory).toEqual('0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67');
57
- (0, vitest_1.expect)(factoryData).toEqual('0x1688f0b90000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000844fff40e1ec88f0966a6bc17a138345cdf7519caf9a1e0bb840330108a6a4315f1028c39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
58
- });
59
- });
60
- (0, vitest_1.describe)('Get Address', () => {
61
- (0, vitest_1.test)('ECDSA owners', () => {
62
- const address = (0, safe_1.getAddress)({
63
- owners: {
64
- type: 'ecdsa',
65
- accounts: [consts_1.accountA, consts_1.accountB],
66
- },
67
- });
68
- (0, vitest_1.expect)(address).toEqual('0x3a249204D37245504d4aB37FF88f574B222a6349');
69
- });
70
- (0, vitest_1.test)('Passkey owner', () => {
71
- const address = (0, safe_1.getAddress)({
72
- owners: {
73
- type: 'passkey',
74
- accounts: [consts_1.passkeyAccount],
75
- },
76
- });
77
- (0, vitest_1.expect)(address).toEqual('0xE86e416045645E1Ca4360D5DC396E4c513277C31');
78
- });
79
- (0, vitest_1.test)('Existing account', () => {
80
- const address = (0, safe_1.getAddress)({
81
- owners: {
82
- type: 'ecdsa',
83
- accounts: [consts_1.accountA, consts_1.accountB],
84
- },
85
- initData: {
86
- factory: '0x4e1dcf7ad4e460cfd30791ccc4f9c8a4f820ec67',
87
- factoryData: '0x1688f0b90000000000000000000000007579011ab74c46090561ea277ba79d510c6c00ff0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000844fff40e1ec88f0966a6bc17a138345cdf7519caf9a1e0bb840330108a6a4315f1028c39000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
88
- address: '0xc41bb9cfB2658dD3D74Ada0862044f5f30304b38',
89
- intentExecutorInstalled: true,
90
- },
91
- });
92
- (0, vitest_1.expect)(address).toEqual('0xc41bb9cfB2658dD3D74Ada0862044f5f30304b38');
93
- });
94
- });
95
- (0, vitest_1.describe)('Get Install Data', () => {
96
- (0, vitest_1.test)('Module', () => {
97
- const installData = (0, safe_1.getInstallData)({
98
- address: MOCK_MODULE_ADDRESS,
99
- initData: '0xabcd',
100
- type: common_1.MODULE_TYPE_ID_VALIDATOR,
101
- deInitData: '0x0000',
102
- additionalContext: '0x0000',
103
- });
104
- (0, vitest_1.expect)(installData).toEqual('0x9517e29f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000028de6501fa86f2e6cd0b33c3aabdaeb4a1b93f3f00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002abcd000000000000000000000000000000000000000000000000000000000000');
105
- });
106
- });
107
- (0, vitest_1.describe)('Get Packed Signature', () => {
108
- (0, vitest_1.test)('Mock signature', async () => {
109
- const mockSignature = '0x1234';
110
- const validator = {
111
- address: '0xe35b75e5ec3c04e9cefa8e581fbee859f56edeb4',
112
- isRoot: true,
113
- };
114
- const signature = await (0, safe_1.packSignature)(mockSignature, validator);
115
- (0, vitest_1.expect)(signature).toEqual('0xe35b75e5ec3c04e9cefa8e581fbee859f56edeb41234');
116
- });
117
- });
118
- });
@@ -1,27 +0,0 @@
1
- import type { WebAuthnP256 } from 'ox';
2
- import { type Account, type Address, type Chain, type Hex } from 'viem';
3
- import type { WebAuthnAccount } from 'viem/account-abstraction';
4
- import type { OwnerSet, SignerSet } from '../../types';
5
- declare function convertOwnerSetToSignerSet(owners: OwnerSet): SignerSet;
6
- type SigningFunctions<T> = {
7
- signEcdsa: (account: Account, params: T, updateV: boolean) => Promise<Hex>;
8
- signPasskey: (account: WebAuthnAccount, params: T) => Promise<{
9
- webauthn: WebAuthnP256.SignMetadata;
10
- signature: Hex;
11
- }>;
12
- };
13
- declare function signWithMultiFactorAuth<T>(signers: SignerSet & {
14
- type: 'owner';
15
- kind: 'multi-factor';
16
- }, chain: Chain, address: Address, params: T, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
17
- declare function signWithSession<T>(signers: SignerSet & {
18
- type: 'session';
19
- }, chain: Chain, address: Address, params: T, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
20
- declare function signWithGuardians<T>(signers: SignerSet & {
21
- type: 'guardians';
22
- }, params: T, signingFunctions: SigningFunctions<T>): Promise<Hex>;
23
- declare function signWithOwners<T>(signers: SignerSet & {
24
- type: 'owner';
25
- }, chain: Chain, address: Address, params: T, signingFunctions: SigningFunctions<T>, isUserOpHash: boolean, signMain: (signers: SignerSet, chain: Chain, address: Address, params: T, isUserOpHash: boolean) => Promise<Hex>): Promise<Hex>;
26
- export { convertOwnerSetToSignerSet, signWithMultiFactorAuth, signWithSession, signWithGuardians, signWithOwners, type SigningFunctions, };
27
- //# sourceMappingURL=common.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../accounts/signing/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EAKV,KAAK,GAAG,EAGT,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAQ/D,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAStD,iBAAS,0BAA0B,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAkE/D;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1E,WAAW,EAAE,CACX,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,CAAC,KACN,OAAO,CAAC;QACX,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAA;QACnC,SAAS,EAAE,GAAG,CAAA;KACf,CAAC,CAAA;CACH,CAAA;AAED,iBAAe,uBAAuB,CAAC,CAAC,EACtC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,EAC5D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CA0Cd;AAED,iBAAe,eAAe,CAAC,CAAC,EAC9B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,EACxC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED,iBAAe,iBAAiB,CAAC,CAAC,EAChC,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,EAC1C,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACpC,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,iBAAe,cAAc,CAAC,CAAC,EAC7B,OAAO,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EACrC,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,CACR,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,CAAC,EACT,YAAY,EAAE,OAAO,KAClB,OAAO,CAAC,GAAG,CAAC,GAChB,OAAO,CAAC,GAAG,CAAC,CAqFd;AAED,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,KAAK,gBAAgB,GACtB,CAAA"}