@bitgo-beta/abstract-utxo 1.6.1-alpha.40 → 1.6.1-alpha.400
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/dist/src/abstractUtxoCoin.d.ts +209 -98
- package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
- package/dist/src/abstractUtxoCoin.js +314 -541
- package/dist/src/descriptor/NamedDescriptor.d.ts +20 -0
- package/dist/src/descriptor/NamedDescriptor.d.ts.map +1 -0
- package/dist/src/descriptor/NamedDescriptor.js +79 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts +5 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -0
- package/dist/src/descriptor/assertDescriptorWalletAddress.js +66 -0
- package/dist/src/descriptor/builder/builder.d.ts +13 -0
- package/dist/src/descriptor/builder/builder.d.ts.map +1 -0
- package/dist/src/descriptor/builder/builder.js +37 -0
- package/dist/src/descriptor/builder/index.d.ts +3 -0
- package/dist/src/descriptor/builder/index.d.ts.map +1 -0
- package/dist/src/descriptor/builder/index.js +8 -0
- package/dist/src/descriptor/builder/parse.d.ts +5 -0
- package/dist/src/descriptor/builder/parse.d.ts.map +1 -0
- package/dist/src/descriptor/builder/parse.js +149 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts +20 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptorWallet.js +74 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts +12 -0
- package/dist/src/descriptor/createWallet/createDescriptors.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/createDescriptors.js +33 -0
- package/dist/src/descriptor/createWallet/index.d.ts +3 -0
- package/dist/src/descriptor/createWallet/index.d.ts.map +1 -0
- package/dist/src/descriptor/createWallet/index.js +19 -0
- package/dist/src/descriptor/descriptorWallet.d.ts +19 -0
- package/dist/src/descriptor/descriptorWallet.d.ts.map +1 -0
- package/dist/src/descriptor/descriptorWallet.js +54 -0
- package/dist/src/descriptor/index.d.ts +8 -0
- package/dist/src/descriptor/index.d.ts.map +1 -0
- package/dist/src/descriptor/index.js +53 -0
- package/dist/src/descriptor/validatePolicy.d.ts +22 -0
- package/dist/src/descriptor/validatePolicy.d.ts.map +1 -0
- package/dist/src/descriptor/validatePolicy.js +92 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +32 -2
- package/dist/src/keychains.d.ts +48 -0
- package/dist/src/keychains.d.ts.map +1 -0
- package/dist/src/keychains.js +104 -0
- package/dist/src/names.d.ts +26 -0
- package/dist/src/names.d.ts.map +1 -0
- package/dist/src/names.js +214 -0
- package/dist/src/offlineVault/OfflineVaultHalfSigned.d.ts +8 -0
- package/dist/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -0
- package/dist/src/offlineVault/OfflineVaultHalfSigned.js +59 -0
- package/dist/src/offlineVault/OfflineVaultSignable.d.ts +46 -0
- package/dist/src/offlineVault/OfflineVaultSignable.d.ts.map +1 -0
- package/dist/src/offlineVault/OfflineVaultSignable.js +55 -0
- package/dist/src/offlineVault/TransactionExplanation.d.ts +15 -0
- package/dist/src/offlineVault/TransactionExplanation.d.ts.map +1 -0
- package/dist/src/offlineVault/TransactionExplanation.js +16 -0
- package/dist/src/offlineVault/descriptor/index.d.ts +2 -0
- package/dist/src/offlineVault/descriptor/index.d.ts.map +1 -0
- package/dist/src/offlineVault/descriptor/index.js +18 -0
- package/dist/src/offlineVault/descriptor/transaction.d.ts +38 -0
- package/dist/src/offlineVault/descriptor/transaction.d.ts.map +1 -0
- package/dist/src/offlineVault/descriptor/transaction.js +80 -0
- package/dist/src/offlineVault/index.d.ts +6 -0
- package/dist/src/offlineVault/index.d.ts.map +1 -0
- package/dist/src/offlineVault/index.js +44 -0
- package/dist/src/recovery/RecoveryProvider.d.ts +1 -1
- package/dist/src/recovery/RecoveryProvider.d.ts.map +1 -1
- package/dist/src/recovery/RecoveryProvider.js +2 -4
- package/dist/src/recovery/backupKeyRecovery.d.ts +42 -16
- package/dist/src/recovery/backupKeyRecovery.d.ts.map +1 -1
- package/dist/src/recovery/backupKeyRecovery.js +174 -102
- package/dist/src/recovery/baseApi.d.ts +3 -6
- package/dist/src/recovery/baseApi.d.ts.map +1 -1
- package/dist/src/recovery/baseApi.js +6 -6
- package/dist/src/recovery/coingeckoApi.d.ts +0 -3
- package/dist/src/recovery/coingeckoApi.d.ts.map +1 -1
- package/dist/src/recovery/coingeckoApi.js +1 -4
- package/dist/src/recovery/crossChainRecovery.d.ts +5 -4
- package/dist/src/recovery/crossChainRecovery.d.ts.map +1 -1
- package/dist/src/recovery/crossChainRecovery.js +95 -25
- package/dist/src/recovery/index.d.ts +0 -1
- package/dist/src/recovery/index.d.ts.map +1 -1
- package/dist/src/recovery/index.js +6 -3
- package/dist/src/recovery/mempoolApi.d.ts.map +1 -1
- package/dist/src/recovery/mempoolApi.js +10 -7
- package/dist/src/replayProtection.js +37 -5
- package/dist/src/sign.d.ts +31 -8
- package/dist/src/sign.d.ts.map +1 -1
- package/dist/src/sign.js +116 -15
- package/dist/src/transaction/bip322.d.ts +27 -0
- package/dist/src/transaction/bip322.d.ts.map +1 -0
- package/dist/src/transaction/bip322.js +125 -0
- package/dist/src/transaction/common/verifyPayGoAmount.d.ts +2 -0
- package/dist/src/transaction/common/verifyPayGoAmount.d.ts.map +1 -0
- package/dist/src/transaction/common/verifyPayGoAmount.js +3 -0
- package/dist/src/transaction/descriptor/explainPsbt.d.ts +5 -0
- package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/explainPsbt.js +80 -0
- package/dist/src/transaction/descriptor/index.d.ts +7 -0
- package/dist/src/transaction/descriptor/index.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/index.js +14 -0
- package/dist/src/transaction/descriptor/parse.d.ts +15 -0
- package/dist/src/transaction/descriptor/parse.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/parse.js +116 -0
- package/dist/src/transaction/descriptor/parseToAmountType.d.ts +13 -0
- package/dist/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/parseToAmountType.js +60 -0
- package/dist/src/transaction/descriptor/recipient.d.ts +5 -0
- package/dist/src/transaction/descriptor/recipient.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/recipient.js +3 -0
- package/dist/src/transaction/descriptor/signPsbt.d.ts +25 -0
- package/dist/src/transaction/descriptor/signPsbt.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/signPsbt.js +43 -0
- package/dist/src/transaction/descriptor/verifyTransaction.d.ts +33 -0
- package/dist/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/descriptor/verifyTransaction.js +105 -0
- package/dist/src/transaction/explainTransaction.d.ts +17 -0
- package/dist/src/transaction/explainTransaction.d.ts.map +1 -0
- package/dist/src/transaction/explainTransaction.js +67 -0
- package/dist/src/transaction/fetchInputs.d.ts +26 -0
- package/dist/src/transaction/fetchInputs.d.ts.map +1 -0
- package/dist/src/transaction/fetchInputs.js +109 -0
- package/dist/src/transaction/fixedScript/explainTransaction.d.ts +32 -0
- package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/explainTransaction.js +317 -0
- package/dist/src/transaction/fixedScript/index.d.ts +6 -0
- package/dist/src/transaction/fixedScript/index.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/index.js +13 -0
- package/dist/src/transaction/fixedScript/parseOutput.d.ts +26 -0
- package/dist/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseOutput.js +213 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts +7 -0
- package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/parseTransaction.js +203 -0
- package/dist/src/transaction/fixedScript/signTransaction.d.ts +18 -0
- package/dist/src/transaction/fixedScript/signTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/signTransaction.js +100 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.d.ts +4 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/fixedScript/verifyTransaction.js +176 -0
- package/dist/src/transaction/getPayGoVerificationPubkey.d.ts +9 -0
- package/dist/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -0
- package/dist/src/transaction/getPayGoVerificationPubkey.js +53 -0
- package/dist/src/transaction/index.d.ts +7 -0
- package/dist/src/transaction/index.d.ts.map +1 -0
- package/dist/src/transaction/index.js +49 -0
- package/dist/src/transaction/outputDifference.d.ts +40 -0
- package/dist/src/transaction/outputDifference.d.ts.map +1 -0
- package/dist/src/transaction/outputDifference.js +47 -0
- package/dist/src/transaction/parseTransaction.d.ts +3 -0
- package/dist/src/transaction/parseTransaction.d.ts.map +1 -0
- package/dist/src/transaction/parseTransaction.js +48 -0
- package/dist/src/transaction/recipient.d.ts +29 -0
- package/dist/src/transaction/recipient.d.ts.map +1 -0
- package/dist/src/transaction/recipient.js +88 -0
- package/dist/src/transaction/signTransaction.d.ts +6 -0
- package/dist/src/transaction/signTransaction.d.ts.map +1 -0
- package/dist/src/transaction/signTransaction.js +102 -0
- package/dist/src/transaction/verifyTransaction.d.ts +4 -0
- package/dist/src/transaction/verifyTransaction.d.ts.map +1 -0
- package/dist/src/transaction/verifyTransaction.js +50 -0
- package/dist/src/verifyKey.d.ts +28 -0
- package/dist/src/verifyKey.d.ts.map +1 -0
- package/dist/src/verifyKey.js +164 -0
- package/dist/src/wallet.d.ts +15 -0
- package/dist/src/wallet.d.ts.map +1 -0
- package/dist/src/wallet.js +8 -0
- package/package.json +19 -13
- package/.eslintignore +0 -5
- package/CHANGELOG.md +0 -235
- package/dist/src/parseOutput.d.ts +0 -22
- package/dist/src/parseOutput.d.ts.map +0 -1
- package/dist/src/parseOutput.js +0 -181
- package/dist/src/recovery/smartbitApi.d.ts +0 -11
- package/dist/src/recovery/smartbitApi.d.ts.map +0 -1
- package/dist/src/recovery/smartbitApi.js +0 -36
- package/dist/tsconfig.tsbuildinfo +0 -8021
package/package.json
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/abstract-utxo",
|
|
3
|
-
"version": "1.6.1-alpha.
|
|
3
|
+
"version": "1.6.1-alpha.400",
|
|
4
4
|
"description": "BitGo SDK coin library for UTXO base implementation",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/src"
|
|
9
|
+
],
|
|
7
10
|
"scripts": {
|
|
8
11
|
"build": "yarn tsc --build --incremental --verbose .",
|
|
9
12
|
"fmt": "prettier --write .",
|
|
10
13
|
"check-fmt": "prettier --check .",
|
|
11
14
|
"clean": "rm -r ./dist",
|
|
12
15
|
"lint": "eslint --quiet .",
|
|
13
|
-
"prepare": "npm run build"
|
|
16
|
+
"prepare": "npm run build",
|
|
17
|
+
"test": "npm run unit-test",
|
|
18
|
+
"unit-test": "mocha --recursive test/"
|
|
14
19
|
},
|
|
15
20
|
"author": "BitGo SDK Team <sdkteam@bitgo.com>",
|
|
16
21
|
"license": "MIT",
|
|
17
22
|
"engines": {
|
|
18
|
-
"node": ">=
|
|
23
|
+
"node": ">=20 <23"
|
|
19
24
|
},
|
|
20
25
|
"repository": {
|
|
21
26
|
"type": "git",
|
|
@@ -37,20 +42,21 @@
|
|
|
37
42
|
]
|
|
38
43
|
},
|
|
39
44
|
"dependencies": {
|
|
40
|
-
"@bitgo-beta/blockapis": "1.3.3-alpha.
|
|
41
|
-
"@bitgo-beta/sdk-api": "1.6.1-alpha.
|
|
42
|
-
"@bitgo-beta/sdk-core": "2.4.1-alpha.
|
|
43
|
-
"@bitgo-beta/unspents": "0.11.3-alpha.
|
|
44
|
-
"@bitgo-beta/utxo-
|
|
45
|
-
"@
|
|
45
|
+
"@bitgo-beta/blockapis": "1.3.3-alpha.401",
|
|
46
|
+
"@bitgo-beta/sdk-api": "1.6.1-alpha.400",
|
|
47
|
+
"@bitgo-beta/sdk-core": "2.4.1-alpha.400",
|
|
48
|
+
"@bitgo-beta/unspents": "0.11.3-alpha.401",
|
|
49
|
+
"@bitgo-beta/utxo-core": "1.0.1-alpha.131",
|
|
50
|
+
"@bitgo-beta/utxo-lib": "4.0.1-alpha.401",
|
|
51
|
+
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
|
|
46
52
|
"@types/lodash": "^4.14.121",
|
|
47
53
|
"@types/superagent": "4.1.15",
|
|
48
54
|
"bignumber.js": "^9.0.2",
|
|
49
|
-
"bitcoinjs-message": "
|
|
50
|
-
"bluebird": "^3.5.3",
|
|
55
|
+
"bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
|
|
51
56
|
"debug": "^3.1.0",
|
|
57
|
+
"io-ts": "npm:@bitgo-forks/io-ts@2.1.4",
|
|
52
58
|
"lodash": "^4.17.14",
|
|
53
|
-
"superagent": "^
|
|
59
|
+
"superagent": "^9.0.1"
|
|
54
60
|
},
|
|
55
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "c1d0ee43e0f36797745e6033e0162a29d0147dce"
|
|
56
62
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,235 +0,0 @@
|
|
|
1
|
-
# Change Log
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
|
-
|
|
6
|
-
## [2.0.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@2.0.0...@bitgo/abstract-utxo@2.0.1) (2023-02-17)
|
|
7
|
-
|
|
8
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
9
|
-
|
|
10
|
-
# [2.0.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.5...@bitgo/abstract-utxo@2.0.0) (2023-02-16)
|
|
11
|
-
|
|
12
|
-
### Bug Fixes
|
|
13
|
-
|
|
14
|
-
- accept apiKey for recoverFromWrongChain ([3f27775](https://github.com/BitGo/BitGoJS/commit/3f2777506326ae08d0e5d211146522af0d15c3f2))
|
|
15
|
-
- convert addr to canonical addr during wrongChainRecovery ([2089596](https://github.com/BitGo/BitGoJS/commit/20895964eeac1eedc9f859f0ce9b607313cc6568))
|
|
16
|
-
- **sdk-core:** mark pub as optional in Keychain interface ([7d6012c](https://github.com/BitGo/BitGoJS/commit/7d6012cf1058e43d96e129dc2b1607b5316dca1c))
|
|
17
|
-
|
|
18
|
-
### Features
|
|
19
|
-
|
|
20
|
-
- update tests for crossChainRecovery ([6cdd3a9](https://github.com/BitGo/BitGoJS/commit/6cdd3a94baa4427412d06e3e151096feea5e26ff))
|
|
21
|
-
- use UtxoApi to facilitate cross chain recoveries ([61151aa](https://github.com/BitGo/BitGoJS/commit/61151aa2634b7fa89f995a85940fd680f87cf854))
|
|
22
|
-
|
|
23
|
-
### BREAKING CHANGES
|
|
24
|
-
|
|
25
|
-
- **sdk-core:** Keychain.pub is now optional
|
|
26
|
-
|
|
27
|
-
# [1.12.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.5...@bitgo/abstract-utxo@1.12.0) (2023-02-08)
|
|
28
|
-
|
|
29
|
-
### Bug Fixes
|
|
30
|
-
|
|
31
|
-
- accept apiKey for recoverFromWrongChain ([3f27775](https://github.com/BitGo/BitGoJS/commit/3f2777506326ae08d0e5d211146522af0d15c3f2))
|
|
32
|
-
- convert addr to canonical addr during wrongChainRecovery ([2089596](https://github.com/BitGo/BitGoJS/commit/20895964eeac1eedc9f859f0ce9b607313cc6568))
|
|
33
|
-
|
|
34
|
-
### Features
|
|
35
|
-
|
|
36
|
-
- update tests for crossChainRecovery ([6cdd3a9](https://github.com/BitGo/BitGoJS/commit/6cdd3a94baa4427412d06e3e151096feea5e26ff))
|
|
37
|
-
- use UtxoApi to facilitate cross chain recoveries ([61151aa](https://github.com/BitGo/BitGoJS/commit/61151aa2634b7fa89f995a85940fd680f87cf854))
|
|
38
|
-
|
|
39
|
-
# [1.11.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.5...@bitgo/abstract-utxo@1.11.0) (2023-01-30)
|
|
40
|
-
|
|
41
|
-
### Features
|
|
42
|
-
|
|
43
|
-
- update tests for crossChainRecovery ([6cdd3a9](https://github.com/BitGo/BitGoJS/commit/6cdd3a94baa4427412d06e3e151096feea5e26ff))
|
|
44
|
-
- use UtxoApi to facilitate cross chain recoveries ([61151aa](https://github.com/BitGo/BitGoJS/commit/61151aa2634b7fa89f995a85940fd680f87cf854))
|
|
45
|
-
|
|
46
|
-
## [1.10.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.4...@bitgo/abstract-utxo@1.10.5) (2023-01-25)
|
|
47
|
-
|
|
48
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
49
|
-
|
|
50
|
-
## [1.10.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.3...@bitgo/abstract-utxo@1.10.4) (2022-12-23)
|
|
51
|
-
|
|
52
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
53
|
-
|
|
54
|
-
## [1.10.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.2...@bitgo/abstract-utxo@1.10.3) (2022-12-20)
|
|
55
|
-
|
|
56
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
57
|
-
|
|
58
|
-
## [1.10.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.1...@bitgo/abstract-utxo@1.10.2) (2022-12-09)
|
|
59
|
-
|
|
60
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
61
|
-
|
|
62
|
-
## [1.10.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.10.0...@bitgo/abstract-utxo@1.10.1) (2022-12-06)
|
|
63
|
-
|
|
64
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
65
|
-
|
|
66
|
-
# [1.10.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.9.0...@bitgo/abstract-utxo@1.10.0) (2022-12-01)
|
|
67
|
-
|
|
68
|
-
### Features
|
|
69
|
-
|
|
70
|
-
- **abstract-utxo:** add valueString to unspents for doge recovery flow ([439f95c](https://github.com/BitGo/BitGoJS/commit/439f95c4e337e33a0812ac28b03e46b52e4a9fde))
|
|
71
|
-
|
|
72
|
-
# [1.9.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.4.0...@bitgo/abstract-utxo@1.9.0) (2022-11-29)
|
|
73
|
-
|
|
74
|
-
### Bug Fixes
|
|
75
|
-
|
|
76
|
-
- fix unit-test-all errors ([4adab4d](https://github.com/BitGo/BitGoJS/commit/4adab4dd363cdd4c21bd964fd3b6d5581bd63e46))
|
|
77
|
-
- **sdk-coin-doge:** minor change in types ([db18dd9](https://github.com/BitGo/BitGoJS/commit/db18dd9f8a62432c89db76a9dbd81c7b3c586fc2))
|
|
78
|
-
- **utxo-lib:** fixed unchecked cast to Number ([2f1d962](https://github.com/BitGo/BitGoJS/commit/2f1d9628bd9ec51a12d0c8dc0adeb60e94f32b1d))
|
|
79
|
-
|
|
80
|
-
### Features
|
|
81
|
-
|
|
82
|
-
- **abstract-utxo:** allow for override in isValidAddress ([1d02d98](https://github.com/BitGo/BitGoJS/commit/1d02d988401b6abc00336f67687a7b01d682989e))
|
|
83
|
-
- **root:** add support for cross chain recovery for bcha ([f9ab941](https://github.com/BitGo/BitGoJS/commit/f9ab941055eaf79f6623b40e9aac982124f78843))
|
|
84
|
-
- **utxo-lib:** bigintify dogecoin specific functions ([d5830a6](https://github.com/BitGo/BitGoJS/commit/d5830a6d6c17de5cefb138a639b94c0cbb37f5f0))
|
|
85
|
-
- **utxo-lib:** simplify isValidAddress ([cf826fe](https://github.com/BitGo/BitGoJS/commit/cf826fe4d0a32f09888d2218028b24ce33a6aa92))
|
|
86
|
-
|
|
87
|
-
# [1.8.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.4.0...@bitgo/abstract-utxo@1.8.0) (2022-11-04)
|
|
88
|
-
|
|
89
|
-
### Bug Fixes
|
|
90
|
-
|
|
91
|
-
- fix unit-test-all errors ([4adab4d](https://github.com/BitGo/BitGoJS/commit/4adab4dd363cdd4c21bd964fd3b6d5581bd63e46))
|
|
92
|
-
- **sdk-coin-doge:** minor change in types ([db18dd9](https://github.com/BitGo/BitGoJS/commit/db18dd9f8a62432c89db76a9dbd81c7b3c586fc2))
|
|
93
|
-
- **utxo-lib:** fixed unchecked cast to Number ([2f1d962](https://github.com/BitGo/BitGoJS/commit/2f1d9628bd9ec51a12d0c8dc0adeb60e94f32b1d))
|
|
94
|
-
|
|
95
|
-
### Features
|
|
96
|
-
|
|
97
|
-
- **utxo-lib:** bigintify dogecoin specific functions ([d5830a6](https://github.com/BitGo/BitGoJS/commit/d5830a6d6c17de5cefb138a639b94c0cbb37f5f0))
|
|
98
|
-
|
|
99
|
-
# [1.6.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.4.0...@bitgo/abstract-utxo@1.6.0) (2022-10-27)
|
|
100
|
-
|
|
101
|
-
### Bug Fixes
|
|
102
|
-
|
|
103
|
-
- **sdk-coin-doge:** minor change in types ([db18dd9](https://github.com/BitGo/BitGoJS/commit/db18dd9f8a62432c89db76a9dbd81c7b3c586fc2))
|
|
104
|
-
- **utxo-lib:** fixed unchecked cast to Number ([2f1d962](https://github.com/BitGo/BitGoJS/commit/2f1d9628bd9ec51a12d0c8dc0adeb60e94f32b1d))
|
|
105
|
-
|
|
106
|
-
### Features
|
|
107
|
-
|
|
108
|
-
- **utxo-lib:** bigintify dogecoin specific functions ([d5830a6](https://github.com/BitGo/BitGoJS/commit/d5830a6d6c17de5cefb138a639b94c0cbb37f5f0))
|
|
109
|
-
|
|
110
|
-
# [1.5.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.4.0...@bitgo/abstract-utxo@1.5.0) (2022-10-25)
|
|
111
|
-
|
|
112
|
-
### Bug Fixes
|
|
113
|
-
|
|
114
|
-
- **sdk-coin-doge:** minor change in types ([db18dd9](https://github.com/BitGo/BitGoJS/commit/db18dd9f8a62432c89db76a9dbd81c7b3c586fc2))
|
|
115
|
-
- **utxo-lib:** fixed unchecked cast to Number ([2f1d962](https://github.com/BitGo/BitGoJS/commit/2f1d9628bd9ec51a12d0c8dc0adeb60e94f32b1d))
|
|
116
|
-
|
|
117
|
-
### Features
|
|
118
|
-
|
|
119
|
-
- **utxo-lib:** bigintify dogecoin specific functions ([d5830a6](https://github.com/BitGo/BitGoJS/commit/d5830a6d6c17de5cefb138a639b94c0cbb37f5f0))
|
|
120
|
-
|
|
121
|
-
# [1.4.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.6...@bitgo/abstract-utxo@1.4.0) (2022-10-18)
|
|
122
|
-
|
|
123
|
-
### Bug Fixes
|
|
124
|
-
|
|
125
|
-
- **core:** fix bip32/ecpair, API vs Interface ([bec9c1e](https://github.com/BitGo/BitGoJS/commit/bec9c1e6ff0c23108dc27e171abdd3e4d2cfdfb1))
|
|
126
|
-
|
|
127
|
-
### Features
|
|
128
|
-
|
|
129
|
-
- **abstract-utxo:** add support for bigints from new utxo-lib ([77c60dd](https://github.com/BitGo/BitGoJS/commit/77c60ddd4d0ddd1e82a8b1bb041686a9c7f39fae))
|
|
130
|
-
- **abstract-utxo:** backup key recovery service for doge ([612be53](https://github.com/BitGo/BitGoJS/commit/612be533836f33fdecb9584ddc0f5674df31dcb0))
|
|
131
|
-
- **abstract-utxo:** cross chain recovery support for bigint coins (doge) ([ad6bf71](https://github.com/BitGo/BitGoJS/commit/ad6bf71f58a4bae79f3bb014ee947a878f4b89d2))
|
|
132
|
-
- **sdk-core:** added large value support while calling WP ([870621e](https://github.com/BitGo/BitGoJS/commit/870621e2bc93d15ed6f040379353d039eb17e609))
|
|
133
|
-
- **utxo-lib:** export BIP32/ECPair interfaces ([8628507](https://github.com/BitGo/BitGoJS/commit/862850781b2e8b36c71608c5ae71424b9ebe9dee))
|
|
134
|
-
|
|
135
|
-
# [1.1.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.6...@bitgo/abstract-utxo@1.1.0) (2022-07-19)
|
|
136
|
-
|
|
137
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
138
|
-
|
|
139
|
-
# [1.1.0-rc.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.4...@bitgo/abstract-utxo@1.1.0-rc.6) (2022-07-19)
|
|
140
|
-
|
|
141
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
142
|
-
|
|
143
|
-
# [1.1.0-rc.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.4...@bitgo/abstract-utxo@1.1.0-rc.5) (2022-07-18)
|
|
144
|
-
|
|
145
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
146
|
-
|
|
147
|
-
# [1.1.0-rc.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.3...@bitgo/abstract-utxo@1.1.0-rc.4) (2022-07-15)
|
|
148
|
-
|
|
149
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
150
|
-
|
|
151
|
-
# [1.1.0-rc.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.1...@bitgo/abstract-utxo@1.1.0-rc.3) (2022-07-15)
|
|
152
|
-
|
|
153
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
154
|
-
|
|
155
|
-
# [1.1.0-rc.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.1...@bitgo/abstract-utxo@1.1.0-rc.2) (2022-07-14)
|
|
156
|
-
|
|
157
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
158
|
-
|
|
159
|
-
# [1.1.0-rc.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.1.0-rc.0...@bitgo/abstract-utxo@1.1.0-rc.1) (2022-07-12)
|
|
160
|
-
|
|
161
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
162
|
-
|
|
163
|
-
# [1.1.0-rc.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.15...@bitgo/abstract-utxo@1.1.0-rc.0) (2022-07-11)
|
|
164
|
-
|
|
165
|
-
### Features
|
|
166
|
-
|
|
167
|
-
- check network argument in AbstractUtxoCoin constructor ([4a36223](https://github.com/BitGo/BitGoJS/commit/4a3622341ed4011ba04acab0a5d799b79941d1c4))
|
|
168
|
-
|
|
169
|
-
## [1.0.1-rc.15](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.14...@bitgo/abstract-utxo@1.0.1-rc.15) (2022-07-07)
|
|
170
|
-
|
|
171
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
172
|
-
|
|
173
|
-
## [1.0.1-rc.14](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.13...@bitgo/abstract-utxo@1.0.1-rc.14) (2022-07-05)
|
|
174
|
-
|
|
175
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
176
|
-
|
|
177
|
-
## [1.0.1-rc.13](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.12...@bitgo/abstract-utxo@1.0.1-rc.13) (2022-07-01)
|
|
178
|
-
|
|
179
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
180
|
-
|
|
181
|
-
## [1.0.1-rc.12](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.11...@bitgo/abstract-utxo@1.0.1-rc.12) (2022-06-30)
|
|
182
|
-
|
|
183
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
184
|
-
|
|
185
|
-
## [1.0.1-rc.11](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.10...@bitgo/abstract-utxo@1.0.1-rc.11) (2022-06-30)
|
|
186
|
-
|
|
187
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
188
|
-
|
|
189
|
-
## [1.0.1-rc.10](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.8...@bitgo/abstract-utxo@1.0.1-rc.10) (2022-06-29)
|
|
190
|
-
|
|
191
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
192
|
-
|
|
193
|
-
## [1.0.1-rc.9](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.8...@bitgo/abstract-utxo@1.0.1-rc.9) (2022-06-29)
|
|
194
|
-
|
|
195
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
196
|
-
|
|
197
|
-
## [1.0.1-rc.8](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.7...@bitgo/abstract-utxo@1.0.1-rc.8) (2022-06-27)
|
|
198
|
-
|
|
199
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
200
|
-
|
|
201
|
-
## [1.0.1-rc.7](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.6...@bitgo/abstract-utxo@1.0.1-rc.7) (2022-06-23)
|
|
202
|
-
|
|
203
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
204
|
-
|
|
205
|
-
## [1.0.1-rc.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.5...@bitgo/abstract-utxo@1.0.1-rc.6) (2022-06-22)
|
|
206
|
-
|
|
207
|
-
### Bug Fixes
|
|
208
|
-
|
|
209
|
-
- add dependency check to fix current and future dependency resolutions ([3074335](https://github.com/BitGo/BitGoJS/commit/30743356cff4ebb6d9e185f1a493b187614a1ea9))
|
|
210
|
-
|
|
211
|
-
## [1.0.1-rc.5](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.4...@bitgo/abstract-utxo@1.0.1-rc.5) (2022-06-21)
|
|
212
|
-
|
|
213
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
214
|
-
|
|
215
|
-
## [1.0.1-rc.4](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.3...@bitgo/abstract-utxo@1.0.1-rc.4) (2022-06-16)
|
|
216
|
-
|
|
217
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
218
|
-
|
|
219
|
-
## [1.0.1-rc.3](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.2...@bitgo/abstract-utxo@1.0.1-rc.3) (2022-06-14)
|
|
220
|
-
|
|
221
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
222
|
-
|
|
223
|
-
## [1.0.1-rc.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.1...@bitgo/abstract-utxo@1.0.1-rc.2) (2022-06-14)
|
|
224
|
-
|
|
225
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
226
|
-
|
|
227
|
-
## [1.0.1-rc.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/abstract-utxo@1.0.1-rc.0...@bitgo/abstract-utxo@1.0.1-rc.1) (2022-06-13)
|
|
228
|
-
|
|
229
|
-
**Note:** Version bump only for package @bitgo/abstract-utxo
|
|
230
|
-
|
|
231
|
-
## 1.0.1-rc.0 (2022-06-10)
|
|
232
|
-
|
|
233
|
-
### Bug Fixes
|
|
234
|
-
|
|
235
|
-
- **abstract-utxo:** add bsv replay protection case ([5e166cb](https://github.com/BitGo/BitGoJS/commit/5e166cbbc89ff10bd59308debf8f43dd18de0c47))
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @prettier
|
|
3
|
-
*/
|
|
4
|
-
import { IRequestTracer, IWallet, Keychain, TransactionPrebuild, VerificationOptions } from '@bitgo-beta/sdk-core';
|
|
5
|
-
import { AbstractUtxoCoin, Output, TransactionParams } from './abstractUtxoCoin';
|
|
6
|
-
export interface CustomChangeOptions {
|
|
7
|
-
keys: [Keychain, Keychain, Keychain];
|
|
8
|
-
signatures: [string, string, string];
|
|
9
|
-
}
|
|
10
|
-
export interface ParseOutputOptions {
|
|
11
|
-
currentOutput: Output;
|
|
12
|
-
coin: AbstractUtxoCoin;
|
|
13
|
-
txPrebuild: TransactionPrebuild;
|
|
14
|
-
verification: VerificationOptions;
|
|
15
|
-
keychainArray: [Keychain, Keychain, Keychain];
|
|
16
|
-
wallet: IWallet;
|
|
17
|
-
txParams: TransactionParams;
|
|
18
|
-
customChange?: CustomChangeOptions;
|
|
19
|
-
reqId?: IRequestTracer;
|
|
20
|
-
}
|
|
21
|
-
export declare function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, txParams, customChange, reqId, }: ParseOutputOptions): Promise<Output>;
|
|
22
|
-
//# sourceMappingURL=parseOutput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseOutput.d.ts","sourceRoot":"","sources":["../../src/parseOutput.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAEL,cAAc,EAEd,OAAO,EACP,QAAQ,EACR,mBAAmB,EAEnB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAwKjF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,mBAAmB,CAAC;IAClC,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,wBAAsB,WAAW,CAAC,EAChC,aAAa,EACb,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,KAAK,GACN,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4EtC"}
|
package/dist/src/parseOutput.js
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @prettier
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.parseOutput = void 0;
|
|
7
|
-
const debugLib = require("debug");
|
|
8
|
-
const _ = require("lodash");
|
|
9
|
-
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
10
|
-
const abstractUtxoCoin_1 = require("./abstractUtxoCoin");
|
|
11
|
-
const debug = debugLib('bitgo:v2:parseoutput');
|
|
12
|
-
/**
|
|
13
|
-
* Check an address which failed initial validation to see if it's the base address of a migrated v1 bch wallet.
|
|
14
|
-
*
|
|
15
|
-
* The wallet in question could be a migrated SafeHD BCH wallet, and the transaction we
|
|
16
|
-
* are currently parsing is trying to spend change back to the v1 wallet base address.
|
|
17
|
-
*
|
|
18
|
-
* It does this since we don't allow new address creation for these wallets,
|
|
19
|
-
* and instead return the base address from the v1 wallet when a new address is requested.
|
|
20
|
-
* If this new address is requested for the purposes of spending change back to the wallet,
|
|
21
|
-
* the change will go to the v1 wallet base address. This address *is* on the wallet,
|
|
22
|
-
* but it will still cause an error to be thrown by verifyAddress, since the derivation path
|
|
23
|
-
* used for this address is non-standard. (I have seen these addresses derived using paths m/0/0 and m/101,
|
|
24
|
-
* whereas the v2 addresses are derived using path m/0/0/${chain}/${index}).
|
|
25
|
-
*
|
|
26
|
-
* This means we need to check for this case explicitly in this catch block, and classify
|
|
27
|
-
* these types of outputs as internal instead of external. Failing to do so would cause the
|
|
28
|
-
* transaction's implicit external outputs (ie, outputs which go to addresses not specified in
|
|
29
|
-
* the recipients array) to add up to more than the 150 basis point limit which we enforce on
|
|
30
|
-
* pay-as-you-go outputs (which should be the only implicit external outputs on our transactions).
|
|
31
|
-
*
|
|
32
|
-
* The 150 basis point limit for implicit external sends is enforced in verifyTransaction,
|
|
33
|
-
* which calls this function to get information on the total external/internal spend amounts
|
|
34
|
-
* for a transaction. The idea here is to protect from the transaction being maliciously modified
|
|
35
|
-
* to add more implicit external spends (eg, to an attacker-controlled wallet).
|
|
36
|
-
*
|
|
37
|
-
* See verifyTransaction for more information on how transaction prebuilds are verified before signing.
|
|
38
|
-
*
|
|
39
|
-
* @param wallet {Wallet} wallet which is making the transaction
|
|
40
|
-
* @param currentAddress {string} address to check for externality relative to v1 wallet base address
|
|
41
|
-
*/
|
|
42
|
-
function isMigratedAddress(wallet, currentAddress) {
|
|
43
|
-
if (_.isString(wallet.migratedFrom()) && wallet.migratedFrom() === currentAddress) {
|
|
44
|
-
debug('found address %s which was migrated from v1 wallet, address is not external', currentAddress);
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Check to see if an address is derived from the given custom change keys
|
|
51
|
-
* @param {VerifyCustomChangeAddressOptions} params
|
|
52
|
-
* @return {boolean}
|
|
53
|
-
*/
|
|
54
|
-
async function verifyCustomChangeAddress(params) {
|
|
55
|
-
const { coin, customChangeKeys, addressType, addressDetails, currentAddress } = params;
|
|
56
|
-
try {
|
|
57
|
-
return await coin.verifyAddress(_.extend({ addressType }, addressDetails, {
|
|
58
|
-
keychains: customChangeKeys,
|
|
59
|
-
address: currentAddress,
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
debug('failed to verify custom change address %s', currentAddress);
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async function handleVerifyAddressError({ e, currentAddress, wallet, txParams, customChangeKeys, coin, addressDetails, addressType, considerMigratedFromAddressInternal, }) {
|
|
68
|
-
// Todo: name server-side errors to avoid message-based checking [BG-5124]
|
|
69
|
-
const walletAddressNotFound = e.message.includes('wallet address not found');
|
|
70
|
-
const unexpectedAddress = e instanceof sdk_core_1.UnexpectedAddressError;
|
|
71
|
-
if (walletAddressNotFound || unexpectedAddress) {
|
|
72
|
-
if (unexpectedAddress && !walletAddressNotFound) {
|
|
73
|
-
// check to see if this is a migrated v1 bch address - it could be internal
|
|
74
|
-
const isMigrated = isMigratedAddress(wallet, currentAddress);
|
|
75
|
-
if (isMigrated) {
|
|
76
|
-
return { external: considerMigratedFromAddressInternal === false };
|
|
77
|
-
}
|
|
78
|
-
debug('Address %s was found on wallet but could not be reconstructed', currentAddress);
|
|
79
|
-
// attempt to verify address using custom change address keys if the wallet has that feature enabled
|
|
80
|
-
if (customChangeKeys &&
|
|
81
|
-
(await verifyCustomChangeAddress({ coin, addressDetails, addressType, currentAddress, customChangeKeys }))) {
|
|
82
|
-
// address is valid against the custom change keys. Mark address as not external
|
|
83
|
-
// and request signature verification for the custom change keys
|
|
84
|
-
debug('Address %s verified as derived from the custom change keys', currentAddress);
|
|
85
|
-
return { external: false, needsCustomChangeKeySignatureVerification: true };
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
// the address was found, but not on the wallet, which simply means it's external
|
|
89
|
-
debug('Address %s presumed external', currentAddress);
|
|
90
|
-
return { external: true };
|
|
91
|
-
}
|
|
92
|
-
else if (e instanceof sdk_core_1.InvalidAddressDerivationPropertyError && currentAddress === txParams.changeAddress) {
|
|
93
|
-
// expect to see this error when passing in a custom changeAddress with no chain or index
|
|
94
|
-
return { external: false };
|
|
95
|
-
}
|
|
96
|
-
console.error('Address classification failed for address', currentAddress);
|
|
97
|
-
console.trace(e);
|
|
98
|
-
/**
|
|
99
|
-
* It might be a completely invalid address or a bad validation attempt or something else completely, in
|
|
100
|
-
* which case we do not proceed and rather rethrow the error, which is safer than assuming that the address
|
|
101
|
-
* validation failed simply because it's external to the wallet.
|
|
102
|
-
*/
|
|
103
|
-
throw e;
|
|
104
|
-
}
|
|
105
|
-
async function fetchAddressDetails({ reqId, disableNetworking, addressDetailsPrebuild, addressDetailsVerification, currentAddress, wallet, }) {
|
|
106
|
-
let addressDetails = _.extend({}, addressDetailsPrebuild, addressDetailsVerification);
|
|
107
|
-
debug('Locally available address %s details: %O', currentAddress, addressDetails);
|
|
108
|
-
if (_.isEmpty(addressDetails) && !disableNetworking) {
|
|
109
|
-
addressDetails = await wallet.getAddress({ address: currentAddress, reqId });
|
|
110
|
-
debug('Downloaded address %s details: %O', currentAddress, addressDetails);
|
|
111
|
-
}
|
|
112
|
-
return addressDetails;
|
|
113
|
-
}
|
|
114
|
-
async function parseOutput({ currentOutput, coin, txPrebuild, verification, keychainArray, wallet, txParams, customChange, reqId, }) {
|
|
115
|
-
var _a, _b;
|
|
116
|
-
const disableNetworking = !!verification.disableNetworking;
|
|
117
|
-
const currentAddress = currentOutput.address;
|
|
118
|
-
// attempt to grab the address details from either the prebuilt tx, or the verification params.
|
|
119
|
-
// If both of these are empty, then we will try to get the address details from bitgo instead
|
|
120
|
-
const addressDetailsPrebuild = _.get(txPrebuild, `txInfo.walletAddressDetails.${currentAddress}`, {});
|
|
121
|
-
const addressDetailsVerification = (_b = (_a = verification === null || verification === void 0 ? void 0 : verification.addresses) === null || _a === void 0 ? void 0 : _a[currentAddress]) !== null && _b !== void 0 ? _b : {};
|
|
122
|
-
debug('Parsing address details for %s', currentAddress);
|
|
123
|
-
let currentAddressDetails = undefined;
|
|
124
|
-
let currentAddressType = undefined;
|
|
125
|
-
const RECIPIENT_THRESHOLD = 1000;
|
|
126
|
-
try {
|
|
127
|
-
/**
|
|
128
|
-
* The only way to determine whether an address is known on the wallet is to initiate a network request and
|
|
129
|
-
* fetch it. Should the request fail and return a 404, it will throw and therefore has to be caught. For that
|
|
130
|
-
* reason, address wallet ownership detection is wrapped in a try/catch. Additionally, once the address
|
|
131
|
-
* details are fetched on the wallet, a local address validation is run, whose errors however are generated
|
|
132
|
-
* client-side and can therefore be analyzed with more granularity and type checking.
|
|
133
|
-
*/
|
|
134
|
-
/**
|
|
135
|
-
* In order to minimize API requests, we assume that explicit recipients are always external when the
|
|
136
|
-
* recipient list is > 1000 This is not always a valid assumption and could lead greater apparent spend (but never lower)
|
|
137
|
-
*/
|
|
138
|
-
if (txParams.recipients !== undefined && txParams.recipients.length > RECIPIENT_THRESHOLD) {
|
|
139
|
-
const isCurrentAddressInRecipients = txParams.recipients.some((recipient) => recipient.address.includes(currentAddress));
|
|
140
|
-
if (isCurrentAddressInRecipients) {
|
|
141
|
-
return { ...currentOutput, external: true };
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
const addressDetails = await fetchAddressDetails({
|
|
145
|
-
reqId,
|
|
146
|
-
addressDetailsVerification,
|
|
147
|
-
addressDetailsPrebuild,
|
|
148
|
-
currentAddress,
|
|
149
|
-
disableNetworking,
|
|
150
|
-
wallet,
|
|
151
|
-
});
|
|
152
|
-
// verify that the address is on the wallet. verifyAddress throws if
|
|
153
|
-
// it fails to correctly rederive the address, meaning it's external
|
|
154
|
-
currentAddressType = abstractUtxoCoin_1.AbstractUtxoCoin.inferAddressType(addressDetails) || undefined;
|
|
155
|
-
currentAddressDetails = addressDetails;
|
|
156
|
-
await coin.verifyAddress(_.extend({ addressType: currentAddressType }, addressDetails, {
|
|
157
|
-
keychains: keychainArray,
|
|
158
|
-
address: currentAddress,
|
|
159
|
-
}));
|
|
160
|
-
debug('Address %s verification passed', currentAddress);
|
|
161
|
-
// verify address succeeded without throwing, so the address was
|
|
162
|
-
// correctly rederived from the wallet keychains, making it not external
|
|
163
|
-
return _.extend({}, currentOutput, addressDetails, { external: false });
|
|
164
|
-
}
|
|
165
|
-
catch (e) {
|
|
166
|
-
debug('Address %s verification threw an error:', currentAddress, e);
|
|
167
|
-
return _.extend({}, currentOutput, await handleVerifyAddressError({
|
|
168
|
-
e,
|
|
169
|
-
coin,
|
|
170
|
-
currentAddress,
|
|
171
|
-
wallet,
|
|
172
|
-
txParams,
|
|
173
|
-
customChangeKeys: customChange && customChange.keys,
|
|
174
|
-
addressDetails: currentAddressDetails,
|
|
175
|
-
addressType: currentAddressType,
|
|
176
|
-
considerMigratedFromAddressInternal: verification.considerMigratedFromAddressInternal,
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
exports.parseOutput = parseOutput;
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VPdXRwdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2VPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSCxrQ0FBa0M7QUFDbEMsNEJBQTRCO0FBQzVCLG1EQVM4QjtBQUM5Qix5REFBaUY7QUFFakYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFPL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxNQUFlLEVBQUUsY0FBc0I7SUFDaEUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsS0FBSyxjQUFjLEVBQUU7UUFDakYsS0FBSyxDQUFDLDZFQUE2RSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3JHLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFVRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQXdDO0lBQy9FLE1BQU0sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDdkYsSUFBSTtRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsY0FBYyxFQUFFO1lBQ3hDLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQyxDQUNILENBQUM7S0FDSDtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsS0FBSyxDQUFDLDJDQUEyQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBY0Qs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O1FBQ3BFLGtCQUFrQixHQUFHLG1DQUFnQixDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNwRixxQkFBcUIsR0FBRyxjQUFjLENBQUM7UUFDdkMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsY0FBYyxFQUFFO1lBQzVELFNBQVMsRUFBRSxhQUFhO1lBQ3hCLE9BQU8sRUFBRSxjQUFjO1NBQ3hCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXhELGdFQUFnRTtRQUNoRSx3RUFBd0U7UUFDeEUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDekU7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLEtBQUssQ0FBQyx5Q0FBeUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNiLEVBQUUsRUFDRixhQUFhLEVBQ2IsTUFBTSx3QkFBd0IsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBSTtZQUNKLGNBQWM7WUFDZCxNQUFNO1lBQ04sUUFBUTtZQUNSLGdCQUFnQixFQUFFLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSTtZQUNuRCxjQUFjLEVBQUUscUJBQXFCO1lBQ3JDLFdBQVcsRUFBRSxrQkFBa0I7WUFDL0IsbUNBQW1DLEVBQUUsWUFBWSxDQUFDLG1DQUFtQztTQUN0RixDQUFDLENBQ0gsQ0FBQztLQUNIO0FBQ0gsQ0FBQztBQXRGRCxrQ0FzRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5cbmltcG9ydCAqIGFzIGRlYnVnTGliIGZyb20gJ2RlYnVnJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7XG4gIEFkZHJlc3NWZXJpZmljYXRpb25EYXRhLFxuICBJUmVxdWVzdFRyYWNlcixcbiAgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvcixcbiAgSVdhbGxldCxcbiAgS2V5Y2hhaW4sXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IsXG4gIFZlcmlmaWNhdGlvbk9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIE91dHB1dCwgVHJhbnNhY3Rpb25QYXJhbXMgfSBmcm9tICcuL2Fic3RyYWN0VXR4b0NvaW4nO1xuXG5jb25zdCBkZWJ1ZyA9IGRlYnVnTGliKCdiaXRnbzp2MjpwYXJzZW91dHB1dCcpO1xuXG5pbnRlcmZhY2UgSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yUmVzcG9uc2Uge1xuICBleHRlcm5hbDogYm9vbGVhbjtcbiAgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENoZWNrIGFuIGFkZHJlc3Mgd2hpY2ggZmFpbGVkIGluaXRpYWwgdmFsaWRhdGlvbiB0byBzZWUgaWYgaXQncyB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgbWlncmF0ZWQgdjEgYmNoIHdhbGxldC5cbiAqXG4gKiBUaGUgd2FsbGV0IGluIHF1ZXN0aW9uIGNvdWxkIGJlIGEgbWlncmF0ZWQgU2FmZUhEIEJDSCB3YWxsZXQsIGFuZCB0aGUgdHJhbnNhY3Rpb24gd2VcbiAqIGFyZSBjdXJyZW50bHkgcGFyc2luZyBpcyB0cnlpbmcgdG8gc3BlbmQgY2hhbmdlIGJhY2sgdG8gdGhlIHYxIHdhbGxldCBiYXNlIGFkZHJlc3MuXG4gKlxuICogSXQgZG9lcyB0aGlzIHNpbmNlIHdlIGRvbid0IGFsbG93IG5ldyBhZGRyZXNzIGNyZWF0aW9uIGZvciB0aGVzZSB3YWxsZXRzLFxuICogYW5kIGluc3RlYWQgcmV0dXJuIHRoZSBiYXNlIGFkZHJlc3MgZnJvbSB0aGUgdjEgd2FsbGV0IHdoZW4gYSBuZXcgYWRkcmVzcyBpcyByZXF1ZXN0ZWQuXG4gKiBJZiB0aGlzIG5ldyBhZGRyZXNzIGlzIHJlcXVlc3RlZCBmb3IgdGhlIHB1cnBvc2VzIG9mIHNwZW5kaW5nIGNoYW5nZSBiYWNrIHRvIHRoZSB3YWxsZXQsXG4gKiB0aGUgY2hhbmdlIHdpbGwgZ28gdG8gdGhlIHYxIHdhbGxldCBiYXNlIGFkZHJlc3MuIFRoaXMgYWRkcmVzcyAqaXMqIG9uIHRoZSB3YWxsZXQsXG4gKiBidXQgaXQgd2lsbCBzdGlsbCBjYXVzZSBhbiBlcnJvciB0byBiZSB0aHJvd24gYnkgdmVyaWZ5QWRkcmVzcywgc2luY2UgdGhlIGRlcml2YXRpb24gcGF0aFxuICogdXNlZCBmb3IgdGhpcyBhZGRyZXNzIGlzIG5vbi1zdGFuZGFyZC4gKEkgaGF2ZSBzZWVuIHRoZXNlIGFkZHJlc3NlcyBkZXJpdmVkIHVzaW5nIHBhdGhzIG0vMC8wIGFuZCBtLzEwMSxcbiAqIHdoZXJlYXMgdGhlIHYyIGFkZHJlc3NlcyBhcmUgZGVyaXZlZCB1c2luZyBwYXRoICBtLzAvMC8ke2NoYWlufS8ke2luZGV4fSkuXG4gKlxuICogVGhpcyBtZWFucyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGlzIGNhc2UgZXhwbGljaXRseSBpbiB0aGlzIGNhdGNoIGJsb2NrLCBhbmQgY2xhc3NpZnlcbiAqIHRoZXNlIHR5cGVzIG9mIG91dHB1dHMgYXMgaW50ZXJuYWwgaW5zdGVhZCBvZiBleHRlcm5hbC4gRmFpbGluZyB0byBkbyBzbyB3b3VsZCBjYXVzZSB0aGVcbiAqIHRyYW5zYWN0aW9uJ3MgaW1wbGljaXQgZXh0ZXJuYWwgb3V0cHV0cyAoaWUsIG91dHB1dHMgd2hpY2ggZ28gdG8gYWRkcmVzc2VzIG5vdCBzcGVjaWZpZWQgaW5cbiAqIHRoZSByZWNpcGllbnRzIGFycmF5KSB0byBhZGQgdXAgdG8gbW9yZSB0aGFuIHRoZSAxNTAgYmFzaXMgcG9pbnQgbGltaXQgd2hpY2ggd2UgZW5mb3JjZSBvblxuICogcGF5LWFzLXlvdS1nbyBvdXRwdXRzICh3aGljaCBzaG91bGQgYmUgdGhlIG9ubHkgaW1wbGljaXQgZXh0ZXJuYWwgb3V0cHV0cyBvbiBvdXIgdHJhbnNhY3Rpb25zKS5cbiAqXG4gKiBUaGUgMTUwIGJhc2lzIHBvaW50IGxpbWl0IGZvciBpbXBsaWNpdCBleHRlcm5hbCBzZW5kcyBpcyBlbmZvcmNlZCBpbiB2ZXJpZnlUcmFuc2FjdGlvbixcbiAqIHdoaWNoIGNhbGxzIHRoaXMgZnVuY3Rpb24gdG8gZ2V0IGluZm9ybWF0aW9uIG9uIHRoZSB0b3RhbCBleHRlcm5hbC9pbnRlcm5hbCBzcGVuZCBhbW91bnRzXG4gKiBmb3IgYSB0cmFuc2FjdGlvbi4gVGhlIGlkZWEgaGVyZSBpcyB0byBwcm90ZWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIG1hbGljaW91c2x5IG1vZGlmaWVkXG4gKiB0byBhZGQgbW9yZSBpbXBsaWNpdCBleHRlcm5hbCBzcGVuZHMgKGVnLCB0byBhbiBhdHRhY2tlci1jb250cm9sbGVkIHdhbGxldCkuXG4gKlxuICogU2VlIHZlcmlmeVRyYW5zYWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0cmFuc2FjdGlvbiBwcmVidWlsZHMgYXJlIHZlcmlmaWVkIGJlZm9yZSBzaWduaW5nLlxuICpcbiAqIEBwYXJhbSB3YWxsZXQge1dhbGxldH0gd2FsbGV0IHdoaWNoIGlzIG1ha2luZyB0aGUgdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSBjdXJyZW50QWRkcmVzcyB7c3RyaW5nfSBhZGRyZXNzIHRvIGNoZWNrIGZvciBleHRlcm5hbGl0eSByZWxhdGl2ZSB0byB2MSB3YWxsZXQgYmFzZSBhZGRyZXNzXG4gKi9cbmZ1bmN0aW9uIGlzTWlncmF0ZWRBZGRyZXNzKHdhbGxldDogSVdhbGxldCwgY3VycmVudEFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoXy5pc1N0cmluZyh3YWxsZXQubWlncmF0ZWRGcm9tKCkpICYmIHdhbGxldC5taWdyYXRlZEZyb20oKSA9PT0gY3VycmVudEFkZHJlc3MpIHtcbiAgICBkZWJ1ZygnZm91bmQgYWRkcmVzcyAlcyB3aGljaCB3YXMgbWlncmF0ZWQgZnJvbSB2MSB3YWxsZXQsIGFkZHJlc3MgaXMgbm90IGV4dGVybmFsJywgY3VycmVudEFkZHJlc3MpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5pbnRlcmZhY2UgVmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnMge1xuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICBjdXN0b21DaGFuZ2VLZXlzOiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zWydjdXN0b21DaGFuZ2VLZXlzJ107XG4gIGFkZHJlc3NUeXBlOiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zWydhZGRyZXNzVHlwZSddO1xuICBhZGRyZXNzRGV0YWlsczogSGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yT3B0aW9uc1snYWRkcmVzc0RldGFpbHMnXTtcbiAgY3VycmVudEFkZHJlc3M6IEhhbmRsZVZlcmlmeUFkZHJlc3NFcnJvck9wdGlvbnNbJ2N1cnJlbnRBZGRyZXNzJ107XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIGFuIGFkZHJlc3MgaXMgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbiBjdXN0b20gY2hhbmdlIGtleXNcbiAqIEBwYXJhbSB7VmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzc09wdGlvbnN9IHBhcmFtc1xuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q3VzdG9tQ2hhbmdlQWRkcmVzcyhwYXJhbXM6IFZlcmlmeUN1c3RvbUNoYW5nZUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgY29pbiwgY3VzdG9tQ2hhbmdlS2V5cywgYWRkcmVzc1R5cGUsIGFkZHJlc3NEZXRhaWxzLCBjdXJyZW50QWRkcmVzcyB9ID0gcGFyYW1zO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBjb2luLnZlcmlmeUFkZHJlc3MoXG4gICAgICBfLmV4dGVuZCh7IGFkZHJlc3NUeXBlIH0sIGFkZHJlc3NEZXRhaWxzLCB7XG4gICAgICAgIGtleWNoYWluczogY3VzdG9tQ2hhbmdlS2V5cyxcbiAgICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICB9KVxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIHZlcmlmeSBjdXN0b20gY2hhbmdlIGFkZHJlc3MgJXMnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmludGVyZmFjZSBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zIHtcbiAgZTogRXJyb3I7XG4gIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHdhbGxldDogSVdhbGxldDtcbiAgdHhQYXJhbXM6IFRyYW5zYWN0aW9uUGFyYW1zO1xuICBjdXN0b21DaGFuZ2VLZXlzPzogQ3VzdG9tQ2hhbmdlT3B0aW9uc1sna2V5cyddO1xuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luO1xuICBhZGRyZXNzRGV0YWlscz86IGFueTtcbiAgYWRkcmVzc1R5cGU/OiBzdHJpbmc7XG4gIGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsPzogYm9vbGVhbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgZSxcbiAgY3VycmVudEFkZHJlc3MsXG4gIHdhbGxldCxcbiAgdHhQYXJhbXMsXG4gIGN1c3RvbUNoYW5nZUtleXMsXG4gIGNvaW4sXG4gIGFkZHJlc3NEZXRhaWxzLFxuICBhZGRyZXNzVHlwZSxcbiAgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWwsXG59OiBIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JPcHRpb25zKTogUHJvbWlzZTxIYW5kbGVWZXJpZnlBZGRyZXNzRXJyb3JSZXNwb25zZT4ge1xuICAvLyBUb2RvOiBuYW1lIHNlcnZlci1zaWRlIGVycm9ycyB0byBhdm9pZCBtZXNzYWdlLWJhc2VkIGNoZWNraW5nIFtCRy01MTI0XVxuICBjb25zdCB3YWxsZXRBZGRyZXNzTm90Rm91bmQgPSBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhbGxldCBhZGRyZXNzIG5vdCBmb3VuZCcpO1xuICBjb25zdCB1bmV4cGVjdGVkQWRkcmVzcyA9IGUgaW5zdGFuY2VvZiBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yO1xuICBpZiAod2FsbGV0QWRkcmVzc05vdEZvdW5kIHx8IHVuZXhwZWN0ZWRBZGRyZXNzKSB7XG4gICAgaWYgKHVuZXhwZWN0ZWRBZGRyZXNzICYmICF3YWxsZXRBZGRyZXNzTm90Rm91bmQpIHtcbiAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIGEgbWlncmF0ZWQgdjEgYmNoIGFkZHJlc3MgLSBpdCBjb3VsZCBiZSBpbnRlcm5hbFxuICAgICAgY29uc3QgaXNNaWdyYXRlZCA9IGlzTWlncmF0ZWRBZGRyZXNzKHdhbGxldCwgY3VycmVudEFkZHJlc3MpO1xuICAgICAgaWYgKGlzTWlncmF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGNvbnNpZGVyTWlncmF0ZWRGcm9tQWRkcmVzc0ludGVybmFsID09PSBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBkZWJ1ZygnQWRkcmVzcyAlcyB3YXMgZm91bmQgb24gd2FsbGV0IGJ1dCBjb3VsZCBub3QgYmUgcmVjb25zdHJ1Y3RlZCcsIGN1cnJlbnRBZGRyZXNzKTtcblxuICAgICAgLy8gYXR0ZW1wdCB0byB2ZXJpZnkgYWRkcmVzcyB1c2luZyBjdXN0b20gY2hhbmdlIGFkZHJlc3Mga2V5cyBpZiB0aGUgd2FsbGV0IGhhcyB0aGF0IGZlYXR1cmUgZW5hYmxlZFxuICAgICAgaWYgKFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzICYmXG4gICAgICAgIChhd2FpdCB2ZXJpZnlDdXN0b21DaGFuZ2VBZGRyZXNzKHsgY29pbiwgYWRkcmVzc0RldGFpbHMsIGFkZHJlc3NUeXBlLCBjdXJyZW50QWRkcmVzcywgY3VzdG9tQ2hhbmdlS2V5cyB9KSlcbiAgICAgICkge1xuICAgICAgICAvLyBhZGRyZXNzIGlzIHZhbGlkIGFnYWluc3QgdGhlIGN1c3RvbSBjaGFuZ2Uga2V5cy4gTWFyayBhZGRyZXNzIGFzIG5vdCBleHRlcm5hbFxuICAgICAgICAvLyBhbmQgcmVxdWVzdCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZvciB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzXG4gICAgICAgIGRlYnVnKCdBZGRyZXNzICVzIHZlcmlmaWVkIGFzIGRlcml2ZWQgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSBrZXlzJywgY3VycmVudEFkZHJlc3MpO1xuICAgICAgICByZXR1cm4geyBleHRlcm5hbDogZmFsc2UsIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGhlIGFkZHJlc3Mgd2FzIGZvdW5kLCBidXQgbm90IG9uIHRoZSB3YWxsZXQsIHdoaWNoIHNpbXBseSBtZWFucyBpdCdzIGV4dGVybmFsXG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgcHJlc3VtZWQgZXh0ZXJuYWwnLCBjdXJyZW50QWRkcmVzcyk7XG4gICAgcmV0dXJuIHsgZXh0ZXJuYWw6IHRydWUgfTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgSW52YWxpZEFkZHJlc3NEZXJpdmF0aW9uUHJvcGVydHlFcnJvciAmJiBjdXJyZW50QWRkcmVzcyA9PT0gdHhQYXJhbXMuY2hhbmdlQWRkcmVzcykge1xuICAgIC8vIGV4cGVjdCB0byBzZWUgdGhpcyBlcnJvciB3aGVuIHBhc3NpbmcgaW4gYSBjdXN0b20gY2hhbmdlQWRkcmVzcyB3aXRoIG5vIGNoYWluIG9yIGluZGV4XG4gICAgcmV0dXJuIHsgZXh0ZXJuYWw6IGZhbHNlIH07XG4gIH1cblxuICBjb25zb2xlLmVycm9yKCdBZGRyZXNzIGNsYXNzaWZpY2F0aW9uIGZhaWxlZCBmb3IgYWRkcmVzcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgY29uc29sZS50cmFjZShlKTtcbiAgLyoqXG4gICAqIEl0IG1pZ2h0IGJlIGEgY29tcGxldGVseSBpbnZhbGlkIGFkZHJlc3Mgb3IgYSBiYWQgdmFsaWRhdGlvbiBhdHRlbXB0IG9yIHNvbWV0aGluZyBlbHNlIGNvbXBsZXRlbHksIGluXG4gICAqIHdoaWNoIGNhc2Ugd2UgZG8gbm90IHByb2NlZWQgYW5kIHJhdGhlciByZXRocm93IHRoZSBlcnJvciwgd2hpY2ggaXMgc2FmZXIgdGhhbiBhc3N1bWluZyB0aGF0IHRoZSBhZGRyZXNzXG4gICAqIHZhbGlkYXRpb24gZmFpbGVkIHNpbXBseSBiZWNhdXNlIGl0J3MgZXh0ZXJuYWwgdG8gdGhlIHdhbGxldC5cbiAgICovXG4gIHRocm93IGU7XG59XG5cbmludGVyZmFjZSBGZXRjaEFkZHJlc3NEZXRhaWxzT3B0aW9ucyB7XG4gIHJlcUlkPzogSVJlcXVlc3RUcmFjZXI7XG4gIGRpc2FibGVOZXR3b3JraW5nOiBib29sZWFuO1xuICBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkOiBhbnk7XG4gIGFkZHJlc3NEZXRhaWxzVmVyaWZpY2F0aW9uOiBhbnk7XG4gIGN1cnJlbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHdhbGxldDogSVdhbGxldDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBZGRyZXNzRGV0YWlscyh7XG4gIHJlcUlkLFxuICBkaXNhYmxlTmV0d29ya2luZyxcbiAgYWRkcmVzc0RldGFpbHNQcmVidWlsZCxcbiAgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24sXG4gIGN1cnJlbnRBZGRyZXNzLFxuICB3YWxsZXQsXG59OiBGZXRjaEFkZHJlc3NEZXRhaWxzT3B0aW9ucykge1xuICBsZXQgYWRkcmVzc0RldGFpbHMgPSBfLmV4dGVuZCh7fSwgYWRkcmVzc0RldGFpbHNQcmVidWlsZCwgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24pO1xuICBkZWJ1ZygnTG9jYWxseSBhdmFpbGFibGUgYWRkcmVzcyAlcyBkZXRhaWxzOiAlTycsIGN1cnJlbnRBZGRyZXNzLCBhZGRyZXNzRGV0YWlscyk7XG4gIGlmIChfLmlzRW1wdHkoYWRkcmVzc0RldGFpbHMpICYmICFkaXNhYmxlTmV0d29ya2luZykge1xuICAgIGFkZHJlc3NEZXRhaWxzID0gYXdhaXQgd2FsbGV0LmdldEFkZHJlc3MoeyBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcywgcmVxSWQgfSk7XG4gICAgZGVidWcoJ0Rvd25sb2FkZWQgYWRkcmVzcyAlcyBkZXRhaWxzOiAlTycsIGN1cnJlbnRBZGRyZXNzLCBhZGRyZXNzRGV0YWlscyk7XG4gIH1cbiAgcmV0dXJuIGFkZHJlc3NEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUNoYW5nZU9wdGlvbnMge1xuICBrZXlzOiBbS2V5Y2hhaW4sIEtleWNoYWluLCBLZXljaGFpbl07XG4gIHNpZ25hdHVyZXM6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZU91dHB1dE9wdGlvbnMge1xuICBjdXJyZW50T3V0cHV0OiBPdXRwdXQ7XG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW47XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHZlcmlmaWNhdGlvbjogVmVyaWZpY2F0aW9uT3B0aW9ucztcbiAga2V5Y2hhaW5BcnJheTogW0tleWNoYWluLCBLZXljaGFpbiwgS2V5Y2hhaW5dO1xuICB3YWxsZXQ6IElXYWxsZXQ7XG4gIHR4UGFyYW1zOiBUcmFuc2FjdGlvblBhcmFtcztcbiAgY3VzdG9tQ2hhbmdlPzogQ3VzdG9tQ2hhbmdlT3B0aW9ucztcbiAgcmVxSWQ/OiBJUmVxdWVzdFRyYWNlcjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlT3V0cHV0KHtcbiAgY3VycmVudE91dHB1dCxcbiAgY29pbixcbiAgdHhQcmVidWlsZCxcbiAgdmVyaWZpY2F0aW9uLFxuICBrZXljaGFpbkFycmF5LFxuICB3YWxsZXQsXG4gIHR4UGFyYW1zLFxuICBjdXN0b21DaGFuZ2UsXG4gIHJlcUlkLFxufTogUGFyc2VPdXRwdXRPcHRpb25zKTogUHJvbWlzZTxPdXRwdXQ+IHtcbiAgY29uc3QgZGlzYWJsZU5ldHdvcmtpbmcgPSAhIXZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcbiAgY29uc3QgY3VycmVudEFkZHJlc3MgPSBjdXJyZW50T3V0cHV0LmFkZHJlc3M7XG5cbiAgLy8gYXR0ZW1wdCB0byBncmFiIHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBlaXRoZXIgdGhlIHByZWJ1aWx0IHR4LCBvciB0aGUgdmVyaWZpY2F0aW9uIHBhcmFtcy5cbiAgLy8gSWYgYm90aCBvZiB0aGVzZSBhcmUgZW1wdHksIHRoZW4gd2Ugd2lsbCB0cnkgdG8gZ2V0IHRoZSBhZGRyZXNzIGRldGFpbHMgZnJvbSBiaXRnbyBpbnN0ZWFkXG4gIGNvbnN0IGFkZHJlc3NEZXRhaWxzUHJlYnVpbGQgPSBfLmdldCh0eFByZWJ1aWxkLCBgdHhJbmZvLndhbGxldEFkZHJlc3NEZXRhaWxzLiR7Y3VycmVudEFkZHJlc3N9YCwge30pO1xuICBjb25zdCBhZGRyZXNzRGV0YWlsc1ZlcmlmaWNhdGlvbjogQWRkcmVzc1ZlcmlmaWNhdGlvbkRhdGEgPSB2ZXJpZmljYXRpb24/LmFkZHJlc3Nlcz8uW2N1cnJlbnRBZGRyZXNzXSA/PyB7fTtcbiAgZGVidWcoJ1BhcnNpbmcgYWRkcmVzcyBkZXRhaWxzIGZvciAlcycsIGN1cnJlbnRBZGRyZXNzKTtcbiAgbGV0IGN1cnJlbnRBZGRyZXNzRGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgbGV0IGN1cnJlbnRBZGRyZXNzVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBjb25zdCBSRUNJUElFTlRfVEhSRVNIT0xEID0gMTAwMDtcbiAgdHJ5IHtcbiAgICAvKipcbiAgICAgKiBUaGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gYWRkcmVzcyBpcyBrbm93biBvbiB0aGUgd2FsbGV0IGlzIHRvIGluaXRpYXRlIGEgbmV0d29yayByZXF1ZXN0IGFuZFxuICAgICAqIGZldGNoIGl0LiBTaG91bGQgdGhlIHJlcXVlc3QgZmFpbCBhbmQgcmV0dXJuIGEgNDA0LCBpdCB3aWxsIHRocm93IGFuZCB0aGVyZWZvcmUgaGFzIHRvIGJlIGNhdWdodC4gRm9yIHRoYXRcbiAgICAgKiByZWFzb24sIGFkZHJlc3Mgd2FsbGV0IG93bmVyc2hpcCBkZXRlY3Rpb24gaXMgd3JhcHBlZCBpbiBhIHRyeS9jYXRjaC4gQWRkaXRpb25hbGx5LCBvbmNlIHRoZSBhZGRyZXNzXG4gICAgICogZGV0YWlscyBhcmUgZmV0Y2hlZCBvbiB0aGUgd2FsbGV0LCBhIGxvY2FsIGFkZHJlc3MgdmFsaWRhdGlvbiBpcyBydW4sIHdob3NlIGVycm9ycyBob3dldmVyIGFyZSBnZW5lcmF0ZWRcbiAgICAgKiBjbGllbnQtc2lkZSBhbmQgY2FuIHRoZXJlZm9yZSBiZSBhbmFseXplZCB3aXRoIG1vcmUgZ3JhbnVsYXJpdHkgYW5kIHR5cGUgY2hlY2tpbmcuXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBJbiBvcmRlciB0byBtaW5pbWl6ZSBBUEkgcmVxdWVzdHMsIHdlIGFzc3VtZSB0aGF0IGV4cGxpY2l0IHJlY2lwaWVudHMgYXJlIGFsd2F5cyBleHRlcm5hbCB3aGVuIHRoZVxuICAgICAqIHJlY2lwaWVudCBsaXN0IGlzID4gMTAwMCBUaGlzIGlzIG5vdCBhbHdheXMgYSB2YWxpZCBhc3N1bXB0aW9uIGFuZCBjb3VsZCBsZWFkIGdyZWF0ZXIgYXBwYXJlbnQgc3BlbmQgKGJ1dCBuZXZlciBsb3dlcilcbiAgICAgKi9cbiAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkICYmIHR4UGFyYW1zLnJlY2lwaWVudHMubGVuZ3RoID4gUkVDSVBJRU5UX1RIUkVTSE9MRCkge1xuICAgICAgY29uc3QgaXNDdXJyZW50QWRkcmVzc0luUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHMuc29tZSgocmVjaXBpZW50KSA9PlxuICAgICAgICByZWNpcGllbnQuYWRkcmVzcy5pbmNsdWRlcyhjdXJyZW50QWRkcmVzcylcbiAgICAgICk7XG5cbiAgICAgIGlmIChpc0N1cnJlbnRBZGRyZXNzSW5SZWNpcGllbnRzKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmN1cnJlbnRPdXRwdXQsIGV4dGVybmFsOiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYWRkcmVzc0RldGFpbHMgPSBhd2FpdCBmZXRjaEFkZHJlc3NEZXRhaWxzKHtcbiAgICAgIHJlcUlkLFxuICAgICAgYWRkcmVzc0RldGFpbHNWZXJpZmljYXRpb24sXG4gICAgICBhZGRyZXNzRGV0YWlsc1ByZWJ1aWxkLFxuICAgICAgY3VycmVudEFkZHJlc3MsXG4gICAgICBkaXNhYmxlTmV0d29ya2luZyxcbiAgICAgIHdhbGxldCxcbiAgICB9KTtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGUgYWRkcmVzcyBpcyBvbiB0aGUgd2FsbGV0LiB2ZXJpZnlBZGRyZXNzIHRocm93cyBpZlxuICAgIC8vIGl0IGZhaWxzIHRvIGNvcnJlY3RseSByZWRlcml2ZSB0aGUgYWRkcmVzcywgbWVhbmluZyBpdCdzIGV4dGVybmFsXG4gICAgY3VycmVudEFkZHJlc3NUeXBlID0gQWJzdHJhY3RVdHhvQ29pbi5pbmZlckFkZHJlc3NUeXBlKGFkZHJlc3NEZXRhaWxzKSB8fCB1bmRlZmluZWQ7XG4gICAgY3VycmVudEFkZHJlc3NEZXRhaWxzID0gYWRkcmVzc0RldGFpbHM7XG4gICAgYXdhaXQgY29pbi52ZXJpZnlBZGRyZXNzKFxuICAgICAgXy5leHRlbmQoeyBhZGRyZXNzVHlwZTogY3VycmVudEFkZHJlc3NUeXBlIH0sIGFkZHJlc3NEZXRhaWxzLCB7XG4gICAgICAgIGtleWNoYWluczoga2V5Y2hhaW5BcnJheSxcbiAgICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICB9KVxuICAgICk7XG4gICAgZGVidWcoJ0FkZHJlc3MgJXMgdmVyaWZpY2F0aW9uIHBhc3NlZCcsIGN1cnJlbnRBZGRyZXNzKTtcblxuICAgIC8vIHZlcmlmeSBhZGRyZXNzIHN1Y2NlZWRlZCB3aXRob3V0IHRocm93aW5nLCBzbyB0aGUgYWRkcmVzcyB3YXNcbiAgICAvLyBjb3JyZWN0bHkgcmVkZXJpdmVkIGZyb20gdGhlIHdhbGxldCBrZXljaGFpbnMsIG1ha2luZyBpdCBub3QgZXh0ZXJuYWxcbiAgICByZXR1cm4gXy5leHRlbmQoe30sIGN1cnJlbnRPdXRwdXQsIGFkZHJlc3NEZXRhaWxzLCB7IGV4dGVybmFsOiBmYWxzZSB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGRlYnVnKCdBZGRyZXNzICVzIHZlcmlmaWNhdGlvbiB0aHJldyBhbiBlcnJvcjonLCBjdXJyZW50QWRkcmVzcywgZSk7XG4gICAgcmV0dXJuIF8uZXh0ZW5kKFxuICAgICAge30sXG4gICAgICBjdXJyZW50T3V0cHV0LFxuICAgICAgYXdhaXQgaGFuZGxlVmVyaWZ5QWRkcmVzc0Vycm9yKHtcbiAgICAgICAgZSxcbiAgICAgICAgY29pbixcbiAgICAgICAgY3VycmVudEFkZHJlc3MsXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXMsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXM6IGN1c3RvbUNoYW5nZSAmJiBjdXN0b21DaGFuZ2Uua2V5cyxcbiAgICAgICAgYWRkcmVzc0RldGFpbHM6IGN1cnJlbnRBZGRyZXNzRGV0YWlscyxcbiAgICAgICAgYWRkcmVzc1R5cGU6IGN1cnJlbnRBZGRyZXNzVHlwZSxcbiAgICAgICAgY29uc2lkZXJNaWdyYXRlZEZyb21BZGRyZXNzSW50ZXJuYWw6IHZlcmlmaWNhdGlvbi5jb25zaWRlck1pZ3JhdGVkRnJvbUFkZHJlc3NJbnRlcm5hbCxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @prettier
|
|
3
|
-
*/
|
|
4
|
-
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
5
|
-
import { BaseApi } from './baseApi';
|
|
6
|
-
export declare class SmartbitApi extends BaseApi {
|
|
7
|
-
static forCoin(coinName: string): SmartbitApi;
|
|
8
|
-
constructor(baseUrl: string);
|
|
9
|
-
getTransactionDetails<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>): Promise<unknown>;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=smartbitApi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smartbitApi.d.ts","sourceRoot":"","sources":["../../../src/recovery/smartbitApi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAA0B,OAAO,EAAE,MAAM,WAAW,CAAC;AAE5D,qBAAa,WAAY,SAAQ,OAAO;IACtC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;gBAUjC,OAAO,EAAE,MAAM;IAIrB,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzD,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,OAAO,CAAC;CAkBpB"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SmartbitApi = void 0;
|
|
4
|
-
const baseApi_1 = require("./baseApi");
|
|
5
|
-
class SmartbitApi extends baseApi_1.BaseApi {
|
|
6
|
-
static forCoin(coinName) {
|
|
7
|
-
switch (coinName) {
|
|
8
|
-
case 'btc':
|
|
9
|
-
return new SmartbitApi('https://api.smartbit.com.au/v1');
|
|
10
|
-
case 'tbtc':
|
|
11
|
-
return new SmartbitApi('https://testnet-api.smartbit.com.au/v1');
|
|
12
|
-
}
|
|
13
|
-
throw new baseApi_1.ApiNotImplementedError(coinName);
|
|
14
|
-
}
|
|
15
|
-
constructor(baseUrl) {
|
|
16
|
-
super(baseUrl);
|
|
17
|
-
}
|
|
18
|
-
async getTransactionDetails(tx) {
|
|
19
|
-
const path = '/blockchain/decodetx';
|
|
20
|
-
const res = await this.post(path, { hex: tx.toBuffer().toString('hex') });
|
|
21
|
-
/**
|
|
22
|
-
* Smartbit's response when something goes wrong
|
|
23
|
-
* {"success":false,"error":{"code":"REQ_ERROR","message":"TX decode failed"}}
|
|
24
|
-
* we should process the error message here
|
|
25
|
-
* interpret the res from smartbit
|
|
26
|
-
*/
|
|
27
|
-
return res.map((body) => {
|
|
28
|
-
if (!body.success) {
|
|
29
|
-
throw new Error(body.error.message);
|
|
30
|
-
}
|
|
31
|
-
return body.transaction;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
exports.SmartbitApi = SmartbitApi;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRiaXRBcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVjb3Zlcnkvc21hcnRiaXRBcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsdUNBQTREO0FBRTVELE1BQWEsV0FBWSxTQUFRLGlCQUFPO0lBQ3RDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBZ0I7UUFDN0IsUUFBUSxRQUFRLEVBQUU7WUFDaEIsS0FBSyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxXQUFXLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUMzRCxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLFdBQVcsQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsTUFBTSxJQUFJLGdDQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLEVBQTBDO1FBRTFDLE1BQU0sSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBTSxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFL0U7Ozs7O1dBS0c7UUFFSCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbkNELGtDQW1DQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgQXBpTm90SW1wbGVtZW50ZWRFcnJvciwgQmFzZUFwaSB9IGZyb20gJy4vYmFzZUFwaSc7XG5cbmV4cG9ydCBjbGFzcyBTbWFydGJpdEFwaSBleHRlbmRzIEJhc2VBcGkge1xuICBzdGF0aWMgZm9yQ29pbihjb2luTmFtZTogc3RyaW5nKTogU21hcnRiaXRBcGkge1xuICAgIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICAgIGNhc2UgJ2J0Yyc6XG4gICAgICAgIHJldHVybiBuZXcgU21hcnRiaXRBcGkoJ2h0dHBzOi8vYXBpLnNtYXJ0Yml0LmNvbS5hdS92MScpO1xuICAgICAgY2FzZSAndGJ0Yyc6XG4gICAgICAgIHJldHVybiBuZXcgU21hcnRiaXRBcGkoJ2h0dHBzOi8vdGVzdG5ldC1hcGkuc21hcnRiaXQuY29tLmF1L3YxJyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBBcGlOb3RJbXBsZW1lbnRlZEVycm9yKGNvaW5OYW1lKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKGJhc2VVcmw6IHN0cmluZykge1xuICAgIHN1cGVyKGJhc2VVcmwpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VHJhbnNhY3Rpb25EZXRhaWxzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICAgIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPlxuICApOiBQcm9taXNlPHVua25vd24+IHtcbiAgICBjb25zdCBwYXRoID0gJy9ibG9ja2NoYWluL2RlY29kZXR4JztcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnBvc3Q8YW55PihwYXRoLCB7IGhleDogdHgudG9CdWZmZXIoKS50b1N0cmluZygnaGV4JykgfSk7XG5cbiAgICAvKipcbiAgICAgKiBTbWFydGJpdCdzIHJlc3BvbnNlIHdoZW4gc29tZXRoaW5nIGdvZXMgd3JvbmdcbiAgICAgKiB7XCJzdWNjZXNzXCI6ZmFsc2UsXCJlcnJvclwiOntcImNvZGVcIjpcIlJFUV9FUlJPUlwiLFwibWVzc2FnZVwiOlwiVFggZGVjb2RlIGZhaWxlZFwifX1cbiAgICAgKiB3ZSBzaG91bGQgcHJvY2VzcyB0aGUgZXJyb3IgbWVzc2FnZSBoZXJlXG4gICAgICogaW50ZXJwcmV0IHRoZSByZXMgZnJvbSBzbWFydGJpdFxuICAgICAqL1xuXG4gICAgcmV0dXJuIHJlcy5tYXAoKGJvZHkpID0+IHtcbiAgICAgIGlmICghYm9keS5zdWNjZXNzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihib2R5LmVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJvZHkudHJhbnNhY3Rpb247XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|