@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.
Files changed (126) hide show
  1. package/README.md +1 -1
  2. package/dist/chains/algorand.d.ts +44 -0
  3. package/dist/chains/algorand.d.ts.map +1 -0
  4. package/dist/chains/algorand.js +148 -0
  5. package/dist/chains/algorand.js.map +1 -0
  6. package/dist/chains/aptos.d.ts +39 -0
  7. package/dist/chains/aptos.d.ts.map +1 -0
  8. package/dist/chains/aptos.js +168 -0
  9. package/dist/chains/aptos.js.map +1 -0
  10. package/dist/chains/cardano.d.ts +42 -0
  11. package/dist/chains/cardano.d.ts.map +1 -0
  12. package/dist/chains/cardano.js +188 -0
  13. package/dist/chains/cardano.js.map +1 -0
  14. package/dist/chains/cosmos.d.ts +42 -0
  15. package/dist/chains/cosmos.d.ts.map +1 -0
  16. package/dist/chains/cosmos.js +216 -0
  17. package/dist/chains/cosmos.js.map +1 -0
  18. package/dist/chains/dogecoin-litecoin.d.ts +57 -0
  19. package/dist/chains/dogecoin-litecoin.d.ts.map +1 -0
  20. package/dist/chains/dogecoin-litecoin.js +521 -0
  21. package/dist/chains/dogecoin-litecoin.js.map +1 -0
  22. package/dist/chains/ethereum.d.ts.map +1 -1
  23. package/dist/chains/ethereum.js +16 -0
  24. package/dist/chains/ethereum.js.map +1 -1
  25. package/dist/chains/hedera.d.ts +113 -0
  26. package/dist/chains/hedera.d.ts.map +1 -0
  27. package/dist/chains/hedera.js +302 -0
  28. package/dist/chains/hedera.js.map +1 -0
  29. package/dist/chains/icp.d.ts +95 -0
  30. package/dist/chains/icp.d.ts.map +1 -0
  31. package/dist/chains/icp.js +520 -0
  32. package/dist/chains/icp.js.map +1 -0
  33. package/dist/chains/kaspa.d.ts +152 -0
  34. package/dist/chains/kaspa.d.ts.map +1 -0
  35. package/dist/chains/kaspa.js +790 -0
  36. package/dist/chains/kaspa.js.map +1 -0
  37. package/dist/chains/multiversx.d.ts +143 -0
  38. package/dist/chains/multiversx.d.ts.map +1 -0
  39. package/dist/chains/multiversx.js +524 -0
  40. package/dist/chains/multiversx.js.map +1 -0
  41. package/dist/chains/near.d.ts +40 -0
  42. package/dist/chains/near.d.ts.map +1 -0
  43. package/dist/chains/near.js +170 -0
  44. package/dist/chains/near.js.map +1 -0
  45. package/dist/chains/polkadot.d.ts +43 -0
  46. package/dist/chains/polkadot.d.ts.map +1 -0
  47. package/dist/chains/polkadot.js +179 -0
  48. package/dist/chains/polkadot.js.map +1 -0
  49. package/dist/chains/ripple.d.ts +41 -0
  50. package/dist/chains/ripple.d.ts.map +1 -0
  51. package/dist/chains/ripple.js +190 -0
  52. package/dist/chains/ripple.js.map +1 -0
  53. package/dist/chains/stellar.d.ts +40 -0
  54. package/dist/chains/stellar.d.ts.map +1 -0
  55. package/dist/chains/stellar.js +156 -0
  56. package/dist/chains/stellar.js.map +1 -0
  57. package/dist/chains/sui.d.ts +44 -0
  58. package/dist/chains/sui.d.ts.map +1 -0
  59. package/dist/chains/sui.js +157 -0
  60. package/dist/chains/sui.js.map +1 -0
  61. package/dist/chains/tezos.d.ts +43 -0
  62. package/dist/chains/tezos.d.ts.map +1 -0
  63. package/dist/chains/tezos.js +162 -0
  64. package/dist/chains/tezos.js.map +1 -0
  65. package/dist/chains/ton.d.ts +40 -0
  66. package/dist/chains/ton.d.ts.map +1 -0
  67. package/dist/chains/ton.js +168 -0
  68. package/dist/chains/ton.js.map +1 -0
  69. package/dist/chains/tron.d.ts +41 -0
  70. package/dist/chains/tron.d.ts.map +1 -0
  71. package/dist/chains/tron.js +124 -0
  72. package/dist/chains/tron.js.map +1 -0
  73. package/dist/core/atomic.d.ts +76 -0
  74. package/dist/core/atomic.d.ts.map +1 -0
  75. package/dist/core/atomic.js +39 -0
  76. package/dist/core/atomic.js.map +1 -0
  77. package/dist/core/client.d.ts +238 -0
  78. package/dist/core/client.d.ts.map +1 -1
  79. package/dist/core/client.js +536 -4
  80. package/dist/core/client.js.map +1 -1
  81. package/dist/core/delegation.d.ts +184 -0
  82. package/dist/core/delegation.d.ts.map +1 -0
  83. package/dist/core/delegation.js +37 -0
  84. package/dist/core/delegation.js.map +1 -0
  85. package/dist/core/programmable.d.ts +66 -0
  86. package/dist/core/programmable.d.ts.map +1 -0
  87. package/dist/core/programmable.js +36 -0
  88. package/dist/core/programmable.js.map +1 -0
  89. package/dist/core/solvency.d.ts +223 -0
  90. package/dist/core/solvency.d.ts.map +1 -0
  91. package/dist/core/solvency.js +267 -0
  92. package/dist/core/solvency.js.map +1 -0
  93. package/dist/core/types.d.ts +172 -1
  94. package/dist/core/types.d.ts.map +1 -1
  95. package/dist/core/universal-account.d.ts +438 -0
  96. package/dist/core/universal-account.d.ts.map +1 -0
  97. package/dist/core/universal-account.js +597 -0
  98. package/dist/core/universal-account.js.map +1 -0
  99. package/dist/core/witness.d.ts +197 -0
  100. package/dist/core/witness.d.ts.map +1 -0
  101. package/dist/core/witness.js +298 -0
  102. package/dist/core/witness.js.map +1 -0
  103. package/dist/erc4337/types.js +2 -2
  104. package/dist/index.d.ts +30 -2
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +91 -4
  107. package/dist/index.js.map +1 -1
  108. package/dist/settlement/settlement.d.ts +152 -0
  109. package/dist/settlement/settlement.d.ts.map +1 -0
  110. package/dist/settlement/settlement.js +172 -0
  111. package/dist/settlement/settlement.js.map +1 -0
  112. package/dist/utils/eip712.js +2 -2
  113. package/dist/utils/fee.d.ts +2 -2
  114. package/dist/utils/fee.js +2 -2
  115. package/dist/utils/optional-deps.d.ts +9 -0
  116. package/dist/utils/optional-deps.d.ts.map +1 -0
  117. package/dist/utils/optional-deps.js +21 -0
  118. package/dist/utils/optional-deps.js.map +1 -0
  119. package/dist/utils/validation.d.ts.map +1 -1
  120. package/dist/utils/validation.js +6 -1
  121. package/dist/utils/validation.js.map +1 -1
  122. package/dist/wallet/wallet.d.ts +52 -0
  123. package/dist/wallet/wallet.d.ts.map +1 -1
  124. package/dist/wallet/wallet.js +265 -33
  125. package/dist/wallet/wallet.js.map +1 -1
  126. package/package.json +35 -1
@@ -0,0 +1,40 @@
1
+ /**
2
+ * TON Chain Adapter
3
+ *
4
+ * Builds TON blockchain transactions using Cell/BoC serialization,
5
+ * attaches Ed25519 signatures from the FROST threshold signing
6
+ * network, and broadcasts via TON Center API.
7
+ *
8
+ * Requires: npm install @ton/ton
9
+ */
10
+ import { ChainAdapter, TonTransaction } from '../core/types';
11
+ export declare class TonAdapter implements ChainAdapter {
12
+ private rpcUrl;
13
+ private network;
14
+ private tonSdk;
15
+ constructor(network?: 'mainnet' | 'testnet', rpcUrl?: string);
16
+ getRpcUrl(): string;
17
+ /**
18
+ * Build an unsigned TON transaction.
19
+ *
20
+ * TON uses Cell tree serialization. The signing payload is the
21
+ * SHA-256 hash of the external message body cell.
22
+ */
23
+ buildTransaction(tx: TonTransaction, fromAddress: string): Promise<string>;
24
+ getSigningPayload(unsignedTx: string): string;
25
+ /**
26
+ * Attach an Ed25519 signature to the TON transaction
27
+ */
28
+ attachSignature(unsignedTx: string, signature: string): Promise<string>;
29
+ /**
30
+ * Broadcast a signed TON transaction
31
+ */
32
+ broadcast(signedTx: string): Promise<string>;
33
+ /**
34
+ * Get TON balance in nanotons
35
+ */
36
+ getBalance(address: string): Promise<string>;
37
+ }
38
+ export declare function createTonAdapter(rpcUrl?: string): TonAdapter;
39
+ export declare function createTonTestnetAdapter(rpcUrl?: string): TonAdapter;
40
+ //# sourceMappingURL=ton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton.d.ts","sourceRoot":"","sources":["../../src/chains/ton.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAS7D,qBAAa,UAAW,YAAW,YAAY;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAM;gBAER,OAAO,GAAE,SAAS,GAAG,SAAqB,EAAE,MAAM,CAAC,EAAE,MAAM;IAMvE,SAAS,IAAI,MAAM;IAInB;;;;;OAKG;IACG,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuDhF,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAS7C;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7E;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4ClD;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAE5D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAEnE"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * TON Chain Adapter
4
+ *
5
+ * Builds TON blockchain transactions using Cell/BoC serialization,
6
+ * attaches Ed25519 signatures from the FROST threshold signing
7
+ * network, and broadcasts via TON Center API.
8
+ *
9
+ * Requires: npm install @ton/ton
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TonAdapter = void 0;
13
+ exports.createTonAdapter = createTonAdapter;
14
+ exports.createTonTestnetAdapter = createTonTestnetAdapter;
15
+ const errors_1 = require("../utils/errors");
16
+ const optional_deps_1 = require("../utils/optional-deps");
17
+ const DEFAULT_RPCS = {
18
+ 'mainnet': 'https://toncenter.com/api/v2',
19
+ 'testnet': 'https://testnet.toncenter.com/api/v2',
20
+ };
21
+ class TonAdapter {
22
+ constructor(network = 'mainnet', rpcUrl) {
23
+ this.network = network;
24
+ this.rpcUrl = rpcUrl || DEFAULT_RPCS[network];
25
+ this.tonSdk = (0, optional_deps_1.requireOptionalDependency)('@ton/ton', 'ton');
26
+ }
27
+ getRpcUrl() {
28
+ return this.rpcUrl;
29
+ }
30
+ /**
31
+ * Build an unsigned TON transaction.
32
+ *
33
+ * TON uses Cell tree serialization. The signing payload is the
34
+ * SHA-256 hash of the external message body cell.
35
+ */
36
+ async buildTransaction(tx, fromAddress) {
37
+ try {
38
+ const { TonClient, WalletContractV4, internal, Address, toNano, beginCell } = this.tonSdk;
39
+ const client = new TonClient({
40
+ endpoint: this.rpcUrl,
41
+ });
42
+ const address = Address.parse(fromAddress);
43
+ // Get seqno (sequence number) from wallet contract
44
+ const contract = client.open(WalletContractV4.create({
45
+ workchain: 0,
46
+ publicKey: Buffer.alloc(32), // placeholder
47
+ }));
48
+ // Build the internal message
49
+ const internalMsg = internal({
50
+ to: Address.parse(tx.to),
51
+ value: BigInt(tx.amount),
52
+ body: tx.payload ? beginCell().storeStringTail(tx.payload).endCell() : undefined,
53
+ bounce: true,
54
+ });
55
+ // Create the transfer message body
56
+ const body = beginCell()
57
+ .storeUint(0, 32) // seqno placeholder
58
+ .storeUint(Math.floor(Date.now() / 1000) + 60, 32) // expiry
59
+ .storeUint(0, 8) // mode: 0 = pay transfer fees separately
60
+ .storeRef(beginCell()
61
+ .store(internalMsg)
62
+ .endCell())
63
+ .endCell();
64
+ const bodyHash = body.hash();
65
+ const payload = {
66
+ signingHash: Buffer.from(bodyHash).toString('hex'),
67
+ body: body.toBoc().toString('hex'),
68
+ fromAddress,
69
+ toAddress: tx.to,
70
+ amount: tx.amount,
71
+ payload: tx.payload || '',
72
+ };
73
+ return Buffer.from(JSON.stringify(payload)).toString('hex');
74
+ }
75
+ catch (e) {
76
+ if (e instanceof errors_1.ChainError)
77
+ throw e;
78
+ throw new errors_1.ChainError(`Failed to build TON transaction: ${e.message}`, 'ton');
79
+ }
80
+ }
81
+ getSigningPayload(unsignedTx) {
82
+ try {
83
+ const payload = JSON.parse(Buffer.from(unsignedTx, 'hex').toString());
84
+ return payload.signingHash;
85
+ }
86
+ catch {
87
+ return unsignedTx;
88
+ }
89
+ }
90
+ /**
91
+ * Attach an Ed25519 signature to the TON transaction
92
+ */
93
+ async attachSignature(unsignedTx, signature) {
94
+ try {
95
+ const payload = JSON.parse(Buffer.from(unsignedTx, 'hex').toString());
96
+ const sig = signature.startsWith('0x') ? signature.slice(2) : signature;
97
+ const signedPayload = {
98
+ ...payload,
99
+ signature: sig,
100
+ };
101
+ return Buffer.from(JSON.stringify(signedPayload)).toString('hex');
102
+ }
103
+ catch (e) {
104
+ throw new errors_1.ChainError(`Failed to attach TON signature: ${e.message}`, 'ton');
105
+ }
106
+ }
107
+ /**
108
+ * Broadcast a signed TON transaction
109
+ */
110
+ async broadcast(signedTx) {
111
+ try {
112
+ const { TonClient, Cell, beginCell } = this.tonSdk;
113
+ const payload = JSON.parse(Buffer.from(signedTx, 'hex').toString());
114
+ const client = new TonClient({ endpoint: this.rpcUrl });
115
+ // Reconstruct the signed external message
116
+ const bodyBoc = Buffer.from(payload.body, 'hex');
117
+ const body = Cell.fromBoc(bodyBoc)[0];
118
+ const sigBytes = Buffer.from(payload.signature, 'hex');
119
+ // Prepend signature to message body
120
+ const signedBody = beginCell()
121
+ .storeBuffer(sigBytes)
122
+ .storeSlice(body.beginParse())
123
+ .endCell();
124
+ // Create external message
125
+ const ext = beginCell()
126
+ .storeUint(0b10, 2) // ext_in_msg_info
127
+ .storeUint(0, 2) // src: addr_none
128
+ .storeAddress(null) // dest: will be set
129
+ .storeCoins(0) // import_fee
130
+ .storeBit(false) // state_init: none
131
+ .storeBit(true) // body: in reference
132
+ .storeRef(signedBody)
133
+ .endCell();
134
+ await client.sendFile(ext.toBoc());
135
+ // TON doesn't return a hash on send — compute it from the BoC
136
+ const crypto = require('crypto');
137
+ const hash = crypto.createHash('sha256').update(ext.toBoc()).digest('hex');
138
+ return hash;
139
+ }
140
+ catch (e) {
141
+ if (e instanceof errors_1.ChainError)
142
+ throw e;
143
+ throw new errors_1.ChainError(`Failed to broadcast TON tx: ${e.message}`, 'ton');
144
+ }
145
+ }
146
+ /**
147
+ * Get TON balance in nanotons
148
+ */
149
+ async getBalance(address) {
150
+ try {
151
+ const { TonClient, Address } = this.tonSdk;
152
+ const client = new TonClient({ endpoint: this.rpcUrl });
153
+ const balance = await client.getBalance(Address.parse(address));
154
+ return balance.toString();
155
+ }
156
+ catch {
157
+ return '0';
158
+ }
159
+ }
160
+ }
161
+ exports.TonAdapter = TonAdapter;
162
+ function createTonAdapter(rpcUrl) {
163
+ return new TonAdapter('mainnet', rpcUrl);
164
+ }
165
+ function createTonTestnetAdapter(rpcUrl) {
166
+ return new TonAdapter('testnet', rpcUrl);
167
+ }
168
+ //# sourceMappingURL=ton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton.js","sourceRoot":"","sources":["../../src/chains/ton.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * TRON Chain Adapter
3
+ *
4
+ * Builds TRON transactions using Protobuf serialization (NOT EVM RLP),
5
+ * attaches secp256k1 ECDSA signatures from the FROST threshold signing
6
+ * network, and broadcasts via TRON full node HTTP API.
7
+ *
8
+ * Requires: npm install tronweb
9
+ */
10
+ import { ChainAdapter, TronTransaction } from '../core/types';
11
+ export declare class TronAdapter implements ChainAdapter {
12
+ private rpcUrl;
13
+ private network;
14
+ private tronWeb;
15
+ constructor(network?: 'mainnet' | 'shasta' | 'nile', rpcUrl?: string);
16
+ getRpcUrl(): string;
17
+ /**
18
+ * Build an unsigned TRON transaction.
19
+ *
20
+ * TRON uses Protobuf for TX serialization. The signing payload
21
+ * is SHA-256 of the raw transaction data (returned as txID by TronWeb).
22
+ */
23
+ buildTransaction(tx: TronTransaction, fromAddress: string): Promise<string>;
24
+ getSigningPayload(unsignedTx: string): string;
25
+ /**
26
+ * Attach a secp256k1 ECDSA signature to the TRON transaction.
27
+ * TRON expects 65-byte signatures (r + s + v), same format as EVM.
28
+ */
29
+ attachSignature(unsignedTx: string, signature: string): Promise<string>;
30
+ /**
31
+ * Broadcast a signed TRON transaction
32
+ */
33
+ broadcast(signedTx: string): Promise<string>;
34
+ /**
35
+ * Get TRX balance in SUN
36
+ */
37
+ getBalance(address: string): Promise<string>;
38
+ }
39
+ export declare function createTronAdapter(rpcUrl?: string): TronAdapter;
40
+ export declare function createTronShastaAdapter(rpcUrl?: string): TronAdapter;
41
+ //# sourceMappingURL=tron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.d.ts","sourceRoot":"","sources":["../../src/chains/tron.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAU9D,qBAAa,WAAY,YAAW,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAM;gBAET,OAAO,GAAE,SAAS,GAAG,QAAQ,GAAG,MAAkB,EAAE,MAAM,CAAC,EAAE,MAAM;IAO/E,SAAS,IAAI,MAAM;IAInB;;;;;OAKG;IACG,gBAAgB,CAAC,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBjF,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAS7C;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB7E;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BlD;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAQrD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAE9D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAEpE"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ /**
3
+ * TRON Chain Adapter
4
+ *
5
+ * Builds TRON transactions using Protobuf serialization (NOT EVM RLP),
6
+ * attaches secp256k1 ECDSA signatures from the FROST threshold signing
7
+ * network, and broadcasts via TRON full node HTTP API.
8
+ *
9
+ * Requires: npm install tronweb
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TronAdapter = void 0;
13
+ exports.createTronAdapter = createTronAdapter;
14
+ exports.createTronShastaAdapter = createTronShastaAdapter;
15
+ const errors_1 = require("../utils/errors");
16
+ const optional_deps_1 = require("../utils/optional-deps");
17
+ const DEFAULT_RPCS = {
18
+ 'mainnet': 'https://api.trongrid.io',
19
+ 'shasta': 'https://api.shasta.trongrid.io',
20
+ 'nile': 'https://nile.trongrid.io',
21
+ };
22
+ class TronAdapter {
23
+ constructor(network = 'mainnet', rpcUrl) {
24
+ this.network = network;
25
+ this.rpcUrl = rpcUrl || DEFAULT_RPCS[network];
26
+ const TronWeb = (0, optional_deps_1.requireOptionalDependency)('tronweb', 'tron');
27
+ this.tronWeb = new TronWeb({ fullHost: this.rpcUrl });
28
+ }
29
+ getRpcUrl() {
30
+ return this.rpcUrl;
31
+ }
32
+ /**
33
+ * Build an unsigned TRON transaction.
34
+ *
35
+ * TRON uses Protobuf for TX serialization. The signing payload
36
+ * is SHA-256 of the raw transaction data (returned as txID by TronWeb).
37
+ */
38
+ async buildTransaction(tx, fromAddress) {
39
+ try {
40
+ const unsignedTx = await this.tronWeb.transactionBuilder.sendTrx(tx.to, tx.amount, fromAddress);
41
+ // txID is already SHA-256(rawData) — the signing hash
42
+ const payload = {
43
+ signingHash: unsignedTx.txID,
44
+ rawData: unsignedTx.raw_data,
45
+ rawDataHex: unsignedTx.raw_data_hex,
46
+ };
47
+ return Buffer.from(JSON.stringify(payload)).toString('hex');
48
+ }
49
+ catch (e) {
50
+ throw new errors_1.ChainError(`Failed to build TRON transaction: ${e.message}`, 'tron');
51
+ }
52
+ }
53
+ getSigningPayload(unsignedTx) {
54
+ try {
55
+ const payload = JSON.parse(Buffer.from(unsignedTx, 'hex').toString());
56
+ return payload.signingHash;
57
+ }
58
+ catch {
59
+ return unsignedTx;
60
+ }
61
+ }
62
+ /**
63
+ * Attach a secp256k1 ECDSA signature to the TRON transaction.
64
+ * TRON expects 65-byte signatures (r + s + v), same format as EVM.
65
+ */
66
+ async attachSignature(unsignedTx, signature) {
67
+ try {
68
+ const payload = JSON.parse(Buffer.from(unsignedTx, 'hex').toString());
69
+ const sig = signature.startsWith('0x') ? signature.slice(2) : signature;
70
+ const signedPayload = {
71
+ ...payload,
72
+ signature: [sig],
73
+ };
74
+ return Buffer.from(JSON.stringify(signedPayload)).toString('hex');
75
+ }
76
+ catch (e) {
77
+ throw new errors_1.ChainError(`Failed to attach TRON signature: ${e.message}`, 'tron');
78
+ }
79
+ }
80
+ /**
81
+ * Broadcast a signed TRON transaction
82
+ */
83
+ async broadcast(signedTx) {
84
+ try {
85
+ const payload = JSON.parse(Buffer.from(signedTx, 'hex').toString());
86
+ const signedTransaction = {
87
+ txID: payload.signingHash,
88
+ raw_data: payload.rawData,
89
+ raw_data_hex: payload.rawDataHex,
90
+ signature: payload.signature,
91
+ };
92
+ const result = await this.tronWeb.trx.sendRawTransaction(signedTransaction);
93
+ if (!result.result && !result.txid) {
94
+ throw new Error(result.message || 'Broadcast failed');
95
+ }
96
+ return result.txid || payload.signingHash;
97
+ }
98
+ catch (e) {
99
+ if (e instanceof errors_1.ChainError)
100
+ throw e;
101
+ throw new errors_1.ChainError(`Failed to broadcast TRON tx: ${e.message}`, 'tron');
102
+ }
103
+ }
104
+ /**
105
+ * Get TRX balance in SUN
106
+ */
107
+ async getBalance(address) {
108
+ try {
109
+ const balance = await this.tronWeb.trx.getBalance(address);
110
+ return balance.toString();
111
+ }
112
+ catch {
113
+ return '0';
114
+ }
115
+ }
116
+ }
117
+ exports.TronAdapter = TronAdapter;
118
+ function createTronAdapter(rpcUrl) {
119
+ return new TronAdapter('mainnet', rpcUrl);
120
+ }
121
+ function createTronShastaAdapter(rpcUrl) {
122
+ return new TronAdapter('shasta', rpcUrl);
123
+ }
124
+ //# sourceMappingURL=tron.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tron.js","sourceRoot":"","sources":["../../src/chains/tron.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * K2: Cross-Chain Atomic Composability -- all-or-nothing signing across chains
3
+ *
4
+ * Submit a batch of signing operations spanning multiple wallets and chains.
5
+ * Either all operations succeed and produce signatures, or the entire batch
6
+ * is aborted atomically. This is essential for cross-chain arbitrage, bridge
7
+ * transfers, and multi-leg DeFi strategies where partial execution would
8
+ * leave funds stranded.
9
+ *
10
+ * The agent network coordinates via a 2-phase commit protocol:
11
+ * Phase 1: All participating agents lock the wallets and produce partial sigs
12
+ * Phase 2: Partial sigs are aggregated; if any operation fails, all are rolled back
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { Sequence0 } from '@sequence0/sdk';
17
+ *
18
+ * const s0 = new Sequence0({ network: 'mainnet', ownerPrivateKey: '0x...' });
19
+ *
20
+ * const result = await s0.signAtomic({
21
+ * operations: [
22
+ * { walletId: 'eth-wallet', chain: 'ethereum', message: '0xabc...' },
23
+ * { walletId: 'arb-wallet', chain: 'arbitrum', message: '0xdef...' },
24
+ * ],
25
+ * deadlineBlocks: 50,
26
+ * timeout: 60000,
27
+ * });
28
+ *
29
+ * if (result.status === 'committed') {
30
+ * // All signatures available
31
+ * for (const [reqId, sig] of result.signatures) {
32
+ * console.log(`Request ${reqId}: ${sig}`);
33
+ * }
34
+ * }
35
+ * ```
36
+ */
37
+ import { Chain } from './types';
38
+ export interface AtomicOperation {
39
+ /** Wallet ID to sign with */
40
+ walletId: string;
41
+ /** Target blockchain */
42
+ chain: Chain;
43
+ /** Hex-encoded message to sign */
44
+ message: string;
45
+ }
46
+ export interface AtomicSignOptions {
47
+ /** Array of operations to execute atomically */
48
+ operations: AtomicOperation[];
49
+ /** Max blocks to wait for completion (default: 50) */
50
+ deadlineBlocks?: number;
51
+ /** Polling timeout in ms (default: 60000) */
52
+ timeout?: number;
53
+ }
54
+ export interface AtomicSignResult {
55
+ /** Unique manifest identifier for this atomic batch */
56
+ manifestId: string;
57
+ /** Final status: all succeeded ('committed') or all rolled back ('aborted') */
58
+ status: 'committed' | 'aborted';
59
+ /** Map of requestId to hex-encoded signature (only populated if committed) */
60
+ signatures: Map<string, string>;
61
+ /** Error message explaining why the batch was aborted (only if aborted) */
62
+ error?: string;
63
+ }
64
+ export interface AtomicOperationResult {
65
+ /** Request ID for this individual operation */
66
+ requestId: string;
67
+ /** Wallet ID that signed */
68
+ walletId: string;
69
+ /** Chain this operation targeted */
70
+ chain: Chain;
71
+ /** Hex-encoded signature (only if this operation succeeded) */
72
+ signature?: string;
73
+ /** Error message (only if this operation failed, triggering abort) */
74
+ error?: string;
75
+ }
76
+ //# sourceMappingURL=atomic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic.d.ts","sourceRoot":"","sources":["../../src/core/atomic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhC,MAAM,WAAW,eAAe;IAC5B,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,iBAAiB;IAC9B,gDAAgD;IAChD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,gBAAgB;IAC7B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,8EAA8E;IAC9E,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,qBAAqB;IAClC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,KAAK,CAAC;IACb,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * K2: Cross-Chain Atomic Composability -- all-or-nothing signing across chains
4
+ *
5
+ * Submit a batch of signing operations spanning multiple wallets and chains.
6
+ * Either all operations succeed and produce signatures, or the entire batch
7
+ * is aborted atomically. This is essential for cross-chain arbitrage, bridge
8
+ * transfers, and multi-leg DeFi strategies where partial execution would
9
+ * leave funds stranded.
10
+ *
11
+ * The agent network coordinates via a 2-phase commit protocol:
12
+ * Phase 1: All participating agents lock the wallets and produce partial sigs
13
+ * Phase 2: Partial sigs are aggregated; if any operation fails, all are rolled back
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { Sequence0 } from '@sequence0/sdk';
18
+ *
19
+ * const s0 = new Sequence0({ network: 'mainnet', ownerPrivateKey: '0x...' });
20
+ *
21
+ * const result = await s0.signAtomic({
22
+ * operations: [
23
+ * { walletId: 'eth-wallet', chain: 'ethereum', message: '0xabc...' },
24
+ * { walletId: 'arb-wallet', chain: 'arbitrum', message: '0xdef...' },
25
+ * ],
26
+ * deadlineBlocks: 50,
27
+ * timeout: 60000,
28
+ * });
29
+ *
30
+ * if (result.status === 'committed') {
31
+ * // All signatures available
32
+ * for (const [reqId, sig] of result.signatures) {
33
+ * console.log(`Request ${reqId}: ${sig}`);
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ //# sourceMappingURL=atomic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic.js","sourceRoot":"","sources":["../../src/core/atomic.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}