@sequence0/sdk 1.1.2 → 2.0.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 +1 -1
- package/dist/chains/algorand.d.ts +44 -0
- package/dist/chains/algorand.d.ts.map +1 -0
- package/dist/chains/algorand.js +148 -0
- package/dist/chains/algorand.js.map +1 -0
- package/dist/chains/aptos.d.ts +39 -0
- package/dist/chains/aptos.d.ts.map +1 -0
- package/dist/chains/aptos.js +168 -0
- package/dist/chains/aptos.js.map +1 -0
- package/dist/chains/cardano.d.ts +42 -0
- package/dist/chains/cardano.d.ts.map +1 -0
- package/dist/chains/cardano.js +188 -0
- package/dist/chains/cardano.js.map +1 -0
- package/dist/chains/cosmos.d.ts +42 -0
- package/dist/chains/cosmos.d.ts.map +1 -0
- package/dist/chains/cosmos.js +216 -0
- package/dist/chains/cosmos.js.map +1 -0
- package/dist/chains/dogecoin-litecoin.d.ts +57 -0
- package/dist/chains/dogecoin-litecoin.d.ts.map +1 -0
- package/dist/chains/dogecoin-litecoin.js +521 -0
- package/dist/chains/dogecoin-litecoin.js.map +1 -0
- package/dist/chains/ethereum.d.ts.map +1 -1
- package/dist/chains/ethereum.js +16 -0
- package/dist/chains/ethereum.js.map +1 -1
- package/dist/chains/hedera.d.ts +113 -0
- package/dist/chains/hedera.d.ts.map +1 -0
- package/dist/chains/hedera.js +302 -0
- package/dist/chains/hedera.js.map +1 -0
- package/dist/chains/icp.d.ts +95 -0
- package/dist/chains/icp.d.ts.map +1 -0
- package/dist/chains/icp.js +520 -0
- package/dist/chains/icp.js.map +1 -0
- package/dist/chains/kaspa.d.ts +152 -0
- package/dist/chains/kaspa.d.ts.map +1 -0
- package/dist/chains/kaspa.js +790 -0
- package/dist/chains/kaspa.js.map +1 -0
- package/dist/chains/multiversx.d.ts +143 -0
- package/dist/chains/multiversx.d.ts.map +1 -0
- package/dist/chains/multiversx.js +524 -0
- package/dist/chains/multiversx.js.map +1 -0
- package/dist/chains/near.d.ts +40 -0
- package/dist/chains/near.d.ts.map +1 -0
- package/dist/chains/near.js +170 -0
- package/dist/chains/near.js.map +1 -0
- package/dist/chains/polkadot.d.ts +43 -0
- package/dist/chains/polkadot.d.ts.map +1 -0
- package/dist/chains/polkadot.js +179 -0
- package/dist/chains/polkadot.js.map +1 -0
- package/dist/chains/ripple.d.ts +41 -0
- package/dist/chains/ripple.d.ts.map +1 -0
- package/dist/chains/ripple.js +190 -0
- package/dist/chains/ripple.js.map +1 -0
- package/dist/chains/stellar.d.ts +40 -0
- package/dist/chains/stellar.d.ts.map +1 -0
- package/dist/chains/stellar.js +156 -0
- package/dist/chains/stellar.js.map +1 -0
- package/dist/chains/sui.d.ts +44 -0
- package/dist/chains/sui.d.ts.map +1 -0
- package/dist/chains/sui.js +157 -0
- package/dist/chains/sui.js.map +1 -0
- package/dist/chains/tezos.d.ts +43 -0
- package/dist/chains/tezos.d.ts.map +1 -0
- package/dist/chains/tezos.js +162 -0
- package/dist/chains/tezos.js.map +1 -0
- package/dist/chains/ton.d.ts +40 -0
- package/dist/chains/ton.d.ts.map +1 -0
- package/dist/chains/ton.js +168 -0
- package/dist/chains/ton.js.map +1 -0
- package/dist/chains/tron.d.ts +41 -0
- package/dist/chains/tron.d.ts.map +1 -0
- package/dist/chains/tron.js +124 -0
- package/dist/chains/tron.js.map +1 -0
- package/dist/core/atomic.d.ts +76 -0
- package/dist/core/atomic.d.ts.map +1 -0
- package/dist/core/atomic.js +39 -0
- package/dist/core/atomic.js.map +1 -0
- package/dist/core/client.d.ts +238 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +536 -4
- package/dist/core/client.js.map +1 -1
- package/dist/core/delegation.d.ts +184 -0
- package/dist/core/delegation.d.ts.map +1 -0
- package/dist/core/delegation.js +37 -0
- package/dist/core/delegation.js.map +1 -0
- package/dist/core/programmable.d.ts +66 -0
- package/dist/core/programmable.d.ts.map +1 -0
- package/dist/core/programmable.js +36 -0
- package/dist/core/programmable.js.map +1 -0
- package/dist/core/solvency.d.ts +223 -0
- package/dist/core/solvency.d.ts.map +1 -0
- package/dist/core/solvency.js +267 -0
- package/dist/core/solvency.js.map +1 -0
- package/dist/core/types.d.ts +172 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/universal-account.d.ts +438 -0
- package/dist/core/universal-account.d.ts.map +1 -0
- package/dist/core/universal-account.js +597 -0
- package/dist/core/universal-account.js.map +1 -0
- package/dist/core/witness.d.ts +197 -0
- package/dist/core/witness.d.ts.map +1 -0
- package/dist/core/witness.js +298 -0
- package/dist/core/witness.js.map +1 -0
- package/dist/erc4337/types.js +2 -2
- package/dist/index.d.ts +30 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -4
- package/dist/index.js.map +1 -1
- package/dist/settlement/settlement.d.ts +152 -0
- package/dist/settlement/settlement.d.ts.map +1 -0
- package/dist/settlement/settlement.js +172 -0
- package/dist/settlement/settlement.js.map +1 -0
- package/dist/utils/eip712.js +2 -2
- package/dist/utils/fee.d.ts +2 -2
- package/dist/utils/fee.js +2 -2
- package/dist/utils/optional-deps.d.ts +9 -0
- package/dist/utils/optional-deps.d.ts.map +1 -0
- package/dist/utils/optional-deps.js +21 -0
- package/dist/utils/optional-deps.js.map +1 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +6 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/wallet/wallet.d.ts +52 -0
- package/dist/wallet/wallet.d.ts.map +1 -1
- package/dist/wallet/wallet.js +265 -33
- package/dist/wallet/wallet.js.map +1 -1
- package/package.json +35 -1
package/dist/core/types.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* expects back a 0x-prefixed hex string of the 65-byte compact signature.
|
|
11
11
|
*/
|
|
12
12
|
export type OwnerSigner = (messageHash: Uint8Array) => Promise<string>;
|
|
13
|
-
export type Chain = 'ethereum' | 'polygon' | 'bsc' | 'avalanche' | 'fantom' | 'gnosis' | 'celo' | 'cronos' | 'moonbeam' | 'moonriver' | 'harmony' | 'kava' | 'canto' | 'aurora' | 'klaytn' | 'okc' | 'fuse' | 'evmos' | 'core' | 'flare' | 'iotex' | 'rootstock' | 'telos' | 'thundercore' | 'arbitrum' | 'optimism' | 'base' | 'zksync' | 'scroll' | 'linea' | 'mantle' | 'blast' | 'mode' | 'manta' | 'polygon-zkevm' | 'metis' | 'zora' | 'sei' | 'boba' | 'taiko' | 'opbnb' | 'fraxtal' | 'worldchain' | 'lisk' | 'redstone' | 'cyber' | 'mint' | 'bob' | 'xai' | 'morph' | 'astar-zkevm' | 'bitcoin' | 'solana' | 'cosmos' | 'near' | 'sui' | 'aptos' | 'polkadot' | 'cardano' | 'tron' | 'dogecoin' | 'litecoin' | 'stellar' | 'ton' | 'algorand' | 'tezos' | 'ripple';
|
|
13
|
+
export type Chain = 'ethereum' | 'polygon' | 'bsc' | 'avalanche' | 'fantom' | 'gnosis' | 'celo' | 'cronos' | 'moonbeam' | 'moonriver' | 'harmony' | 'kava' | 'canto' | 'aurora' | 'klaytn' | 'okc' | 'fuse' | 'evmos' | 'core' | 'flare' | 'iotex' | 'rootstock' | 'telos' | 'thundercore' | 'arbitrum' | 'optimism' | 'base' | 'zksync' | 'scroll' | 'linea' | 'mantle' | 'blast' | 'mode' | 'manta' | 'polygon-zkevm' | 'metis' | 'zora' | 'sei' | 'boba' | 'taiko' | 'opbnb' | 'fraxtal' | 'worldchain' | 'lisk' | 'redstone' | 'cyber' | 'mint' | 'bob' | 'xai' | 'morph' | 'astar-zkevm' | 'berachain' | 'sonic' | 'abstract' | 'ink' | 'unichain' | 'soneium' | 'gravity' | 'zklink-nova' | 'bitcoin' | 'solana' | 'cosmos' | 'near' | 'sui' | 'aptos' | 'polkadot' | 'cardano' | 'tron' | 'dogecoin' | 'litecoin' | 'stellar' | 'ton' | 'algorand' | 'tezos' | 'ripple' | 'bitcoincash' | 'bitcoinsv' | 'multiversx' | 'kaspa' | 'hedera' | 'icp';
|
|
14
14
|
export interface NetworkConfig {
|
|
15
15
|
/** Network: 'testnet' or 'mainnet' */
|
|
16
16
|
network: 'testnet' | 'mainnet';
|
|
@@ -54,6 +54,17 @@ export interface NetworkConfig {
|
|
|
54
54
|
* Does not affect explicitly-provided `agentUrl`.
|
|
55
55
|
*/
|
|
56
56
|
useHttps?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Optional: delegate's private key for signing as a delegated authority.
|
|
59
|
+
* When provided along with `delegationId`, signing requests use
|
|
60
|
+
* `delegation_id` and `delegate_signature` instead of `owner_signature`.
|
|
61
|
+
*/
|
|
62
|
+
delegatePrivateKey?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Optional: delegation grant ID for delegate signing.
|
|
65
|
+
* Must be provided together with `delegatePrivateKey`.
|
|
66
|
+
*/
|
|
67
|
+
delegationId?: string;
|
|
57
68
|
}
|
|
58
69
|
/** Agent node info from on-chain registry */
|
|
59
70
|
export interface AgentInfo {
|
|
@@ -204,5 +215,165 @@ export interface ChainAdapter {
|
|
|
204
215
|
getBalance(address: string): Promise<string>;
|
|
205
216
|
/** Get chain-specific RPC URL */
|
|
206
217
|
getRpcUrl(): string;
|
|
218
|
+
/** Extract the signing payload from buildTransaction() output. If not implemented, the full output is used. */
|
|
219
|
+
getSigningPayload?(unsignedTx: string): string;
|
|
220
|
+
}
|
|
221
|
+
export interface CosmosTransaction {
|
|
222
|
+
/** Recipient bech32 address */
|
|
223
|
+
to: string;
|
|
224
|
+
/** Amount in base denom (e.g. uatom) */
|
|
225
|
+
amount: string;
|
|
226
|
+
/** Token denom (default: 'uatom') */
|
|
227
|
+
denom?: string;
|
|
228
|
+
/** Gas limit (default: '200000') */
|
|
229
|
+
gas?: string;
|
|
230
|
+
/** Cosmos chain ID (e.g. 'cosmoshub-4') */
|
|
231
|
+
chainId?: string;
|
|
232
|
+
/** TX memo */
|
|
233
|
+
memo?: string;
|
|
234
|
+
}
|
|
235
|
+
export interface TronTransaction {
|
|
236
|
+
/** Recipient T-address */
|
|
237
|
+
to: string;
|
|
238
|
+
/** Amount in SUN (1 TRX = 1e6 SUN) */
|
|
239
|
+
amount: number;
|
|
240
|
+
}
|
|
241
|
+
export interface RippleTransaction {
|
|
242
|
+
/** Recipient r-address */
|
|
243
|
+
to: string;
|
|
244
|
+
/** Amount in drops (1 XRP = 1e6 drops) */
|
|
245
|
+
amount: string;
|
|
246
|
+
/** Destination tag (for exchanges) */
|
|
247
|
+
tag?: number;
|
|
248
|
+
/** Fee in drops */
|
|
249
|
+
fee?: string;
|
|
250
|
+
}
|
|
251
|
+
export interface NearTransaction {
|
|
252
|
+
/** Receiver account ID (e.g. 'bob.near') */
|
|
253
|
+
to: string;
|
|
254
|
+
/** Amount in yoctoNEAR (1 NEAR = 1e24 yoctoNEAR) */
|
|
255
|
+
amount: string;
|
|
256
|
+
}
|
|
257
|
+
export interface SuiTransaction {
|
|
258
|
+
/** Recipient address (0x...) */
|
|
259
|
+
to: string;
|
|
260
|
+
/** Amount in MIST (1 SUI = 1e9 MIST) */
|
|
261
|
+
amount: string;
|
|
262
|
+
}
|
|
263
|
+
export interface AptosTransaction {
|
|
264
|
+
/** Recipient address (0x...) */
|
|
265
|
+
to: string;
|
|
266
|
+
/** Amount in Octas (1 APT = 1e8 Octas) */
|
|
267
|
+
amount: string;
|
|
268
|
+
}
|
|
269
|
+
export interface StellarTransaction {
|
|
270
|
+
/** Recipient G-address */
|
|
271
|
+
to: string;
|
|
272
|
+
/** Amount in stroops (1 XLM = 1e7 stroops) */
|
|
273
|
+
amount: string;
|
|
274
|
+
/** TX memo */
|
|
275
|
+
memo?: string;
|
|
276
|
+
}
|
|
277
|
+
export interface TonTransaction {
|
|
278
|
+
/** Recipient EQ.../UQ... address */
|
|
279
|
+
to: string;
|
|
280
|
+
/** Amount in nanotons (1 TON = 1e9 nanotons) */
|
|
281
|
+
amount: string;
|
|
282
|
+
/** Optional comment/payload */
|
|
283
|
+
payload?: string;
|
|
284
|
+
}
|
|
285
|
+
export interface AlgorandTransaction {
|
|
286
|
+
/** Recipient base32 address */
|
|
287
|
+
to: string;
|
|
288
|
+
/** Amount in microAlgos (1 ALGO = 1e6 microAlgos) */
|
|
289
|
+
amount: number;
|
|
290
|
+
/** Optional note */
|
|
291
|
+
note?: string;
|
|
292
|
+
}
|
|
293
|
+
export interface TezosTransaction {
|
|
294
|
+
/** Recipient tz/KT address */
|
|
295
|
+
to: string;
|
|
296
|
+
/** Amount in mutez (1 XTZ = 1e6 mutez) */
|
|
297
|
+
amount: string;
|
|
298
|
+
}
|
|
299
|
+
export interface CardanoTransaction {
|
|
300
|
+
/** Recipient addr1... address */
|
|
301
|
+
to: string;
|
|
302
|
+
/** Amount in lovelace (1 ADA = 1e6 lovelace) */
|
|
303
|
+
amount: string;
|
|
304
|
+
}
|
|
305
|
+
export interface PolkadotTransaction {
|
|
306
|
+
/** Recipient SS58 address */
|
|
307
|
+
to: string;
|
|
308
|
+
/** Amount in planck (1 DOT = 1e10 planck) */
|
|
309
|
+
amount: string;
|
|
310
|
+
}
|
|
311
|
+
export interface DogeTransaction {
|
|
312
|
+
/** Recipient address */
|
|
313
|
+
to: string;
|
|
314
|
+
/** Amount in koinu (1 DOGE = 1e8 koinu) */
|
|
315
|
+
amount: number;
|
|
316
|
+
/** Fee rate in koinu/byte */
|
|
317
|
+
feeRate?: number;
|
|
318
|
+
}
|
|
319
|
+
export interface LtcTransaction {
|
|
320
|
+
/** Recipient address */
|
|
321
|
+
to: string;
|
|
322
|
+
/** Amount in litoshi (1 LTC = 1e8 litoshi) */
|
|
323
|
+
amount: number;
|
|
324
|
+
/** Fee rate in litoshi/byte */
|
|
325
|
+
feeRate?: number;
|
|
326
|
+
}
|
|
327
|
+
export interface BchTransaction {
|
|
328
|
+
/** Recipient address */
|
|
329
|
+
to: string;
|
|
330
|
+
/** Amount in satoshis (1 BCH = 1e8 satoshis) */
|
|
331
|
+
amount: number;
|
|
332
|
+
/** Fee rate in sat/byte */
|
|
333
|
+
feeRate?: number;
|
|
334
|
+
}
|
|
335
|
+
export interface BsvTransaction {
|
|
336
|
+
/** Recipient address */
|
|
337
|
+
to: string;
|
|
338
|
+
/** Amount in satoshis (1 BSV = 1e8 satoshis) */
|
|
339
|
+
amount: number;
|
|
340
|
+
/** Fee rate in sat/byte */
|
|
341
|
+
feeRate?: number;
|
|
342
|
+
}
|
|
343
|
+
export interface MultiversXTransaction {
|
|
344
|
+
/** Recipient erd1... bech32 address */
|
|
345
|
+
to: string;
|
|
346
|
+
/** Amount in atomic EGLD (1 EGLD = 1e18) */
|
|
347
|
+
amount: string;
|
|
348
|
+
/** Optional TX data */
|
|
349
|
+
data?: string;
|
|
350
|
+
/** Gas limit */
|
|
351
|
+
gasLimit?: number;
|
|
352
|
+
}
|
|
353
|
+
export interface KaspaTransaction {
|
|
354
|
+
/** Recipient kaspa:... address */
|
|
355
|
+
to: string;
|
|
356
|
+
/** Amount in sompi (1 KAS = 1e8 sompi) */
|
|
357
|
+
amount: number;
|
|
358
|
+
/** Fee rate in sompi/gram */
|
|
359
|
+
feeRate?: number;
|
|
360
|
+
}
|
|
361
|
+
export interface HederaTransaction {
|
|
362
|
+
/** Recipient 0.0.XXXXX account ID */
|
|
363
|
+
to: string;
|
|
364
|
+
/** Amount in tinybars (1 HBAR = 1e8 tinybars) */
|
|
365
|
+
amount: string;
|
|
366
|
+
/** TX memo */
|
|
367
|
+
memo?: string;
|
|
368
|
+
}
|
|
369
|
+
export interface IcpTransaction {
|
|
370
|
+
/** Recipient principal or account ID */
|
|
371
|
+
to: string;
|
|
372
|
+
/** Amount in e8s (1 ICP = 1e8 e8s) */
|
|
373
|
+
amount: string;
|
|
374
|
+
/** Optional memo */
|
|
375
|
+
memo?: bigint;
|
|
376
|
+
/** Fee in e8s */
|
|
377
|
+
fee?: string;
|
|
207
378
|
}
|
|
208
379
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAIvE,MAAM,MAAM,KAAK,GAEX,UAAU,GACV,SAAS,GACT,KAAK,GACL,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,MAAM,GACN,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,OAAO,GACP,aAAa,GAEb,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,MAAM,GACN,OAAO,GACP,eAAe,GACf,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,OAAO,GACP,SAAS,GACT,YAAY,GACZ,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,GACP,aAAa,GAEb,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,OAAO,GACP,UAAU,GACV,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,GACT,KAAK,GACL,UAAU,GACV,OAAO,GACP,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* K7: Universal Account — One Wallet, All Chains
|
|
3
|
+
*
|
|
4
|
+
* A single account identity that works across all 81 supported chains.
|
|
5
|
+
* Threshold keys (secp256k1 + ed25519) are generated once, and chain-
|
|
6
|
+
* specific addresses are derived deterministically. Send any token on
|
|
7
|
+
* any chain from one unified account, with automatic routing to the
|
|
8
|
+
* optimal source chain.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { UniversalAccountClient } from '@sequence0/sdk';
|
|
13
|
+
*
|
|
14
|
+
* const ua = new UniversalAccountClient('http://agent:8080');
|
|
15
|
+
*
|
|
16
|
+
* // Create a universal account
|
|
17
|
+
* const account = await ua.createAccount({
|
|
18
|
+
* ownerSignature: '0x...',
|
|
19
|
+
* timestamp: Date.now(),
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* // View all chain addresses
|
|
23
|
+
* const addresses = await ua.getChainAddresses(account.accountId);
|
|
24
|
+
* console.log('Ethereum:', addresses.ethereum.address);
|
|
25
|
+
* console.log('Solana:', addresses.solana.address);
|
|
26
|
+
* console.log('Bitcoin:', addresses.bitcoin.address);
|
|
27
|
+
*
|
|
28
|
+
* // Get unified balance across all chains
|
|
29
|
+
* const balance = await ua.getUnifiedBalance(account.accountId);
|
|
30
|
+
* for (const chain of balance.chains) {
|
|
31
|
+
* console.log(`${chain.chain}: ${chain.nativeBalance} ${chain.nativeSymbol}`);
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // Send — automatic routing picks the best source chain
|
|
35
|
+
* const result = await ua.send({
|
|
36
|
+
* accountId: account.accountId,
|
|
37
|
+
* to: '0xRecipient...',
|
|
38
|
+
* amount: '1.0',
|
|
39
|
+
* token: 'ETH',
|
|
40
|
+
* ownerSignature: '0x...',
|
|
41
|
+
* timestamp: Date.now(),
|
|
42
|
+
* });
|
|
43
|
+
* console.log('Tx:', result.txHash);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
/**
|
|
47
|
+
* Address information for a single chain within a universal account.
|
|
48
|
+
*/
|
|
49
|
+
export interface ChainAddressInfo {
|
|
50
|
+
/** Chain name (e.g., 'ethereum', 'bitcoin', 'solana') */
|
|
51
|
+
chain: string;
|
|
52
|
+
/** Derived address on this chain */
|
|
53
|
+
address: string;
|
|
54
|
+
/** Curve used for key derivation on this chain */
|
|
55
|
+
curveType: 'secp256k1' | 'ed25519';
|
|
56
|
+
/** Whether this chain address is currently active */
|
|
57
|
+
isActive: boolean;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Full information about a universal account, including its
|
|
61
|
+
* threshold parameters, group keys, and all derived chain addresses.
|
|
62
|
+
*/
|
|
63
|
+
export interface UniversalAccountInfo {
|
|
64
|
+
/** Unique account identifier */
|
|
65
|
+
accountId: string;
|
|
66
|
+
/** On-chain owner address (Ethereum address that controls this account) */
|
|
67
|
+
ownerAddress: string;
|
|
68
|
+
/** Hex-encoded secp256k1 group public key */
|
|
69
|
+
secp256k1GroupKey: string;
|
|
70
|
+
/** Hex-encoded ed25519 group public key */
|
|
71
|
+
ed25519GroupKey: string;
|
|
72
|
+
/** Signing threshold (number of agents required to sign) */
|
|
73
|
+
threshold: number;
|
|
74
|
+
/** Total committee size */
|
|
75
|
+
committeeSize: number;
|
|
76
|
+
/** Map of chain name to chain address info */
|
|
77
|
+
chainAddresses: Record<string, ChainAddressInfo>;
|
|
78
|
+
/** Unix timestamp of account creation */
|
|
79
|
+
createdAt: number;
|
|
80
|
+
/** Whether the account is currently active */
|
|
81
|
+
isActive: boolean;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Balance information for a single token on a chain.
|
|
85
|
+
*/
|
|
86
|
+
export interface TokenBalance {
|
|
87
|
+
/** Token symbol (e.g., 'USDC', 'WETH') */
|
|
88
|
+
symbol: string;
|
|
89
|
+
/** Token contract address (undefined for native tokens) */
|
|
90
|
+
contractAddress?: string;
|
|
91
|
+
/** Token balance as a decimal string */
|
|
92
|
+
balance: string;
|
|
93
|
+
/** Token decimals */
|
|
94
|
+
decimals: number;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Balance information for a single chain, including native token
|
|
98
|
+
* and any tracked ERC-20 / SPL / equivalent token balances.
|
|
99
|
+
*/
|
|
100
|
+
export interface ChainBalance {
|
|
101
|
+
/** Chain name */
|
|
102
|
+
chain: string;
|
|
103
|
+
/** Account address on this chain */
|
|
104
|
+
address: string;
|
|
105
|
+
/** Native token balance as a decimal string */
|
|
106
|
+
nativeBalance: string;
|
|
107
|
+
/** Native token symbol (e.g., 'ETH', 'SOL', 'BTC') */
|
|
108
|
+
nativeSymbol: string;
|
|
109
|
+
/** Token balances on this chain */
|
|
110
|
+
tokens: TokenBalance[];
|
|
111
|
+
/** Unix timestamp of last balance update */
|
|
112
|
+
lastUpdated: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Aggregated balance view across all chains for a universal account.
|
|
116
|
+
*/
|
|
117
|
+
export interface UnifiedBalance {
|
|
118
|
+
/** Account ID this balance belongs to */
|
|
119
|
+
accountId: string;
|
|
120
|
+
/** Per-chain balance breakdown */
|
|
121
|
+
chains: ChainBalance[];
|
|
122
|
+
/** Total number of chains with balances */
|
|
123
|
+
totalChains: number;
|
|
124
|
+
/** Unix timestamp of last aggregation */
|
|
125
|
+
lastAggregated: number;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Options for sending tokens from a universal account.
|
|
129
|
+
* The agent network automatically routes to the optimal source chain
|
|
130
|
+
* based on available balances, fees, and latency.
|
|
131
|
+
*/
|
|
132
|
+
export interface UniversalSendOptions {
|
|
133
|
+
/** Account ID to send from */
|
|
134
|
+
accountId: string;
|
|
135
|
+
/** Destination address or account ID */
|
|
136
|
+
to: string;
|
|
137
|
+
/** Amount to send as a decimal string */
|
|
138
|
+
amount: string;
|
|
139
|
+
/** Token symbol (e.g., 'ETH', 'USDC', 'SOL', 'BTC') */
|
|
140
|
+
token: string;
|
|
141
|
+
/** Optional preferred source chain (overrides automatic routing) */
|
|
142
|
+
preferredChain?: string;
|
|
143
|
+
/** Owner signature authorizing this send */
|
|
144
|
+
ownerSignature: string;
|
|
145
|
+
/** Unix timestamp of the signature */
|
|
146
|
+
timestamp: number;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The routing decision made by the agent network for a send operation.
|
|
150
|
+
* Describes which chain and address will be used as source and destination.
|
|
151
|
+
*/
|
|
152
|
+
export interface RoutingDecision {
|
|
153
|
+
/** Source chain selected for this send */
|
|
154
|
+
sourceChain: string;
|
|
155
|
+
/** Source address on the selected chain */
|
|
156
|
+
sourceAddress: string;
|
|
157
|
+
/** Destination chain */
|
|
158
|
+
destinationChain: string;
|
|
159
|
+
/** Destination address */
|
|
160
|
+
destinationAddress: string;
|
|
161
|
+
/** Amount being sent */
|
|
162
|
+
amount: string;
|
|
163
|
+
/** Token being sent */
|
|
164
|
+
token: string;
|
|
165
|
+
/** Estimated fee in the source chain's native token */
|
|
166
|
+
estimatedFee: string;
|
|
167
|
+
/** Human-readable reason for this routing choice */
|
|
168
|
+
reason: string;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Result of a universal send operation.
|
|
172
|
+
*
|
|
173
|
+
* - `pending` — request received, queued for processing
|
|
174
|
+
* - `routing` — agent is selecting the optimal source chain
|
|
175
|
+
* - `signing` — threshold signing in progress
|
|
176
|
+
* - `broadcasting` — signed transaction is being broadcast to the chain
|
|
177
|
+
* - `confirmed` — transaction confirmed on-chain
|
|
178
|
+
* - `failed` — send failed (check routing.reason for details)
|
|
179
|
+
*/
|
|
180
|
+
export type SendStatus = 'pending' | 'routing' | 'signing' | 'broadcasting' | 'confirmed' | 'failed';
|
|
181
|
+
export interface SendResult {
|
|
182
|
+
/** Unique request identifier for polling status */
|
|
183
|
+
requestId: string;
|
|
184
|
+
/** The routing decision (which chain, address, and fee) */
|
|
185
|
+
routing: RoutingDecision;
|
|
186
|
+
/** Current status of the send operation */
|
|
187
|
+
status: SendStatus;
|
|
188
|
+
/** Transaction hash (only when status is 'confirmed') */
|
|
189
|
+
txHash?: string;
|
|
190
|
+
/** Hex-encoded threshold signature (only when status is 'confirmed' or 'broadcasting') */
|
|
191
|
+
signature?: string;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Options for creating a new universal account.
|
|
195
|
+
*/
|
|
196
|
+
export interface CreateUniversalAccountOptions {
|
|
197
|
+
/** Signing threshold (default: 16) */
|
|
198
|
+
threshold?: number;
|
|
199
|
+
/** Total committee size (default: 24) */
|
|
200
|
+
committeeSize?: number;
|
|
201
|
+
/** Owner signature authorizing account creation */
|
|
202
|
+
ownerSignature: string;
|
|
203
|
+
/** Unix timestamp of the signature */
|
|
204
|
+
timestamp: number;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Network-wide statistics for the Universal Account protocol.
|
|
208
|
+
*/
|
|
209
|
+
export interface UniversalAccountStats {
|
|
210
|
+
/** Total number of universal accounts created */
|
|
211
|
+
totalAccounts: number;
|
|
212
|
+
/** Total number of derived chain addresses across all accounts */
|
|
213
|
+
totalAddresses: number;
|
|
214
|
+
/** Number of active (in-progress) send operations */
|
|
215
|
+
activeSends: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Client for the K7 Universal Account protocol.
|
|
219
|
+
*
|
|
220
|
+
* Communicates with universal account endpoints on the agent node
|
|
221
|
+
* to create accounts, query balances across all chains, and send
|
|
222
|
+
* tokens with automatic chain routing.
|
|
223
|
+
*/
|
|
224
|
+
export declare class UniversalAccountClient {
|
|
225
|
+
private baseUrl;
|
|
226
|
+
/**
|
|
227
|
+
* Create a new UniversalAccountClient.
|
|
228
|
+
*
|
|
229
|
+
* @param agentUrl - Agent node REST API URL (e.g., 'http://agent:8080')
|
|
230
|
+
* @param options - Optional client configuration
|
|
231
|
+
* @param options.timeout - Request timeout in milliseconds (default: 30000)
|
|
232
|
+
*/
|
|
233
|
+
constructor(agentUrl: string, options?: {
|
|
234
|
+
timeout?: number;
|
|
235
|
+
});
|
|
236
|
+
/**
|
|
237
|
+
* Create a new universal account.
|
|
238
|
+
*
|
|
239
|
+
* Initiates DKG for both secp256k1 and ed25519 curves, derives
|
|
240
|
+
* addresses on all 81 supported chains, and registers the account
|
|
241
|
+
* on the Sequence0 chain.
|
|
242
|
+
*
|
|
243
|
+
* @param options - Account creation options
|
|
244
|
+
* @returns The created account information with all chain addresses
|
|
245
|
+
*
|
|
246
|
+
* @throws {Sequence0Error} If the creation parameters are invalid
|
|
247
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
248
|
+
*/
|
|
249
|
+
createAccount(options: CreateUniversalAccountOptions): Promise<UniversalAccountInfo>;
|
|
250
|
+
/**
|
|
251
|
+
* Get a universal account by its account ID.
|
|
252
|
+
*
|
|
253
|
+
* @param accountId - The unique account identifier
|
|
254
|
+
* @returns The account information
|
|
255
|
+
*
|
|
256
|
+
* @throws {Sequence0Error} If the account ID is invalid
|
|
257
|
+
* @throws {NetworkError} If the agent is unreachable or account not found
|
|
258
|
+
*/
|
|
259
|
+
getAccount(accountId: string): Promise<UniversalAccountInfo>;
|
|
260
|
+
/**
|
|
261
|
+
* Look up a universal account by any of its chain addresses.
|
|
262
|
+
*
|
|
263
|
+
* Given an address on any chain (Ethereum, Bitcoin, Solana, etc.),
|
|
264
|
+
* returns the universal account that owns it.
|
|
265
|
+
*
|
|
266
|
+
* @param address - An address on any supported chain
|
|
267
|
+
* @returns The account information, or null if no account owns this address
|
|
268
|
+
*
|
|
269
|
+
* @throws {Sequence0Error} If the address is invalid
|
|
270
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
271
|
+
*/
|
|
272
|
+
getAccountByAddress(address: string): Promise<UniversalAccountInfo>;
|
|
273
|
+
/**
|
|
274
|
+
* Get all universal accounts owned by a specific owner address.
|
|
275
|
+
*
|
|
276
|
+
* @param ownerAddress - The Ethereum owner address
|
|
277
|
+
* @returns Array of account information objects
|
|
278
|
+
*
|
|
279
|
+
* @throws {Sequence0Error} If the owner address is invalid
|
|
280
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
281
|
+
*/
|
|
282
|
+
getOwnerAccounts(ownerAddress: string): Promise<UniversalAccountInfo[]>;
|
|
283
|
+
/**
|
|
284
|
+
* Deactivate a universal account.
|
|
285
|
+
*
|
|
286
|
+
* Marks the account as inactive. This does not destroy the keys
|
|
287
|
+
* or chain addresses — it prevents new sends from being initiated.
|
|
288
|
+
* Only the account owner can deactivate.
|
|
289
|
+
*
|
|
290
|
+
* @param accountId - The account ID to deactivate
|
|
291
|
+
* @param ownerSignature - Owner signature authorizing deactivation
|
|
292
|
+
* @param timestamp - Unix timestamp of the signature
|
|
293
|
+
*
|
|
294
|
+
* @throws {Sequence0Error} If parameters are invalid
|
|
295
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
296
|
+
*/
|
|
297
|
+
deactivateAccount(accountId: string, ownerSignature: string, timestamp: number): Promise<void>;
|
|
298
|
+
/**
|
|
299
|
+
* Get all chain addresses for a universal account.
|
|
300
|
+
*
|
|
301
|
+
* @param accountId - The account ID
|
|
302
|
+
* @returns Map of chain name to chain address info
|
|
303
|
+
*
|
|
304
|
+
* @throws {Sequence0Error} If the account ID is invalid
|
|
305
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
306
|
+
*/
|
|
307
|
+
getChainAddresses(accountId: string): Promise<Record<string, ChainAddressInfo>>;
|
|
308
|
+
/**
|
|
309
|
+
* Get the address for a specific chain within a universal account.
|
|
310
|
+
*
|
|
311
|
+
* @param accountId - The account ID
|
|
312
|
+
* @param chain - The chain name (e.g., 'ethereum', 'bitcoin', 'solana')
|
|
313
|
+
* @returns The chain address info
|
|
314
|
+
*
|
|
315
|
+
* @throws {Sequence0Error} If parameters are invalid
|
|
316
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
317
|
+
*/
|
|
318
|
+
getAddressForChain(accountId: string, chain: string): Promise<ChainAddressInfo>;
|
|
319
|
+
/**
|
|
320
|
+
* Get unified balance across all chains for a universal account.
|
|
321
|
+
*
|
|
322
|
+
* Agents query balances on all chains where the account has
|
|
323
|
+
* derived addresses and return an aggregated view.
|
|
324
|
+
*
|
|
325
|
+
* @param accountId - The account ID
|
|
326
|
+
* @returns Unified balance with per-chain breakdown
|
|
327
|
+
*
|
|
328
|
+
* @throws {Sequence0Error} If the account ID is invalid
|
|
329
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
330
|
+
*/
|
|
331
|
+
getUnifiedBalance(accountId: string): Promise<UnifiedBalance>;
|
|
332
|
+
/**
|
|
333
|
+
* Get the balance for a specific chain within a universal account.
|
|
334
|
+
*
|
|
335
|
+
* @param accountId - The account ID
|
|
336
|
+
* @param chain - The chain name (e.g., 'ethereum', 'bitcoin', 'solana')
|
|
337
|
+
* @returns The chain balance
|
|
338
|
+
*
|
|
339
|
+
* @throws {Sequence0Error} If parameters are invalid
|
|
340
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
341
|
+
*/
|
|
342
|
+
getChainBalance(accountId: string, chain: string): Promise<ChainBalance>;
|
|
343
|
+
/**
|
|
344
|
+
* Send tokens from a universal account.
|
|
345
|
+
*
|
|
346
|
+
* The agent network automatically selects the optimal source chain
|
|
347
|
+
* based on available balances, gas fees, and confirmation times.
|
|
348
|
+
* Use `preferredChain` to override automatic routing.
|
|
349
|
+
*
|
|
350
|
+
* @param options - Send options
|
|
351
|
+
* @returns The send result with routing decision and request ID for polling
|
|
352
|
+
*
|
|
353
|
+
* @throws {Sequence0Error} If the send parameters are invalid
|
|
354
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* ```typescript
|
|
358
|
+
* const result = await ua.send({
|
|
359
|
+
* accountId: 'ua-abc123',
|
|
360
|
+
* to: '0xRecipient...',
|
|
361
|
+
* amount: '1.5',
|
|
362
|
+
* token: 'ETH',
|
|
363
|
+
* ownerSignature: '0x...',
|
|
364
|
+
* timestamp: Date.now(),
|
|
365
|
+
* });
|
|
366
|
+
*
|
|
367
|
+
* // Poll for confirmation
|
|
368
|
+
* const status = await ua.getSendStatus(result.requestId);
|
|
369
|
+
* ```
|
|
370
|
+
*/
|
|
371
|
+
send(options: UniversalSendOptions): Promise<SendResult>;
|
|
372
|
+
/**
|
|
373
|
+
* Get the current status of a send operation.
|
|
374
|
+
*
|
|
375
|
+
* @param requestId - The send request ID
|
|
376
|
+
* @returns Current status of the send
|
|
377
|
+
*
|
|
378
|
+
* @throws {Sequence0Error} If the request ID is invalid
|
|
379
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
380
|
+
*/
|
|
381
|
+
getSendStatus(requestId: string): Promise<SendResult>;
|
|
382
|
+
/**
|
|
383
|
+
* Wait for a send operation to reach a terminal status by polling.
|
|
384
|
+
*
|
|
385
|
+
* Polls the send status endpoint at 2-second intervals until
|
|
386
|
+
* the send is confirmed, fails, or the timeout is exceeded.
|
|
387
|
+
*
|
|
388
|
+
* @param requestId - The send request ID to wait for
|
|
389
|
+
* @param timeout - Max time to wait in ms (default: 120000)
|
|
390
|
+
* @returns The final send result
|
|
391
|
+
*
|
|
392
|
+
* @throws {TimeoutError} If the send is not completed within the timeout
|
|
393
|
+
* @throws {Sequence0Error} If the send fails
|
|
394
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
395
|
+
*/
|
|
396
|
+
waitForSend(requestId: string, timeout?: number): Promise<SendResult>;
|
|
397
|
+
/**
|
|
398
|
+
* Preview the routing decision for a send without executing it.
|
|
399
|
+
*
|
|
400
|
+
* Use this to show users which chain will be used and the estimated
|
|
401
|
+
* fee before they authorize the send with their signature.
|
|
402
|
+
*
|
|
403
|
+
* @param options - Send options (without ownerSignature and timestamp)
|
|
404
|
+
* @returns The routing decision that would be made
|
|
405
|
+
*
|
|
406
|
+
* @throws {Sequence0Error} If the parameters are invalid
|
|
407
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
408
|
+
*
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* const route = await ua.previewRoute({
|
|
412
|
+
* accountId: 'ua-abc123',
|
|
413
|
+
* to: '0xRecipient...',
|
|
414
|
+
* amount: '1.5',
|
|
415
|
+
* token: 'ETH',
|
|
416
|
+
* });
|
|
417
|
+
* console.log(`Will send from ${route.sourceChain} (fee: ${route.estimatedFee})`);
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
previewRoute(options: Omit<UniversalSendOptions, 'ownerSignature' | 'timestamp'>): Promise<RoutingDecision>;
|
|
421
|
+
/**
|
|
422
|
+
* Get network-wide Universal Account statistics.
|
|
423
|
+
*
|
|
424
|
+
* @returns Protocol statistics
|
|
425
|
+
*
|
|
426
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
427
|
+
*/
|
|
428
|
+
getStats(): Promise<UniversalAccountStats>;
|
|
429
|
+
private get;
|
|
430
|
+
private post;
|
|
431
|
+
private mapAccountResponse;
|
|
432
|
+
private mapChainAddressResponse;
|
|
433
|
+
private mapChainBalanceResponse;
|
|
434
|
+
private mapUnifiedBalanceResponse;
|
|
435
|
+
private mapRoutingDecisionResponse;
|
|
436
|
+
private mapSendResultResponse;
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=universal-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"universal-account.d.ts","sourceRoot":"","sources":["../../src/core/universal-account.ts"],"names":[],"mappings":"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"}
|