@sequence0/sdk 1.1.0 → 1.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 +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/bitcoin-taproot.d.ts +77 -14
- package/dist/chains/bitcoin-taproot.d.ts.map +1 -1
- package/dist/chains/bitcoin-taproot.js +324 -65
- package/dist/chains/bitcoin-taproot.js.map +1 -1
- package/dist/chains/bitcoin.d.ts +12 -7
- package/dist/chains/bitcoin.d.ts.map +1 -1
- package/dist/chains/bitcoin.js +14 -9
- package/dist/chains/bitcoin.js.map +1 -1
- 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/client.d.ts +4 -5
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +54 -29
- package/dist/core/client.js.map +1 -1
- package/dist/core/types.d.ts +161 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/erc4337/types.js +2 -2
- package/dist/index.d.ts +21 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/discovery.d.ts.map +1 -1
- package/dist/utils/discovery.js +56 -1
- package/dist/utils/discovery.js.map +1 -1
- package/dist/utils/eip712.d.ts +36 -0
- package/dist/utils/eip712.d.ts.map +1 -0
- package/dist/utils/eip712.js +80 -0
- package/dist/utils/eip712.js.map +1 -0
- 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 +8 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +24 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/websocket.js +1 -1
- package/dist/utils/websocket.js.map +1 -1
- package/dist/wallet/wallet.d.ts +16 -2
- package/dist/wallet/wallet.d.ts.map +1 -1
- package/dist/wallet/wallet.js +131 -58
- package/dist/wallet/wallet.js.map +1 -1
- package/package.json +35 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kaspa Chain Adapter
|
|
3
|
+
*
|
|
4
|
+
* Builds Kaspa UTXO transactions, computes per-input sighashes for
|
|
5
|
+
* BIP-340 Schnorr signing via the FROST threshold signing network,
|
|
6
|
+
* and broadcasts via the Kaspa REST API.
|
|
7
|
+
*
|
|
8
|
+
* Kaspa uses secp256k1 with BIP-340 Schnorr signatures (64 bytes),
|
|
9
|
+
* the same signature scheme as Bitcoin Taproot. FROST-secp256k1
|
|
10
|
+
* produces native BIP-340 compatible Schnorr signatures.
|
|
11
|
+
*
|
|
12
|
+
* Key features:
|
|
13
|
+
* - UTXO-based transaction model (similar to Bitcoin)
|
|
14
|
+
* - BIP-340 Schnorr signatures (64 bytes, same as Taproot)
|
|
15
|
+
* - ~1 second block time (BlockDAG architecture)
|
|
16
|
+
* - Per-input sighash computation for multi-input transactions
|
|
17
|
+
*
|
|
18
|
+
* No external dependencies — uses raw HTTP API calls and Node.js crypto.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { KaspaAdapter } from '@sequence0/sdk';
|
|
23
|
+
*
|
|
24
|
+
* const kaspa = new KaspaAdapter('mainnet');
|
|
25
|
+
*
|
|
26
|
+
* // Build a transfer transaction
|
|
27
|
+
* const unsignedTx = await kaspa.buildTransaction(
|
|
28
|
+
* { to: 'kaspa:qr...recipient', amount: 100000000 }, // 1 KAS
|
|
29
|
+
* 'kaspa:qr...sender'
|
|
30
|
+
* );
|
|
31
|
+
*
|
|
32
|
+
* // ... sign each sighash via FROST Schnorr ...
|
|
33
|
+
* const signedTx = await kaspa.attachSignature(unsignedTx, signatureHex);
|
|
34
|
+
* const txId = await kaspa.broadcast(signedTx);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
import { ChainAdapter, KaspaTransaction } from '../core/types';
|
|
38
|
+
export declare class KaspaAdapter implements ChainAdapter {
|
|
39
|
+
private network;
|
|
40
|
+
private apiUrl;
|
|
41
|
+
/**
|
|
42
|
+
* Create a Kaspa adapter.
|
|
43
|
+
*
|
|
44
|
+
* @param network - Network to connect to: 'mainnet' or 'testnet'
|
|
45
|
+
* @param apiUrl - Custom API URL (overrides the default for the network)
|
|
46
|
+
*/
|
|
47
|
+
constructor(network?: 'mainnet' | 'testnet', apiUrl?: string);
|
|
48
|
+
getRpcUrl(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Build an unsigned Kaspa transaction.
|
|
51
|
+
*
|
|
52
|
+
* Fetches UTXOs for the sender, selects inputs to cover the amount
|
|
53
|
+
* plus fees, builds outputs (payment + change), and computes
|
|
54
|
+
* per-input sighashes for Schnorr signing.
|
|
55
|
+
*
|
|
56
|
+
* Returns hex-encoded JSON containing the TX data and sighashes.
|
|
57
|
+
* Each sighash must be independently signed via FROST Schnorr.
|
|
58
|
+
*
|
|
59
|
+
* @param tx - Transaction parameters (to, amount, feeRate)
|
|
60
|
+
* @param fromAddress - Sender kaspa:... address
|
|
61
|
+
* @returns Hex-encoded payload with sighashes and TX structure
|
|
62
|
+
*/
|
|
63
|
+
buildTransaction(tx: KaspaTransaction, fromAddress: string): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Extract the signing payload from the buildTransaction output.
|
|
66
|
+
*
|
|
67
|
+
* Returns the primary sighash (first input). For multi-input
|
|
68
|
+
* transactions, callers should decode the full payload to get
|
|
69
|
+
* all sighashes from the `sighashes` array.
|
|
70
|
+
*/
|
|
71
|
+
getSigningPayload(unsignedTx: string): string;
|
|
72
|
+
/**
|
|
73
|
+
* Attach BIP-340 Schnorr signature(s) to the Kaspa transaction.
|
|
74
|
+
*
|
|
75
|
+
* Each input requires its own 64-byte Schnorr signature. For
|
|
76
|
+
* multi-input transactions, pass comma-separated signatures or
|
|
77
|
+
* concatenated 64-byte signatures.
|
|
78
|
+
*
|
|
79
|
+
* @param unsignedTx - Hex-encoded unsigned transaction from buildTransaction
|
|
80
|
+
* @param signature - 64-byte Schnorr signature(s) (hex-encoded)
|
|
81
|
+
* @returns Hex-encoded signed transaction payload
|
|
82
|
+
*/
|
|
83
|
+
attachSignature(unsignedTx: string, signature: string): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Broadcast a signed Kaspa transaction.
|
|
86
|
+
*
|
|
87
|
+
* Constructs the RPC-compatible transaction object with inputs,
|
|
88
|
+
* outputs, and witness signatures, then sends it to the Kaspa
|
|
89
|
+
* REST API for propagation to the network.
|
|
90
|
+
*
|
|
91
|
+
* @param signedTx - Hex-encoded signed transaction from attachSignature
|
|
92
|
+
* @returns Transaction ID
|
|
93
|
+
*/
|
|
94
|
+
broadcast(signedTx: string): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Get the KAS balance for an address.
|
|
97
|
+
*
|
|
98
|
+
* Returns balance in sompi (1 KAS = 1e8 sompi).
|
|
99
|
+
*
|
|
100
|
+
* @param address - Kaspa kaspa:... address
|
|
101
|
+
* @returns Balance in sompi as a string
|
|
102
|
+
*/
|
|
103
|
+
getBalance(address: string): Promise<string>;
|
|
104
|
+
/**
|
|
105
|
+
* Fetch UTXOs for a Kaspa address from the REST API.
|
|
106
|
+
*
|
|
107
|
+
* @param address - kaspa:... address
|
|
108
|
+
* @returns Array of UTXOs
|
|
109
|
+
*/
|
|
110
|
+
private fetchUtxos;
|
|
111
|
+
/**
|
|
112
|
+
* Validate a Kaspa address format.
|
|
113
|
+
*
|
|
114
|
+
* @param address - Address to validate
|
|
115
|
+
* @throws Error if the address is invalid
|
|
116
|
+
*/
|
|
117
|
+
private validateAddress;
|
|
118
|
+
/**
|
|
119
|
+
* Derive a kaspa:... address from a 32-byte x-only public key.
|
|
120
|
+
*
|
|
121
|
+
* FROST-secp256k1 produces a group verifying key (compressed point).
|
|
122
|
+
* Extract the x-only (32-byte) key and encode as a Kaspa P2PK Schnorr address.
|
|
123
|
+
*
|
|
124
|
+
* @param pubkeyHex - 32-byte x-only public key (hex-encoded), or 33-byte compressed
|
|
125
|
+
* @returns kaspa:... address
|
|
126
|
+
*/
|
|
127
|
+
deriveAddress(pubkeyHex: string): string;
|
|
128
|
+
/**
|
|
129
|
+
* Estimate the fee for a transaction.
|
|
130
|
+
*
|
|
131
|
+
* @param numInputs - Number of inputs
|
|
132
|
+
* @param numOutputs - Number of outputs
|
|
133
|
+
* @param feeRate - Fee rate in sompi per gram (default: 1)
|
|
134
|
+
* @returns Estimated fee in sompi
|
|
135
|
+
*/
|
|
136
|
+
estimateFee(numInputs: number, numOutputs: number, feeRate?: number): number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a Kaspa mainnet adapter
|
|
140
|
+
*
|
|
141
|
+
* @param apiUrl - Optional custom API URL
|
|
142
|
+
* @returns KaspaAdapter configured for mainnet
|
|
143
|
+
*/
|
|
144
|
+
export declare function createKaspaAdapter(apiUrl?: string): KaspaAdapter;
|
|
145
|
+
/**
|
|
146
|
+
* Create a Kaspa testnet adapter
|
|
147
|
+
*
|
|
148
|
+
* @param apiUrl - Optional custom API URL
|
|
149
|
+
* @returns KaspaAdapter configured for testnet
|
|
150
|
+
*/
|
|
151
|
+
export declare function createKaspaTestnetAdapter(apiUrl?: string): KaspaAdapter;
|
|
152
|
+
//# sourceMappingURL=kaspa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kaspa.d.ts","sourceRoot":"","sources":["../../src/chains/kaspa.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAmY/D,qBAAa,YAAa,YAAW,YAAY;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;;OAKG;gBACS,OAAO,GAAE,SAAS,GAAG,SAAqB,EAAE,MAAM,CAAC,EAAE,MAAM;IAKvE,SAAS,IAAI,MAAM;IAQnB;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwHlF;;;;;;OAMG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAa7C;;;;;;;;;;OAUG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiD7E;;;;;;;;;OASG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsElD;;;;;;;OAOG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBlD;;;;;OAKG;YACW,UAAU;IA8BxB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAWvB;;;;;;;;OAQG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBxC;;;;;;;OAOG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,MAAM;CAIjG;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAEvE"}
|