@grimoirelabs/core 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 (205) hide show
  1. package/dist/builders/expressions.d.ts +33 -0
  2. package/dist/builders/expressions.d.ts.map +1 -0
  3. package/dist/builders/expressions.js +57 -0
  4. package/dist/builders/expressions.js.map +1 -0
  5. package/dist/builders/index.d.ts +44 -0
  6. package/dist/builders/index.d.ts.map +1 -0
  7. package/dist/builders/index.js +32 -0
  8. package/dist/builders/index.js.map +1 -0
  9. package/dist/builders/spell-builder.d.ts +124 -0
  10. package/dist/builders/spell-builder.d.ts.map +1 -0
  11. package/dist/builders/spell-builder.js +299 -0
  12. package/dist/builders/spell-builder.js.map +1 -0
  13. package/dist/builders/step-builder.d.ts +212 -0
  14. package/dist/builders/step-builder.d.ts.map +1 -0
  15. package/dist/builders/step-builder.js +499 -0
  16. package/dist/builders/step-builder.js.map +1 -0
  17. package/dist/compiler/expression-parser.d.ts +14 -0
  18. package/dist/compiler/expression-parser.d.ts.map +1 -0
  19. package/dist/compiler/expression-parser.js +460 -0
  20. package/dist/compiler/expression-parser.js.map +1 -0
  21. package/dist/compiler/grimoire/ast.d.ts +450 -0
  22. package/dist/compiler/grimoire/ast.d.ts.map +1 -0
  23. package/dist/compiler/grimoire/ast.js +19 -0
  24. package/dist/compiler/grimoire/ast.js.map +1 -0
  25. package/dist/compiler/grimoire/errors.d.ts +65 -0
  26. package/dist/compiler/grimoire/errors.d.ts.map +1 -0
  27. package/dist/compiler/grimoire/errors.js +86 -0
  28. package/dist/compiler/grimoire/errors.js.map +1 -0
  29. package/dist/compiler/grimoire/index.d.ts +24 -0
  30. package/dist/compiler/grimoire/index.d.ts.map +1 -0
  31. package/dist/compiler/grimoire/index.js +63 -0
  32. package/dist/compiler/grimoire/index.js.map +1 -0
  33. package/dist/compiler/grimoire/parser.d.ts +135 -0
  34. package/dist/compiler/grimoire/parser.d.ts.map +1 -0
  35. package/dist/compiler/grimoire/parser.js +2148 -0
  36. package/dist/compiler/grimoire/parser.js.map +1 -0
  37. package/dist/compiler/grimoire/tokenizer.d.ts +59 -0
  38. package/dist/compiler/grimoire/tokenizer.d.ts.map +1 -0
  39. package/dist/compiler/grimoire/tokenizer.js +509 -0
  40. package/dist/compiler/grimoire/tokenizer.js.map +1 -0
  41. package/dist/compiler/grimoire/transformer.d.ts +71 -0
  42. package/dist/compiler/grimoire/transformer.d.ts.map +1 -0
  43. package/dist/compiler/grimoire/transformer.js +1011 -0
  44. package/dist/compiler/grimoire/transformer.js.map +1 -0
  45. package/dist/compiler/index.d.ts +45 -0
  46. package/dist/compiler/index.d.ts.map +1 -0
  47. package/dist/compiler/index.js +97 -0
  48. package/dist/compiler/index.js.map +1 -0
  49. package/dist/compiler/ir-generator.d.ts +16 -0
  50. package/dist/compiler/ir-generator.d.ts.map +1 -0
  51. package/dist/compiler/ir-generator.js +997 -0
  52. package/dist/compiler/ir-generator.js.map +1 -0
  53. package/dist/compiler/validator.d.ts +15 -0
  54. package/dist/compiler/validator.d.ts.map +1 -0
  55. package/dist/compiler/validator.js +401 -0
  56. package/dist/compiler/validator.js.map +1 -0
  57. package/dist/index.d.ts +16 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +17 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/runtime/circuit-breaker.d.ts +59 -0
  62. package/dist/runtime/circuit-breaker.d.ts.map +1 -0
  63. package/dist/runtime/circuit-breaker.js +155 -0
  64. package/dist/runtime/circuit-breaker.js.map +1 -0
  65. package/dist/runtime/context.d.ts +92 -0
  66. package/dist/runtime/context.d.ts.map +1 -0
  67. package/dist/runtime/context.js +219 -0
  68. package/dist/runtime/context.js.map +1 -0
  69. package/dist/runtime/error-classifier.d.ts +16 -0
  70. package/dist/runtime/error-classifier.d.ts.map +1 -0
  71. package/dist/runtime/error-classifier.js +38 -0
  72. package/dist/runtime/error-classifier.js.map +1 -0
  73. package/dist/runtime/expression-evaluator.d.ts +36 -0
  74. package/dist/runtime/expression-evaluator.d.ts.map +1 -0
  75. package/dist/runtime/expression-evaluator.js +391 -0
  76. package/dist/runtime/expression-evaluator.js.map +1 -0
  77. package/dist/runtime/index.d.ts +12 -0
  78. package/dist/runtime/index.d.ts.map +1 -0
  79. package/dist/runtime/index.js +11 -0
  80. package/dist/runtime/index.js.map +1 -0
  81. package/dist/runtime/interpreter.d.ts +59 -0
  82. package/dist/runtime/interpreter.d.ts.map +1 -0
  83. package/dist/runtime/interpreter.js +414 -0
  84. package/dist/runtime/interpreter.js.map +1 -0
  85. package/dist/runtime/skills/registry.d.ts +11 -0
  86. package/dist/runtime/skills/registry.d.ts.map +1 -0
  87. package/dist/runtime/skills/registry.js +73 -0
  88. package/dist/runtime/skills/registry.js.map +1 -0
  89. package/dist/runtime/sqlite-state-store.d.ts +28 -0
  90. package/dist/runtime/sqlite-state-store.d.ts.map +1 -0
  91. package/dist/runtime/sqlite-state-store.js +180 -0
  92. package/dist/runtime/sqlite-state-store.js.map +1 -0
  93. package/dist/runtime/state-store.d.ts +52 -0
  94. package/dist/runtime/state-store.d.ts.map +1 -0
  95. package/dist/runtime/state-store.js +32 -0
  96. package/dist/runtime/state-store.js.map +1 -0
  97. package/dist/runtime/steps/action.d.ts +17 -0
  98. package/dist/runtime/steps/action.d.ts.map +1 -0
  99. package/dist/runtime/steps/action.js +430 -0
  100. package/dist/runtime/steps/action.js.map +1 -0
  101. package/dist/runtime/steps/advisory.d.ts +28 -0
  102. package/dist/runtime/steps/advisory.d.ts.map +1 -0
  103. package/dist/runtime/steps/advisory.js +209 -0
  104. package/dist/runtime/steps/advisory.js.map +1 -0
  105. package/dist/runtime/steps/compute.d.ts +9 -0
  106. package/dist/runtime/steps/compute.d.ts.map +1 -0
  107. package/dist/runtime/steps/compute.js +74 -0
  108. package/dist/runtime/steps/compute.js.map +1 -0
  109. package/dist/runtime/steps/conditional.d.ts +14 -0
  110. package/dist/runtime/steps/conditional.d.ts.map +1 -0
  111. package/dist/runtime/steps/conditional.js +58 -0
  112. package/dist/runtime/steps/conditional.js.map +1 -0
  113. package/dist/runtime/steps/emit.d.ts +9 -0
  114. package/dist/runtime/steps/emit.d.ts.map +1 -0
  115. package/dist/runtime/steps/emit.js +70 -0
  116. package/dist/runtime/steps/emit.js.map +1 -0
  117. package/dist/runtime/steps/halt.d.ts +9 -0
  118. package/dist/runtime/steps/halt.d.ts.map +1 -0
  119. package/dist/runtime/steps/halt.js +19 -0
  120. package/dist/runtime/steps/halt.js.map +1 -0
  121. package/dist/runtime/steps/loop.d.ts +14 -0
  122. package/dist/runtime/steps/loop.d.ts.map +1 -0
  123. package/dist/runtime/steps/loop.js +109 -0
  124. package/dist/runtime/steps/loop.js.map +1 -0
  125. package/dist/runtime/steps/parallel.d.ts +9 -0
  126. package/dist/runtime/steps/parallel.d.ts.map +1 -0
  127. package/dist/runtime/steps/parallel.js +87 -0
  128. package/dist/runtime/steps/parallel.js.map +1 -0
  129. package/dist/runtime/steps/pipeline.d.ts +9 -0
  130. package/dist/runtime/steps/pipeline.d.ts.map +1 -0
  131. package/dist/runtime/steps/pipeline.js +125 -0
  132. package/dist/runtime/steps/pipeline.js.map +1 -0
  133. package/dist/runtime/steps/try.d.ts +13 -0
  134. package/dist/runtime/steps/try.d.ts.map +1 -0
  135. package/dist/runtime/steps/try.js +222 -0
  136. package/dist/runtime/steps/try.js.map +1 -0
  137. package/dist/runtime/steps/wait.d.ts +9 -0
  138. package/dist/runtime/steps/wait.d.ts.map +1 -0
  139. package/dist/runtime/steps/wait.js +38 -0
  140. package/dist/runtime/steps/wait.js.map +1 -0
  141. package/dist/types/actions.d.ts +162 -0
  142. package/dist/types/actions.d.ts.map +1 -0
  143. package/dist/types/actions.js +5 -0
  144. package/dist/types/actions.js.map +1 -0
  145. package/dist/types/execution.d.ts +276 -0
  146. package/dist/types/execution.d.ts.map +1 -0
  147. package/dist/types/execution.js +5 -0
  148. package/dist/types/execution.js.map +1 -0
  149. package/dist/types/expressions.d.ts +100 -0
  150. package/dist/types/expressions.d.ts.map +1 -0
  151. package/dist/types/expressions.js +48 -0
  152. package/dist/types/expressions.js.map +1 -0
  153. package/dist/types/index.d.ts +14 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +5 -0
  156. package/dist/types/index.js.map +1 -0
  157. package/dist/types/ir.d.ts +187 -0
  158. package/dist/types/ir.d.ts.map +1 -0
  159. package/dist/types/ir.js +5 -0
  160. package/dist/types/ir.js.map +1 -0
  161. package/dist/types/policy.d.ts +123 -0
  162. package/dist/types/policy.d.ts.map +1 -0
  163. package/dist/types/policy.js +5 -0
  164. package/dist/types/policy.js.map +1 -0
  165. package/dist/types/primitives.d.ts +76 -0
  166. package/dist/types/primitives.d.ts.map +1 -0
  167. package/dist/types/primitives.js +10 -0
  168. package/dist/types/primitives.js.map +1 -0
  169. package/dist/types/steps.d.ts +226 -0
  170. package/dist/types/steps.d.ts.map +1 -0
  171. package/dist/types/steps.js +5 -0
  172. package/dist/types/steps.js.map +1 -0
  173. package/dist/venues/index.d.ts +6 -0
  174. package/dist/venues/index.d.ts.map +1 -0
  175. package/dist/venues/index.js +26 -0
  176. package/dist/venues/index.js.map +1 -0
  177. package/dist/venues/types.d.ts +40 -0
  178. package/dist/venues/types.d.ts.map +1 -0
  179. package/dist/venues/types.js +5 -0
  180. package/dist/venues/types.js.map +1 -0
  181. package/dist/wallet/executor.d.ts +109 -0
  182. package/dist/wallet/executor.d.ts.map +1 -0
  183. package/dist/wallet/executor.js +354 -0
  184. package/dist/wallet/executor.js.map +1 -0
  185. package/dist/wallet/index.d.ts +14 -0
  186. package/dist/wallet/index.d.ts.map +1 -0
  187. package/dist/wallet/index.js +13 -0
  188. package/dist/wallet/index.js.map +1 -0
  189. package/dist/wallet/keystore.d.ts +44 -0
  190. package/dist/wallet/keystore.d.ts.map +1 -0
  191. package/dist/wallet/keystore.js +296 -0
  192. package/dist/wallet/keystore.js.map +1 -0
  193. package/dist/wallet/provider.d.ts +111 -0
  194. package/dist/wallet/provider.d.ts.map +1 -0
  195. package/dist/wallet/provider.js +309 -0
  196. package/dist/wallet/provider.js.map +1 -0
  197. package/dist/wallet/tx-builder.d.ts +85 -0
  198. package/dist/wallet/tx-builder.d.ts.map +1 -0
  199. package/dist/wallet/tx-builder.js +290 -0
  200. package/dist/wallet/tx-builder.js.map +1 -0
  201. package/dist/wallet/types.d.ts +116 -0
  202. package/dist/wallet/types.d.ts.map +1 -0
  203. package/dist/wallet/types.js +86 -0
  204. package/dist/wallet/types.js.map +1 -0
  205. package/package.json +39 -0
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Private key management
3
+ *
4
+ * Supports loading keys from:
5
+ * - Environment variables
6
+ * - Raw hex strings (for testing)
7
+ * - BIP-39 mnemonics
8
+ * - Encrypted keystore JSON files
9
+ */
10
+ import type { Address } from "../types/primitives.js";
11
+ import type { KeyConfig, Wallet } from "./types.js";
12
+ /** Error thrown when key loading fails */
13
+ export declare class KeyLoadError extends Error {
14
+ constructor(message: string);
15
+ }
16
+ /**
17
+ * Load a private key from the specified source
18
+ */
19
+ export declare function loadPrivateKey(config: KeyConfig): `0x${string}`;
20
+ /**
21
+ * Create a wallet from a private key
22
+ */
23
+ export declare function createWallet(privateKey: `0x${string}`, chainId: number, rpcUrl: string): Wallet;
24
+ /**
25
+ * Create a wallet from a mnemonic phrase
26
+ */
27
+ export declare function createWalletFromMnemonic(mnemonic: string, chainId: number, rpcUrl: string, derivationPath?: string): Wallet;
28
+ /**
29
+ * Create a wallet from configuration
30
+ */
31
+ export declare function createWalletFromConfig(config: KeyConfig, chainId: number, rpcUrl: string): Wallet;
32
+ /**
33
+ * Generate a new random private key
34
+ */
35
+ export declare function generatePrivateKey(): `0x${string}`;
36
+ /**
37
+ * Encrypt a private key into a keystore JSON string
38
+ */
39
+ export declare function createKeystore(privateKey: `0x${string}`, password: string): Promise<string>;
40
+ /**
41
+ * Get wallet address from a key config without creating full wallet
42
+ */
43
+ export declare function getAddressFromConfig(config: KeyConfig): Address;
44
+ //# sourceMappingURL=keystore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.d.ts","sourceRoot":"","sources":["../../src/wallet/keystore.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAA0C,MAAM,EAAE,MAAM,YAAY,CAAC;AAE5F,0CAA0C;AAC1C,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AA4BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,KAAK,MAAM,EAAE,CA4C/D;AAgFD;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe/F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAejG;AA+ED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,KAAK,MAAM,EAAE,CAElD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMjG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAiB/D"}
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Private key management
3
+ *
4
+ * Supports loading keys from:
5
+ * - Environment variables
6
+ * - Raw hex strings (for testing)
7
+ * - BIP-39 mnemonics
8
+ * - Encrypted keystore JSON files
9
+ */
10
+ import { readFileSync } from "node:fs";
11
+ import { Wallet as EthersWallet } from "ethers";
12
+ import { http, createWalletClient, publicActions, } from "viem";
13
+ import { mnemonicToAccount, privateKeyToAccount, generatePrivateKey as viemGeneratePrivateKey, } from "viem/accounts";
14
+ import { arbitrum, base, mainnet, optimism, polygon, sepolia } from "viem/chains";
15
+ /** Error thrown when key loading fails */
16
+ export class KeyLoadError extends Error {
17
+ constructor(message) {
18
+ super(message);
19
+ this.name = "KeyLoadError";
20
+ }
21
+ }
22
+ /** HyperEVM chain definition */
23
+ const hyperEVM = {
24
+ id: 999,
25
+ name: "HyperEVM",
26
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
27
+ rpcUrls: {
28
+ default: { http: ["https://rpc.hyperliquid.xyz/evm"] },
29
+ },
30
+ };
31
+ /** Map chain IDs to viem chain objects */
32
+ const VIEM_CHAINS = {
33
+ 1: mainnet,
34
+ 10: optimism,
35
+ 137: polygon,
36
+ 42161: arbitrum,
37
+ 8453: base,
38
+ 999: hyperEVM,
39
+ 11155111: sepolia,
40
+ };
41
+ /**
42
+ * Load a private key from the specified source
43
+ */
44
+ export function loadPrivateKey(config) {
45
+ switch (config.type) {
46
+ case "raw":
47
+ return validatePrivateKey(config.source);
48
+ case "env": {
49
+ const value = process.env[config.source];
50
+ if (!value) {
51
+ throw new KeyLoadError(`Environment variable ${config.source} is not set`);
52
+ }
53
+ return validatePrivateKey(value);
54
+ }
55
+ case "mnemonic": {
56
+ // For mnemonic, the source is the mnemonic phrase
57
+ // Check if it's an env var reference
58
+ let mnemonic = config.source;
59
+ if (!mnemonic.includes(" ")) {
60
+ // Likely an env var name
61
+ const envValue = process.env[config.source];
62
+ if (envValue) {
63
+ mnemonic = envValue;
64
+ }
65
+ }
66
+ if (!isValidMnemonic(mnemonic)) {
67
+ throw new KeyLoadError("Invalid mnemonic phrase");
68
+ }
69
+ const path = (config.derivationPath ?? "m/44'/60'/0'/0/0");
70
+ const _account = mnemonicToAccount(mnemonic, { path });
71
+ // Note: viem doesn't expose the private key directly from mnemonic account
72
+ // We need to derive it differently for raw access
73
+ throw new KeyLoadError("Mnemonic support requires direct account usage. Use createWalletFromMnemonic instead.");
74
+ }
75
+ case "keystore":
76
+ return loadPrivateKeyFromKeystore(config);
77
+ default:
78
+ throw new KeyLoadError(`Unknown key source type: ${config.type}`);
79
+ }
80
+ }
81
+ /**
82
+ * Validate and normalize a private key
83
+ */
84
+ function validatePrivateKey(key) {
85
+ // Remove whitespace
86
+ let normalized = key.trim();
87
+ // Add 0x prefix if missing
88
+ if (!normalized.startsWith("0x")) {
89
+ normalized = `0x${normalized}`;
90
+ }
91
+ // Check length (32 bytes = 64 hex chars + 0x prefix)
92
+ if (normalized.length !== 66) {
93
+ throw new KeyLoadError(`Invalid private key length: expected 66 characters, got ${normalized.length}`);
94
+ }
95
+ // Check if valid hex
96
+ if (!/^0x[0-9a-fA-F]{64}$/.test(normalized)) {
97
+ throw new KeyLoadError("Invalid private key: must be 32 bytes of hex");
98
+ }
99
+ return normalized;
100
+ }
101
+ /**
102
+ * Load a private key from a keystore JSON source
103
+ */
104
+ function loadPrivateKeyFromKeystore(config) {
105
+ if (!config.password) {
106
+ throw new KeyLoadError("Keystore password is required");
107
+ }
108
+ const keystoreJson = resolveKeystoreSource(config.source);
109
+ try {
110
+ const wallet = EthersWallet.fromEncryptedJsonSync(keystoreJson, config.password);
111
+ return validatePrivateKey(wallet.privateKey);
112
+ }
113
+ catch (error) {
114
+ throw new KeyLoadError(`Failed to decrypt keystore: ${error.message}`);
115
+ }
116
+ }
117
+ /**
118
+ * Resolve keystore JSON from file path, env var, or raw JSON string
119
+ */
120
+ function resolveKeystoreSource(source) {
121
+ const trimmed = source.trim();
122
+ if (trimmed.startsWith("{") && trimmed.endsWith("}")) {
123
+ return trimmed;
124
+ }
125
+ const envValue = process.env[source];
126
+ if (envValue) {
127
+ return envValue;
128
+ }
129
+ try {
130
+ return readFileSync(source, "utf-8");
131
+ }
132
+ catch (error) {
133
+ throw new KeyLoadError(`Unable to read keystore JSON from '${source}': ${error.message}`);
134
+ }
135
+ }
136
+ /**
137
+ * Check if a string is a valid BIP-39 mnemonic
138
+ */
139
+ function isValidMnemonic(phrase) {
140
+ const words = phrase.trim().split(/\s+/);
141
+ // BIP-39 mnemonics are 12, 15, 18, 21, or 24 words
142
+ return [12, 15, 18, 21, 24].includes(words.length);
143
+ }
144
+ /**
145
+ * Create a wallet from a private key
146
+ */
147
+ export function createWallet(privateKey, chainId, rpcUrl) {
148
+ const account = privateKeyToAccount(privateKey);
149
+ const chain = VIEM_CHAINS[chainId];
150
+ if (!chain) {
151
+ throw new KeyLoadError(`Unsupported chain ID: ${chainId}`);
152
+ }
153
+ const client = createWalletClient({
154
+ account,
155
+ chain,
156
+ transport: http(rpcUrl),
157
+ }).extend(publicActions);
158
+ return new ViemWallet(client, account, chainId);
159
+ }
160
+ /**
161
+ * Create a wallet from a mnemonic phrase
162
+ */
163
+ export function createWalletFromMnemonic(mnemonic, chainId, rpcUrl, derivationPath) {
164
+ const path = (derivationPath ?? "m/44'/60'/0'/0/0");
165
+ const account = mnemonicToAccount(mnemonic, { path });
166
+ const chain = VIEM_CHAINS[chainId];
167
+ if (!chain) {
168
+ throw new KeyLoadError(`Unsupported chain ID: ${chainId}`);
169
+ }
170
+ const client = createWalletClient({
171
+ account,
172
+ chain,
173
+ transport: http(rpcUrl),
174
+ }).extend(publicActions);
175
+ return new ViemWallet(client, account, chainId);
176
+ }
177
+ /**
178
+ * Create a wallet from configuration
179
+ */
180
+ export function createWalletFromConfig(config, chainId, rpcUrl) {
181
+ if (config.type === "mnemonic") {
182
+ let mnemonic = config.source;
183
+ // Check if it's an env var reference
184
+ if (!mnemonic.includes(" ")) {
185
+ const envValue = process.env[config.source];
186
+ if (envValue) {
187
+ mnemonic = envValue;
188
+ }
189
+ }
190
+ return createWalletFromMnemonic(mnemonic, chainId, rpcUrl, config.derivationPath);
191
+ }
192
+ const privateKey = loadPrivateKey(config);
193
+ return createWallet(privateKey, chainId, rpcUrl);
194
+ }
195
+ /**
196
+ * Wallet implementation using viem
197
+ */
198
+ class ViemWallet {
199
+ client;
200
+ account;
201
+ chainId;
202
+ constructor(client, account, chainId) {
203
+ this.client = client;
204
+ this.account = account;
205
+ this.chainId = chainId;
206
+ }
207
+ get address() {
208
+ return this.account.address;
209
+ }
210
+ async signTransaction(tx) {
211
+ const request = this.toViemRequest(tx);
212
+ if (!this.account.signTransaction) {
213
+ throw new Error("Account does not support signTransaction");
214
+ }
215
+ return await this.account.signTransaction(request);
216
+ }
217
+ async signMessage(message) {
218
+ return await this.client.signMessage({
219
+ account: this.account,
220
+ message,
221
+ });
222
+ }
223
+ async sendTransaction(tx) {
224
+ const request = this.toViemRequest(tx);
225
+ // Send the transaction
226
+ const hash = await this.client.sendTransaction(request);
227
+ // Wait for confirmation
228
+ const receipt = await this.client.waitForTransactionReceipt({
229
+ hash,
230
+ confirmations: 1,
231
+ });
232
+ return {
233
+ hash: receipt.transactionHash,
234
+ blockNumber: receipt.blockNumber,
235
+ blockHash: receipt.blockHash,
236
+ gasUsed: receipt.gasUsed,
237
+ effectiveGasPrice: receipt.effectiveGasPrice,
238
+ status: receipt.status === "success" ? "success" : "reverted",
239
+ contractAddress: receipt.contractAddress,
240
+ logs: receipt.logs.map((log) => ({
241
+ address: log.address,
242
+ topics: log.topics,
243
+ data: log.data,
244
+ logIndex: log.logIndex,
245
+ })),
246
+ };
247
+ }
248
+ toViemRequest(tx) {
249
+ return {
250
+ to: tx.to,
251
+ value: tx.value,
252
+ data: tx.data,
253
+ gas: tx.gasLimit,
254
+ maxFeePerGas: tx.maxFeePerGas,
255
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas,
256
+ nonce: tx.nonce,
257
+ };
258
+ }
259
+ }
260
+ /**
261
+ * Generate a new random private key
262
+ */
263
+ export function generatePrivateKey() {
264
+ return viemGeneratePrivateKey();
265
+ }
266
+ /**
267
+ * Encrypt a private key into a keystore JSON string
268
+ */
269
+ export async function createKeystore(privateKey, password) {
270
+ if (!password) {
271
+ throw new KeyLoadError("Keystore password must not be empty");
272
+ }
273
+ const wallet = new EthersWallet(privateKey);
274
+ return await wallet.encrypt(password);
275
+ }
276
+ /**
277
+ * Get wallet address from a key config without creating full wallet
278
+ */
279
+ export function getAddressFromConfig(config) {
280
+ if (config.type === "mnemonic") {
281
+ let mnemonic = config.source;
282
+ if (!mnemonic.includes(" ")) {
283
+ const envValue = process.env[config.source];
284
+ if (envValue) {
285
+ mnemonic = envValue;
286
+ }
287
+ }
288
+ const path = (config.derivationPath ?? "m/44'/60'/0'/0/0");
289
+ const account = mnemonicToAccount(mnemonic, { path });
290
+ return account.address;
291
+ }
292
+ const privateKey = loadPrivateKey(config);
293
+ const account = privateKeyToAccount(privateKey);
294
+ return account.address;
295
+ }
296
+ //# sourceMappingURL=keystore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../src/wallet/keystore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * RPC Provider management
3
+ *
4
+ * Handles connection to blockchain nodes with:
5
+ * - Automatic fallback to backup URLs
6
+ * - Retry with exponential backoff
7
+ * - Gas price estimation
8
+ */
9
+ import { type Abi, type PublicClient } from "viem";
10
+ import type { Address } from "../types/primitives.js";
11
+ import type { GasEstimate, ProviderConfig } from "./types.js";
12
+ /**
13
+ * Provider wrapper with fallback and retry support
14
+ */
15
+ export declare class Provider {
16
+ private client;
17
+ private config;
18
+ private currentUrlIndex;
19
+ constructor(config: ProviderConfig);
20
+ /**
21
+ * Get the chain ID
22
+ */
23
+ get chainId(): number;
24
+ /**
25
+ * Get the current RPC URL
26
+ */
27
+ get rpcUrl(): string;
28
+ /**
29
+ * Get underlying viem client
30
+ */
31
+ getClient(): PublicClient;
32
+ /**
33
+ * Get the current block number
34
+ */
35
+ getBlockNumber(): Promise<bigint>;
36
+ /**
37
+ * Get the balance of an address
38
+ */
39
+ getBalance(address: Address): Promise<bigint>;
40
+ /**
41
+ * Get the nonce for an address
42
+ */
43
+ getNonce(address: Address): Promise<number>;
44
+ /**
45
+ * Estimate gas for a transaction
46
+ */
47
+ estimateGas(tx: {
48
+ to: Address;
49
+ data?: string;
50
+ value?: bigint;
51
+ from?: Address;
52
+ }): Promise<bigint>;
53
+ /**
54
+ * Get current gas prices (EIP-1559)
55
+ */
56
+ getGasPrices(): Promise<{
57
+ maxFeePerGas: bigint;
58
+ maxPriorityFeePerGas: bigint;
59
+ }>;
60
+ /**
61
+ * Get full gas estimate for a transaction
62
+ */
63
+ getGasEstimate(tx: {
64
+ to: Address;
65
+ data?: string;
66
+ value?: bigint;
67
+ from?: Address;
68
+ }): Promise<GasEstimate>;
69
+ /**
70
+ * Read contract data
71
+ */
72
+ readContract<T>(params: {
73
+ address: Address;
74
+ abi: Abi;
75
+ functionName: string;
76
+ args?: readonly unknown[];
77
+ }): Promise<T>;
78
+ /**
79
+ * Wait for a transaction receipt
80
+ */
81
+ waitForTransaction(hash: string, confirmations?: number): Promise<unknown>;
82
+ /**
83
+ * Execute with retry and fallback
84
+ */
85
+ private withRetry;
86
+ /**
87
+ * Check if we should switch to a different provider
88
+ */
89
+ private shouldSwitchProvider;
90
+ /**
91
+ * Switch to a different RPC URL
92
+ */
93
+ private switchToUrl;
94
+ /**
95
+ * Sleep for a duration
96
+ */
97
+ private sleep;
98
+ }
99
+ /**
100
+ * Create a provider for a specific chain
101
+ */
102
+ export declare function createProvider(chainId: number, rpcUrl?: string): Provider;
103
+ /**
104
+ * Format wei to human-readable string
105
+ */
106
+ export declare function formatWei(wei: bigint, decimals?: number): string;
107
+ /**
108
+ * Format gas cost to USD (rough estimate)
109
+ */
110
+ export declare function formatGasCostUsd(gasUsed: bigint, gasPrice: bigint, ethPriceUsd?: number): string;
111
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAQ,KAAK,GAAG,EAAE,KAAK,YAAY,EAAsB,MAAM,MAAM,CAAC;AAE7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA2E9D;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,EAAE,cAAc;IAqBlC;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED;;OAEG;IACH,SAAS,IAAI,YAAY;IAIzB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAMnD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjD;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE;QACpB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IAeF;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE;QACvB,EAAE,EAAE,OAAO,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,GAAG,OAAO,CAAC,WAAW,CAAC;IAcxB;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE;QAC5B,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,GAAG,CAAC;QACT,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;KAC3B,GAAG,OAAO,CAAC,CAAC,CAAC;IAYd;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3E;;OAEG;YACW,SAAS;IAgCvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAgBzE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAa5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,SAAO,GAAG,MAAM,CAM9F"}