near-kit 0.1.0 → 0.2.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.
package/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # near-kit
2
+
2
3
  [![npm version](https://img.shields.io/npm/v/near-kit.svg)](https://www.npmjs.com/package/near-kit)
3
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4
5
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue.svg)](https://www.typescriptlang.org/)
@@ -26,75 +27,129 @@ bun install near-kit
26
27
  ## Quick Start
27
28
 
28
29
  ```typescript
29
- import { Near } from 'near-kit';
30
+ import { Near } from "near-kit"
30
31
 
31
- // Initialize with a private key for signing transactions
32
+ // Initialize for backend/scripts
32
33
  const near = new Near({
33
- network: 'testnet',
34
- privateKey: 'ed25519:...', // Your account's private key
35
- defaultSignerId: 'alice.testnet' // Default account for signing
36
- });
34
+ network: "testnet",
35
+ privateKey: "ed25519:...",
36
+ defaultSignerId: "alice.testnet",
37
+ })
38
+
39
+ // View methods (read-only, no gas)
40
+ const balance = await near.view("example.testnet", "get_balance", {
41
+ account_id: "alice.testnet",
42
+ })
43
+
44
+ // Call methods (requires signature, costs gas)
45
+ await near.call(
46
+ "example.testnet",
47
+ "increment",
48
+ {},
49
+ {attachedDeposit: "0.1 NEAR"}
50
+ )
37
51
 
38
- // View a contract method (read-only, no gas)
39
- const balance = await near.view('example.testnet', 'get_balance', {
40
- account_id: 'alice.testnet'
41
- });
52
+ // Send NEAR tokens
53
+ await near.send("bob.testnet", "5 NEAR")
54
+ ```
42
55
 
43
- // Call a contract method (requires signature, costs gas)
44
- await near.call('example.testnet', 'increment', {}, {
45
- attachedDeposit: '0.1' // Attach 0.1 NEAR
46
- });
56
+ ## Getting Started
47
57
 
48
- // Send NEAR tokens
49
- await near.send('bob.testnet', '5'); // Send 5 NEAR to Bob
58
+ near-kit provides a unified API that works across different environments. Configuration varies by environment, but the API for calling contracts, sending transactions, and building transactions remains identical.
50
59
 
51
- // Check account balance
52
- const accountBalance = await near.getBalance('alice.testnet');
53
- console.log(accountBalance); // "100.00 NEAR"
60
+ ### Backend & Scripts
61
+
62
+ For local testing, use the sandbox (no network or key configuration needed):
63
+
64
+ ```typescript
65
+ import { Sandbox } from "near-kit"
66
+
67
+ const sandbox = await Sandbox.start()
68
+ const near = new Near({ network: sandbox })
69
+
70
+ // Test with automatically provisioned accounts
71
+ await near.call("contract.test.near", "method", {})
72
+
73
+ await sandbox.stop()
74
+ ```
75
+
76
+ For testnet/mainnet development, pass a private key directly:
77
+
78
+ ```typescript
79
+ const near = new Near({
80
+ network: "testnet",
81
+ privateKey: "ed25519:...",
82
+ defaultSignerId: "alice.testnet",
83
+ })
84
+ ```
85
+
86
+ For production applications, use a keyStore:
87
+
88
+ ```typescript
89
+ import { FileKeyStore } from "near-kit"
90
+
91
+ const near = new Near({
92
+ network: "testnet",
93
+ keyStore: new FileKeyStore("~/.near-credentials"),
94
+ })
95
+ ```
96
+
97
+ ### Frontend & Wallets
98
+
99
+ In the browser, connect to user wallets. The same `near.call()`, `near.send()`, and `near.transaction()` methods work seamlessly:
100
+
101
+ ```typescript
102
+ import { fromWalletSelector } from "near-kit"
103
+
104
+ const near = new Near({
105
+ network: "testnet",
106
+ wallet: fromWalletSelector(walletInstance),
107
+ })
108
+
109
+ // Same API as backend
110
+ await near.call("contract.near", "method", { arg: "value" })
54
111
  ```
55
112
 
113
+ This works through a signer abstraction - whether you pass `privateKey`, `keyStore`, `wallet`, or `sandbox`, they all implement the same signing interface internally.
114
+
56
115
  ## Core API
57
116
 
58
117
  ### Initialization
59
118
 
60
119
  ```typescript
61
120
  // Simple - defaults to mainnet
62
- const near = new Near();
121
+ const near = new Near()
63
122
 
64
123
  // With network selection
65
- const near = new Near({ network: 'testnet' });
124
+ const near = new Near({ network: "testnet" })
66
125
 
67
126
  // With custom configuration
68
127
  const near = new Near({
69
- network: 'testnet',
70
- privateKey: 'ed25519:...',
71
- });
128
+ network: "testnet",
129
+ privateKey: "ed25519:...",
130
+ })
72
131
  ```
73
132
 
74
133
  ### Basic Operations
75
134
 
76
135
  ```typescript
77
136
  // View methods (free, no signature required)
78
- const result = await near.view(
79
- 'contract.near',
80
- 'get_data',
81
- { key: 'value' }
82
- );
137
+ const result = await near.view("contract.near", "get_data", { key: "value" })
83
138
 
84
139
  // Check account balance
85
- const balance = await near.getBalance('alice.near');
140
+ const balance = await near.getBalance("alice.near")
86
141
 
87
142
  // Check if account exists
88
- const exists = await near.accountExists('alice.near');
143
+ const exists = await near.accountExists("alice.near")
89
144
 
90
145
  // Get network status
91
- const status = await near.getStatus();
146
+ const status = await near.getStatus()
92
147
  ```
93
148
 
94
149
  ### Type-Safe Contracts
95
150
 
96
151
  ```typescript
97
- import type { Contract } from 'near-kit';
152
+ import type { Contract } from "near-kit"
98
153
 
99
154
  // Define contract interface using Contract<> helper
100
155
  type MyContract = Contract<{
@@ -109,17 +164,17 @@ type MyContract = Contract<{
109
164
  }>
110
165
 
111
166
  // Create type-safe contract
112
- const contract = near.contract<MyContract>('example.near');
167
+ const contract = near.contract<MyContract>("example.near")
113
168
 
114
169
  // Fully typed method calls
115
- const balance = await contract.view.get_balance({ account_id: 'alice.near' });
116
- const info = await contract.view.get_info();
170
+ const balance = await contract.view.get_balance({ account_id: "alice.near" })
171
+ const info = await contract.view.get_info()
117
172
 
118
173
  // Call methods automatically get options parameter
119
174
  await contract.call.transfer(
120
- { to: 'bob.near', amount: '10' },
121
- { attachedDeposit: '1 NEAR' }
122
- );
175
+ { to: "bob.near", amount: "10" },
176
+ { attachedDeposit: "1 NEAR" }
177
+ )
123
178
  ```
124
179
 
125
180
  ### Transaction Builder
@@ -127,12 +182,16 @@ await contract.call.transfer(
127
182
  ```typescript
128
183
  // Alice builds a transaction with multiple actions
129
184
  // 'alice.near' is the signer - the account that signs and pays for this transaction
130
- const receipt = await near.transaction('alice.near') // Alice signs
131
- .transfer('bob.near', '10') // Alice sends Bob 10 NEAR
132
- .functionCall('market.near', 'buy', { id: '123' }, {
133
- attachedDeposit: '5' // Alice attaches 5 NEAR to the call
134
- })
135
- .send();
185
+ const receipt = await near
186
+ .transaction("alice.near") // Alice signs
187
+ .transfer("bob.near", "10 NEAR") // Alice sends Bob 10 NEAR
188
+ .functionCall(
189
+ "market.near",
190
+ "buy",
191
+ { id: "123" },
192
+ { attachedDeposit: "5 NEAR" } // Alice attaches 5 NEAR to the call
193
+ )
194
+ .send()
136
195
  ```
137
196
 
138
197
  ### Batch Operations
@@ -140,125 +199,167 @@ const receipt = await near.transaction('alice.near') // Alice signs
140
199
  ```typescript
141
200
  // Run multiple operations in parallel
142
201
  const [balance, status, exists] = await near.batch(
143
- near.getBalance('alice.near'),
202
+ near.getBalance("alice.near"),
144
203
  near.getStatus(),
145
- near.accountExists('bob.near')
146
- );
204
+ near.accountExists("bob.near")
205
+ )
147
206
  ```
148
207
 
149
208
  ## Local Testing with Sandbox
150
209
 
151
210
  ```typescript
152
- import { Sandbox } from 'near-kit';
211
+ import { Sandbox } from "near-kit"
153
212
 
154
- const sandbox = await Sandbox.start();
155
- const near = new Near({ network: sandbox });
213
+ const sandbox = await Sandbox.start()
214
+ const near = new Near({ network: sandbox })
156
215
  // ... run tests
157
- await sandbox.stop();
216
+ await sandbox.stop()
158
217
  ```
159
218
 
160
219
  **With test framework:**
220
+
161
221
  ```typescript
162
- let sandbox: Sandbox;
163
- beforeAll(async () => { sandbox = await Sandbox.start(); });
164
- afterAll(async () => { await sandbox.stop(); });
222
+ let sandbox: Sandbox
223
+ beforeAll(async () => {
224
+ sandbox = await Sandbox.start()
225
+ })
226
+ afterAll(async () => {
227
+ await sandbox.stop()
228
+ })
165
229
  ```
166
230
 
167
231
  ## Key Management
168
232
 
169
233
  ```typescript
170
- import { InMemoryKeyStore, FileKeyStore } from 'near-kit';
234
+ import { InMemoryKeyStore, FileKeyStore, RotatingKeyStore } from "near-kit"
171
235
 
172
236
  // In-memory (runtime only)
173
237
  const near = new Near({
174
238
  keyStore: new InMemoryKeyStore({
175
- 'alice.near': 'ed25519:...',
176
- })
177
- });
239
+ "alice.near": "ed25519:...",
240
+ }),
241
+ })
178
242
 
179
243
  // File-based (persistent)
180
244
  const near = new Near({
181
- keyStore: new FileKeyStore('~/.near-credentials')
182
- });
245
+ keyStore: new FileKeyStore("~/.near-credentials"),
246
+ })
247
+
248
+ // Rotating keys for high-throughput concurrent transactions
249
+ const near = new Near({
250
+ keyStore: new RotatingKeyStore({
251
+ "alice.near": [
252
+ "ed25519:key1...",
253
+ "ed25519:key2...",
254
+ "ed25519:key3...",
255
+ ],
256
+ }),
257
+ })
183
258
  ```
184
259
 
185
260
  ## Wallet Integration
186
261
 
187
- near-kit works seamlessly with popular NEAR wallets - just pass the wallet adapter and all methods will use the wallet for signing.
262
+ near-kit integrates with Wallet Selector and HOT Connector through a signer abstraction. Wallet adapters are converted to signers via `fromWalletSelector()` and `fromHotConnect()` shims, allowing the same API to work across backend and frontend without separate client implementations.
188
263
 
189
264
  ### NEAR Wallet Selector
190
265
 
191
266
  ```typescript
192
- import { Near, fromWalletSelector } from 'near-kit';
193
- import { setupWalletSelector } from '@near-wallet-selector/core';
194
- import { setupMyNearWallet } from '@near-wallet-selector/my-near-wallet';
195
- import { setupHereWallet } from '@near-wallet-selector/here-wallet';
267
+ import { Near, fromWalletSelector } from "near-kit"
268
+ import { setupWalletSelector } from "@near-wallet-selector/core"
269
+ import { setupMyNearWallet } from "@near-wallet-selector/my-near-wallet"
270
+ import { setupHereWallet } from "@near-wallet-selector/here-wallet"
196
271
 
197
272
  // Setup wallet selector
198
273
  const selector = await setupWalletSelector({
199
- network: 'testnet',
200
- modules: [
201
- setupMyNearWallet(),
202
- setupHereWallet(),
203
- ],
204
- });
274
+ network: "testnet",
275
+ modules: [setupMyNearWallet(), setupHereWallet()],
276
+ })
205
277
 
206
278
  // Get wallet instance (after user connects)
207
- const wallet = await selector.wallet();
279
+ const wallet = await selector.wallet()
208
280
 
209
281
  // Use with near-kit
210
282
  const near = new Near({
211
- network: 'testnet',
283
+ network: "testnet",
212
284
  wallet: fromWalletSelector(wallet),
213
- });
285
+ })
214
286
 
215
287
  // All operations now use the wallet for signing
216
- await near.call('contract.near', 'method', { arg: 'value' });
217
- await near.send('bob.near', '10');
288
+ await near.call("contract.near", "method", { arg: "value" })
289
+ await near.send("bob.near", "10 NEAR")
218
290
  ```
219
291
 
220
292
  ### HOT Connector
221
293
 
222
294
  ```typescript
223
- import { Near, fromHotConnect } from 'near-kit';
224
- import { NearConnector } from '@hot-labs/near-connect';
295
+ import { Near, fromHotConnect } from "near-kit"
296
+ import { NearConnector } from "@hot-labs/near-connect"
225
297
 
226
298
  // Create connector
227
- const connector = new NearConnector({ network: 'testnet' });
299
+ const connector = new NearConnector({ network: "testnet" })
228
300
 
229
301
  // Wait for user to connect
230
- connector.on('wallet:signIn', async () => {
302
+ connector.on("wallet:signIn", async () => {
231
303
  const near = new Near({
232
- network: 'testnet',
304
+ network: "testnet",
233
305
  wallet: fromHotConnect(connector),
234
- });
306
+ })
235
307
 
236
308
  // Use near-kit with the connected wallet
237
- await near.call('contract.near', 'method', { arg: 'value' });
238
- });
309
+ await near.call("contract.near", "method", { arg: "value" })
310
+ })
239
311
 
240
312
  // Trigger wallet connection
241
- await connector.signIn();
313
+ await connector.signIn()
242
314
  ```
243
315
 
244
316
  ## Error Handling
245
317
 
318
+ Errors are organized by category and include detailed context for debugging. Use `instanceof` checks to handle specific error types.
319
+
320
+ #### Network Errors
321
+
246
322
  ```typescript
247
- import {
248
- InsufficientBalanceError,
249
- FunctionCallError,
250
- NetworkError,
251
- } from 'near-kit';
323
+ import { NetworkError, TimeoutError } from "near-kit"
252
324
 
253
325
  try {
254
- await near.call('contract.near', 'method', {});
326
+ await near.call("contract.near", "method", {})
255
327
  } catch (error) {
256
- if (error instanceof InsufficientBalanceError) {
257
- console.log(`Need ${error.required}, have ${error.available}`);
258
- } else if (error instanceof FunctionCallError) {
259
- console.log(`Contract error: ${error.panic}`);
328
+ if (error instanceof TimeoutError) {
329
+ console.log("Request timed out - already retried automatically")
260
330
  } else if (error instanceof NetworkError) {
261
- // Retry logic
331
+ // Handle other network issues
332
+ }
333
+ }
334
+ ```
335
+
336
+ #### Transaction Errors
337
+
338
+ ```typescript
339
+ import { InsufficientBalanceError, InvalidNonceError } from "near-kit"
340
+
341
+ try {
342
+ await near.send("bob.near", "1000000 NEAR")
343
+ } catch (error) {
344
+ if (error instanceof InsufficientBalanceError) {
345
+ console.log(`Need ${error.required}, have ${error.available}`)
346
+ } else if (error instanceof InvalidNonceError) {
347
+ // Already retried automatically - only thrown if retries exhausted
348
+ }
349
+ }
350
+ ```
351
+
352
+ #### Contract Errors
353
+
354
+ ```typescript
355
+ import { FunctionCallError } from "near-kit"
356
+
357
+ try {
358
+ await near.call("contract.near", "method", {})
359
+ } catch (error) {
360
+ if (error instanceof FunctionCallError) {
361
+ console.log(`Contract panicked: ${error.panic}`)
362
+ console.log(`Logs:`, error.logs)
262
363
  }
263
364
  }
264
365
  ```
@@ -270,14 +371,15 @@ try {
270
371
  Deploy and initialize a contract in a single transaction:
271
372
 
272
373
  ```typescript
273
- const contractWasm = await fs.readFile('./contract.wasm');
274
-
275
- await near.transaction('alice.near')
276
- .createAccount('contract.alice.near')
277
- .transfer('contract.alice.near', '10 NEAR')
278
- .deployContract('contract.alice.near', contractWasm)
279
- .functionCall('contract.alice.near', 'init', { owner: 'alice.near' })
280
- .send();
374
+ const contractWasm = await fs.readFile("./contract.wasm")
375
+
376
+ await near
377
+ .transaction("alice.near")
378
+ .createAccount("contract.alice.near")
379
+ .transfer("contract.alice.near", "10 NEAR")
380
+ .deployContract("contract.alice.near", contractWasm)
381
+ .functionCall("contract.alice.near", "init", { owner: "alice.near" })
382
+ .send()
281
383
  ```
282
384
 
283
385
  ### NEP-413 Message Signing
@@ -286,16 +388,16 @@ Authenticate users without gas fees:
286
388
 
287
389
  ```typescript
288
390
  const signedMessage = await near.signMessage({
289
- message: 'Login to MyApp',
290
- recipient: 'myapp.near',
291
- nonce: crypto.getRandomValues(new Uint8Array(32))
292
- });
391
+ message: "Login to MyApp",
392
+ recipient: "myapp.near",
393
+ nonce: crypto.getRandomValues(new Uint8Array(32)),
394
+ })
293
395
 
294
396
  // Send to backend for verification
295
- await fetch('/api/auth', {
296
- method: 'POST',
297
- body: JSON.stringify(signedMessage)
298
- });
397
+ await fetch("/api/auth", {
398
+ method: "POST",
399
+ body: JSON.stringify(signedMessage),
400
+ })
299
401
  ```
300
402
 
301
403
  ### Delegate Actions (NEP-366)
@@ -305,25 +407,25 @@ Enable meta-transactions and sponsored transactions where a relayer pays the gas
305
407
  ```typescript
306
408
  // User creates and signs a delegate action (no gas cost to user)
307
409
  const userNear = new Near({
308
- network: 'testnet',
309
- privateKey: 'ed25519:...' // User's key
310
- });
410
+ network: "testnet",
411
+ privateKey: "ed25519:...", // User's key
412
+ })
311
413
 
312
414
  const signedDelegateAction = await userNear
313
- .transaction('user.near')
314
- .transfer('recipient.near', '1 NEAR')
315
- .delegate({ blockHeightOffset: 100 });
415
+ .transaction("user.near")
416
+ .transfer("recipient.near", "1 NEAR")
417
+ .delegate({ blockHeightOffset: 100 })
316
418
 
317
419
  // Relayer submits the transaction (pays the gas)
318
420
  const relayerNear = new Near({
319
- network: 'testnet',
320
- privateKey: 'ed25519:...' // Relayer's key
321
- });
421
+ network: "testnet",
422
+ privateKey: "ed25519:...", // Relayer's key
423
+ })
322
424
 
323
425
  await relayerNear
324
- .transaction('relayer.near')
426
+ .transaction("relayer.near")
325
427
  .signedDelegateAction(signedDelegateAction)
326
- .send();
428
+ .send()
327
429
  ```
328
430
 
329
431
  ### Automatic Nonce Management
@@ -333,10 +435,10 @@ No more nonce conflicts - the library handles nonce tracking and retries automat
333
435
  ```typescript
334
436
  // Safe to run multiple transactions concurrently
335
437
  await Promise.all([
336
- near.send('bob.near', '1'),
337
- near.send('charlie.near', '1'),
338
- near.send('dave.near', '1')
339
- ]);
438
+ near.send("bob.near", "1 NEAR"),
439
+ near.send("charlie.near", "1 NEAR"),
440
+ near.send("dave.near", "1 NEAR"),
441
+ ])
340
442
  // Nonces are automatically managed and conflicts are retried
341
443
  ```
342
444
 
@@ -346,7 +448,7 @@ Automatic retries for network errors with exponential backoff:
346
448
 
347
449
  ```typescript
348
450
  try {
349
- await near.call('contract.near', 'method', {});
451
+ await near.call("contract.near", "method", {})
350
452
  } catch (error) {
351
453
  if (error instanceof TimeoutError && error.retryable) {
352
454
  // Already retried automatically
@@ -367,7 +469,7 @@ bun test
367
469
  bun run build
368
470
 
369
471
  # Run examples
370
- bun run examples/basic-usage.ts
472
+ bun run examples/quickstart.ts
371
473
  ```
372
474
 
373
475
  ## License
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
@@ -118,6 +118,10 @@ export class TransactionBuilder {
118
118
  if (!keyPair) {
119
119
  throw new InvalidKeyError(`No key found for account: ${this.signerId}`);
120
120
  }
121
+ // Cache the resolved key pair to ensure keyStore.get() is only called once
122
+ // per TransactionBuilder instance. This is critical for RotatingKeyStore
123
+ // which returns a different key on each get() call.
124
+ this.keyPair = keyPair;
121
125
  return keyPair;
122
126
  }
123
127
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/core/transaction.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { TransactionBuilder } from "./core/transaction.js";
9
9
  export type { CallOptions, FinalExecutionOutcome, KeyConfig, KeyPair, KeyStore, NearConfig, NetworkConfig, PublicKey, SendOptions, Signature, SignedMessage, SignMessageParams, TxExecutionStatus, WalletAccount, WalletConnection, WalletSignInOptions, } from "./core/types.js";
10
10
  export { AccessKeyDoesNotExistError, AccountDoesNotExistError, FunctionCallError, GasLimitExceededError, InsufficientBalanceError, InvalidAccountIdError, InvalidKeyError, NearError, NetworkError, SignatureError, TransactionTimeoutError, WalletError, } from "./errors/index.js";
11
11
  export type { LegacyCredential, NearCliCredential, Network, } from "./keys/index.js";
12
- export { InMemoryKeyStore, } from "./keys/index.js";
12
+ export { InMemoryKeyStore, RotatingKeyStore, } from "./keys/index.js";
13
13
  export type { SandboxOptions } from "./sandbox/index.js";
14
14
  export { Amount, formatAmount, formatGas, Gas, generateKey, generateNep413Nonce, generateSeedPhrase, isPrivateKey, isValidAccountId, isValidPublicKey, type PrivateKey, parseAmount, parseGas, parseKey, parseSeedPhrase, validatePrivateKey, verifyNep413Signature, } from "./utils/index.js";
15
15
  export { fromHotConnect, fromWalletSelector } from "./wallets/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,GACR,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,gBAAgB,GAKjB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,UAAU,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAExE,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EACL,sBAAsB,EACtB,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAE1D,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,SAAS,EACT,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAE1B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,GACR,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,GAKjB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,UAAU,EACf,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ export { TransactionBuilder } from "./core/transaction.js";
10
10
  // Errors
11
11
  export { AccessKeyDoesNotExistError, AccountDoesNotExistError, FunctionCallError, GasLimitExceededError, InsufficientBalanceError, InvalidAccountIdError, InvalidKeyError, NearError, NetworkError, SignatureError, TransactionTimeoutError, WalletError, } from "./errors/index.js";
12
12
  // Key stores
13
- export { InMemoryKeyStore,
13
+ export { InMemoryKeyStore, RotatingKeyStore,
14
14
  // Node.js-only keystores not exported by default (browser environments don't support them)
15
15
  // For Node.js/Bun:
16
16
  // import { FileKeyStore } from "near-kit/keys/file"
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,aAAa;AACb,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EACL,sBAAsB,EAEtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAoB1D,SAAS;AACT,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAO1B,aAAa;AACb,OAAO,EACL,gBAAgB;AAChB,2FAA2F;AAC3F,mBAAmB;AACnB,sDAAsD;AACtD,0DAA0D;EAC3D,MAAM,iBAAiB,CAAA;AAIxB,YAAY;AACZ,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEhB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAA;AAC1B,aAAa;AACb,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EACL,sBAAsB,EAEtB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAoB1D,SAAS;AACT,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,eAAe,EACf,SAAS,EACT,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,WAAW,GACZ,MAAM,mBAAmB,CAAA;AAO1B,aAAa;AACb,OAAO,EACL,gBAAgB,EAChB,gBAAgB;AAChB,2FAA2F;AAC3F,mBAAmB;AACnB,sDAAsD;AACtD,0DAA0D;EAC3D,MAAM,iBAAiB,CAAA;AAIxB,YAAY;AACZ,OAAO,EACL,MAAM,EACN,YAAY,EACZ,SAAS,EACT,GAAG,EACH,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEhB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kBAAkB,CAAA;AACzB,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -3,10 +3,12 @@
3
3
  *
4
4
  * @remarks
5
5
  * Includes {@link InMemoryKeyStore} for ephemeral keys, {@link FileKeyStore}
6
- * for NEAR-CLI compatible disk storage, and credential schemas for working
6
+ * for NEAR-CLI compatible disk storage, {@link RotatingKeyStore} for
7
+ * high-throughput concurrent transactions, and credential schemas for working
7
8
  * with existing NEAR tooling.
8
9
  */
9
10
  export * from "./credential-schemas.js";
10
11
  export * from "./file-keystore.js";
11
12
  export * from "./in-memory-keystore.js";
13
+ export * from "./rotating-keystore.js";
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA"}
@@ -3,12 +3,14 @@
3
3
  *
4
4
  * @remarks
5
5
  * Includes {@link InMemoryKeyStore} for ephemeral keys, {@link FileKeyStore}
6
- * for NEAR-CLI compatible disk storage, and credential schemas for working
6
+ * for NEAR-CLI compatible disk storage, {@link RotatingKeyStore} for
7
+ * high-throughput concurrent transactions, and credential schemas for working
7
8
  * with existing NEAR tooling.
8
9
  */
9
10
  export * from "./credential-schemas.js";
10
11
  export * from "./file-keystore.js";
11
12
  export * from "./in-memory-keystore.js";
13
+ export * from "./rotating-keystore.js";
12
14
  // NativeKeyStore contains native Node.js dependencies and cannot be bundled for browsers
13
15
  // For Node.js/Bun environments, import directly:
14
16
  // import { NativeKeyStore } from "near-kit/dist/keys/native-keystore.js"
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AAEvC,yFAAyF;AACzF,iDAAiD;AACjD,yEAAyE;AACzE,EAAE;AACF,yDAAyD;AACzD,uCAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keys/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wBAAwB,CAAA;AAEtC,yFAAyF;AACzF,iDAAiD;AACjD,yEAAyE;AACzE,EAAE;AACF,yDAAyD;AACzD,uCAAuC"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Rotating key store implementation for concurrent transaction handling.
3
+ */
4
+ import type { KeyPair, KeyStore } from "../core/types.js";
5
+ /**
6
+ * Rotating key store that cycles through multiple keys per account.
7
+ *
8
+ * This keystore enables high-throughput concurrent transactions by rotating
9
+ * through multiple access keys for a single account. Each transaction uses
10
+ * a different key in round-robin fashion, eliminating nonce collisions.
11
+ *
12
+ * ## Use Cases
13
+ * - **High-throughput applications**: Send many concurrent transactions without nonce collisions
14
+ * - **Load balancing**: Distribute transaction load across multiple access keys
15
+ * - **Key rotation**: Seamlessly rotate keys without downtime
16
+ *
17
+ * ## How It Works
18
+ * - Each account can have multiple keys registered
19
+ * - `get()` returns the next key in round-robin order
20
+ * - Each key has independent nonce tracking via NonceManager
21
+ * - No nonce collisions between concurrent transactions
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Create keystore with multiple keys for one account
26
+ * const keyStore = new RotatingKeyStore()
27
+ * await keyStore.add("alice.near", parseKey("ed25519:key1..."))
28
+ * await keyStore.add("alice.near", parseKey("ed25519:key2..."))
29
+ * await keyStore.add("alice.near", parseKey("ed25519:key3..."))
30
+ *
31
+ * const near = new Near({ network: "testnet", keyStore })
32
+ *
33
+ * // Send 100 concurrent transactions - no nonce collisions!
34
+ * await Promise.all(
35
+ * Array(100).fill(0).map(() =>
36
+ * near.transaction("alice.near")
37
+ * .transfer("bob.near", "0.1")
38
+ * .send()
39
+ * )
40
+ * )
41
+ * ```
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // Initialize with keys
46
+ * const keyStore = new RotatingKeyStore({
47
+ * "alice.near": [
48
+ * "ed25519:key1...",
49
+ * "ed25519:key2...",
50
+ * "ed25519:key3..."
51
+ * ]
52
+ * })
53
+ * ```
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * // Query rotation state
58
+ * const keys = await keyStore.getAll("alice.near")
59
+ * console.log(`Account has ${keys.length} keys`)
60
+ *
61
+ * const index = keyStore.getCurrentIndex("alice.near")
62
+ * console.log(`Currently at key index ${index}`)
63
+ * ```
64
+ */
65
+ export declare class RotatingKeyStore implements KeyStore {
66
+ private keys;
67
+ private counters;
68
+ /**
69
+ * Create a new rotating keystore.
70
+ *
71
+ * @param initialKeys - Optional initial keys to populate the store.
72
+ * Maps account IDs to arrays of private key strings.
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * const keyStore = new RotatingKeyStore({
77
+ * "alice.near": ["ed25519:key1...", "ed25519:key2..."],
78
+ * "bob.near": ["ed25519:key3..."]
79
+ * })
80
+ * ```
81
+ */
82
+ constructor(initialKeys?: Record<string, string[]>);
83
+ /**
84
+ * Get the next key for an account using round-robin rotation.
85
+ *
86
+ * Each call to `get()` advances to the next key in the rotation.
87
+ * This is the core mechanism that enables concurrent transactions
88
+ * without nonce collisions.
89
+ *
90
+ * @param accountId - NEAR account ID
91
+ * @returns Next key in rotation, or null if no keys exist for account
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // First call returns key1, second returns key2, third returns key3, fourth returns key1...
96
+ * const key1 = await keyStore.get("alice.near")
97
+ * const key2 = await keyStore.get("alice.near")
98
+ * const key3 = await keyStore.get("alice.near")
99
+ * const key4 = await keyStore.get("alice.near") // Back to key1
100
+ * ```
101
+ */
102
+ get(accountId: string): Promise<KeyPair | null>;
103
+ /**
104
+ * Add a key to an account's rotation pool.
105
+ *
106
+ * If the account already has keys, the new key is appended to the rotation.
107
+ * If this is the first key for the account, it becomes the starting key.
108
+ *
109
+ * @param accountId - NEAR account ID
110
+ * @param key - Key pair to add to rotation
111
+ * @param options - Optional metadata (preserved but not used for rotation)
112
+ *
113
+ * @example
114
+ * ```typescript
115
+ * await keyStore.add("alice.near", keyPair1)
116
+ * await keyStore.add("alice.near", keyPair2) // Now rotates between both
117
+ * ```
118
+ */
119
+ add(accountId: string, key: KeyPair, _options?: {
120
+ seedPhrase?: string;
121
+ derivationPath?: string;
122
+ implicitAccountId?: string;
123
+ }): Promise<void>;
124
+ /**
125
+ * Remove all keys for an account from the rotation pool.
126
+ *
127
+ * This also resets the rotation counter for the account.
128
+ *
129
+ * @param accountId - NEAR account ID
130
+ *
131
+ * @example
132
+ * ```typescript
133
+ * await keyStore.remove("alice.near")
134
+ * ```
135
+ */
136
+ remove(accountId: string): Promise<void>;
137
+ /**
138
+ * List all account IDs in the keystore.
139
+ *
140
+ * @returns Array of account IDs that have at least one key
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const accounts = await keyStore.list()
145
+ * console.log(`Managing keys for: ${accounts.join(", ")}`)
146
+ * ```
147
+ */
148
+ list(): Promise<string[]>;
149
+ /**
150
+ * Get all keys for an account (non-rotating).
151
+ *
152
+ * Returns all keys in the rotation pool without advancing the counter.
153
+ * Useful for inspecting or managing the key pool.
154
+ *
155
+ * @param accountId - NEAR account ID
156
+ * @returns Array of all key pairs for the account, or empty array if none exist
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const keys = await keyStore.getAll("alice.near")
161
+ * console.log(`Account has ${keys.length} keys in rotation`)
162
+ * ```
163
+ */
164
+ getAll(accountId: string): Promise<KeyPair[]>;
165
+ /**
166
+ * Get the current rotation index for an account.
167
+ *
168
+ * The index indicates which key will be returned on the next `get()` call.
169
+ *
170
+ * @param accountId - NEAR account ID
171
+ * @returns Current counter value (0-based index into key array)
172
+ *
173
+ * @example
174
+ * ```typescript
175
+ * const index = keyStore.getCurrentIndex("alice.near")
176
+ * const totalKeys = (await keyStore.getAll("alice.near")).length
177
+ * console.log(`Next key: ${index % totalKeys}`)
178
+ * ```
179
+ */
180
+ getCurrentIndex(accountId: string): number;
181
+ /**
182
+ * Reset the rotation counter for an account.
183
+ *
184
+ * The next `get()` call will return the first key in the rotation.
185
+ *
186
+ * @param accountId - NEAR account ID
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * keyStore.resetCounter("alice.near")
191
+ * const key = await keyStore.get("alice.near") // Returns first key
192
+ * ```
193
+ */
194
+ resetCounter(accountId: string): void;
195
+ /**
196
+ * Clear all keys and counters from the keystore.
197
+ *
198
+ * Useful for testing cleanup or resetting state.
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * keyStore.clear()
203
+ * ```
204
+ */
205
+ clear(): void;
206
+ }
207
+ //# sourceMappingURL=rotating-keystore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-keystore.d.ts","sourceRoot":"","sources":["../../src/keys/rotating-keystore.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAC/C,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,QAAQ,CAAqB;IAErC;;;;;;;;;;;;;OAaG;gBACS,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAgBlD;;;;;;;;;;;;;;;;;;OAkBG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAerD;;;;;;;;;;;;;;;OAeG;IACG,GAAG,CACP,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,GACA,OAAO,CAAC,IAAI,CAAC;IAMhB;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C;;;;;;;;;;OAUG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B;;;;;;;;;;;;;;OAcG;IACG,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAInD;;;;;;;;;;;;;;OAcG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1C;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;;OASG;IACH,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,240 @@
1
+ import { parseKey } from "../utils/key.js";
2
+ /**
3
+ * Rotating key store that cycles through multiple keys per account.
4
+ *
5
+ * This keystore enables high-throughput concurrent transactions by rotating
6
+ * through multiple access keys for a single account. Each transaction uses
7
+ * a different key in round-robin fashion, eliminating nonce collisions.
8
+ *
9
+ * ## Use Cases
10
+ * - **High-throughput applications**: Send many concurrent transactions without nonce collisions
11
+ * - **Load balancing**: Distribute transaction load across multiple access keys
12
+ * - **Key rotation**: Seamlessly rotate keys without downtime
13
+ *
14
+ * ## How It Works
15
+ * - Each account can have multiple keys registered
16
+ * - `get()` returns the next key in round-robin order
17
+ * - Each key has independent nonce tracking via NonceManager
18
+ * - No nonce collisions between concurrent transactions
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * // Create keystore with multiple keys for one account
23
+ * const keyStore = new RotatingKeyStore()
24
+ * await keyStore.add("alice.near", parseKey("ed25519:key1..."))
25
+ * await keyStore.add("alice.near", parseKey("ed25519:key2..."))
26
+ * await keyStore.add("alice.near", parseKey("ed25519:key3..."))
27
+ *
28
+ * const near = new Near({ network: "testnet", keyStore })
29
+ *
30
+ * // Send 100 concurrent transactions - no nonce collisions!
31
+ * await Promise.all(
32
+ * Array(100).fill(0).map(() =>
33
+ * near.transaction("alice.near")
34
+ * .transfer("bob.near", "0.1")
35
+ * .send()
36
+ * )
37
+ * )
38
+ * ```
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Initialize with keys
43
+ * const keyStore = new RotatingKeyStore({
44
+ * "alice.near": [
45
+ * "ed25519:key1...",
46
+ * "ed25519:key2...",
47
+ * "ed25519:key3..."
48
+ * ]
49
+ * })
50
+ * ```
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // Query rotation state
55
+ * const keys = await keyStore.getAll("alice.near")
56
+ * console.log(`Account has ${keys.length} keys`)
57
+ *
58
+ * const index = keyStore.getCurrentIndex("alice.near")
59
+ * console.log(`Currently at key index ${index}`)
60
+ * ```
61
+ */
62
+ export class RotatingKeyStore {
63
+ /**
64
+ * Create a new rotating keystore.
65
+ *
66
+ * @param initialKeys - Optional initial keys to populate the store.
67
+ * Maps account IDs to arrays of private key strings.
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const keyStore = new RotatingKeyStore({
72
+ * "alice.near": ["ed25519:key1...", "ed25519:key2..."],
73
+ * "bob.near": ["ed25519:key3..."]
74
+ * })
75
+ * ```
76
+ */
77
+ constructor(initialKeys) {
78
+ this.keys = new Map();
79
+ this.counters = new Map();
80
+ if (initialKeys) {
81
+ for (const [accountId, keyStrings] of Object.entries(initialKeys)) {
82
+ for (const keyString of keyStrings) {
83
+ const keyPair = parseKey(keyString);
84
+ const existing = this.keys.get(accountId) ?? [];
85
+ existing.push(keyPair);
86
+ this.keys.set(accountId, existing);
87
+ }
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Get the next key for an account using round-robin rotation.
93
+ *
94
+ * Each call to `get()` advances to the next key in the rotation.
95
+ * This is the core mechanism that enables concurrent transactions
96
+ * without nonce collisions.
97
+ *
98
+ * @param accountId - NEAR account ID
99
+ * @returns Next key in rotation, or null if no keys exist for account
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * // First call returns key1, second returns key2, third returns key3, fourth returns key1...
104
+ * const key1 = await keyStore.get("alice.near")
105
+ * const key2 = await keyStore.get("alice.near")
106
+ * const key3 = await keyStore.get("alice.near")
107
+ * const key4 = await keyStore.get("alice.near") // Back to key1
108
+ * ```
109
+ */
110
+ async get(accountId) {
111
+ const accountKeys = this.keys.get(accountId);
112
+ if (!accountKeys || accountKeys.length === 0) {
113
+ return null;
114
+ }
115
+ // Get current counter and increment for next call
116
+ const counter = this.counters.get(accountId) ?? 0;
117
+ const key = accountKeys[counter % accountKeys.length];
118
+ this.counters.set(accountId, counter + 1);
119
+ // We know key exists because we checked accountKeys.length > 0 above
120
+ return key ?? null;
121
+ }
122
+ /**
123
+ * Add a key to an account's rotation pool.
124
+ *
125
+ * If the account already has keys, the new key is appended to the rotation.
126
+ * If this is the first key for the account, it becomes the starting key.
127
+ *
128
+ * @param accountId - NEAR account ID
129
+ * @param key - Key pair to add to rotation
130
+ * @param options - Optional metadata (preserved but not used for rotation)
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * await keyStore.add("alice.near", keyPair1)
135
+ * await keyStore.add("alice.near", keyPair2) // Now rotates between both
136
+ * ```
137
+ */
138
+ async add(accountId, key, _options) {
139
+ const existing = this.keys.get(accountId) ?? [];
140
+ existing.push(key);
141
+ this.keys.set(accountId, existing);
142
+ }
143
+ /**
144
+ * Remove all keys for an account from the rotation pool.
145
+ *
146
+ * This also resets the rotation counter for the account.
147
+ *
148
+ * @param accountId - NEAR account ID
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * await keyStore.remove("alice.near")
153
+ * ```
154
+ */
155
+ async remove(accountId) {
156
+ this.keys.delete(accountId);
157
+ this.counters.delete(accountId);
158
+ }
159
+ /**
160
+ * List all account IDs in the keystore.
161
+ *
162
+ * @returns Array of account IDs that have at least one key
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * const accounts = await keyStore.list()
167
+ * console.log(`Managing keys for: ${accounts.join(", ")}`)
168
+ * ```
169
+ */
170
+ async list() {
171
+ return Array.from(this.keys.keys());
172
+ }
173
+ /**
174
+ * Get all keys for an account (non-rotating).
175
+ *
176
+ * Returns all keys in the rotation pool without advancing the counter.
177
+ * Useful for inspecting or managing the key pool.
178
+ *
179
+ * @param accountId - NEAR account ID
180
+ * @returns Array of all key pairs for the account, or empty array if none exist
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const keys = await keyStore.getAll("alice.near")
185
+ * console.log(`Account has ${keys.length} keys in rotation`)
186
+ * ```
187
+ */
188
+ async getAll(accountId) {
189
+ return this.keys.get(accountId) ?? [];
190
+ }
191
+ /**
192
+ * Get the current rotation index for an account.
193
+ *
194
+ * The index indicates which key will be returned on the next `get()` call.
195
+ *
196
+ * @param accountId - NEAR account ID
197
+ * @returns Current counter value (0-based index into key array)
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * const index = keyStore.getCurrentIndex("alice.near")
202
+ * const totalKeys = (await keyStore.getAll("alice.near")).length
203
+ * console.log(`Next key: ${index % totalKeys}`)
204
+ * ```
205
+ */
206
+ getCurrentIndex(accountId) {
207
+ return this.counters.get(accountId) ?? 0;
208
+ }
209
+ /**
210
+ * Reset the rotation counter for an account.
211
+ *
212
+ * The next `get()` call will return the first key in the rotation.
213
+ *
214
+ * @param accountId - NEAR account ID
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * keyStore.resetCounter("alice.near")
219
+ * const key = await keyStore.get("alice.near") // Returns first key
220
+ * ```
221
+ */
222
+ resetCounter(accountId) {
223
+ this.counters.set(accountId, 0);
224
+ }
225
+ /**
226
+ * Clear all keys and counters from the keystore.
227
+ *
228
+ * Useful for testing cleanup or resetting state.
229
+ *
230
+ * @example
231
+ * ```typescript
232
+ * keyStore.clear()
233
+ * ```
234
+ */
235
+ clear() {
236
+ this.keys.clear();
237
+ this.counters.clear();
238
+ }
239
+ }
240
+ //# sourceMappingURL=rotating-keystore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-keystore.js","sourceRoot":"","sources":["../../src/keys/rotating-keystore.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "near-kit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "A simple, intuitive TypeScript library for interacting with NEAR Protocol",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -59,12 +59,12 @@
59
59
  }
60
60
  },
61
61
  "devDependencies": {
62
- "@biomejs/biome": "^2.3.5",
62
+ "@biomejs/biome": "^2.3.6",
63
63
  "@changesets/cli": "^2.29.7",
64
64
  "@hot-labs/near-connect": "^0.6.9",
65
65
  "@near-js/transactions": "^2.5.1",
66
66
  "@near-js/types": "^2.5.1",
67
- "@near-wallet-selector/core": "^10.1.0",
67
+ "@near-wallet-selector/core": "^10.1.1",
68
68
  "@types/bun": "^1.3.2",
69
69
  "@types/tar": "^6.1.13",
70
70
  "lefthook": "^2.0.4",