@secondlayer/stacks 2.13.0 → 2.14.1
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 +15 -0
- package/dist/shared/{stacks-01pbr7gf.js → stacks-3vyvtahh.js} +9 -3
- package/dist/shared/{stacks-01pbr7gf.js.map → stacks-3vyvtahh.js.map} +3 -3
- package/dist/shared/{stacks-y5epf0sb.cjs → stacks-6mhsf8hk.cjs} +52 -2
- package/dist/shared/{stacks-y5epf0sb.cjs.map → stacks-6mhsf8hk.cjs.map} +10 -5
- package/dist/shared/stacks-8khy9v27.cjs +7 -0
- package/dist/shared/stacks-8khy9v27.cjs.map +10 -0
- package/dist/shared/{stacks-esn3wcw5.cjs → stacks-dmrvk1mz.js} +61 -7
- package/dist/shared/{stacks-kjg7fw4y.js.map → stacks-dmrvk1mz.js.map} +7 -6
- package/dist/shared/{stacks-g67f4w1d.js → stacks-f66v961k.js} +2 -2
- package/dist/shared/stacks-fh48neva.js +13 -0
- package/dist/shared/stacks-fh48neva.js.map +10 -0
- package/dist/shared/{stacks-tbv5p6pn.cjs → stacks-fjrpnkt3.cjs} +5 -2
- package/dist/shared/{stacks-tbv5p6pn.cjs.map → stacks-fjrpnkt3.cjs.map} +3 -3
- package/dist/shared/{stacks-6n2m9hyk.js → stacks-hxp7v905.js} +3 -3
- package/dist/shared/{stacks-kjg7fw4y.js → stacks-jcgvn5v5.cjs} +40 -25
- package/dist/shared/{stacks-esn3wcw5.cjs.map → stacks-jcgvn5v5.cjs.map} +7 -6
- package/dist/shared/{stacks-59xy6t1p.js → stacks-tswh2xav.js} +58 -4
- package/dist/shared/{stacks-59xy6t1p.js.map → stacks-tswh2xav.js.map} +10 -5
- package/dist/src/actions/index.cjs +6 -1
- package/dist/src/actions/index.cjs.map +1 -1
- package/dist/src/actions/index.d.cts +71 -1
- package/dist/src/actions/index.d.ts +71 -1
- package/dist/src/actions/index.js +17 -6
- package/dist/src/actions/index.js.map +1 -1
- package/dist/src/bitcoin/index.cjs +2 -2
- package/dist/src/bitcoin/index.cjs.map +3 -3
- package/dist/src/bitcoin/index.js +6 -2
- package/dist/src/bitcoin/index.js.map +3 -3
- package/dist/src/bns/index.cjs +9 -5
- package/dist/src/bns/index.cjs.map +3 -3
- package/dist/src/bns/index.js +13 -8
- package/dist/src/bns/index.js.map +3 -3
- package/dist/src/index.cjs +30 -8
- package/dist/src/index.cjs.map +4 -4
- package/dist/src/index.d.cts +67 -1
- package/dist/src/index.d.ts +67 -1
- package/dist/src/index.js +43 -12
- package/dist/src/index.js.map +4 -4
- package/dist/src/pox/index.js +5 -4
- package/dist/src/pox/index.js.map +2 -2
- package/dist/src/sbtc/index.js +5 -4
- package/dist/src/sbtc/index.js.map +2 -2
- package/dist/src/stackingdao/index.js +5 -4
- package/dist/src/stackingdao/index.js.map +2 -2
- package/dist/src/tools/index.cjs +213 -116
- package/dist/src/tools/index.cjs.map +22 -15
- package/dist/src/tools/index.js +213 -116
- package/dist/src/tools/index.js.map +22 -15
- package/dist/src/x402/index.js +4 -3
- package/dist/src/x402/index.js.map +2 -2
- package/package.json +4 -2
- /package/dist/shared/{stacks-g67f4w1d.js.map → stacks-f66v961k.js.map} +0 -0
- /package/dist/shared/{stacks-6n2m9hyk.js.map → stacks-hxp7v905.js.map} +0 -0
|
@@ -415,6 +415,34 @@ type GetBlockParams = {
|
|
|
415
415
|
hash?: string
|
|
416
416
|
};
|
|
417
417
|
declare function getBlock(client: Client, params?: GetBlockParams): Promise<any>;
|
|
418
|
+
type GetRawBlockParams = {
|
|
419
|
+
height: number
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Raw node RPC block shape (`/v2/blocks/{height}`) — distinct from
|
|
423
|
+
* {@link getBlock}'s Hiro extended-API shape. Carries consensus/identity
|
|
424
|
+
* fields (`index_block_hash`, `miner_txid`, ...) that the indexed API doesn't
|
|
425
|
+
* expose, for trust-minimized use cases (e.g. block-header proofs) that can't
|
|
426
|
+
* rely on a third-party indexer.
|
|
427
|
+
*/
|
|
428
|
+
type RawBlockResponse = {
|
|
429
|
+
hash: string
|
|
430
|
+
height: number
|
|
431
|
+
parent_block_hash: string
|
|
432
|
+
burn_block_height: number
|
|
433
|
+
burn_block_hash: string
|
|
434
|
+
burn_block_time: number
|
|
435
|
+
index_block_hash: string
|
|
436
|
+
parent_index_block_hash: string
|
|
437
|
+
miner_txid: string
|
|
438
|
+
txs: string[]
|
|
439
|
+
};
|
|
440
|
+
/**
|
|
441
|
+
* Fetch a block by height directly from a stacks-node (not Hiro's extended
|
|
442
|
+
* API — see {@link getBlock} for that). Returns `null` when the node has no
|
|
443
|
+
* block at that height.
|
|
444
|
+
*/
|
|
445
|
+
declare function getRawBlock(client: Client, params: GetRawBlockParams): Promise<RawBlockResponse | null>;
|
|
418
446
|
declare function getBlockHeight(client: Client): Promise<number>;
|
|
419
447
|
type ReadContractParams = {
|
|
420
448
|
contract: string
|
|
@@ -427,6 +455,21 @@ type GetContractAbiParams = {
|
|
|
427
455
|
contract: string
|
|
428
456
|
};
|
|
429
457
|
declare function getContractAbi(client: Client, params: GetContractAbiParams): Promise<any>;
|
|
458
|
+
type GetContractSourceParams = {
|
|
459
|
+
contract: string
|
|
460
|
+
};
|
|
461
|
+
type ContractSourceResponse = {
|
|
462
|
+
source: string
|
|
463
|
+
publish_height: number
|
|
464
|
+
marf_proof?: string
|
|
465
|
+
};
|
|
466
|
+
/**
|
|
467
|
+
* Fetch a deployed contract's Clarity source. Node-RPC only (`/v2/contracts/source`)
|
|
468
|
+
* — not available through Hiro's extended API or a tenant proxy, so `client`
|
|
469
|
+
* must be configured against a direct node transport. Returns `null` when the
|
|
470
|
+
* node has no source for the contract.
|
|
471
|
+
*/
|
|
472
|
+
declare function getContractSource(client: Client, params: GetContractSourceParams): Promise<ContractSourceResponse | null>;
|
|
430
473
|
type GetMapEntryParams = {
|
|
431
474
|
contract: string
|
|
432
475
|
mapName: string
|
|
@@ -594,6 +637,33 @@ type GetTransactionParams = {
|
|
|
594
637
|
* Returns `null` when the source has no record of the transaction.
|
|
595
638
|
*/
|
|
596
639
|
declare function getTransaction(client: Client, params: GetTransactionParams): Promise<TransactionReceipt | null>;
|
|
640
|
+
type GetAccountHistoryParams = {
|
|
641
|
+
address: string
|
|
642
|
+
/** Capped at 50. Default 20. */
|
|
643
|
+
limit?: number
|
|
644
|
+
};
|
|
645
|
+
type AccountHistoryResponse = {
|
|
646
|
+
results: unknown[]
|
|
647
|
+
total: number
|
|
648
|
+
};
|
|
649
|
+
/** Paginated transaction history for a principal (Hiro extended API). */
|
|
650
|
+
declare function getAccountHistory(client: Client, params: GetAccountHistoryParams): Promise<AccountHistoryResponse>;
|
|
651
|
+
/**
|
|
652
|
+
* Current mempool statistics: pending count, fee distribution, age buckets
|
|
653
|
+
* (Hiro extended API).
|
|
654
|
+
*/
|
|
655
|
+
declare function getMempoolStats(client: Client): Promise<any>;
|
|
656
|
+
type GetNftHoldingsParams = {
|
|
657
|
+
address: string
|
|
658
|
+
/** Capped at 50. Default 20. */
|
|
659
|
+
limit?: number
|
|
660
|
+
};
|
|
661
|
+
type NftHoldingsResponse = {
|
|
662
|
+
results: unknown[]
|
|
663
|
+
total: number
|
|
664
|
+
};
|
|
665
|
+
/** NFT holdings for a principal across all collections (Hiro extended API). */
|
|
666
|
+
declare function getNftHoldings(client: Client, params: GetNftHoldingsParams): Promise<NftHoldingsResponse>;
|
|
597
667
|
type WaitForTransactionReceiptParams = {
|
|
598
668
|
txid: string
|
|
599
669
|
/** Anchor-block confirmations to wait for. Default 1 (mined). */
|
|
@@ -1162,4 +1232,4 @@ declare class ContractResponseError extends Error {
|
|
|
1162
1232
|
name: string;
|
|
1163
1233
|
constructor(message: string, errorValue: unknown);
|
|
1164
1234
|
}
|
|
1165
|
-
export { watchTransaction, watchNftEvent, watchMempool, watchBlocks, watchAddressBalance, watchAddress, waitForTransactionReceipt, transferStx, sponsorTransaction, simulateTransaction, simulateCall, signTransactionAction, signMessage2 as signMessage, sendTransaction, resolveFee, readContract, multicall, minimumFee, isProviderAccount, isFeeTier, indexTxSource, getTransaction, getNonce, getMapEntry, getContractAbi, getContract, getBlockHeight, getBlock, getBalance, getAccountInfo, extendedApiSource, estimateFee, deployContract, callContract, WatchTransactionParams, WatchNftEventParams, WatchMempoolParams, WatchBlocksParams, WatchAddressParams, WatchAddressBalanceParams, WaitForTransactionReceiptParams, TransferStxParams, TransactionStatusSource, TransactionStatus, TransactionSnapshot, TransactionReceipt, SponsorTransactionParams, SimulateTransferResult, SimulateTransactionResult, SimulateTransactionParams, SimulateDeployResult, SimulateContractCallResult, SimulateCallSuccess, SimulateCallResult, SimulateCallParams, SimulateCallFailure, SignTransactionParams, SignMessageParams, SendTransactionResult, SendTransactionParams, ReadContractParams, MulticallSuccessResult, MulticallResult, MulticallParams, MulticallFailureResult, MulticallCall, IndexTxSourceParams, GetTransactionParams, GetNonceParams, GetMapEntryParams, GetContractParams, GetContractAbiParams, GetBlockParams, GetBalanceParams, GetAccountInfoParams, FeeTier, FeeParam, FeeEstimation, EstimateFeeParams, DeployContractParams, ContractResponseError, ContractInstance, ContractCallOptions, ContractBuildCallOptions, CallContractParams, AccountInfo };
|
|
1235
|
+
export { watchTransaction, watchNftEvent, watchMempool, watchBlocks, watchAddressBalance, watchAddress, waitForTransactionReceipt, transferStx, sponsorTransaction, simulateTransaction, simulateCall, signTransactionAction, signMessage2 as signMessage, sendTransaction, resolveFee, readContract, multicall, minimumFee, isProviderAccount, isFeeTier, indexTxSource, getTransaction, getRawBlock, getNonce, getNftHoldings, getMempoolStats, getMapEntry, getContractSource, getContractAbi, getContract, getBlockHeight, getBlock, getBalance, getAccountInfo, getAccountHistory, extendedApiSource, estimateFee, deployContract, callContract, WatchTransactionParams, WatchNftEventParams, WatchMempoolParams, WatchBlocksParams, WatchAddressParams, WatchAddressBalanceParams, WaitForTransactionReceiptParams, TransferStxParams, TransactionStatusSource, TransactionStatus, TransactionSnapshot, TransactionReceipt, SponsorTransactionParams, SimulateTransferResult, SimulateTransactionResult, SimulateTransactionParams, SimulateDeployResult, SimulateContractCallResult, SimulateCallSuccess, SimulateCallResult, SimulateCallParams, SimulateCallFailure, SignTransactionParams, SignMessageParams, SendTransactionResult, SendTransactionParams, ReadContractParams, RawBlockResponse, NftHoldingsResponse, MulticallSuccessResult, MulticallResult, MulticallParams, MulticallFailureResult, MulticallCall, IndexTxSourceParams, GetTransactionParams, GetRawBlockParams, GetNonceParams, GetNftHoldingsParams, GetMapEntryParams, GetContractSourceParams, GetContractParams, GetContractAbiParams, GetBlockParams, GetBalanceParams, GetAccountInfoParams, GetAccountHistoryParams, FeeTier, FeeParam, FeeEstimation, EstimateFeeParams, DeployContractParams, ContractSourceResponse, ContractResponseError, ContractInstance, ContractCallOptions, ContractBuildCallOptions, CallContractParams, AccountInfo, AccountHistoryResponse };
|
|
@@ -415,6 +415,34 @@ type GetBlockParams = {
|
|
|
415
415
|
hash?: string
|
|
416
416
|
};
|
|
417
417
|
declare function getBlock(client: Client, params?: GetBlockParams): Promise<any>;
|
|
418
|
+
type GetRawBlockParams = {
|
|
419
|
+
height: number
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Raw node RPC block shape (`/v2/blocks/{height}`) — distinct from
|
|
423
|
+
* {@link getBlock}'s Hiro extended-API shape. Carries consensus/identity
|
|
424
|
+
* fields (`index_block_hash`, `miner_txid`, ...) that the indexed API doesn't
|
|
425
|
+
* expose, for trust-minimized use cases (e.g. block-header proofs) that can't
|
|
426
|
+
* rely on a third-party indexer.
|
|
427
|
+
*/
|
|
428
|
+
type RawBlockResponse = {
|
|
429
|
+
hash: string
|
|
430
|
+
height: number
|
|
431
|
+
parent_block_hash: string
|
|
432
|
+
burn_block_height: number
|
|
433
|
+
burn_block_hash: string
|
|
434
|
+
burn_block_time: number
|
|
435
|
+
index_block_hash: string
|
|
436
|
+
parent_index_block_hash: string
|
|
437
|
+
miner_txid: string
|
|
438
|
+
txs: string[]
|
|
439
|
+
};
|
|
440
|
+
/**
|
|
441
|
+
* Fetch a block by height directly from a stacks-node (not Hiro's extended
|
|
442
|
+
* API — see {@link getBlock} for that). Returns `null` when the node has no
|
|
443
|
+
* block at that height.
|
|
444
|
+
*/
|
|
445
|
+
declare function getRawBlock(client: Client, params: GetRawBlockParams): Promise<RawBlockResponse | null>;
|
|
418
446
|
declare function getBlockHeight(client: Client): Promise<number>;
|
|
419
447
|
type ReadContractParams = {
|
|
420
448
|
contract: string
|
|
@@ -427,6 +455,21 @@ type GetContractAbiParams = {
|
|
|
427
455
|
contract: string
|
|
428
456
|
};
|
|
429
457
|
declare function getContractAbi(client: Client, params: GetContractAbiParams): Promise<any>;
|
|
458
|
+
type GetContractSourceParams = {
|
|
459
|
+
contract: string
|
|
460
|
+
};
|
|
461
|
+
type ContractSourceResponse = {
|
|
462
|
+
source: string
|
|
463
|
+
publish_height: number
|
|
464
|
+
marf_proof?: string
|
|
465
|
+
};
|
|
466
|
+
/**
|
|
467
|
+
* Fetch a deployed contract's Clarity source. Node-RPC only (`/v2/contracts/source`)
|
|
468
|
+
* — not available through Hiro's extended API or a tenant proxy, so `client`
|
|
469
|
+
* must be configured against a direct node transport. Returns `null` when the
|
|
470
|
+
* node has no source for the contract.
|
|
471
|
+
*/
|
|
472
|
+
declare function getContractSource(client: Client, params: GetContractSourceParams): Promise<ContractSourceResponse | null>;
|
|
430
473
|
type GetMapEntryParams = {
|
|
431
474
|
contract: string
|
|
432
475
|
mapName: string
|
|
@@ -594,6 +637,33 @@ type GetTransactionParams = {
|
|
|
594
637
|
* Returns `null` when the source has no record of the transaction.
|
|
595
638
|
*/
|
|
596
639
|
declare function getTransaction(client: Client, params: GetTransactionParams): Promise<TransactionReceipt | null>;
|
|
640
|
+
type GetAccountHistoryParams = {
|
|
641
|
+
address: string
|
|
642
|
+
/** Capped at 50. Default 20. */
|
|
643
|
+
limit?: number
|
|
644
|
+
};
|
|
645
|
+
type AccountHistoryResponse = {
|
|
646
|
+
results: unknown[]
|
|
647
|
+
total: number
|
|
648
|
+
};
|
|
649
|
+
/** Paginated transaction history for a principal (Hiro extended API). */
|
|
650
|
+
declare function getAccountHistory(client: Client, params: GetAccountHistoryParams): Promise<AccountHistoryResponse>;
|
|
651
|
+
/**
|
|
652
|
+
* Current mempool statistics: pending count, fee distribution, age buckets
|
|
653
|
+
* (Hiro extended API).
|
|
654
|
+
*/
|
|
655
|
+
declare function getMempoolStats(client: Client): Promise<any>;
|
|
656
|
+
type GetNftHoldingsParams = {
|
|
657
|
+
address: string
|
|
658
|
+
/** Capped at 50. Default 20. */
|
|
659
|
+
limit?: number
|
|
660
|
+
};
|
|
661
|
+
type NftHoldingsResponse = {
|
|
662
|
+
results: unknown[]
|
|
663
|
+
total: number
|
|
664
|
+
};
|
|
665
|
+
/** NFT holdings for a principal across all collections (Hiro extended API). */
|
|
666
|
+
declare function getNftHoldings(client: Client, params: GetNftHoldingsParams): Promise<NftHoldingsResponse>;
|
|
597
667
|
type WaitForTransactionReceiptParams = {
|
|
598
668
|
txid: string
|
|
599
669
|
/** Anchor-block confirmations to wait for. Default 1 (mined). */
|
|
@@ -1162,4 +1232,4 @@ declare class ContractResponseError extends Error {
|
|
|
1162
1232
|
name: string;
|
|
1163
1233
|
constructor(message: string, errorValue: unknown);
|
|
1164
1234
|
}
|
|
1165
|
-
export { watchTransaction, watchNftEvent, watchMempool, watchBlocks, watchAddressBalance, watchAddress, waitForTransactionReceipt, transferStx, sponsorTransaction, simulateTransaction, simulateCall, signTransactionAction, signMessage2 as signMessage, sendTransaction, resolveFee, readContract, multicall, minimumFee, isProviderAccount, isFeeTier, indexTxSource, getTransaction, getNonce, getMapEntry, getContractAbi, getContract, getBlockHeight, getBlock, getBalance, getAccountInfo, extendedApiSource, estimateFee, deployContract, callContract, WatchTransactionParams, WatchNftEventParams, WatchMempoolParams, WatchBlocksParams, WatchAddressParams, WatchAddressBalanceParams, WaitForTransactionReceiptParams, TransferStxParams, TransactionStatusSource, TransactionStatus, TransactionSnapshot, TransactionReceipt, SponsorTransactionParams, SimulateTransferResult, SimulateTransactionResult, SimulateTransactionParams, SimulateDeployResult, SimulateContractCallResult, SimulateCallSuccess, SimulateCallResult, SimulateCallParams, SimulateCallFailure, SignTransactionParams, SignMessageParams, SendTransactionResult, SendTransactionParams, ReadContractParams, MulticallSuccessResult, MulticallResult, MulticallParams, MulticallFailureResult, MulticallCall, IndexTxSourceParams, GetTransactionParams, GetNonceParams, GetMapEntryParams, GetContractParams, GetContractAbiParams, GetBlockParams, GetBalanceParams, GetAccountInfoParams, FeeTier, FeeParam, FeeEstimation, EstimateFeeParams, DeployContractParams, ContractResponseError, ContractInstance, ContractCallOptions, ContractBuildCallOptions, CallContractParams, AccountInfo };
|
|
1235
|
+
export { watchTransaction, watchNftEvent, watchMempool, watchBlocks, watchAddressBalance, watchAddress, waitForTransactionReceipt, transferStx, sponsorTransaction, simulateTransaction, simulateCall, signTransactionAction, signMessage2 as signMessage, sendTransaction, resolveFee, readContract, multicall, minimumFee, isProviderAccount, isFeeTier, indexTxSource, getTransaction, getRawBlock, getNonce, getNftHoldings, getMempoolStats, getMapEntry, getContractSource, getContractAbi, getContract, getBlockHeight, getBlock, getBalance, getAccountInfo, getAccountHistory, extendedApiSource, estimateFee, deployContract, callContract, WatchTransactionParams, WatchNftEventParams, WatchMempoolParams, WatchBlocksParams, WatchAddressParams, WatchAddressBalanceParams, WaitForTransactionReceiptParams, TransferStxParams, TransactionStatusSource, TransactionStatus, TransactionSnapshot, TransactionReceipt, SponsorTransactionParams, SimulateTransferResult, SimulateTransactionResult, SimulateTransactionParams, SimulateDeployResult, SimulateContractCallResult, SimulateCallSuccess, SimulateCallResult, SimulateCallParams, SimulateCallFailure, SignTransactionParams, SignMessageParams, SendTransactionResult, SendTransactionParams, ReadContractParams, RawBlockResponse, NftHoldingsResponse, MulticallSuccessResult, MulticallResult, MulticallParams, MulticallFailureResult, MulticallCall, IndexTxSourceParams, GetTransactionParams, GetRawBlockParams, GetNonceParams, GetNftHoldingsParams, GetMapEntryParams, GetContractSourceParams, GetContractParams, GetContractAbiParams, GetBlockParams, GetBalanceParams, GetAccountInfoParams, GetAccountHistoryParams, FeeTier, FeeParam, FeeEstimation, EstimateFeeParams, DeployContractParams, ContractSourceResponse, ContractResponseError, ContractInstance, ContractCallOptions, ContractBuildCallOptions, CallContractParams, AccountInfo, AccountHistoryResponse };
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ContractResponseError,
|
|
3
3
|
getContract
|
|
4
|
-
} from "../../shared/stacks-
|
|
4
|
+
} from "../../shared/stacks-hxp7v905.js";
|
|
5
5
|
import {
|
|
6
6
|
deployContract,
|
|
7
|
+
getAccountHistory,
|
|
7
8
|
getAccountInfo,
|
|
8
9
|
getBalance,
|
|
9
10
|
getBlock,
|
|
10
11
|
getContractAbi,
|
|
12
|
+
getContractSource,
|
|
13
|
+
getMempoolStats,
|
|
14
|
+
getNftHoldings,
|
|
15
|
+
getRawBlock,
|
|
11
16
|
getTransaction,
|
|
12
17
|
multicall,
|
|
13
18
|
signMessage,
|
|
@@ -15,11 +20,11 @@ import {
|
|
|
15
20
|
simulateCall,
|
|
16
21
|
simulateTransaction,
|
|
17
22
|
transferStx
|
|
18
|
-
} from "../../shared/stacks-
|
|
23
|
+
} from "../../shared/stacks-tswh2xav.js";
|
|
19
24
|
import {
|
|
20
25
|
callContract,
|
|
21
26
|
getMapEntry
|
|
22
|
-
} from "../../shared/stacks-
|
|
27
|
+
} from "../../shared/stacks-3vyvtahh.js";
|
|
23
28
|
import {
|
|
24
29
|
readContract
|
|
25
30
|
} from "../../shared/stacks-msmgyerb.js";
|
|
@@ -33,7 +38,7 @@ import {
|
|
|
33
38
|
} from "../../shared/stacks-tjjnkt3r.js";
|
|
34
39
|
import {
|
|
35
40
|
sponsorTransaction
|
|
36
|
-
} from "../../shared/stacks-
|
|
41
|
+
} from "../../shared/stacks-f66v961k.js";
|
|
37
42
|
import {
|
|
38
43
|
estimateFee,
|
|
39
44
|
extendedApiSource,
|
|
@@ -46,7 +51,8 @@ import {
|
|
|
46
51
|
resolveFee,
|
|
47
52
|
sendTransaction,
|
|
48
53
|
waitForTransactionReceipt
|
|
49
|
-
} from "../../shared/stacks-
|
|
54
|
+
} from "../../shared/stacks-dmrvk1mz.js";
|
|
55
|
+
import"../../shared/stacks-fh48neva.js";
|
|
50
56
|
import"../../shared/stacks-709tra19.js";
|
|
51
57
|
import"../../shared/stacks-18jv9aen.js";
|
|
52
58
|
import"../../shared/stacks-g11v9a35.js";
|
|
@@ -78,14 +84,19 @@ export {
|
|
|
78
84
|
isFeeTier,
|
|
79
85
|
indexTxSource,
|
|
80
86
|
getTransaction,
|
|
87
|
+
getRawBlock,
|
|
81
88
|
getNonce,
|
|
89
|
+
getNftHoldings,
|
|
90
|
+
getMempoolStats,
|
|
82
91
|
getMapEntry,
|
|
92
|
+
getContractSource,
|
|
83
93
|
getContractAbi,
|
|
84
94
|
getContract,
|
|
85
95
|
getBlockHeight,
|
|
86
96
|
getBlock,
|
|
87
97
|
getBalance,
|
|
88
98
|
getAccountInfo,
|
|
99
|
+
getAccountHistory,
|
|
89
100
|
extendedApiSource,
|
|
90
101
|
estimateFee,
|
|
91
102
|
deployContract,
|
|
@@ -93,5 +104,5 @@ export {
|
|
|
93
104
|
ContractResponseError
|
|
94
105
|
};
|
|
95
106
|
|
|
96
|
-
//# debugId=
|
|
107
|
+
//# debugId=B0E84684200EC53E64756E2164756E21
|
|
97
108
|
//# sourceMappingURL=index.js.map
|
|
@@ -411,7 +411,7 @@ var SPV_ADAPTER_ABI = {
|
|
|
411
411
|
async function getBurnBlockHeight(client) {
|
|
412
412
|
const info = await client.request("/v2/info");
|
|
413
413
|
if (typeof info?.burn_block_height !== "number") {
|
|
414
|
-
throw new
|
|
414
|
+
throw new MalformedResponseError('getBurnBlockHeight: /v2/info response is missing "burn_block_height"');
|
|
415
415
|
}
|
|
416
416
|
return info.burn_block_height;
|
|
417
417
|
}
|
|
@@ -526,5 +526,5 @@ async function verifyBitcoinPayment(client, params) {
|
|
|
526
526
|
return { verified, mined, output, proof };
|
|
527
527
|
}
|
|
528
528
|
|
|
529
|
-
//# debugId=
|
|
529
|
+
//# debugId=FCC0EF2C44A04EEE64756E2164756E21
|
|
530
530
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"import {\n\ttype BufferCV,\n\ttype ClarityValue,\n\ttype ListCV,\n\ttype TupleCV,\n\ttype UIntCV,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport { hexToBytes } from \"../utils/encoding.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\n\n/**\n * Number of merkle levels for a tree of `txCount` leaves — i.e. the exact\n * sibling count the SIP-044 `verify-merkle-proof` built-in expects\n * (`ceil(log2(tx-count))`). Computed by repeated halving to avoid float error\n * at exact powers of two.\n */\nfunction merkleDepth(txCount: number): number {\n\tlet depth = 0;\n\tlet n = txCount;\n\twhile (n > 1) {\n\t\tn = Math.ceil(n / 2);\n\t\tdepth++;\n\t}\n\treturn depth;\n}\n\n/** Max siblings the native `verify-merkle-proof` accepts: `(list 24 (buff 32))`. */\nconst MAX_SIBLINGS = 24;\n\nfunction assertHash32(bytes: Uint8Array, label: string): void {\n\tif (bytes.length !== 32) {\n\t\tthrow new Error(`${label} must be 32 bytes, got ${bytes.length}`);\n\t}\n}\n\n/**\n * Encode the argument vector for the SIP-044 native built-in\n * `(verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)`.\n *\n * Returns the five args in order: `[leaf, root, tx-index, tx-count, siblings]`.\n * All hashes are passed in *internal* (raw) byte order — the built-in does NOT\n * reverse, and neither does this. The leaf is the tx's `txidInternal`; the root\n * is the block header's merkle root in internal order.\n *\n * Throws on shapes the built-in would reject, so a caller fails locally with a\n * clear message instead of an opaque on-chain `false`.\n */\nexport function encodeMerkleProofArgs(params: {\n\tleaf: Uint8Array;\n\troot: Uint8Array;\n\tproof: MerkleProof;\n}): [BufferCV, BufferCV, UIntCV, UIntCV, ListCV] {\n\tconst { leaf, root, proof } = params;\n\tassertHash32(leaf, \"merkle leaf\");\n\tassertHash32(root, \"merkle root\");\n\n\tif (proof.txIndex < 0 || proof.txIndex >= proof.txCount) {\n\t\tthrow new Error(\n\t\t\t`tx-index ${proof.txIndex} out of range for tx-count ${proof.txCount}`,\n\t\t);\n\t}\n\tif (proof.siblings.length > MAX_SIBLINGS) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings, native verify-merkle-proof caps at ${MAX_SIBLINGS}`,\n\t\t);\n\t}\n\tconst expectedDepth = merkleDepth(proof.txCount);\n\tif (proof.siblings.length !== expectedDepth) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings but tx-count ${proof.txCount} requires exactly ${expectedDepth}`,\n\t\t);\n\t}\n\tfor (const [i, sibling] of proof.siblings.entries()) {\n\t\tassertHash32(sibling, `sibling ${i}`);\n\t}\n\n\treturn [\n\t\tbufferCV(leaf),\n\t\tbufferCV(root),\n\t\tuintCV(proof.txIndex),\n\t\tuintCV(proof.txCount),\n\t\tlistCV(proof.siblings.map((s) => bufferCV(s))),\n\t];\n}\n\nexport interface DecodedTxOutput {\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Output value in satoshis. */\n\tamount: bigint;\n\t/** The tx's txid in internal byte order — ready as a merkle leaf. */\n\ttxid: Uint8Array;\n}\n\nfunction expectBuffer(cv: ClarityValue | undefined, label: string): Uint8Array {\n\tif (cv?.type !== \"buffer\") {\n\t\tthrow new Error(`expected ${label} to be a buffer, got ${cv?.type}`);\n\t}\n\treturn hexToBytes(cv.value);\n}\n\n/**\n * Decode the tuple returned by `get-bitcoin-tx-output?`:\n * `(tuple (script (buff 1024)) (amount uint) (txid (buff 32)))`.\n *\n * Accepts either the bare tuple or a `(response ok ...)` wrapping it, so it\n * works whether or not the caller has already unwrapped the response.\n */\nexport function decodeTxOutput(cv: ClarityValue): DecodedTxOutput {\n\tconst tuple: ClarityValue = cv.type === \"ok\" ? cv.value : cv;\n\tif (tuple.type !== \"tuple\") {\n\t\tthrow new Error(`expected a tuple, got ${tuple.type}`);\n\t}\n\tconst fields = (tuple as TupleCV).value;\n\tconst amount = fields.amount;\n\tif (amount?.type !== \"uint\") {\n\t\tthrow new Error(\n\t\t\t`expected tuple field \"amount\" to be uint, got ${amount?.type}`,\n\t\t);\n\t}\n\treturn {\n\t\tscript: expectBuffer(fields.script, 'tuple field \"script\"'),\n\t\tamount: amount.value,\n\t\ttxid: expectBuffer(fields.txid, 'tuple field \"txid\"'),\n\t};\n}\n\nexport type OutputScriptType =\n\t| \"p2pkh\"\n\t| \"p2sh\"\n\t| \"p2wpkh\"\n\t| \"p2wsh\"\n\t| \"p2tr\"\n\t| \"op_return\"\n\t| \"unknown\";\n\nexport interface ParsedOutputScript {\n\ttype: OutputScriptType;\n\t/**\n\t * The hash / witness program for the recognized output types: the 20-byte\n\t * pubkey-hash (p2pkh), 20-byte script-hash (p2sh), or the 20/32-byte witness\n\t * program (p2wpkh/p2wsh/p2tr). Undefined for op_return / unknown.\n\t *\n\t * Address formatting is intentionally left to the caller — base58/bech32 HRPs\n\t * and version bytes are network-dependent, so it belongs where the network is\n\t * known (see `verifyBitcoinPayment`), not in this pure decoder.\n\t */\n\thash?: Uint8Array;\n\t/** OP_RETURN payload (the pushed data after the OP_RETURN opcode). */\n\tdata?: Uint8Array;\n}\n\nconst OP_DUP = 0x76;\nconst OP_HASH160 = 0xa9;\nconst OP_EQUALVERIFY = 0x88;\nconst OP_CHECKSIG = 0xac;\nconst OP_EQUAL = 0x87;\nconst OP_RETURN = 0x6a;\nconst OP_0 = 0x00;\nconst OP_1 = 0x51;\n\n/**\n * Classify a Bitcoin output scriptPubKey by its standard template and surface\n * the embedded hash / witness program. Recognizes P2PKH, P2SH, P2WPKH, P2WSH,\n * P2TR, and OP_RETURN; anything else is `unknown`.\n */\nexport function parseOutputScript(script: Uint8Array): ParsedOutputScript {\n\tconst n = script.length;\n\n\t// P2PKH: OP_DUP OP_HASH160 <20> ... OP_EQUALVERIFY OP_CHECKSIG\n\tif (\n\t\tn === 25 &&\n\t\tscript[0] === OP_DUP &&\n\t\tscript[1] === OP_HASH160 &&\n\t\tscript[2] === 0x14 &&\n\t\tscript[23] === OP_EQUALVERIFY &&\n\t\tscript[24] === OP_CHECKSIG\n\t) {\n\t\treturn { type: \"p2pkh\", hash: script.slice(3, 23) };\n\t}\n\n\t// P2SH: OP_HASH160 <20> ... OP_EQUAL\n\tif (\n\t\tn === 23 &&\n\t\tscript[0] === OP_HASH160 &&\n\t\tscript[1] === 0x14 &&\n\t\tscript[22] === OP_EQUAL\n\t) {\n\t\treturn { type: \"p2sh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WPKH: OP_0 <20>\n\tif (n === 22 && script[0] === OP_0 && script[1] === 0x14) {\n\t\treturn { type: \"p2wpkh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WSH: OP_0 <32>\n\tif (n === 34 && script[0] === OP_0 && script[1] === 0x20) {\n\t\treturn { type: \"p2wsh\", hash: script.slice(2, 34) };\n\t}\n\n\t// P2TR: OP_1 <32>\n\tif (n === 34 && script[0] === OP_1 && script[1] === 0x20) {\n\t\treturn { type: \"p2tr\", hash: script.slice(2, 34) };\n\t}\n\n\t// OP_RETURN: data carrier\n\tif (n >= 1 && script[0] === OP_RETURN) {\n\t\treturn { type: \"op_return\", data: script.slice(1) };\n\t}\n\n\treturn { type: \"unknown\" };\n}\n",
|
|
8
8
|
"export type BitcoinNetwork = \"mainnet\" | \"testnet\" | \"regtest\";\n\nexport interface SpvAdapterRef {\n\t/** Deployer principal. */\n\taddress: string;\n\t/** Contract name. */\n\tname: string;\n}\n\n/**\n * Reference `spv-adapter` deployments (the read-only wrapper around the SIP-044\n * built-ins) — the single source of truth for the published adapter principal.\n * Empty until Clarity 6 / Epoch 4.0 activates and the contract is deployed; drop\n * the real principal in here at that point (deploy recipe: `contracts/README.md`).\n * Until then, `verifyBitcoinPayment` requires an explicit `contract`.\n */\nexport const SPV_ADAPTER_CONTRACTS: Partial<\n\tRecord<BitcoinNetwork, SpvAdapterRef>\n> = {\n\t// mainnet: { address: \"SP...\", name: \"spv-adapter\" }, // pending plan 013 deploy\n\t// testnet: { address: \"ST...\", name: \"spv-adapter\" },\n};\n\n/** Resolve the reference adapter for a network, or `undefined` if none is deployed yet. */\nexport function getSpvAdapter(\n\tnetwork: BitcoinNetwork,\n): SpvAdapterRef | undefined {\n\treturn SPV_ADAPTER_CONTRACTS[network];\n}\n\n/** A `\"address.name\"` contract principal from an adapter ref. */\nexport function spvAdapterPrincipal(ref: SpvAdapterRef): string {\n\treturn `${ref.address}.${ref.name}`;\n}\n",
|
|
9
9
|
"import type { AbiContract } from \"../../clarity/abi/index.ts\";\n\n/**\n * ABI for the reference `spv-adapter` contract — a thin, read-only wrapper that\n * exposes the SIP-044 Bitcoin built-ins (callable only from within a Clarity\n * contract) over read-only RPC. Plan 013 deploys a contract matching this shape;\n * `bitcoinVerifier` binds to it (or to an integrator's own contract with the\n * same surface).\n *\n * Hashes are internal (raw) byte order — the same as the built-ins. Do NOT\n * reverse before calling.\n */\nexport const SPV_ADAPTER_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\t// (get-bitcoin-tx-output? tx vout)\n\t\t\tname: \"get-tx-output\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"tx\", type: { buff: { length: 4096 } } },\n\t\t\t\t{ name: \"vout\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"script\", type: { buff: { length: 1024 } } },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"txid\", type: { buff: { length: 32 } } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// (verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)\n\t\t\tname: \"verify-merkle\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"root\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: \"bool\",\n\t\t},\n\t\t{\n\t\t\t// Composed SPV check: authenticate the caller-supplied header against\n\t\t\t// `(get-burn-block-info? header-hash height)`, extract its merkle root,\n\t\t\t// and `verify-merkle-proof` tx inclusion under it — atomically on-chain.\n\t\t\t// (ok true) = mined, (ok false) = header valid but tx not included,\n\t\t\t// (err ...) = header not authentic at that height.\n\t\t\tname: \"was-tx-mined\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"header\", type: { buff: { length: 80 } } },\n\t\t\t\t{ name: \"height\", type: \"uint128\" },\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
|
|
10
|
-
"import type { Client } from \"../clients/types.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork**. The exact activation Bitcoin block height is only\n * selected after the SIP vote passes, so there is no constant to hardcode — a\n * caller passes it once it is known.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates. Pass it\n\t * once the vote selects it; until then `isClarity6Active` cannot answer and\n\t * throws.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new
|
|
10
|
+
"import type { Client } from \"../clients/types.ts\";\nimport { MalformedResponseError } from \"../errors/response.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork**. The exact activation Bitcoin block height is only\n * selected after the SIP vote passes, so there is no constant to hardcode — a\n * caller passes it once it is known.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates. Pass it\n\t * once the vote selects it; until then `isClarity6Active` cannot answer and\n\t * throws.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new MalformedResponseError(\n\t\t\t'getBurnBlockHeight: /v2/info response is missing \"burn_block_height\"',\n\t\t);\n\t}\n\treturn info.burn_block_height;\n}\n\n/**\n * Whether Clarity 6 (the native SPV built-ins) is active on the node behind\n * `client`. Compares the node's current burn height to the SIP-044 / Epoch 4.0\n * activation height, which must be supplied (it is unknown until the vote — see\n * `Clarity6Gate`). `bitcoinVerifier` uses this to refuse calls before activation\n * rather than failing with an opaque contract error.\n */\nexport async function isClarity6Active(\n\tclient: Client,\n\tgate: Clarity6Gate = {},\n): Promise<boolean> {\n\tif (gate.activationBurnHeight == null) {\n\t\tthrow new Error(\n\t\t\t\"Clarity 6 (SIP-044 / Epoch 4.0) activation burn height is not yet known — pass { activationBurnHeight } once the vote selects it\",\n\t\t);\n\t}\n\tconst current = await getBurnBlockHeight(client);\n\treturn current >= gate.activationBurnHeight;\n}\n",
|
|
11
11
|
"import { readContract } from \"../actions/public/readContract.ts\";\nimport {\n\ttype ClarityValue,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport {\n\ttype DecodedTxOutput,\n\tdecodeTxOutput,\n\tencodeMerkleProofArgs,\n} from \"./codec.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\nimport type { SpvProof } from \"./proof.ts\";\nimport { parseBlockHeader } from \"./serialize.ts\";\n\nexport interface BitcoinVerifierConfig {\n\t/** Adapter contract principal, `\"address.name\"` (the reference `spv-adapter` or an integrator's own). */\n\tcontract: string;\n\t/** Optional read-only call sender; defaults to the contract address. */\n\tsender?: string;\n}\n\nexport interface BitcoinVerifier {\n\t/**\n\t * Verify a merkle inclusion proof against a supplied root via the adapter's\n\t * `verify-merkle` (the native `verify-merkle-proof`). This proves membership\n\t * under `root`; authenticating that `root` belongs to a canonical Bitcoin\n\t * block is a separate step (header → height), composed in `verifyBitcoinPayment`.\n\t */\n\tverifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean>;\n\t/** Verify an `SpvProof`'s merkle inclusion against its own header root (membership only — not chain-authenticated). */\n\tverifySpvProof(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Full header-authenticated SPV check via the adapter's `was-tx-mined`: the\n\t * contract authenticates the proof's header against the chain\n\t * (`get-burn-block-info? header-hash`), extracts its root, and proves\n\t * inclusion — atomically. Returns `false` if the header isn't canonical at\n\t * its height or the tx isn't included. This is the real \"is it on Bitcoin\" check.\n\t */\n\twasTxMined(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Decode one output of a serialized Bitcoin tx via the adapter's\n\t * `get-tx-output` (the native `get-bitcoin-tx-output?`).\n\t */\n\tgetTxOutput(rawTx: Uint8Array, vout: number): Promise<DecodedTxOutput>;\n}\n\nfunction clarityToBool(cv: ClarityValue): boolean {\n\tconst value = cv.type === \"ok\" ? cv.value : cv;\n\tif (value.type === \"true\") return true;\n\tif (value.type === \"false\") return false;\n\tthrow new Error(`expected a boolean result, got ${value.type}`);\n}\n\n/**\n * Bind a `BitcoinVerifier` to a deployed adapter contract. There is a single,\n * native target — no caps and no legacy `clarity-bitcoin` path. The built-ins do\n * not exist until Clarity 6 / Epoch 4.0 activates, so read-only calls only\n * succeed on a node at that epoch (a local Clarity-6 devnet, or mainnet after\n * activation); guard with `isClarity6Active` when in doubt.\n */\nexport function bitcoinVerifier(\n\tclient: Client,\n\tconfig: BitcoinVerifierConfig,\n): BitcoinVerifier {\n\tconst { contract, sender } = config;\n\n\tasync function verifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean> {\n\t\tconst args = encodeMerkleProofArgs(input);\n\t\tconst result = await readContract(client, {\n\t\t\tcontract,\n\t\t\tfunctionName: \"verify-merkle\",\n\t\t\targs,\n\t\t\tsender,\n\t\t});\n\t\treturn clarityToBool(result);\n\t}\n\n\treturn {\n\t\tverifyMerkleProof,\n\t\tverifySpvProof(proof) {\n\t\t\tconst root = parseBlockHeader(proof.header).merkleRoot;\n\t\t\treturn verifyMerkleProof({\n\t\t\t\tleaf: proof.txidInternal,\n\t\t\t\troot,\n\t\t\t\tproof: proof.merkle,\n\t\t\t});\n\t\t},\n\t\tasync wasTxMined(proof) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"was-tx-mined\",\n\t\t\t\targs: [\n\t\t\t\t\tbufferCV(proof.header),\n\t\t\t\t\tuintCV(proof.height),\n\t\t\t\t\tbufferCV(proof.txidInternal),\n\t\t\t\t\tuintCV(proof.merkle.txIndex),\n\t\t\t\t\tuintCV(proof.merkle.txCount),\n\t\t\t\t\tlistCV(proof.merkle.siblings.map((s) => bufferCV(s))),\n\t\t\t\t],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\t// (response bool uint): (ok true) mined, (ok false) not, (err) bad header → fail closed.\n\t\t\tif (result.type === \"err\") return false;\n\t\t\treturn clarityToBool(result);\n\t\t},\n\t\tasync getTxOutput(rawTx, vout) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-tx-output\",\n\t\t\t\targs: [bufferCV(rawTx), uintCV(vout)],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\tif (result.type === \"err\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`get-tx-output failed on-chain: ${JSON.stringify(result.value)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn decodeTxOutput(result);\n\t\t},\n\t};\n}\n",
|
|
12
12
|
"import type { Client } from \"../clients/types.ts\";\nimport { formatBitcoinAddress } from \"./address.ts\";\nimport { type OutputScriptType, parseOutputScript } from \"./codec.ts\";\nimport {\n\ttype BitcoinNetwork,\n\tgetSpvAdapter,\n\tspvAdapterPrincipal,\n} from \"./constants.ts\";\nimport { type ProofSource, type SpvProof, buildTxProof } from \"./proof.ts\";\nimport { parseBitcoinTx } from \"./serialize.ts\";\nimport { bitcoinVerifier } from \"./verifier.ts\";\n\nexport interface BitcoinPaymentOutput {\n\tvout: number;\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Value in satoshis. */\n\tamount: bigint;\n\ttype: OutputScriptType;\n\t/** Address for the configured network, if the script has a standard one. */\n\taddress?: string;\n}\n\nexport interface VerifyBitcoinPaymentResult {\n\t/** `mined` AND every supplied `expect` constraint holds. */\n\tverified: boolean;\n\t/**\n\t * On-chain proof that the tx is committed in a Bitcoin block. With\n\t * `authenticateHeader` (default), this is the adapter's `was-tx-mined` —\n\t * header authenticated against the chain AND merkle inclusion. With it off,\n\t * it is merkle inclusion against the proof's own (unauthenticated) header.\n\t */\n\tmined: boolean;\n\t/** The decoded output at `vout`. */\n\toutput: BitcoinPaymentOutput;\n\t/** The proof used (built or supplied). */\n\tproof: SpvProof;\n}\n\nexport type VerifyBitcoinPaymentParams = (\n\t| { proof: SpvProof }\n\t| { txid: string; source: ProofSource }\n) & {\n\t/**\n\t * Adapter contract principal, `\"address.name\"`. Optional once a reference\n\t * adapter is published for `network` (see `SPV_ADAPTER_CONTRACTS`); until then\n\t * it is required.\n\t */\n\tcontract?: string;\n\t/** Output index to decode and assert against. */\n\tvout: number;\n\t/** Network for address formatting. Defaults to mainnet. */\n\tnetwork?: BitcoinNetwork;\n\t/** Optional expectations; each supplied field must match for `verified`. */\n\texpect?: { address?: string; amount?: bigint };\n\t/**\n\t * Confirm the proof's header is the canonical block at its height via\n\t * `get-header-merkle-root` (default true). Turn off only when the caller has\n\t * already authenticated the header.\n\t */\n\tauthenticateHeader?: boolean;\n\tsender?: string;\n};\n\n/**\n * Verify that a Bitcoin payment is committed on-chain and (optionally) matches\n * an expected recipient/amount. Composes the whole SPV flow:\n * 1. build the proof from a `ProofSource` (or accept a prepared `SpvProof`),\n * 2. prove the tx is mined — `was-tx-mined` (header authenticated against the\n * chain + merkle inclusion) by default, or membership-only when\n * `authenticateHeader` is off,\n * 3. decode the target output and assert any `expect` constraints.\n *\n * The output is decoded off-chain from the proof's raw tx, which is sound: the\n * raw tx is pinned to the proven txid (`buildTxProof` checks it hashes to the\n * leaf), so its bytes are committed.\n */\nexport async function verifyBitcoinPayment(\n\tclient: Client,\n\tparams: VerifyBitcoinPaymentParams,\n): Promise<VerifyBitcoinPaymentResult> {\n\tconst {\n\t\tcontract,\n\t\tvout,\n\t\tnetwork = \"mainnet\",\n\t\texpect,\n\t\tauthenticateHeader = true,\n\t\tsender,\n\t} = params;\n\n\tconst adapter = getSpvAdapter(network);\n\tconst resolvedContract =\n\t\tcontract ?? (adapter ? spvAdapterPrincipal(adapter) : undefined);\n\tif (!resolvedContract) {\n\t\tthrow new Error(\n\t\t\t`No spv-adapter deployed for ${network} — pass an explicit \\`contract\\`, or wait for Clarity 6 / Epoch 4.0 (deploy recipe: contracts/README.md).`,\n\t\t);\n\t}\n\n\tconst proof =\n\t\t\"proof\" in params\n\t\t\t? params.proof\n\t\t\t: await buildTxProof(params.source, { txid: params.txid, vout });\n\n\tconst verifier = bitcoinVerifier(client, {\n\t\tcontract: resolvedContract,\n\t\tsender,\n\t});\n\tconst mined = authenticateHeader\n\t\t? await verifier.wasTxMined(proof)\n\t\t: await verifier.verifySpvProof(proof);\n\n\tconst parsedTx = parseBitcoinTx(proof.rawTx);\n\tconst out = parsedTx.outputs[vout];\n\tif (!out) {\n\t\tthrow new Error(\n\t\t\t`vout ${vout} out of range (tx has ${parsedTx.outputs.length} outputs)`,\n\t\t);\n\t}\n\tconst parsedScript = parseOutputScript(out.scriptPubKey);\n\tconst address = formatBitcoinAddress(parsedScript, network);\n\tconst output: BitcoinPaymentOutput = {\n\t\tvout,\n\t\tscript: out.scriptPubKey,\n\t\tamount: out.value,\n\t\ttype: parsedScript.type,\n\t\taddress,\n\t};\n\n\tconst amountOk = expect?.amount === undefined || out.value === expect.amount;\n\tconst addressOk = expect?.address === undefined || address === expect.address;\n\tconst verified = mined && amountOk && addressOk;\n\n\treturn { verified, mined, output, proof };\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": "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",
|
|
15
|
+
"debugId": "FCC0EF2C44A04EEE64756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
|
@@ -18,6 +18,10 @@ import"../../shared/stacks-kg1npstf.js";
|
|
|
18
18
|
import {
|
|
19
19
|
readContract
|
|
20
20
|
} from "../../shared/stacks-msmgyerb.js";
|
|
21
|
+
import {
|
|
22
|
+
MalformedResponseError
|
|
23
|
+
} from "../../shared/stacks-fh48neva.js";
|
|
24
|
+
import"../../shared/stacks-709tra19.js";
|
|
21
25
|
import"../../shared/stacks-18jv9aen.js";
|
|
22
26
|
import {
|
|
23
27
|
bufferCV,
|
|
@@ -409,7 +413,7 @@ var SPV_ADAPTER_ABI = {
|
|
|
409
413
|
async function getBurnBlockHeight(client) {
|
|
410
414
|
const info = await client.request("/v2/info");
|
|
411
415
|
if (typeof info?.burn_block_height !== "number") {
|
|
412
|
-
throw new
|
|
416
|
+
throw new MalformedResponseError('getBurnBlockHeight: /v2/info response is missing "burn_block_height"');
|
|
413
417
|
}
|
|
414
418
|
return info.burn_block_height;
|
|
415
419
|
}
|
|
@@ -556,5 +560,5 @@ export {
|
|
|
556
560
|
BtcReader
|
|
557
561
|
};
|
|
558
562
|
|
|
559
|
-
//# debugId=
|
|
563
|
+
//# debugId=843E9C827C94D94764756E2164756E21
|
|
560
564
|
//# sourceMappingURL=index.js.map
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"import {\n\ttype BufferCV,\n\ttype ClarityValue,\n\ttype ListCV,\n\ttype TupleCV,\n\ttype UIntCV,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport { hexToBytes } from \"../utils/encoding.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\n\n/**\n * Number of merkle levels for a tree of `txCount` leaves — i.e. the exact\n * sibling count the SIP-044 `verify-merkle-proof` built-in expects\n * (`ceil(log2(tx-count))`). Computed by repeated halving to avoid float error\n * at exact powers of two.\n */\nfunction merkleDepth(txCount: number): number {\n\tlet depth = 0;\n\tlet n = txCount;\n\twhile (n > 1) {\n\t\tn = Math.ceil(n / 2);\n\t\tdepth++;\n\t}\n\treturn depth;\n}\n\n/** Max siblings the native `verify-merkle-proof` accepts: `(list 24 (buff 32))`. */\nconst MAX_SIBLINGS = 24;\n\nfunction assertHash32(bytes: Uint8Array, label: string): void {\n\tif (bytes.length !== 32) {\n\t\tthrow new Error(`${label} must be 32 bytes, got ${bytes.length}`);\n\t}\n}\n\n/**\n * Encode the argument vector for the SIP-044 native built-in\n * `(verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)`.\n *\n * Returns the five args in order: `[leaf, root, tx-index, tx-count, siblings]`.\n * All hashes are passed in *internal* (raw) byte order — the built-in does NOT\n * reverse, and neither does this. The leaf is the tx's `txidInternal`; the root\n * is the block header's merkle root in internal order.\n *\n * Throws on shapes the built-in would reject, so a caller fails locally with a\n * clear message instead of an opaque on-chain `false`.\n */\nexport function encodeMerkleProofArgs(params: {\n\tleaf: Uint8Array;\n\troot: Uint8Array;\n\tproof: MerkleProof;\n}): [BufferCV, BufferCV, UIntCV, UIntCV, ListCV] {\n\tconst { leaf, root, proof } = params;\n\tassertHash32(leaf, \"merkle leaf\");\n\tassertHash32(root, \"merkle root\");\n\n\tif (proof.txIndex < 0 || proof.txIndex >= proof.txCount) {\n\t\tthrow new Error(\n\t\t\t`tx-index ${proof.txIndex} out of range for tx-count ${proof.txCount}`,\n\t\t);\n\t}\n\tif (proof.siblings.length > MAX_SIBLINGS) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings, native verify-merkle-proof caps at ${MAX_SIBLINGS}`,\n\t\t);\n\t}\n\tconst expectedDepth = merkleDepth(proof.txCount);\n\tif (proof.siblings.length !== expectedDepth) {\n\t\tthrow new Error(\n\t\t\t`proof has ${proof.siblings.length} siblings but tx-count ${proof.txCount} requires exactly ${expectedDepth}`,\n\t\t);\n\t}\n\tfor (const [i, sibling] of proof.siblings.entries()) {\n\t\tassertHash32(sibling, `sibling ${i}`);\n\t}\n\n\treturn [\n\t\tbufferCV(leaf),\n\t\tbufferCV(root),\n\t\tuintCV(proof.txIndex),\n\t\tuintCV(proof.txCount),\n\t\tlistCV(proof.siblings.map((s) => bufferCV(s))),\n\t];\n}\n\nexport interface DecodedTxOutput {\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Output value in satoshis. */\n\tamount: bigint;\n\t/** The tx's txid in internal byte order — ready as a merkle leaf. */\n\ttxid: Uint8Array;\n}\n\nfunction expectBuffer(cv: ClarityValue | undefined, label: string): Uint8Array {\n\tif (cv?.type !== \"buffer\") {\n\t\tthrow new Error(`expected ${label} to be a buffer, got ${cv?.type}`);\n\t}\n\treturn hexToBytes(cv.value);\n}\n\n/**\n * Decode the tuple returned by `get-bitcoin-tx-output?`:\n * `(tuple (script (buff 1024)) (amount uint) (txid (buff 32)))`.\n *\n * Accepts either the bare tuple or a `(response ok ...)` wrapping it, so it\n * works whether or not the caller has already unwrapped the response.\n */\nexport function decodeTxOutput(cv: ClarityValue): DecodedTxOutput {\n\tconst tuple: ClarityValue = cv.type === \"ok\" ? cv.value : cv;\n\tif (tuple.type !== \"tuple\") {\n\t\tthrow new Error(`expected a tuple, got ${tuple.type}`);\n\t}\n\tconst fields = (tuple as TupleCV).value;\n\tconst amount = fields.amount;\n\tif (amount?.type !== \"uint\") {\n\t\tthrow new Error(\n\t\t\t`expected tuple field \"amount\" to be uint, got ${amount?.type}`,\n\t\t);\n\t}\n\treturn {\n\t\tscript: expectBuffer(fields.script, 'tuple field \"script\"'),\n\t\tamount: amount.value,\n\t\ttxid: expectBuffer(fields.txid, 'tuple field \"txid\"'),\n\t};\n}\n\nexport type OutputScriptType =\n\t| \"p2pkh\"\n\t| \"p2sh\"\n\t| \"p2wpkh\"\n\t| \"p2wsh\"\n\t| \"p2tr\"\n\t| \"op_return\"\n\t| \"unknown\";\n\nexport interface ParsedOutputScript {\n\ttype: OutputScriptType;\n\t/**\n\t * The hash / witness program for the recognized output types: the 20-byte\n\t * pubkey-hash (p2pkh), 20-byte script-hash (p2sh), or the 20/32-byte witness\n\t * program (p2wpkh/p2wsh/p2tr). Undefined for op_return / unknown.\n\t *\n\t * Address formatting is intentionally left to the caller — base58/bech32 HRPs\n\t * and version bytes are network-dependent, so it belongs where the network is\n\t * known (see `verifyBitcoinPayment`), not in this pure decoder.\n\t */\n\thash?: Uint8Array;\n\t/** OP_RETURN payload (the pushed data after the OP_RETURN opcode). */\n\tdata?: Uint8Array;\n}\n\nconst OP_DUP = 0x76;\nconst OP_HASH160 = 0xa9;\nconst OP_EQUALVERIFY = 0x88;\nconst OP_CHECKSIG = 0xac;\nconst OP_EQUAL = 0x87;\nconst OP_RETURN = 0x6a;\nconst OP_0 = 0x00;\nconst OP_1 = 0x51;\n\n/**\n * Classify a Bitcoin output scriptPubKey by its standard template and surface\n * the embedded hash / witness program. Recognizes P2PKH, P2SH, P2WPKH, P2WSH,\n * P2TR, and OP_RETURN; anything else is `unknown`.\n */\nexport function parseOutputScript(script: Uint8Array): ParsedOutputScript {\n\tconst n = script.length;\n\n\t// P2PKH: OP_DUP OP_HASH160 <20> ... OP_EQUALVERIFY OP_CHECKSIG\n\tif (\n\t\tn === 25 &&\n\t\tscript[0] === OP_DUP &&\n\t\tscript[1] === OP_HASH160 &&\n\t\tscript[2] === 0x14 &&\n\t\tscript[23] === OP_EQUALVERIFY &&\n\t\tscript[24] === OP_CHECKSIG\n\t) {\n\t\treturn { type: \"p2pkh\", hash: script.slice(3, 23) };\n\t}\n\n\t// P2SH: OP_HASH160 <20> ... OP_EQUAL\n\tif (\n\t\tn === 23 &&\n\t\tscript[0] === OP_HASH160 &&\n\t\tscript[1] === 0x14 &&\n\t\tscript[22] === OP_EQUAL\n\t) {\n\t\treturn { type: \"p2sh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WPKH: OP_0 <20>\n\tif (n === 22 && script[0] === OP_0 && script[1] === 0x14) {\n\t\treturn { type: \"p2wpkh\", hash: script.slice(2, 22) };\n\t}\n\n\t// P2WSH: OP_0 <32>\n\tif (n === 34 && script[0] === OP_0 && script[1] === 0x20) {\n\t\treturn { type: \"p2wsh\", hash: script.slice(2, 34) };\n\t}\n\n\t// P2TR: OP_1 <32>\n\tif (n === 34 && script[0] === OP_1 && script[1] === 0x20) {\n\t\treturn { type: \"p2tr\", hash: script.slice(2, 34) };\n\t}\n\n\t// OP_RETURN: data carrier\n\tif (n >= 1 && script[0] === OP_RETURN) {\n\t\treturn { type: \"op_return\", data: script.slice(1) };\n\t}\n\n\treturn { type: \"unknown\" };\n}\n",
|
|
8
8
|
"export type BitcoinNetwork = \"mainnet\" | \"testnet\" | \"regtest\";\n\nexport interface SpvAdapterRef {\n\t/** Deployer principal. */\n\taddress: string;\n\t/** Contract name. */\n\tname: string;\n}\n\n/**\n * Reference `spv-adapter` deployments (the read-only wrapper around the SIP-044\n * built-ins) — the single source of truth for the published adapter principal.\n * Empty until Clarity 6 / Epoch 4.0 activates and the contract is deployed; drop\n * the real principal in here at that point (deploy recipe: `contracts/README.md`).\n * Until then, `verifyBitcoinPayment` requires an explicit `contract`.\n */\nexport const SPV_ADAPTER_CONTRACTS: Partial<\n\tRecord<BitcoinNetwork, SpvAdapterRef>\n> = {\n\t// mainnet: { address: \"SP...\", name: \"spv-adapter\" }, // pending plan 013 deploy\n\t// testnet: { address: \"ST...\", name: \"spv-adapter\" },\n};\n\n/** Resolve the reference adapter for a network, or `undefined` if none is deployed yet. */\nexport function getSpvAdapter(\n\tnetwork: BitcoinNetwork,\n): SpvAdapterRef | undefined {\n\treturn SPV_ADAPTER_CONTRACTS[network];\n}\n\n/** A `\"address.name\"` contract principal from an adapter ref. */\nexport function spvAdapterPrincipal(ref: SpvAdapterRef): string {\n\treturn `${ref.address}.${ref.name}`;\n}\n",
|
|
9
9
|
"import type { AbiContract } from \"../../clarity/abi/index.ts\";\n\n/**\n * ABI for the reference `spv-adapter` contract — a thin, read-only wrapper that\n * exposes the SIP-044 Bitcoin built-ins (callable only from within a Clarity\n * contract) over read-only RPC. Plan 013 deploys a contract matching this shape;\n * `bitcoinVerifier` binds to it (or to an integrator's own contract with the\n * same surface).\n *\n * Hashes are internal (raw) byte order — the same as the built-ins. Do NOT\n * reverse before calling.\n */\nexport const SPV_ADAPTER_ABI = {\n\tfunctions: [\n\t\t{\n\t\t\t// (get-bitcoin-tx-output? tx vout)\n\t\t\tname: \"get-tx-output\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"tx\", type: { buff: { length: 4096 } } },\n\t\t\t\t{ name: \"vout\", type: \"uint128\" },\n\t\t\t],\n\t\t\toutputs: {\n\t\t\t\tresponse: {\n\t\t\t\t\tok: {\n\t\t\t\t\t\ttuple: [\n\t\t\t\t\t\t\t{ name: \"script\", type: { buff: { length: 1024 } } },\n\t\t\t\t\t\t\t{ name: \"amount\", type: \"uint128\" },\n\t\t\t\t\t\t\t{ name: \"txid\", type: { buff: { length: 32 } } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\terror: \"uint128\",\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t// (verify-merkle-proof leaf-hash root-hash tx-index tx-count sibling-hashes)\n\t\t\tname: \"verify-merkle\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"root\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: \"bool\",\n\t\t},\n\t\t{\n\t\t\t// Composed SPV check: authenticate the caller-supplied header against\n\t\t\t// `(get-burn-block-info? header-hash height)`, extract its merkle root,\n\t\t\t// and `verify-merkle-proof` tx inclusion under it — atomically on-chain.\n\t\t\t// (ok true) = mined, (ok false) = header valid but tx not included,\n\t\t\t// (err ...) = header not authentic at that height.\n\t\t\tname: \"was-tx-mined\",\n\t\t\taccess: \"read-only\",\n\t\t\targs: [\n\t\t\t\t{ name: \"header\", type: { buff: { length: 80 } } },\n\t\t\t\t{ name: \"height\", type: \"uint128\" },\n\t\t\t\t{ name: \"leaf\", type: { buff: { length: 32 } } },\n\t\t\t\t{ name: \"tx-index\", type: \"uint128\" },\n\t\t\t\t{ name: \"tx-count\", type: \"uint128\" },\n\t\t\t\t{\n\t\t\t\t\tname: \"siblings\",\n\t\t\t\t\ttype: { list: { type: { buff: { length: 32 } }, length: 24 } },\n\t\t\t\t},\n\t\t\t],\n\t\t\toutputs: { response: { ok: \"bool\", error: \"uint128\" } },\n\t\t},\n\t],\n} as const satisfies AbiContract;\n",
|
|
10
|
-
"import type { Client } from \"../clients/types.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork**. The exact activation Bitcoin block height is only\n * selected after the SIP vote passes, so there is no constant to hardcode — a\n * caller passes it once it is known.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates. Pass it\n\t * once the vote selects it; until then `isClarity6Active` cannot answer and\n\t * throws.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new
|
|
10
|
+
"import type { Client } from \"../clients/types.ts\";\nimport { MalformedResponseError } from \"../errors/response.ts\";\n\n/**\n * SIP-044 (the native Bitcoin SPV built-ins) activates as part of the **Stacks\n * Epoch 4.0 hard fork**. The exact activation Bitcoin block height is only\n * selected after the SIP vote passes, so there is no constant to hardcode — a\n * caller passes it once it is known.\n */\nexport interface Clarity6Gate {\n\t/**\n\t * Bitcoin burn block height at which Clarity 6 / Epoch 4.0 activates. Pass it\n\t * once the vote selects it; until then `isClarity6Active` cannot answer and\n\t * throws.\n\t */\n\tactivationBurnHeight?: number;\n}\n\n/** Read the node's current Bitcoin burn block height from `/v2/info`. */\nexport async function getBurnBlockHeight(client: Client): Promise<number> {\n\tconst info = (await client.request(\"/v2/info\")) as {\n\t\tburn_block_height?: number;\n\t};\n\tif (typeof info?.burn_block_height !== \"number\") {\n\t\tthrow new MalformedResponseError(\n\t\t\t'getBurnBlockHeight: /v2/info response is missing \"burn_block_height\"',\n\t\t);\n\t}\n\treturn info.burn_block_height;\n}\n\n/**\n * Whether Clarity 6 (the native SPV built-ins) is active on the node behind\n * `client`. Compares the node's current burn height to the SIP-044 / Epoch 4.0\n * activation height, which must be supplied (it is unknown until the vote — see\n * `Clarity6Gate`). `bitcoinVerifier` uses this to refuse calls before activation\n * rather than failing with an opaque contract error.\n */\nexport async function isClarity6Active(\n\tclient: Client,\n\tgate: Clarity6Gate = {},\n): Promise<boolean> {\n\tif (gate.activationBurnHeight == null) {\n\t\tthrow new Error(\n\t\t\t\"Clarity 6 (SIP-044 / Epoch 4.0) activation burn height is not yet known — pass { activationBurnHeight } once the vote selects it\",\n\t\t);\n\t}\n\tconst current = await getBurnBlockHeight(client);\n\treturn current >= gate.activationBurnHeight;\n}\n",
|
|
11
11
|
"import { readContract } from \"../actions/public/readContract.ts\";\nimport {\n\ttype ClarityValue,\n\tbufferCV,\n\tlistCV,\n\tuintCV,\n} from \"../clarity/index.ts\";\nimport type { Client } from \"../clients/types.ts\";\nimport {\n\ttype DecodedTxOutput,\n\tdecodeTxOutput,\n\tencodeMerkleProofArgs,\n} from \"./codec.ts\";\nimport type { MerkleProof } from \"./merkle.ts\";\nimport type { SpvProof } from \"./proof.ts\";\nimport { parseBlockHeader } from \"./serialize.ts\";\n\nexport interface BitcoinVerifierConfig {\n\t/** Adapter contract principal, `\"address.name\"` (the reference `spv-adapter` or an integrator's own). */\n\tcontract: string;\n\t/** Optional read-only call sender; defaults to the contract address. */\n\tsender?: string;\n}\n\nexport interface BitcoinVerifier {\n\t/**\n\t * Verify a merkle inclusion proof against a supplied root via the adapter's\n\t * `verify-merkle` (the native `verify-merkle-proof`). This proves membership\n\t * under `root`; authenticating that `root` belongs to a canonical Bitcoin\n\t * block is a separate step (header → height), composed in `verifyBitcoinPayment`.\n\t */\n\tverifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean>;\n\t/** Verify an `SpvProof`'s merkle inclusion against its own header root (membership only — not chain-authenticated). */\n\tverifySpvProof(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Full header-authenticated SPV check via the adapter's `was-tx-mined`: the\n\t * contract authenticates the proof's header against the chain\n\t * (`get-burn-block-info? header-hash`), extracts its root, and proves\n\t * inclusion — atomically. Returns `false` if the header isn't canonical at\n\t * its height or the tx isn't included. This is the real \"is it on Bitcoin\" check.\n\t */\n\twasTxMined(proof: SpvProof): Promise<boolean>;\n\t/**\n\t * Decode one output of a serialized Bitcoin tx via the adapter's\n\t * `get-tx-output` (the native `get-bitcoin-tx-output?`).\n\t */\n\tgetTxOutput(rawTx: Uint8Array, vout: number): Promise<DecodedTxOutput>;\n}\n\nfunction clarityToBool(cv: ClarityValue): boolean {\n\tconst value = cv.type === \"ok\" ? cv.value : cv;\n\tif (value.type === \"true\") return true;\n\tif (value.type === \"false\") return false;\n\tthrow new Error(`expected a boolean result, got ${value.type}`);\n}\n\n/**\n * Bind a `BitcoinVerifier` to a deployed adapter contract. There is a single,\n * native target — no caps and no legacy `clarity-bitcoin` path. The built-ins do\n * not exist until Clarity 6 / Epoch 4.0 activates, so read-only calls only\n * succeed on a node at that epoch (a local Clarity-6 devnet, or mainnet after\n * activation); guard with `isClarity6Active` when in doubt.\n */\nexport function bitcoinVerifier(\n\tclient: Client,\n\tconfig: BitcoinVerifierConfig,\n): BitcoinVerifier {\n\tconst { contract, sender } = config;\n\n\tasync function verifyMerkleProof(input: {\n\t\tleaf: Uint8Array;\n\t\troot: Uint8Array;\n\t\tproof: MerkleProof;\n\t}): Promise<boolean> {\n\t\tconst args = encodeMerkleProofArgs(input);\n\t\tconst result = await readContract(client, {\n\t\t\tcontract,\n\t\t\tfunctionName: \"verify-merkle\",\n\t\t\targs,\n\t\t\tsender,\n\t\t});\n\t\treturn clarityToBool(result);\n\t}\n\n\treturn {\n\t\tverifyMerkleProof,\n\t\tverifySpvProof(proof) {\n\t\t\tconst root = parseBlockHeader(proof.header).merkleRoot;\n\t\t\treturn verifyMerkleProof({\n\t\t\t\tleaf: proof.txidInternal,\n\t\t\t\troot,\n\t\t\t\tproof: proof.merkle,\n\t\t\t});\n\t\t},\n\t\tasync wasTxMined(proof) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"was-tx-mined\",\n\t\t\t\targs: [\n\t\t\t\t\tbufferCV(proof.header),\n\t\t\t\t\tuintCV(proof.height),\n\t\t\t\t\tbufferCV(proof.txidInternal),\n\t\t\t\t\tuintCV(proof.merkle.txIndex),\n\t\t\t\t\tuintCV(proof.merkle.txCount),\n\t\t\t\t\tlistCV(proof.merkle.siblings.map((s) => bufferCV(s))),\n\t\t\t\t],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\t// (response bool uint): (ok true) mined, (ok false) not, (err) bad header → fail closed.\n\t\t\tif (result.type === \"err\") return false;\n\t\t\treturn clarityToBool(result);\n\t\t},\n\t\tasync getTxOutput(rawTx, vout) {\n\t\t\tconst result = await readContract(client, {\n\t\t\t\tcontract,\n\t\t\t\tfunctionName: \"get-tx-output\",\n\t\t\t\targs: [bufferCV(rawTx), uintCV(vout)],\n\t\t\t\tsender,\n\t\t\t});\n\t\t\tif (result.type === \"err\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`get-tx-output failed on-chain: ${JSON.stringify(result.value)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn decodeTxOutput(result);\n\t\t},\n\t};\n}\n",
|
|
12
12
|
"import type { Client } from \"../clients/types.ts\";\nimport { formatBitcoinAddress } from \"./address.ts\";\nimport { type OutputScriptType, parseOutputScript } from \"./codec.ts\";\nimport {\n\ttype BitcoinNetwork,\n\tgetSpvAdapter,\n\tspvAdapterPrincipal,\n} from \"./constants.ts\";\nimport { type ProofSource, type SpvProof, buildTxProof } from \"./proof.ts\";\nimport { parseBitcoinTx } from \"./serialize.ts\";\nimport { bitcoinVerifier } from \"./verifier.ts\";\n\nexport interface BitcoinPaymentOutput {\n\tvout: number;\n\t/** scriptPubKey bytes. */\n\tscript: Uint8Array;\n\t/** Value in satoshis. */\n\tamount: bigint;\n\ttype: OutputScriptType;\n\t/** Address for the configured network, if the script has a standard one. */\n\taddress?: string;\n}\n\nexport interface VerifyBitcoinPaymentResult {\n\t/** `mined` AND every supplied `expect` constraint holds. */\n\tverified: boolean;\n\t/**\n\t * On-chain proof that the tx is committed in a Bitcoin block. With\n\t * `authenticateHeader` (default), this is the adapter's `was-tx-mined` —\n\t * header authenticated against the chain AND merkle inclusion. With it off,\n\t * it is merkle inclusion against the proof's own (unauthenticated) header.\n\t */\n\tmined: boolean;\n\t/** The decoded output at `vout`. */\n\toutput: BitcoinPaymentOutput;\n\t/** The proof used (built or supplied). */\n\tproof: SpvProof;\n}\n\nexport type VerifyBitcoinPaymentParams = (\n\t| { proof: SpvProof }\n\t| { txid: string; source: ProofSource }\n) & {\n\t/**\n\t * Adapter contract principal, `\"address.name\"`. Optional once a reference\n\t * adapter is published for `network` (see `SPV_ADAPTER_CONTRACTS`); until then\n\t * it is required.\n\t */\n\tcontract?: string;\n\t/** Output index to decode and assert against. */\n\tvout: number;\n\t/** Network for address formatting. Defaults to mainnet. */\n\tnetwork?: BitcoinNetwork;\n\t/** Optional expectations; each supplied field must match for `verified`. */\n\texpect?: { address?: string; amount?: bigint };\n\t/**\n\t * Confirm the proof's header is the canonical block at its height via\n\t * `get-header-merkle-root` (default true). Turn off only when the caller has\n\t * already authenticated the header.\n\t */\n\tauthenticateHeader?: boolean;\n\tsender?: string;\n};\n\n/**\n * Verify that a Bitcoin payment is committed on-chain and (optionally) matches\n * an expected recipient/amount. Composes the whole SPV flow:\n * 1. build the proof from a `ProofSource` (or accept a prepared `SpvProof`),\n * 2. prove the tx is mined — `was-tx-mined` (header authenticated against the\n * chain + merkle inclusion) by default, or membership-only when\n * `authenticateHeader` is off,\n * 3. decode the target output and assert any `expect` constraints.\n *\n * The output is decoded off-chain from the proof's raw tx, which is sound: the\n * raw tx is pinned to the proven txid (`buildTxProof` checks it hashes to the\n * leaf), so its bytes are committed.\n */\nexport async function verifyBitcoinPayment(\n\tclient: Client,\n\tparams: VerifyBitcoinPaymentParams,\n): Promise<VerifyBitcoinPaymentResult> {\n\tconst {\n\t\tcontract,\n\t\tvout,\n\t\tnetwork = \"mainnet\",\n\t\texpect,\n\t\tauthenticateHeader = true,\n\t\tsender,\n\t} = params;\n\n\tconst adapter = getSpvAdapter(network);\n\tconst resolvedContract =\n\t\tcontract ?? (adapter ? spvAdapterPrincipal(adapter) : undefined);\n\tif (!resolvedContract) {\n\t\tthrow new Error(\n\t\t\t`No spv-adapter deployed for ${network} — pass an explicit \\`contract\\`, or wait for Clarity 6 / Epoch 4.0 (deploy recipe: contracts/README.md).`,\n\t\t);\n\t}\n\n\tconst proof =\n\t\t\"proof\" in params\n\t\t\t? params.proof\n\t\t\t: await buildTxProof(params.source, { txid: params.txid, vout });\n\n\tconst verifier = bitcoinVerifier(client, {\n\t\tcontract: resolvedContract,\n\t\tsender,\n\t});\n\tconst mined = authenticateHeader\n\t\t? await verifier.wasTxMined(proof)\n\t\t: await verifier.verifySpvProof(proof);\n\n\tconst parsedTx = parseBitcoinTx(proof.rawTx);\n\tconst out = parsedTx.outputs[vout];\n\tif (!out) {\n\t\tthrow new Error(\n\t\t\t`vout ${vout} out of range (tx has ${parsedTx.outputs.length} outputs)`,\n\t\t);\n\t}\n\tconst parsedScript = parseOutputScript(out.scriptPubKey);\n\tconst address = formatBitcoinAddress(parsedScript, network);\n\tconst output: BitcoinPaymentOutput = {\n\t\tvout,\n\t\tscript: out.scriptPubKey,\n\t\tamount: out.value,\n\t\ttype: parsedScript.type,\n\t\taddress,\n\t};\n\n\tconst amountOk = expect?.amount === undefined || out.value === expect.amount;\n\tconst addressOk = expect?.address === undefined || address === expect.address;\n\tconst verified = mined && amountOk && addressOk;\n\n\treturn { verified, mined, output, proof };\n}\n"
|
|
13
13
|
],
|
|
14
|
-
"mappings": "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",
|
|
15
|
-
"debugId": "
|
|
14
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBA,SAAS,QAAQ,CAAC,MAAkB,OAA+B;AAAA,EAClE,OAAO,aAAa,YAAY,MAAM,KAAK,CAAC;AAAA;AAI7C,SAAS,SAAS,CAAC,OAAmC;AAAA,EACrD,MAAM,OAAqB,CAAC;AAAA,EAC5B,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,MAAM,2BAA2B;AAAA,IAEnE,MAAM,QAAQ,MAAM,IAAI,MAAM;AAAA,IAC9B,KAAK,KAAK,SAAS,MAAM,KAAK,CAAC;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AASD,SAAS,UAAU,CAAC,eAAyC;AAAA,EACnE,IAAI,cAAc,WAAW,GAAG;AAAA,IAC/B,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAC5C;AAAA,EACA,IAAI,QAAQ,cAAc,MAAM;AAAA,EAChC,OAAO,MAAM,SAAS,GAAG;AAAA,IACxB,QAAQ,UAAU,KAAK;AAAA,EACxB;AAAA,EACA,MAAM,OAAO,MAAM;AAAA,EACnB,IAAI,SAAS;AAAA,IAAW,MAAM,IAAI,MAAM,qBAAqB;AAAA,EAC7D,OAAO;AAAA;AAOD,SAAS,gBAAgB,CAC/B,eACA,SACc;AAAA,EACd,MAAM,UAAU,cAAc;AAAA,EAC9B,IAAI,YAAY,GAAG;AAAA,IAClB,MAAM,IAAI,MAAM,iCAAiC;AAAA,EAClD;AAAA,EACA,IAAI,UAAU,KAAK,WAAW,SAAS;AAAA,IACtC,MAAM,IAAI,MACT,6BAA6B,4BAA4B,aAC1D;AAAA,EACD;AAAA,EAEA,MAAM,WAAyB,CAAC;AAAA,EAChC,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ,cAAc,MAAM;AAAA,EAChC,OAAO,MAAM,SAAS,GAAG;AAAA,IACxB,MAAM,UAAU,QAAQ,MAAM;AAAA,IAC9B,MAAM,eAAe,UAAU,QAAQ,IAAI,QAAQ;AAAA,IACnD,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,SAAS;AAAA,MAAW,MAAM,IAAI,MAAM,gCAAgC;AAAA,IAExE,SAAS,KAAK,MAAM,iBAAiB,IAAI;AAAA,IACzC,QAAQ,UAAU,KAAK;AAAA,IACvB,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,EAC7B;AAAA,EAEA,OAAO,EAAE,UAAU,SAAS,QAAQ;AAAA;AAQ9B,SAAS,aAAa,CAC5B,cACA,OACa;AAAA,EACb,IAAI,OAAO;AAAA,EACX,IAAI,QAAQ,MAAM;AAAA,EAClB,WAAW,WAAW,MAAM,UAAU;AAAA,IACrC,OAAO,QAAQ,MAAM,IAAI,SAAS,SAAS,IAAI,IAAI,SAAS,MAAM,OAAO;AAAA,IACzE,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;;;AC1DR,SAAS,aAAa,CAAC,MAAsB;AAAA,EAC5C,OAAO,UAAU,IAAI,EAAE,YAAY;AAAA;AASpC,SAAS,kBAAkB,CAAC,MAMb;AAAA,EACd,MAAM,UAAU,KAAK,aAAa,QAAQ,cAAc,KAAK,IAAI,CAAC;AAAA,EAClE,IAAI,UAAU,GAAG;AAAA,IAChB,MAAM,IAAI,MAAM,MAAM,KAAK,2BAA2B,KAAK,SAAS;AAAA,EACrE;AAAA,EACA,OAAO;AAAA,IACN,QAAQ,WAAW,KAAK,SAAS;AAAA,IACjC,QAAQ,KAAK;AAAA,IACb,eAAe,KAAK,aAAa,IAAI,CAAC,MAAM,aAAa,WAAW,CAAC,CAAC,CAAC;AAAA,IACvE;AAAA,EACD;AAAA;AAWD,eAAsB,YAAY,CACjC,QACA,QACoB;AAAA,EACpB,QAAQ,MAAM,SAAS;AAAA,EACvB,MAAM,OAAO,cAAc,IAAI;AAAA,EAE/B,OAAO,OAAO,SAAS,MAAM,QAAQ,IAAI;AAAA,IACxC,OAAO,SAAS,IAAI;AAAA,IACpB,OAAO,cAAc,IAAI;AAAA,EAC1B,CAAC;AAAA,EAED,MAAM,SAAS,eAAe,KAAK;AAAA,EACnC,MAAM,aAAa,WAAW,aAAa,OAAO,YAAY,CAAC;AAAA,EAC/D,IAAI,eAAe,MAAM;AAAA,IACxB,MAAM,IAAI,MACT,iCAAiC,uCAAuC,MACzE;AAAA,EACD;AAAA,EAEA,MAAM,UAAU,MAAM,cAAc,MAAM;AAAA,EAC1C,IAAI,CAAC,WAAW,WAAW,OAAO,MAAM,WAAW,OAAO,YAAY,GAAG;AAAA,IACxE,MAAM,IAAI,MACT,kBAAkB,MAAM,gCAAgC,MACzD;AAAA,EACD;AAAA,EAEA,MAAM,SAAS,iBAAiB,MAAM,eAAe,MAAM,OAAO;AAAA,EAElE,MAAM,aAAa,iBAAiB,MAAM,MAAM,EAAE;AAAA,EAClD,MAAM,WAAW,cAAc,OAAO,cAAc,MAAM;AAAA,EAC1D,IAAI,WAAW,QAAQ,MAAM,WAAW,UAAU,GAAG;AAAA,IACpD,MAAM,IAAI,MACT,+EACD;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,IACN;AAAA,IACA,cAAc,OAAO;AAAA,IACrB;AAAA,IACA;AAAA,IACA,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM;AAAA,EACf;AAAA;AAQM,SAAS,mBAAmB,CAAC,SAAqC;AAAA,EACxE,IAAI,QAAQ,WAAW,GAAG;AAAA,IACzB,MAAM,IAAI,MAAM,sDAAsD;AAAA,EACvE;AAAA,EACA,eAAe,YAAe,CAC7B,IACa;AAAA,IACb,IAAI;AAAA,IACJ,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI;AAAA,QACH,OAAO,MAAM,GAAG,MAAM;AAAA,QACrB,OAAO,OAAO;AAAA,QACf,YAAY;AAAA;AAAA,IAEd;AAAA,IACA,MAAM;AAAA;AAAA,EAEP,OAAO;AAAA,IACN,UAAU,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC;AAAA,IACxD,eAAe,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC;AAAA,EACnE;AAAA;AAkBM,SAAS,gBAAgB,CAAC,QAAuC;AAAA,EACvE,MAAM,UAAU,OAAO,SAAS;AAAA,EAEhC,eAAe,GAAM,CAAC,QAAgB,WAAkC;AAAA,IACvE,MAAM,UAAkC;AAAA,MACvC,gBAAgB;AAAA,IACjB;AAAA,IACA,IAAI,OAAO,MAAM;AAAA,MAChB,MAAM,QACL,OAAO,OAAO,SAAS,WACpB,OAAO,OACP,KAAK,GAAG,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAAA,MAC1D,QAAQ,gBAAgB,SAAS;AAAA,IAClC;AAAA,IACA,MAAM,MAAM,MAAM,QAAQ,OAAO,KAAK;AAAA,MACrC,QAAQ;AAAA,MACR;AAAA,MACA,MAAM,KAAK,UAAU;AAAA,QACpB,SAAS;AAAA,QACT,IAAI;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,MACT,CAAC;AAAA,IACF,CAAC;AAAA,IACD,IAAI,CAAC,IAAI,IAAI;AAAA,MACZ,MAAM,IAAI,MAAM,eAAe,uBAAuB,IAAI,QAAQ;AAAA,IACnE;AAAA,IACA,MAAM,OAAQ,MAAM,IAAI,KAAK;AAAA,IAI7B,IAAI,KAAK,OAAO;AAAA,MACf,MAAM,IAAI,MAAM,eAAe,iBAAiB,KAAK,MAAM,SAAS;AAAA,IACrE;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAGb,OAAO;AAAA,SACA,SAAQ,CAAC,MAAM;AAAA,MACpB,OAAO,WAAW,MAAM,IAAY,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC;AAAA;AAAA,SAElE,cAAa,CAAC,MAAM;AAAA,MACzB,MAAM,KAAK,MAAM,IAA4B,qBAAqB;AAAA,QACjE;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MACD,IAAI,CAAC,GAAG,WAAW;AAAA,QAClB,MAAM,IAAI,MACT,MAAM,wEACP;AAAA,MACD;AAAA,MACA,MAAM,QAAQ,MAAM,IAAsC,YAAY;AAAA,QACrE,GAAG;AAAA,QACH;AAAA,MACD,CAAC;AAAA,MACD,MAAM,SAAS,MAAM,IAAY,kBAAkB,CAAC,GAAG,WAAW,KAAK,CAAC;AAAA,MACxE,OAAO,mBAAmB;AAAA,QACzB;AAAA,QACA,SAAS,GAAG;AAAA,QACZ,WAAW;AAAA,QACX,QAAQ,MAAM;AAAA,QACd,cAAc,MAAM;AAAA,MACrB,CAAC;AAAA;AAAA,EAEH;AAAA;AAeM,SAAS,aAAa,CAAC,QAAoC;AAAA,EACjE,MAAM,UAAU,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAAA,EAE1C,eAAe,GAAG,CAAC,MAAiC;AAAA,IACnD,MAAM,MAAM,MAAM,QAAQ,GAAG,OAAO,MAAM;AAAA,IAC1C,IAAI,CAAC,IAAI,IAAI;AAAA,MACZ,MAAM,IAAI,MAAM,eAAe,qBAAqB,IAAI,QAAQ;AAAA,IACjE;AAAA,IACA,OAAO;AAAA;AAAA,EAGR,OAAO;AAAA,SACA,SAAQ,CAAC,MAAM;AAAA,MACpB,OAAO,YAAY,OAAO,MAAM,IAAI,OAAO,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA;AAAA,SAEjE,cAAa,CAAC,MAAM;AAAA,MACzB,MAAM,SAAU,OAAO,MAAM,IAAI,OAAO,MAAM,GAAG,KAAK;AAAA,MAOtD,IAAI,CAAC,OAAO,OAAO,WAAW;AAAA,QAC7B,MAAM,IAAI,MAAM,MAAM,qBAAqB;AAAA,MAC5C;AAAA,MACA,MAAM,eAAe,OAAO,OAAO;AAAA,MACnC,MAAM,UACL,OAAO,MAAM,IAAI,UAAU,qBAAqB,GAAG,KAAK,GACvD,KAAK;AAAA,MACP,MAAM,QAAS,OACd,MAAM,IAAI,UAAU,oBAAoB,GACvC,KAAK;AAAA,MACP,OAAO,mBAAmB;AAAA,QACzB;AAAA,QACA,SAAS;AAAA,QACT,WAAW;AAAA,QACX,QAAQ,OAAO,OAAO;AAAA,QACtB,cAAc;AAAA,MACf,CAAC;AAAA;AAAA,EAEH;AAAA;;ACpRD,SAAS,WAAW,CAAC,SAAyB;AAAA,EAC7C,IAAI,QAAQ;AAAA,EACZ,IAAI,IAAI;AAAA,EACR,OAAO,IAAI,GAAG;AAAA,IACb,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,IACnB;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAIR,IAAM,eAAe;AAErB,SAAS,YAAY,CAAC,OAAmB,OAAqB;AAAA,EAC7D,IAAI,MAAM,WAAW,IAAI;AAAA,IACxB,MAAM,IAAI,MAAM,GAAG,+BAA+B,MAAM,QAAQ;AAAA,EACjE;AAAA;AAeM,SAAS,qBAAqB,CAAC,QAIW;AAAA,EAChD,QAAQ,MAAM,MAAM,UAAU;AAAA,EAC9B,aAAa,MAAM,aAAa;AAAA,EAChC,aAAa,MAAM,aAAa;AAAA,EAEhC,IAAI,MAAM,UAAU,KAAK,MAAM,WAAW,MAAM,SAAS;AAAA,IACxD,MAAM,IAAI,MACT,YAAY,MAAM,qCAAqC,MAAM,SAC9D;AAAA,EACD;AAAA,EACA,IAAI,MAAM,SAAS,SAAS,cAAc;AAAA,IACzC,MAAM,IAAI,MACT,aAAa,MAAM,SAAS,uDAAuD,cACpF;AAAA,EACD;AAAA,EACA,MAAM,gBAAgB,YAAY,MAAM,OAAO;AAAA,EAC/C,IAAI,MAAM,SAAS,WAAW,eAAe;AAAA,IAC5C,MAAM,IAAI,MACT,aAAa,MAAM,SAAS,gCAAgC,MAAM,4BAA4B,eAC/F;AAAA,EACD;AAAA,EACA,YAAY,GAAG,YAAY,MAAM,SAAS,QAAQ,GAAG;AAAA,IACpD,aAAa,SAAS,WAAW,GAAG;AAAA,EACrC;AAAA,EAEA,OAAO;AAAA,IACN,SAAS,IAAI;AAAA,IACb,SAAS,IAAI;AAAA,IACb,OAAO,MAAM,OAAO;AAAA,IACpB,OAAO,MAAM,OAAO;AAAA,IACpB,OAAO,MAAM,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,EAC9C;AAAA;AAYD,SAAS,YAAY,CAAC,IAA8B,OAA2B;AAAA,EAC9E,IAAI,IAAI,SAAS,UAAU;AAAA,IAC1B,MAAM,IAAI,MAAM,YAAY,6BAA6B,IAAI,MAAM;AAAA,EACpE;AAAA,EACA,OAAO,WAAW,GAAG,KAAK;AAAA;AAUpB,SAAS,cAAc,CAAC,IAAmC;AAAA,EACjE,MAAM,QAAsB,GAAG,SAAS,OAAO,GAAG,QAAQ;AAAA,EAC1D,IAAI,MAAM,SAAS,SAAS;AAAA,IAC3B,MAAM,IAAI,MAAM,yBAAyB,MAAM,MAAM;AAAA,EACtD;AAAA,EACA,MAAM,SAAU,MAAkB;AAAA,EAClC,MAAM,SAAS,OAAO;AAAA,EACtB,IAAI,QAAQ,SAAS,QAAQ;AAAA,IAC5B,MAAM,IAAI,MACT,iDAAiD,QAAQ,MAC1D;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,QAAQ,aAAa,OAAO,QAAQ,sBAAsB;AAAA,IAC1D,QAAQ,OAAO;AAAA,IACf,MAAM,aAAa,OAAO,MAAM,oBAAoB;AAAA,EACrD;AAAA;AA4BD,IAAM,SAAS;AACf,IAAM,aAAa;AACnB,IAAM,iBAAiB;AACvB,IAAM,cAAc;AACpB,IAAM,WAAW;AACjB,IAAM,YAAY;AAClB,IAAM,OAAO;AACb,IAAM,OAAO;AAON,SAAS,iBAAiB,CAAC,QAAwC;AAAA,EACzE,MAAM,IAAI,OAAO;AAAA,EAGjB,IACC,MAAM,MACN,OAAO,OAAO,UACd,OAAO,OAAO,cACd,OAAO,OAAO,MACd,OAAO,QAAQ,kBACf,OAAO,QAAQ,aACd;AAAA,IACD,OAAO,EAAE,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACnD;AAAA,EAGA,IACC,MAAM,MACN,OAAO,OAAO,cACd,OAAO,OAAO,MACd,OAAO,QAAQ,UACd;AAAA,IACD,OAAO,EAAE,MAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EAClD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACpD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,SAAS,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EACnD;AAAA,EAGA,IAAI,MAAM,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,IAAM;AAAA,IACzD,OAAO,EAAE,MAAM,QAAQ,MAAM,OAAO,MAAM,GAAG,EAAE,EAAE;AAAA,EAClD;AAAA,EAGA,IAAI,KAAK,KAAK,OAAO,OAAO,WAAW;AAAA,IACtC,OAAO,EAAE,MAAM,aAAa,MAAM,OAAO,MAAM,CAAC,EAAE;AAAA,EACnD;AAAA,EAEA,OAAO,EAAE,MAAM,UAAU;AAAA;;ACtMnB,IAAM,wBAET,CAGJ;AAGO,SAAS,aAAa,CAC5B,SAC4B;AAAA,EAC5B,OAAO,sBAAsB;AAAA;AAIvB,SAAS,mBAAmB,CAAC,KAA4B;AAAA,EAC/D,OAAO,GAAG,IAAI,WAAW,IAAI;AAAA;;ACpBvB,IAAM,kBAAkB;AAAA,EAC9B,WAAW;AAAA,IACV;AAAA,MAEC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,MAAM,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,QAAQ,MAAM,UAAU;AAAA,MACjC;AAAA,MACA,SAAS;AAAA,QACR,UAAU;AAAA,UACT,IAAI;AAAA,YACH,OAAO;AAAA,cACN,EAAE,MAAM,UAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAE,EAAE;AAAA,cACnD,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,cAClC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,YAChD;AAAA,UACD;AAAA,UACA,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,IACA;AAAA,MAEC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC;AAAA,UACC,MAAM;AAAA,UACN,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE;AAAA,QAC9D;AAAA,MACD;AAAA,MACA,SAAS;AAAA,IACV;AAAA,IACA;AAAA,MAMC,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,QACL,EAAE,MAAM,UAAU,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QACjD,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA,QAClC,EAAE,MAAM,QAAQ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE;AAAA,QAC/C,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,QACpC;AAAA,UACC,MAAM;AAAA,UACN,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,GAAG,QAAQ,GAAG,EAAE;AAAA,QAC9D;AAAA,MACD;AAAA,MACA,SAAS,EAAE,UAAU,EAAE,IAAI,QAAQ,OAAO,UAAU,EAAE;AAAA,IACvD;AAAA,EACD;AACD;;ACtDA,eAAsB,kBAAkB,CAAC,QAAiC;AAAA,EACzE,MAAM,OAAQ,MAAM,OAAO,QAAQ,UAAU;AAAA,EAG7C,IAAI,OAAO,MAAM,sBAAsB,UAAU;AAAA,IAChD,MAAM,IAAI,uBACT,sEACD;AAAA,EACD;AAAA,EACA,OAAO,KAAK;AAAA;AAUb,eAAsB,gBAAgB,CACrC,QACA,OAAqB,CAAC,GACH;AAAA,EACnB,IAAI,KAAK,wBAAwB,MAAM;AAAA,IACtC,MAAM,IAAI,MACT,kIACD;AAAA,EACD;AAAA,EACA,MAAM,UAAU,MAAM,mBAAmB,MAAM;AAAA,EAC/C,OAAO,WAAW,KAAK;AAAA;;ACKxB,SAAS,aAAa,CAAC,IAA2B;AAAA,EACjD,MAAM,QAAQ,GAAG,SAAS,OAAO,GAAG,QAAQ;AAAA,EAC5C,IAAI,MAAM,SAAS;AAAA,IAAQ,OAAO;AAAA,EAClC,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO;AAAA,EACnC,MAAM,IAAI,MAAM,kCAAkC,MAAM,MAAM;AAAA;AAUxD,SAAS,eAAe,CAC9B,QACA,QACkB;AAAA,EAClB,QAAQ,UAAU,WAAW;AAAA,EAE7B,eAAe,iBAAiB,CAAC,OAIZ;AAAA,IACpB,MAAM,OAAO,sBAAsB,KAAK;AAAA,IACxC,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,MACzC;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA;AAAA,IACD,CAAC;AAAA,IACD,OAAO,cAAc,MAAM;AAAA;AAAA,EAG5B,OAAO;AAAA,IACN;AAAA,IACA,cAAc,CAAC,OAAO;AAAA,MACrB,MAAM,OAAO,iBAAiB,MAAM,MAAM,EAAE;AAAA,MAC5C,OAAO,kBAAkB;AAAA,QACxB,MAAM,MAAM;AAAA,QACZ;AAAA,QACA,OAAO,MAAM;AAAA,MACd,CAAC;AAAA;AAAA,SAEI,WAAU,CAAC,OAAO;AAAA,MACvB,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,QACzC;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,UACL,SAAS,MAAM,MAAM;AAAA,UACrB,OAAO,MAAM,MAAM;AAAA,UACnB,SAAS,MAAM,YAAY;AAAA,UAC3B,OAAO,MAAM,OAAO,OAAO;AAAA,UAC3B,OAAO,MAAM,OAAO,OAAO;AAAA,UAC3B,OAAO,MAAM,OAAO,SAAS,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,QACrD;AAAA,QACA;AAAA,MACD,CAAC;AAAA,MAED,IAAI,OAAO,SAAS;AAAA,QAAO,OAAO;AAAA,MAClC,OAAO,cAAc,MAAM;AAAA;AAAA,SAEtB,YAAW,CAAC,OAAO,MAAM;AAAA,MAC9B,MAAM,SAAS,MAAM,aAAa,QAAQ;AAAA,QACzC;AAAA,QACA,cAAc;AAAA,QACd,MAAM,CAAC,SAAS,KAAK,GAAG,OAAO,IAAI,CAAC;AAAA,QACpC;AAAA,MACD,CAAC;AAAA,MACD,IAAI,OAAO,SAAS,OAAO;AAAA,QAC1B,MAAM,IAAI,MACT,kCAAkC,KAAK,UAAU,OAAO,KAAK,GAC9D;AAAA,MACD;AAAA,MACA,OAAO,eAAe,MAAM;AAAA;AAAA,EAE9B;AAAA;;ACrDD,eAAsB,oBAAoB,CACzC,QACA,QACsC;AAAA,EACtC;AAAA,IACC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,qBAAqB;AAAA,IACrB;AAAA,MACG;AAAA,EAEJ,MAAM,UAAU,cAAc,OAAO;AAAA,EACrC,MAAM,mBACL,aAAa,UAAU,oBAAoB,OAAO,IAAI;AAAA,EACvD,IAAI,CAAC,kBAAkB;AAAA,IACtB,MAAM,IAAI,MACT,+BAA+B,kHAChC;AAAA,EACD;AAAA,EAEA,MAAM,QACL,WAAW,SACR,OAAO,QACP,MAAM,aAAa,OAAO,QAAQ,EAAE,MAAM,OAAO,MAAM,KAAK,CAAC;AAAA,EAEjE,MAAM,WAAW,gBAAgB,QAAQ;AAAA,IACxC,UAAU;AAAA,IACV;AAAA,EACD,CAAC;AAAA,EACD,MAAM,QAAQ,qBACX,MAAM,SAAS,WAAW,KAAK,IAC/B,MAAM,SAAS,eAAe,KAAK;AAAA,EAEtC,MAAM,WAAW,eAAe,MAAM,KAAK;AAAA,EAC3C,MAAM,MAAM,SAAS,QAAQ;AAAA,EAC7B,IAAI,CAAC,KAAK;AAAA,IACT,MAAM,IAAI,MACT,QAAQ,6BAA6B,SAAS,QAAQ,iBACvD;AAAA,EACD;AAAA,EACA,MAAM,eAAe,kBAAkB,IAAI,YAAY;AAAA,EACvD,MAAM,UAAU,qBAAqB,cAAc,OAAO;AAAA,EAC1D,MAAM,SAA+B;AAAA,IACpC;AAAA,IACA,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,MAAM,aAAa;AAAA,IACnB;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,QAAQ,WAAW,aAAa,IAAI,UAAU,OAAO;AAAA,EACtE,MAAM,YAAY,QAAQ,YAAY,aAAa,YAAY,OAAO;AAAA,EACtE,MAAM,WAAW,SAAS,YAAY;AAAA,EAEtC,OAAO,EAAE,UAAU,OAAO,QAAQ,MAAM;AAAA;",
|
|
15
|
+
"debugId": "843E9C827C94D94764756E2164756E21",
|
|
16
16
|
"names": []
|
|
17
17
|
}
|
package/dist/src/bns/index.cjs
CHANGED
|
@@ -391,8 +391,10 @@ async function canRegister(client, nameOrFQN) {
|
|
|
391
391
|
name: stringToBytes(name)
|
|
392
392
|
});
|
|
393
393
|
return false;
|
|
394
|
-
} catch {
|
|
395
|
-
|
|
394
|
+
} catch (e) {
|
|
395
|
+
if (e instanceof ContractResponseError)
|
|
396
|
+
return true;
|
|
397
|
+
throw e;
|
|
396
398
|
}
|
|
397
399
|
}
|
|
398
400
|
async function getNamePrice(client, nameOrFQN) {
|
|
@@ -539,8 +541,10 @@ async function getZonefile(client, nameOrFQN) {
|
|
|
539
541
|
namespace: stringToBytes(namespace)
|
|
540
542
|
});
|
|
541
543
|
return result;
|
|
542
|
-
} catch {
|
|
543
|
-
|
|
544
|
+
} catch (e) {
|
|
545
|
+
if (e instanceof ContractResponseError)
|
|
546
|
+
return null;
|
|
547
|
+
throw e;
|
|
544
548
|
}
|
|
545
549
|
}
|
|
546
550
|
async function updateZonefile(client, params) {
|
|
@@ -601,5 +605,5 @@ function bns() {
|
|
|
601
605
|
});
|
|
602
606
|
}
|
|
603
607
|
|
|
604
|
-
//# debugId=
|
|
608
|
+
//# debugId=9A035D40A860B3C864756E2164756E21
|
|
605
609
|
//# sourceMappingURL=index.cjs.map
|