@did-btcr2/method 0.13.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/LICENSE +373 -0
- package/README.md +7 -0
- package/dist/browser.js +2364 -0
- package/dist/browser.js.map +7 -0
- package/dist/browser.mjs +2364 -0
- package/dist/browser.mjs.map +7 -0
- package/dist/cjs/bitcoin/constants.js +20 -0
- package/dist/cjs/bitcoin/constants.js.map +1 -0
- package/dist/cjs/bitcoin/errors.js +11 -0
- package/dist/cjs/bitcoin/errors.js.map +1 -0
- package/dist/cjs/bitcoin/index.js +95 -0
- package/dist/cjs/bitcoin/index.js.map +1 -0
- package/dist/cjs/bitcoin/interface.js +2 -0
- package/dist/cjs/bitcoin/interface.js.map +1 -0
- package/dist/cjs/bitcoin/network.js +17 -0
- package/dist/cjs/bitcoin/network.js.map +1 -0
- package/dist/cjs/bitcoin/rest-client.js +289 -0
- package/dist/cjs/bitcoin/rest-client.js.map +1 -0
- package/dist/cjs/bitcoin/rpc-client.js +722 -0
- package/dist/cjs/bitcoin/rpc-client.js.map +1 -0
- package/dist/cjs/bitcoin/taproot.js +219 -0
- package/dist/cjs/bitcoin/taproot.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/coordinator.js +120 -0
- package/dist/cjs/btcr2/beacon/aggregation/coordinator.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/advert.js +24 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/advert.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/base.js +37 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/base.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/cohort-set.js +25 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/cohort-set.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/keygen.js +8 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/keygen.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/opt-in.js +23 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/opt-in.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/sign.js +7 -0
- package/dist/cjs/btcr2/beacon/aggregation/messages/sign.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/index.js +92 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/index.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/status.js +8 -0
- package/dist/cjs/btcr2/beacon/aggregation/models/cohort/status.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/participant.js +2 -0
- package/dist/cjs/btcr2/beacon/aggregation/participant.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/nostr.js +57 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/nostr.js.map +1 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/service.js +2 -0
- package/dist/cjs/btcr2/beacon/aggregation/protocol/service.js.map +1 -0
- package/dist/cjs/btcr2/beacon/cid-aggregate.js +116 -0
- package/dist/cjs/btcr2/beacon/cid-aggregate.js.map +1 -0
- package/dist/cjs/btcr2/beacon/factory.js +30 -0
- package/dist/cjs/btcr2/beacon/factory.js.map +1 -0
- package/dist/cjs/btcr2/beacon/singleton.js +220 -0
- package/dist/cjs/btcr2/beacon/singleton.js.map +1 -0
- package/dist/cjs/btcr2/beacon/smt-aggregate.js +126 -0
- package/dist/cjs/btcr2/beacon/smt-aggregate.js.map +1 -0
- package/dist/cjs/btcr2/crud/create.js +102 -0
- package/dist/cjs/btcr2/crud/create.js.map +1 -0
- package/dist/cjs/btcr2/crud/deactivate.js +14 -0
- package/dist/cjs/btcr2/crud/deactivate.js.map +1 -0
- package/dist/cjs/btcr2/crud/read.js +686 -0
- package/dist/cjs/btcr2/crud/read.js.map +1 -0
- package/dist/cjs/btcr2/crud/update.js +195 -0
- package/dist/cjs/btcr2/crud/update.js.map +1 -0
- package/dist/cjs/btcr2/key-manager/index.js +290 -0
- package/dist/cjs/btcr2/key-manager/index.js.map +1 -0
- package/dist/cjs/btcr2/key-manager/interface.js +2 -0
- package/dist/cjs/btcr2/key-manager/interface.js.map +1 -0
- package/dist/cjs/did-btcr2.js +222 -0
- package/dist/cjs/did-btcr2.js.map +1 -0
- package/dist/cjs/index.js +27 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/beacon.js +41 -0
- package/dist/cjs/interfaces/beacon.js.map +1 -0
- package/dist/cjs/interfaces/crud.js +2 -0
- package/dist/cjs/interfaces/crud.js.map +1 -0
- package/dist/cjs/interfaces/ibeacon.js +2 -0
- package/dist/cjs/interfaces/ibeacon.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/bitcoin.js +62 -0
- package/dist/cjs/types/bitcoin.js.map +1 -0
- package/dist/cjs/types/crud.js +2 -0
- package/dist/cjs/types/crud.js.map +1 -0
- package/dist/cjs/utils/appendix.js +221 -0
- package/dist/cjs/utils/appendix.js.map +1 -0
- package/dist/cjs/utils/beacons.js +206 -0
- package/dist/cjs/utils/beacons.js.map +1 -0
- package/dist/cjs/utils/did-document-builder.js +61 -0
- package/dist/cjs/utils/did-document-builder.js.map +1 -0
- package/dist/cjs/utils/did-document.js +380 -0
- package/dist/cjs/utils/did-document.js.map +1 -0
- package/dist/cjs/utils/general.js +195 -0
- package/dist/cjs/utils/general.js.map +1 -0
- package/dist/cjs/utils/identifier.js +238 -0
- package/dist/cjs/utils/identifier.js.map +1 -0
- package/dist/esm/bitcoin/constants.js +20 -0
- package/dist/esm/bitcoin/constants.js.map +1 -0
- package/dist/esm/bitcoin/errors.js +11 -0
- package/dist/esm/bitcoin/errors.js.map +1 -0
- package/dist/esm/bitcoin/index.js +95 -0
- package/dist/esm/bitcoin/index.js.map +1 -0
- package/dist/esm/bitcoin/interface.js +2 -0
- package/dist/esm/bitcoin/interface.js.map +1 -0
- package/dist/esm/bitcoin/network.js +17 -0
- package/dist/esm/bitcoin/network.js.map +1 -0
- package/dist/esm/bitcoin/rest-client.js +289 -0
- package/dist/esm/bitcoin/rest-client.js.map +1 -0
- package/dist/esm/bitcoin/rpc-client.js +722 -0
- package/dist/esm/bitcoin/rpc-client.js.map +1 -0
- package/dist/esm/bitcoin/taproot.js +219 -0
- package/dist/esm/bitcoin/taproot.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/coordinator.js +120 -0
- package/dist/esm/btcr2/beacon/aggregation/coordinator.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/advert.js +24 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/advert.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/base.js +37 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/base.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/cohort-set.js +25 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/cohort-set.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/keygen.js +8 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/keygen.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/opt-in.js +23 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/opt-in.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/sign.js +7 -0
- package/dist/esm/btcr2/beacon/aggregation/messages/sign.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/index.js +92 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/index.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/status.js +8 -0
- package/dist/esm/btcr2/beacon/aggregation/models/cohort/status.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/participant.js +2 -0
- package/dist/esm/btcr2/beacon/aggregation/participant.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/nostr.js +57 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/nostr.js.map +1 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/service.js +2 -0
- package/dist/esm/btcr2/beacon/aggregation/protocol/service.js.map +1 -0
- package/dist/esm/btcr2/beacon/cid-aggregate.js +116 -0
- package/dist/esm/btcr2/beacon/cid-aggregate.js.map +1 -0
- package/dist/esm/btcr2/beacon/factory.js +30 -0
- package/dist/esm/btcr2/beacon/factory.js.map +1 -0
- package/dist/esm/btcr2/beacon/singleton.js +220 -0
- package/dist/esm/btcr2/beacon/singleton.js.map +1 -0
- package/dist/esm/btcr2/beacon/smt-aggregate.js +126 -0
- package/dist/esm/btcr2/beacon/smt-aggregate.js.map +1 -0
- package/dist/esm/btcr2/crud/create.js +102 -0
- package/dist/esm/btcr2/crud/create.js.map +1 -0
- package/dist/esm/btcr2/crud/deactivate.js +14 -0
- package/dist/esm/btcr2/crud/deactivate.js.map +1 -0
- package/dist/esm/btcr2/crud/read.js +686 -0
- package/dist/esm/btcr2/crud/read.js.map +1 -0
- package/dist/esm/btcr2/crud/update.js +195 -0
- package/dist/esm/btcr2/crud/update.js.map +1 -0
- package/dist/esm/btcr2/key-manager/index.js +290 -0
- package/dist/esm/btcr2/key-manager/index.js.map +1 -0
- package/dist/esm/btcr2/key-manager/interface.js +2 -0
- package/dist/esm/btcr2/key-manager/interface.js.map +1 -0
- package/dist/esm/did-btcr2.js +222 -0
- package/dist/esm/did-btcr2.js.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/beacon.js +41 -0
- package/dist/esm/interfaces/beacon.js.map +1 -0
- package/dist/esm/interfaces/crud.js +2 -0
- package/dist/esm/interfaces/crud.js.map +1 -0
- package/dist/esm/interfaces/ibeacon.js +2 -0
- package/dist/esm/interfaces/ibeacon.js.map +1 -0
- package/dist/esm/types/bitcoin.js +62 -0
- package/dist/esm/types/bitcoin.js.map +1 -0
- package/dist/esm/types/crud.js +2 -0
- package/dist/esm/types/crud.js.map +1 -0
- package/dist/esm/utils/appendix.js +221 -0
- package/dist/esm/utils/appendix.js.map +1 -0
- package/dist/esm/utils/beacons.js +206 -0
- package/dist/esm/utils/beacons.js.map +1 -0
- package/dist/esm/utils/did-document-builder.js +61 -0
- package/dist/esm/utils/did-document-builder.js.map +1 -0
- package/dist/esm/utils/did-document.js +380 -0
- package/dist/esm/utils/did-document.js.map +1 -0
- package/dist/esm/utils/general.js +195 -0
- package/dist/esm/utils/general.js.map +1 -0
- package/dist/esm/utils/identifier.js +238 -0
- package/dist/esm/utils/identifier.js.map +1 -0
- package/dist/types/bitcoin/constants.d.ts +19 -0
- package/dist/types/bitcoin/constants.d.ts.map +1 -0
- package/dist/types/bitcoin/errors.d.ts +5 -0
- package/dist/types/bitcoin/errors.d.ts.map +1 -0
- package/dist/types/bitcoin/index.d.ts +75 -0
- package/dist/types/bitcoin/index.d.ts.map +1 -0
- package/dist/types/bitcoin/interface.d.ts +86 -0
- package/dist/types/bitcoin/interface.d.ts.map +1 -0
- package/dist/types/bitcoin/network.d.ts +2 -0
- package/dist/types/bitcoin/network.d.ts.map +1 -0
- package/dist/types/bitcoin/rest-client.d.ts +268 -0
- package/dist/types/bitcoin/rest-client.d.ts.map +1 -0
- package/dist/types/bitcoin/rpc-client.d.ts +506 -0
- package/dist/types/bitcoin/rpc-client.d.ts.map +1 -0
- package/dist/types/bitcoin/taproot.d.ts +34 -0
- package/dist/types/bitcoin/taproot.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/coordinator.d.ts +74 -0
- package/dist/types/btcr2/beacon/aggregation/coordinator.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/advert.d.ts +22 -0
- package/dist/types/btcr2/beacon/aggregation/messages/advert.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/base.d.ts +36 -0
- package/dist/types/btcr2/beacon/aggregation/messages/base.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/cohort-set.d.ts +23 -0
- package/dist/types/btcr2/beacon/aggregation/messages/cohort-set.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/keygen.d.ts +6 -0
- package/dist/types/btcr2/beacon/aggregation/messages/keygen.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/opt-in.d.ts +22 -0
- package/dist/types/btcr2/beacon/aggregation/messages/opt-in.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/messages/sign.d.ts +5 -0
- package/dist/types/btcr2/beacon/aggregation/messages/sign.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/index.d.ts +77 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/index.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/status.d.ts +7 -0
- package/dist/types/btcr2/beacon/aggregation/models/cohort/status.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/participant.d.ts +1 -0
- package/dist/types/btcr2/beacon/aggregation/participant.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/nostr.d.ts +36 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/nostr.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/service.d.ts +6 -0
- package/dist/types/btcr2/beacon/aggregation/protocol/service.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/cid-aggregate.d.ts +103 -0
- package/dist/types/btcr2/beacon/cid-aggregate.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/factory.d.ts +17 -0
- package/dist/types/btcr2/beacon/factory.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/singleton.d.ts +93 -0
- package/dist/types/btcr2/beacon/singleton.d.ts.map +1 -0
- package/dist/types/btcr2/beacon/smt-aggregate.d.ts +112 -0
- package/dist/types/btcr2/beacon/smt-aggregate.d.ts.map +1 -0
- package/dist/types/btcr2/crud/create.d.ts +92 -0
- package/dist/types/btcr2/crud/create.d.ts.map +1 -0
- package/dist/types/btcr2/crud/deactivate.d.ts +13 -0
- package/dist/types/btcr2/crud/deactivate.d.ts.map +1 -0
- package/dist/types/btcr2/crud/read.d.ts +341 -0
- package/dist/types/btcr2/crud/read.d.ts.map +1 -0
- package/dist/types/btcr2/crud/update.d.ts +83 -0
- package/dist/types/btcr2/crud/update.d.ts.map +1 -0
- package/dist/types/btcr2/key-manager/index.d.ts +145 -0
- package/dist/types/btcr2/key-manager/index.d.ts.map +1 -0
- package/dist/types/btcr2/key-manager/interface.d.ts +113 -0
- package/dist/types/btcr2/key-manager/interface.d.ts.map +1 -0
- package/dist/types/did-btcr2.d.ts +117 -0
- package/dist/types/did-btcr2.d.ts.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/beacon.d.ts +57 -0
- package/dist/types/interfaces/beacon.d.ts.map +1 -0
- package/dist/types/interfaces/crud.d.ts +35 -0
- package/dist/types/interfaces/crud.d.ts.map +1 -0
- package/dist/types/interfaces/ibeacon.d.ts +66 -0
- package/dist/types/interfaces/ibeacon.d.ts.map +1 -0
- package/dist/types/types/bitcoin.d.ts +827 -0
- package/dist/types/types/bitcoin.d.ts.map +1 -0
- package/dist/types/types/crud.d.ts +38 -0
- package/dist/types/types/crud.d.ts.map +1 -0
- package/dist/types/utils/appendix.d.ts +118 -0
- package/dist/types/utils/appendix.d.ts.map +1 -0
- package/dist/types/utils/beacons.d.ts +156 -0
- package/dist/types/utils/beacons.d.ts.map +1 -0
- package/dist/types/utils/did-document-builder.d.ts +13 -0
- package/dist/types/utils/did-document-builder.d.ts.map +1 -0
- package/dist/types/utils/did-document.d.ts +211 -0
- package/dist/types/utils/did-document.d.ts.map +1 -0
- package/dist/types/utils/general.d.ts +85 -0
- package/dist/types/utils/general.d.ts.map +1 -0
- package/dist/types/utils/identifier.d.ts +59 -0
- package/dist/types/utils/identifier.d.ts.map +1 -0
- package/package.json +137 -0
- package/src/bitcoin/constants.ts +19 -0
- package/src/bitcoin/errors.ts +10 -0
- package/src/bitcoin/index.ts +154 -0
- package/src/bitcoin/interface.ts +160 -0
- package/src/bitcoin/network.ts +17 -0
- package/src/bitcoin/rest-client.ts +415 -0
- package/src/bitcoin/rpc-client.ts +888 -0
- package/src/bitcoin/taproot.ts +237 -0
- package/src/btcr2/beacon/aggregation/coordinator.ts +135 -0
- package/src/btcr2/beacon/aggregation/messages/advert.ts +36 -0
- package/src/btcr2/beacon/aggregation/messages/base.ts +59 -0
- package/src/btcr2/beacon/aggregation/messages/cohort-set.ts +37 -0
- package/src/btcr2/beacon/aggregation/messages/keygen.ts +8 -0
- package/src/btcr2/beacon/aggregation/messages/opt-in.ts +35 -0
- package/src/btcr2/beacon/aggregation/messages/sign.ts +7 -0
- package/src/btcr2/beacon/aggregation/models/cohort/index.ts +112 -0
- package/src/btcr2/beacon/aggregation/models/cohort/status.ts +7 -0
- package/src/btcr2/beacon/aggregation/participant.ts +0 -0
- package/src/btcr2/beacon/aggregation/protocol/nostr.ts +81 -0
- package/src/btcr2/beacon/aggregation/protocol/service.ts +6 -0
- package/src/btcr2/beacon/cid-aggregate.ts +154 -0
- package/src/btcr2/beacon/factory.ts +36 -0
- package/src/btcr2/beacon/singleton.ts +257 -0
- package/src/btcr2/beacon/smt-aggregate.ts +136 -0
- package/src/btcr2/crud/create.ts +160 -0
- package/src/btcr2/crud/deactivate.ts +13 -0
- package/src/btcr2/crud/read.ts +946 -0
- package/src/btcr2/crud/update.ts +277 -0
- package/src/btcr2/key-manager/index.ts +364 -0
- package/src/btcr2/key-manager/interface.ts +129 -0
- package/src/canonicalize.d.ts +6 -0
- package/src/did-btcr2.ts +288 -0
- package/src/index.ts +34 -0
- package/src/interfaces/beacon.ts +68 -0
- package/src/interfaces/crud.ts +36 -0
- package/src/interfaces/ibeacon.ts +76 -0
- package/src/types/bitcoin.ts +1028 -0
- package/src/types/crud.ts +41 -0
- package/src/utils/appendix.ts +257 -0
- package/src/utils/beacons.ts +276 -0
- package/src/utils/did-document-builder.ts +73 -0
- package/src/utils/did-document.ts +474 -0
- package/src/utils/general.ts +204 -0
- package/src/utils/identifier.ts +276 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { Btcr2Error } from '@did-btcr2/common';
|
|
2
|
+
import { BitcoinRpcError } from './errors.js';
|
|
3
|
+
import { DEFAULT_REST_CLIENT_CONFIG } from './constants.js';
|
|
4
|
+
;
|
|
5
|
+
export class RestClientConfig {
|
|
6
|
+
host;
|
|
7
|
+
headers;
|
|
8
|
+
constructor({ host, headers }) {
|
|
9
|
+
this.host = host;
|
|
10
|
+
this.headers = headers;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
;
|
|
14
|
+
/**
|
|
15
|
+
* Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API.
|
|
16
|
+
* @class BitcoinRest
|
|
17
|
+
* @type {BitcoinRest}
|
|
18
|
+
*/
|
|
19
|
+
export default class BitcoinRest {
|
|
20
|
+
/**
|
|
21
|
+
* The encapsulated {@link RestClientConfig} object.
|
|
22
|
+
* @private
|
|
23
|
+
* @type {RestClientConfig}
|
|
24
|
+
*/
|
|
25
|
+
_config;
|
|
26
|
+
/**
|
|
27
|
+
* The api calls related to bitcoin transactions.
|
|
28
|
+
* @type {BitcoinTransaction}
|
|
29
|
+
*/
|
|
30
|
+
transaction;
|
|
31
|
+
/**
|
|
32
|
+
* The api calls related to bitcoin blocks.
|
|
33
|
+
* @type {BitcoinBlock}
|
|
34
|
+
*/
|
|
35
|
+
block;
|
|
36
|
+
/**
|
|
37
|
+
* The api calls related to bitcoin addresses.
|
|
38
|
+
* @type {BitcoinAddress}
|
|
39
|
+
*/
|
|
40
|
+
address;
|
|
41
|
+
/**
|
|
42
|
+
* The API call method that can be used to make requests to the REST API.
|
|
43
|
+
* @returns {Promise<any>} A promise resolving to the response data.
|
|
44
|
+
*/
|
|
45
|
+
api = this.call;
|
|
46
|
+
constructor(config) {
|
|
47
|
+
this._config = new RestClientConfig(config);
|
|
48
|
+
this.api = this.call.bind(this);
|
|
49
|
+
this.transaction = new BitcoinTransaction(this.api);
|
|
50
|
+
this.block = new BitcoinBlock(this.api);
|
|
51
|
+
this.address = new BitcoinAddress(this.api);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the configuration object.
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
get config() {
|
|
58
|
+
const config = this._config;
|
|
59
|
+
return config;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Static method connects to a bitcoin node running a esplora REST API.
|
|
63
|
+
*
|
|
64
|
+
* @param {RestClientConfig} config The configuration object for the client (optional).
|
|
65
|
+
* @returns A new {@link BitcoinRest} instance.
|
|
66
|
+
* @example
|
|
67
|
+
* ```
|
|
68
|
+
* const rest = BitcoinRest.connect();
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
static connect(config) {
|
|
72
|
+
return new BitcoinRest(config ?? DEFAULT_REST_CLIENT_CONFIG);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Make a REST API call to the configured Bitcoin node.
|
|
76
|
+
* @private
|
|
77
|
+
* @param {RestApiCallParams} params The parameters for the API call. See {@link RestApiCallParams} for details.
|
|
78
|
+
* @param {string} [params.path] The path to the API endpoint (required).
|
|
79
|
+
* @param {string} [params.url] The full URL to the API endpoint (optional).
|
|
80
|
+
* @param {string} [params.method] The HTTP method to use (default is 'GET').
|
|
81
|
+
* @param {any} [params.body] The body of the request (optional).
|
|
82
|
+
* @param {any} [params.headers] Additional headers to include in the request (optional).
|
|
83
|
+
* @returns {Promise<any>} A promise resolving to the response data.
|
|
84
|
+
*/
|
|
85
|
+
async call({ path, url, method, body, headers }) {
|
|
86
|
+
// Construct the URL if not provided
|
|
87
|
+
url ??= `${this.config.host.replaceEnd('/')}${path}`;
|
|
88
|
+
// Set the method to GET if not provided
|
|
89
|
+
method ??= 'GET';
|
|
90
|
+
// Construct the request options
|
|
91
|
+
const requestInit = {
|
|
92
|
+
method,
|
|
93
|
+
headers: headers ?? {
|
|
94
|
+
'Content-Type': 'application/json',
|
|
95
|
+
...this.config.headers,
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
// If the method is POST or PUT, add the body to the request
|
|
99
|
+
if (body) {
|
|
100
|
+
requestInit.body = JSON.is(body) ? JSON.stringify(body) : body;
|
|
101
|
+
requestInit.method = 'POST';
|
|
102
|
+
}
|
|
103
|
+
// Make the request
|
|
104
|
+
const response = await fetch(url, requestInit);
|
|
105
|
+
// Check if the response is a text/plain response
|
|
106
|
+
const data = (response.headers.get('Content-Type') ?? 'json') === 'text/plain'
|
|
107
|
+
? await response.text()
|
|
108
|
+
: await response.json();
|
|
109
|
+
// Check if the response is ok (status in the range 200-299)
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
throw new Btcr2Error(`Request to ${url} failed: ${response.status} - ${response.statusText}`, 'FAILED_HTTP_REQUEST', { data, response });
|
|
112
|
+
}
|
|
113
|
+
return data;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export class BitcoinTransaction {
|
|
117
|
+
api;
|
|
118
|
+
constructor(api) {
|
|
119
|
+
this.api = api;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Returns the transaction in JSON format.
|
|
123
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxid | Esplora GET /tx/:txid } for details.
|
|
124
|
+
* @param {string} txid The transaction id (required).
|
|
125
|
+
* @returns {GetRawTransaction} A promise resolving to data about a transaction in the form specified by verbosity.
|
|
126
|
+
*/
|
|
127
|
+
async get(txid) {
|
|
128
|
+
return await this.api({ path: `/tx/${txid}` });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Returns the transaction in JSON format.
|
|
132
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxid | Esplora GET /tx/:txid } for details.
|
|
133
|
+
* @param {string} txid The transaction id (required).
|
|
134
|
+
* @returns {GetRawTransaction} A promise resolving to data about a transaction in the form specified by verbosity.
|
|
135
|
+
*/
|
|
136
|
+
async isConfirmed(txid) {
|
|
137
|
+
const tx = await this.get(txid);
|
|
138
|
+
return tx.status.confirmed;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns the raw transaction in hex or as binary data.
|
|
142
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxidhex | Esplora GET /tx/:txid/hex } and
|
|
143
|
+
* {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxidraw | Esplora GET /tx/:txid/raw } for details.
|
|
144
|
+
* @param {string} txid The transaction id (required).
|
|
145
|
+
* @returns {Promise<RawTransactionRest | string>} A promise resolving to the raw transaction in the specified format.
|
|
146
|
+
*/
|
|
147
|
+
async getHex(txid) {
|
|
148
|
+
return await this.api({ path: `/tx/${txid}/hex` });
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Returns the raw transaction in hex or as binary data.
|
|
152
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxidhex | Esplora GET /tx/:txid/hex } and
|
|
153
|
+
* {@link https://github.com/blockstream/esplora/blob/master/API.md#get-txtxidraw | Esplora GET /tx/:txid/raw } for details.
|
|
154
|
+
* @param {string} txid The transaction id (required).
|
|
155
|
+
* @returns {Promise<RawTransactionRest | string>} A promise resolving to the raw transaction in the specified format.
|
|
156
|
+
*/
|
|
157
|
+
async getRaw(txid) {
|
|
158
|
+
return await this.api({ path: `/tx/${txid}/raw` });
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Broadcast a raw transaction to the network. The transaction should be provided as hex in the request body. The txid
|
|
162
|
+
* will be returned on success.
|
|
163
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#post-tx | Esplora POST /tx } for details.
|
|
164
|
+
* @param {string} tx The raw transaction in hex format (required).
|
|
165
|
+
* @returns {Promise<string>} The transaction id of the broadcasted transaction.
|
|
166
|
+
*/
|
|
167
|
+
async send(tx) {
|
|
168
|
+
return await this.api({ path: '/tx', method: 'POST', body: tx, headers: { 'Content-Type': 'text/plain' } });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Implements a strongly-typed BitcoinRest to connect to remote bitcoin node via REST API for block-related operations.
|
|
173
|
+
* @class BitcoinBlock
|
|
174
|
+
* @type {BitcoinBlock}
|
|
175
|
+
*/
|
|
176
|
+
export class BitcoinBlock {
|
|
177
|
+
api;
|
|
178
|
+
constructor(api) {
|
|
179
|
+
this.api = api;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Returns the blockheight of the most-work fully-validated chain. The genesis block has height 0.
|
|
183
|
+
* @returns {Blockheight} The number of the blockheight with the most-work of the fully-validated chain.
|
|
184
|
+
*/
|
|
185
|
+
async count() {
|
|
186
|
+
return await this.api({ path: '/blocks/tip/height' });
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Returns the block data associated with a `blockhash` of a valid block.
|
|
190
|
+
* @param {GetBlockParams} params See {@link GetBlockParams} for details.
|
|
191
|
+
* @param {?string} params.blockhash The blockhash of the block to query.
|
|
192
|
+
* @param {?number} params.height The block height of the block to query.
|
|
193
|
+
* @returns {BlockResponse} A promise resolving to a {@link BlockResponse} formatted depending on `verbosity` level.
|
|
194
|
+
* @throws {BitcoinRpcError} If neither `blockhash` nor `height` is provided.
|
|
195
|
+
*/
|
|
196
|
+
async get({ blockhash, height }) {
|
|
197
|
+
// Check if blockhash or height is provided, if neither throw an error
|
|
198
|
+
if (!blockhash && height === undefined) {
|
|
199
|
+
throw new BitcoinRpcError('blockhash or height required', 'INVALID_PARAMS_GET_BLOCK', { blockhash, height });
|
|
200
|
+
}
|
|
201
|
+
// If height is provided, get the blockhash
|
|
202
|
+
blockhash ??= await this.getHash(height);
|
|
203
|
+
if (!blockhash || typeof blockhash !== 'string') {
|
|
204
|
+
return undefined;
|
|
205
|
+
}
|
|
206
|
+
// Get the block data
|
|
207
|
+
return await this.api({ path: `/block/${blockhash}` });
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get the block hash for a given block height.
|
|
211
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-block-heightheight | Esplora GET /block-height/:height } for details.
|
|
212
|
+
* @param {number} height The block height (required).
|
|
213
|
+
* @returns {Promise<string>} The hash of the block currently at height..
|
|
214
|
+
*/
|
|
215
|
+
async getHash(height) {
|
|
216
|
+
return await this.api({ path: `/block-height/${height}` });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
export class BitcoinAddress {
|
|
220
|
+
api;
|
|
221
|
+
constructor(api) {
|
|
222
|
+
this.api = api;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get transaction history for the specified address/scripthash, sorted with newest first.
|
|
226
|
+
* Returns up to 50 mempool transactions plus the first 25 confirmed transactions.
|
|
227
|
+
* See {@link https://github.com/blockstream/esplora/blob/master/API.md#get-addressaddresstxs | Esplora GET /address/:address/txs } for details.
|
|
228
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
229
|
+
* @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
|
|
230
|
+
*/
|
|
231
|
+
async getTxs(addressOrScripthash) {
|
|
232
|
+
return await this.api({ path: `/address/${addressOrScripthash}/txs` });
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Calls getAddressTxs and checks if any funds come back.
|
|
236
|
+
* Toggle if those funds are confirmed.
|
|
237
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
238
|
+
* @returns {Promise<boolean>} True if the address has any funds, false otherwise.
|
|
239
|
+
*/
|
|
240
|
+
async isFundedAddress(addressOrScripthash) {
|
|
241
|
+
const txs = await this.getConfirmedTxs(addressOrScripthash);
|
|
242
|
+
const confirmed = txs.filter((tx) => tx.status.confirmed);
|
|
243
|
+
return !!(confirmed && confirmed.length);
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Get unconfirmed transaction history for the specified address/scripthash.
|
|
247
|
+
* Returns up to 50 transactions (no paging).
|
|
248
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
249
|
+
* @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
|
|
250
|
+
*/
|
|
251
|
+
async getTxsMempool(addressOrScripthash) {
|
|
252
|
+
return await this.api({ path: `/address/${addressOrScripthash}/txs/mempool` });
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get information about an address/scripthash.
|
|
256
|
+
* Available fields: address/scripthash, chain_stats and mempool_stats.
|
|
257
|
+
* {chain,mempool}_stats each contain an object with tx_count, funded_txo_count, funded_txo_sum, spent_txo_count and spent_txo_sum.
|
|
258
|
+
* Elements-based chains don't have the {funded,spent}_txo_sum fields.
|
|
259
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
260
|
+
* @returns {Promise<AddressInfo>} A promise resolving to an {@link AddressInfo} object.
|
|
261
|
+
*/
|
|
262
|
+
async getInfo(addressOrScripthash) {
|
|
263
|
+
return await this.api({ path: `/address/${addressOrScripthash}` });
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get confirmed transaction history for the specified address/scripthash, sorted with newest first.
|
|
267
|
+
* Returns 25 transactions per page. More can be requested by specifying the last txid seen by the previous query.
|
|
268
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
269
|
+
* @param lastSeenTxId The last transaction id seen by the previous query (optional).
|
|
270
|
+
* @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
|
|
271
|
+
*/
|
|
272
|
+
async getConfirmedTxs(addressOrScripthash, lastSeenTxId) {
|
|
273
|
+
return await this.api({
|
|
274
|
+
path: lastSeenTxId
|
|
275
|
+
? `/address/${addressOrScripthash}/txs/chain/${lastSeenTxId}`
|
|
276
|
+
: `/address/${addressOrScripthash}/txs/chain`
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get the list of unspent transaction outputs associated with the address/scripthash.
|
|
281
|
+
* See {@link https://github.com/Blockstream/esplora/blob/master/API.md#get-addressaddressutxo | Esplora GET /address/:address/utxo } for details.
|
|
282
|
+
* @param {string} addressOrScripthash The address or scripthash to check.
|
|
283
|
+
* @returns {Promise<Array<RawTransactionRest>>} A promise resolving to an array of {@link RawTransactionRest} objects.
|
|
284
|
+
*/
|
|
285
|
+
async getUtxos(addressOrScripthash) {
|
|
286
|
+
return await this.api({ path: `/address/${addressOrScripthash}/utxo` });
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=rest-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest-client.js","sourceRoot":"","sources":["../../../src/bitcoin/rest-client.ts"],"names":[],"mappings":"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"}
|