@bitgo-beta/sdk-coin-btc 1.2.3-alpha.45 → 1.2.3-alpha.46

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/CHANGELOG.md CHANGED
@@ -3,30 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.4.2](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.4.1...@bitgo/sdk-coin-btc@1.4.2) (2023-04-25)
7
-
8
- **Note:** Version bump only for package @bitgo/sdk-coin-btc
9
-
10
- ## [1.4.1](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.4.0...@bitgo/sdk-coin-btc@1.4.1) (2023-04-20)
11
-
12
- **Note:** Version bump only for package @bitgo/sdk-coin-btc
13
-
14
- # [1.4.0](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.3.6...@bitgo/sdk-coin-btc@1.4.0) (2023-04-13)
15
-
16
- ### Bug Fixes
17
-
18
- - fix error when using feeOutput ([4fb6214](https://github.com/BitGo/BitGoJS/commit/4fb6214a2596c33563eceae4f360302e95060354))
19
- - **sdk-coin-btc:** convert unspent value to BigInt ([ed7d967](https://github.com/BitGo/BitGoJS/commit/ed7d96717919eb266a6a319e8c53552a058d5edf))
20
- - **sdk-coin-btc:** get rootwalletkeys for inscription transfer ([b160186](https://github.com/BitGo/BitGoJS/commit/b16018643273e20ea6908f51149139def7209932))
21
- - use half signed commit txn when signing reveal ([c0fb50b](https://github.com/BitGo/BitGoJS/commit/c0fb50bd6b3b5f4322420a8574a1a661d15ee21d))
22
- - use p2wsh and internalChainCode for changeAddress creation ([4a5b79c](https://github.com/BitGo/BitGoJS/commit/4a5b79cce0e41ebe31e5d1ee7c5c05b2f7c3d414))
23
- - used derived keys and use xonly public key for script ([382ce07](https://github.com/BitGo/BitGoJS/commit/382ce073b660f2d002176e3a8fdcadcf5bbaff6a))
24
-
25
- ### Features
26
-
27
- - add inscription builder class ([214eafe](https://github.com/BitGo/BitGoJS/commit/214eafe48e8d12fd5d58efac289bab33bbd46fd3))
28
- - **sdk-coin-btc:** transfer an inscription ([bc2eda8](https://github.com/BitGo/BitGoJS/commit/bc2eda86f73a4e4451fd6accbc2a794f08649b78))
29
-
30
6
  ## [1.3.6](https://github.com/BitGo/BitGoJS/compare/@bitgo/sdk-coin-btc@1.3.5...@bitgo/sdk-coin-btc@1.3.6) (2023-02-17)
31
7
 
32
8
  **Note:** Version bump only for package @bitgo/sdk-coin-btc
package/dist/src/btc.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { AbstractUtxoCoin, UtxoNetwork } from '@bitgo-beta/abstract-utxo';
2
- import { BitGoBase, BaseCoin, VerifyRecoveryTransactionOptions as BaseVerifyRecoveryTransactionOptions, Wallet } from '@bitgo-beta/sdk-core';
3
- import { InscriptionBuilder } from './inscriptionBuilder';
2
+ import { BitGoBase, BaseCoin, VerifyRecoveryTransactionOptions as BaseVerifyRecoveryTransactionOptions } from '@bitgo-beta/sdk-core';
4
3
  export interface VerifyRecoveryTransactionOptions extends BaseVerifyRecoveryTransactionOptions {
5
4
  transactionHex: string;
6
5
  }
@@ -12,6 +11,5 @@ export declare class Btc extends AbstractUtxoCoin {
12
11
  getFullName(): string;
13
12
  supportsBlockTarget(): boolean;
14
13
  supportsLightning(): boolean;
15
- getInscriptionBuilder(wallet: Wallet): InscriptionBuilder;
16
14
  }
17
15
  //# sourceMappingURL=btc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"btc.d.ts","sourceRoot":"","sources":["../../src/btc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACL,SAAS,EACT,QAAQ,EACR,gCAAgC,IAAI,oCAAoC,EACxE,MAAM,EACP,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,gCAAiC,SAAQ,oCAAoC;IAC5F,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,GAAI,SAAQ,gBAAgB;gBAC3B,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW;IAInD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,mBAAmB,IAAI,OAAO;IAI9B,iBAAiB,IAAI,OAAO;IAI5B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;CAG1D"}
1
+ {"version":3,"file":"btc.d.ts","sourceRoot":"","sources":["../../src/btc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACL,SAAS,EACT,QAAQ,EACR,gCAAgC,IAAI,oCAAoC,EACzE,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,gCAAiC,SAAQ,oCAAoC;IAC5F,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,GAAI,SAAQ,gBAAgB;gBAC3B,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW;IAInD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,mBAAmB,IAAI,OAAO;IAI9B,iBAAiB,IAAI,OAAO;CAG7B"}
package/dist/src/btc.js CHANGED
@@ -22,7 +22,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
22
22
  exports.Btc = void 0;
23
23
  const abstract_utxo_1 = require("@bitgo-beta/abstract-utxo");
24
24
  const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
25
- const inscriptionBuilder_1 = require("./inscriptionBuilder");
26
25
  class Btc extends abstract_utxo_1.AbstractUtxoCoin {
27
26
  constructor(bitgo, network) {
28
27
  super(bitgo, network || utxolib.networks.bitcoin);
@@ -45,9 +44,6 @@ class Btc extends abstract_utxo_1.AbstractUtxoCoin {
45
44
  supportsLightning() {
46
45
  return true;
47
46
  }
48
- getInscriptionBuilder(wallet) {
49
- return new inscriptionBuilder_1.InscriptionBuilder(wallet, this);
50
- }
51
47
  }
52
48
  exports.Btc = Btc;
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J0Yy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTBFO0FBTzFFLDhEQUFnRDtBQUNoRCw2REFBMEQ7QUFNMUQsTUFBYSxHQUFJLFNBQVEsZ0NBQWdCO0lBQ3ZDLFlBQVksS0FBZ0IsRUFBRSxPQUFxQjtRQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsTUFBYztRQUNsQyxPQUFPLElBQUksdUNBQWtCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQWhDRCxrQkFnQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBVdHhvTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXV0eG8nO1xuaW1wb3J0IHtcbiAgQml0R29CYXNlLFxuICBCYXNlQ29pbixcbiAgVmVyaWZ5UmVjb3ZlcnlUcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVZlcmlmeVJlY292ZXJ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBXYWxsZXQsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgSW5zY3JpcHRpb25CdWlsZGVyIH0gZnJvbSAnLi9pbnNjcmlwdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeVJlY292ZXJ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVZlcmlmeVJlY292ZXJ5VHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHJhbnNhY3Rpb25IZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEJ0YyBleHRlbmRzIEFic3RyYWN0VXR4b0NvaW4ge1xuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBuZXR3b3JrPzogVXR4b05ldHdvcmspIHtcbiAgICBzdXBlcihiaXRnbywgbmV0d29yayB8fCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UpOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBCdGMoYml0Z28pO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2J0Yyc7XG4gIH1cblxuICBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2J0Yyc7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQml0Y29pbic7XG4gIH1cblxuICBzdXBwb3J0c0Jsb2NrVGFyZ2V0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc3VwcG9ydHNMaWdodG5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRJbnNjcmlwdGlvbkJ1aWxkZXIod2FsbGV0OiBXYWxsZXQpOiBJbnNjcmlwdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgSW5zY3JpcHRpb25CdWlsZGVyKHdhbGxldCwgdGhpcyk7XG4gIH1cbn1cbiJdfQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J0Yy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTBFO0FBTTFFLDhEQUFnRDtBQU1oRCxNQUFhLEdBQUksU0FBUSxnQ0FBZ0I7SUFDdkMsWUFBWSxLQUFnQixFQUFFLE9BQXFCO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBZ0I7UUFDcEMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQTVCRCxrQkE0QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBVdHhvTmV0d29yayB9IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LXV0eG8nO1xuaW1wb3J0IHtcbiAgQml0R29CYXNlLFxuICBCYXNlQ29pbixcbiAgVmVyaWZ5UmVjb3ZlcnlUcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVZlcmlmeVJlY292ZXJ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlSZWNvdmVyeVRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIEJhc2VWZXJpZnlSZWNvdmVyeVRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHRyYW5zYWN0aW9uSGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBCdGMgZXh0ZW5kcyBBYnN0cmFjdFV0eG9Db2luIHtcbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgbmV0d29yaz86IFV0eG9OZXR3b3JrKSB7XG4gICAgc3VwZXIoYml0Z28sIG5ldHdvcmsgfHwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlKTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQnRjKGJpdGdvKTtcbiAgfVxuXG4gIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdidGMnO1xuICB9XG5cbiAgZ2V0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdidGMnO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0JpdGNvaW4nO1xuICB9XG5cbiAgc3VwcG9ydHNCbG9ja1RhcmdldCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHN1cHBvcnRzTGlnaHRuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-coin-btc",
3
- "version": "1.2.3-alpha.45",
3
+ "version": "1.2.3-alpha.46",
4
4
  "description": "BitGo SDK coin library for Bitcoin",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -40,14 +40,13 @@
40
40
  ]
41
41
  },
42
42
  "dependencies": {
43
- "@bitgo-beta/abstract-utxo": "1.6.1-alpha.45",
44
- "@bitgo-beta/sdk-core": "2.4.1-alpha.45",
45
- "@bitgo-beta/utxo-lib": "4.0.1-alpha.45",
46
- "@bitgo-beta/utxo-ord": "1.1.3-alpha.1"
43
+ "@bitgo-beta/abstract-utxo": "1.6.1-alpha.46",
44
+ "@bitgo-beta/sdk-core": "2.4.1-alpha.46",
45
+ "@bitgo-beta/utxo-lib": "4.0.1-alpha.46"
47
46
  },
48
47
  "devDependencies": {
49
- "@bitgo-beta/sdk-api": "1.6.1-alpha.45",
50
- "@bitgo-beta/sdk-test": "^1.2.18"
48
+ "@bitgo-beta/sdk-api": "1.6.1-alpha.46",
49
+ "@bitgo-beta/sdk-test": "^1.2.15"
51
50
  },
52
- "gitHead": "556d11a9b81d7aa0c653515874842c5405d9e36f"
51
+ "gitHead": "823815b0deff0f0ee0ed8a46f9b4fed7f4be6d05"
53
52
  }
@@ -1,50 +0,0 @@
1
- /// <reference types="node" />
2
- import { AbstractUtxoCoin } from '@bitgo-beta/abstract-utxo';
3
- import { IInscriptionBuilder, IWallet, PrebuildTransactionResult, PreparedInscriptionRevealData, SubmitTransactionResponse } from '@bitgo-beta/sdk-core';
4
- import * as utxolib from '@bitgo-beta/utxo-lib';
5
- export declare class InscriptionBuilder implements IInscriptionBuilder {
6
- private readonly wallet;
7
- private readonly coin;
8
- constructor(wallet: IWallet, coin: AbstractUtxoCoin);
9
- prepareReveal(inscriptionData: Buffer, contentType: string): Promise<PreparedInscriptionRevealData>;
10
- /**
11
- * Build a transaction to send an inscription
12
- * @param satPoint Satpoint you want to send
13
- * @param recipient Address you want to send to
14
- * @param feeRateSatKB Fee rate for transaction
15
- * @param signer first signer of the transaction
16
- * @param cosigner second signer of the transaction
17
- * @param inscriptionConstraints.minChangeOutput (optional) the minimum size of the change output
18
- * @param inscriptionConstraints.minInscriptionOutput (optional) the minimum number of sats of the output containing the inscription
19
- * @param inscriptionConstraints.maxInscriptionOutput (optional) the maximum number of sats of the output containing the inscription
20
- * @param changeAddressType Address type of the change address
21
- */
22
- prepareTransfer(satPoint: string, recipient: string, feeRateSatKB: number, { signer, cosigner, inscriptionConstraints, changeAddressType, }: {
23
- signer?: utxolib.bitgo.KeyName;
24
- cosigner?: utxolib.bitgo.KeyName;
25
- inscriptionConstraints?: {
26
- minChangeOutput?: bigint;
27
- minInscriptionOutput?: bigint;
28
- maxInscriptionOutput?: bigint;
29
- };
30
- changeAddressType?: utxolib.bitgo.outputScripts.ScriptType2Of3;
31
- }): Promise<PrebuildTransactionResult>;
32
- /**
33
- *
34
- * @param walletPassphrase
35
- * @param tapLeafScript
36
- * @param commitAddress
37
- * @param unsignedCommitTx
38
- * @param commitTransactionUnspents
39
- * @param recipientAddress
40
- * @param inscriptionData
41
- */
42
- signAndSendReveal(walletPassphrase: string, tapLeafScript: utxolib.bitgo.TapLeafScript, commitAddress: string, unsignedCommitTx: Buffer, commitTransactionUnspents: utxolib.bitgo.WalletUnspent[], recipientAddress: string, inscriptionData: Buffer): Promise<SubmitTransactionResponse>;
43
- /**
44
- * Sign and send a transaction that transfers an inscription
45
- * @param walletPassphrase passphrase to unlock your keys
46
- * @param txPrebuild this is the output of `inscription.prepareTransfer`
47
- */
48
- signAndSendTransfer(walletPassphrase: string, txPrebuild: PrebuildTransactionResult): Promise<SubmitTransactionResponse>;
49
- }
50
- //# sourceMappingURL=inscriptionBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inscriptionBuilder.d.ts","sourceRoot":"","sources":["../../src/inscriptionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAEL,mBAAmB,EACnB,OAAO,EAEP,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EAG1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAYhD,qBAAa,kBAAmB,YAAW,mBAAmB;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB;IAK7C,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAWzG;;;;;;;;;;;OAWG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,EACE,MAAe,EACf,QAAkB,EAClB,sBAAsD,EACtD,iBAA2B,GAC5B,EAAE;QACD,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QACjC,sBAAsB,CAAC,EAAE;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;SAC/B,CAAC;QACF,iBAAiB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;KAChE,GACA,OAAO,CAAC,yBAAyB,CAAC;IAkDrC;;;;;;;;;OASG;IACG,iBAAiB,CACrB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAC1C,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,yBAAyB,EAAE,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,EACxD,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,yBAAyB,CAAC;IAgCrC;;;;OAIG;IACG,mBAAmB,CACvB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,yBAAyB,GACpC,OAAO,CAAC,yBAAyB,CAAC;CAOtC"}
@@ -1,137 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.InscriptionBuilder = void 0;
26
- const abstract_utxo_1 = require("@bitgo-beta/abstract-utxo");
27
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
28
- const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
29
- const utxo_ord_1 = require("@bitgo-beta/utxo-ord");
30
- const assert_1 = __importDefault(require("assert"));
31
- class InscriptionBuilder {
32
- constructor(wallet, coin) {
33
- this.wallet = wallet;
34
- this.coin = coin;
35
- }
36
- async prepareReveal(inscriptionData, contentType) {
37
- const user = await this.wallet.baseCoin.keychains().get({ id: this.wallet.keyIds()[sdk_core_1.KeyIndices.USER] });
38
- assert_1.default(user.pub);
39
- const derived = this.coin.deriveKeyWithSeed({ key: user.pub, seed: inscriptionData.toString() });
40
- const compressedPublicKey = sdk_core_1.xpubToCompressedPub(derived.key);
41
- const xOnlyPublicKey = utxolib.bitgo.outputScripts.toXOnlyPublicKey(Buffer.from(compressedPublicKey, 'hex'));
42
- return utxo_ord_1.inscriptions.createInscriptionRevealData(xOnlyPublicKey, contentType, inscriptionData, this.coin.network);
43
- }
44
- /**
45
- * Build a transaction to send an inscription
46
- * @param satPoint Satpoint you want to send
47
- * @param recipient Address you want to send to
48
- * @param feeRateSatKB Fee rate for transaction
49
- * @param signer first signer of the transaction
50
- * @param cosigner second signer of the transaction
51
- * @param inscriptionConstraints.minChangeOutput (optional) the minimum size of the change output
52
- * @param inscriptionConstraints.minInscriptionOutput (optional) the minimum number of sats of the output containing the inscription
53
- * @param inscriptionConstraints.maxInscriptionOutput (optional) the maximum number of sats of the output containing the inscription
54
- * @param changeAddressType Address type of the change address
55
- */
56
- async prepareTransfer(satPoint, recipient, feeRateSatKB, { signer = 'user', cosigner = 'bitgo', inscriptionConstraints = utxo_ord_1.DefaultInscriptionConstraints, changeAddressType = 'p2wsh', }) {
57
- assert_1.default(utxo_ord_1.isSatPoint(satPoint));
58
- const rootWalletKeys = await abstract_utxo_1.getWalletKeys(this.coin, this.wallet);
59
- const parsedSatPoint = utxo_ord_1.parseSatPoint(satPoint);
60
- const transaction = await this.wallet.getTransaction({ txHash: parsedSatPoint.txid });
61
- // TODO(BG-70900): allow supplemental unspents
62
- const unspents = [transaction.outputs[parsedSatPoint.vout]];
63
- unspents[0].value = BigInt(unspents[0].value);
64
- const txInfo = { unspents };
65
- const changeAddress = await this.wallet.createAddress({
66
- chain: utxolib.bitgo.getInternalChainCode(changeAddressType),
67
- });
68
- const outputs = {
69
- inscriptionRecipient: recipient,
70
- changeOutputs: [
71
- { chain: changeAddress.chain, index: changeAddress.index },
72
- { chain: changeAddress.chain, index: changeAddress.index },
73
- ],
74
- };
75
- const psbt = utxo_ord_1.createPsbtForSingleInscriptionPassingTransaction(this.coin.network, {
76
- walletKeys: rootWalletKeys,
77
- signer,
78
- cosigner,
79
- }, unspents, satPoint, outputs, { feeRateSatKB, ...inscriptionConstraints });
80
- const outputLayout = utxo_ord_1.findOutputLayoutForWalletUnspents(unspents, satPoint, outputs, {
81
- feeRateSatKB,
82
- ...inscriptionConstraints,
83
- });
84
- if (!outputLayout) {
85
- throw new Error(`could not output layout for inscription passing transaction`);
86
- }
87
- return {
88
- walletId: this.wallet.id(),
89
- txHex: psbt.getUnsignedTx().toHex(),
90
- txInfo,
91
- feeInfo: { fee: Number(outputLayout.layout.feeOutput), feeString: outputLayout.layout.feeOutput.toString() },
92
- };
93
- }
94
- /**
95
- *
96
- * @param walletPassphrase
97
- * @param tapLeafScript
98
- * @param commitAddress
99
- * @param unsignedCommitTx
100
- * @param commitTransactionUnspents
101
- * @param recipientAddress
102
- * @param inscriptionData
103
- */
104
- async signAndSendReveal(walletPassphrase, tapLeafScript, commitAddress, unsignedCommitTx, commitTransactionUnspents, recipientAddress, inscriptionData) {
105
- const userKeychain = await this.wallet.baseCoin.keychains().get({ id: this.wallet.keyIds()[sdk_core_1.KeyIndices.USER] });
106
- const xprv = await this.wallet.getUserPrv({ keychain: userKeychain, walletPassphrase });
107
- const halfSignedCommitTransaction = (await this.wallet.signTransaction({
108
- prv: xprv,
109
- txPrebuild: {
110
- txHex: unsignedCommitTx.toString('hex'),
111
- txInfo: { unspents: commitTransactionUnspents },
112
- },
113
- }));
114
- const derived = this.coin.deriveKeyWithSeed({ key: xprv, seed: inscriptionData.toString() });
115
- const prv = sdk_core_1.xprvToRawPrv(derived.key);
116
- const fullySignedRevealTransaction = await utxo_ord_1.inscriptions.signRevealTransaction(Buffer.from(prv, 'hex'), tapLeafScript, commitAddress, recipientAddress, Buffer.from(halfSignedCommitTransaction.txHex, 'hex'), this.coin.network);
117
- return this.wallet.submitTransaction({
118
- halfSigned: {
119
- txHex: halfSignedCommitTransaction.txHex,
120
- signedChildPsbt: fullySignedRevealTransaction.toHex(),
121
- },
122
- });
123
- }
124
- /**
125
- * Sign and send a transaction that transfers an inscription
126
- * @param walletPassphrase passphrase to unlock your keys
127
- * @param txPrebuild this is the output of `inscription.prepareTransfer`
128
- */
129
- async signAndSendTransfer(walletPassphrase, txPrebuild) {
130
- const userKeychain = await this.wallet.baseCoin.keychains().get({ id: this.wallet.keyIds()[sdk_core_1.KeyIndices.USER] });
131
- const prv = this.wallet.getUserPrv({ keychain: userKeychain, walletPassphrase });
132
- const halfSigned = (await this.wallet.signTransaction({ prv, txPrebuild }));
133
- return this.wallet.submitTransaction({ halfSigned });
134
- }
135
- }
136
- exports.InscriptionBuilder = InscriptionBuilder;
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zY3JpcHRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luc2NyaXB0aW9uQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQTRFO0FBQzVFLG1EQVU4QjtBQUM5Qiw4REFBZ0Q7QUFDaEQsbURBUThCO0FBQzlCLG9EQUE0QjtBQUU1QixNQUFhLGtCQUFrQjtJQUk3QixZQUFZLE1BQWUsRUFBRSxJQUFzQjtRQUNqRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUF1QixFQUFFLFdBQW1CO1FBQzlELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMscUJBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkcsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLE1BQU0sbUJBQW1CLEdBQUcsOEJBQW1CLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMs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aEIsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUNsQixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1lBQ25DLFVBQVUsRUFBRTtnQkFDVixLQUFLLEVBQUUsMkJBQTJCLENBQUMsS0FBSztnQkFDeEMsZUFBZSxFQUFFLDRCQUE0QixDQUFDLEtBQUssRUFBRTthQUN0RDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUN2QixnQkFBd0IsRUFDeEIsVUFBcUM7UUFFckMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRWpGLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUE4QixDQUFDO1FBQ3pHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztDQUNGO0FBdEtELGdEQXNLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0VXR4b0NvaW4sIGdldFdhbGxldEtleXMgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC11dHhvJztcbmltcG9ydCB7XG4gIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb24sXG4gIElJbnNjcmlwdGlvbkJ1aWxkZXIsXG4gIElXYWxsZXQsXG4gIEtleUluZGljZXMsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhLFxuICBTdWJtaXRUcmFuc2FjdGlvblJlc3BvbnNlLFxuICB4cHJ2VG9SYXdQcnYsXG4gIHhwdWJUb0NvbXByZXNzZWRQdWIsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHNidEZvclNpbmdsZUluc2NyaXB0aW9uUGFzc2luZ1RyYW5zYWN0aW9uLFxuICBEZWZhdWx0SW5zY3JpcHRpb25Db25zdHJhaW50cyxcbiAgSW5zY3JpcHRpb25PdXRwdXRzLFxuICBpbnNjcmlwdGlvbnMsXG4gIHBhcnNlU2F0UG9pbnQsXG4gIGlzU2F0UG9pbnQsXG4gIGZpbmRPdXRwdXRMYXlvdXRGb3JXYWxsZXRVbnNwZW50cyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1vcmQnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgY2xhc3MgSW5zY3JpcHRpb25CdWlsZGVyIGltcGxlbWVudHMgSUluc2NyaXB0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgd2FsbGV0OiBJV2FsbGV0O1xuICBwcml2YXRlIHJlYWRvbmx5IGNvaW46IEFic3RyYWN0VXR4b0NvaW47XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0LCBjb2luOiBBYnN0cmFjdFV0eG9Db2luKSB7XG4gICAgdGhpcy53YWxsZXQgPSB3YWxsZXQ7XG4gICAgdGhpcy5jb2luID0gY29pbjtcbiAgfVxuXG4gIGFzeW5jIHByZXBhcmVSZXZlYWwoaW5zY3JpcHRpb25EYXRhOiBCdWZmZXIsIGNvbnRlbnRUeXBlOiBzdHJpbmcpOiBQcm9taXNlPFByZXBhcmVkSW5zY3JpcHRpb25SZXZlYWxEYXRhPiB7XG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMud2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiB0aGlzLndhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLlVTRVJdIH0pO1xuICAgIGFzc2VydCh1c2VyLnB1Yik7XG5cbiAgICBjb25zdCBkZXJpdmVkID0gdGhpcy5jb2luLmRlcml2ZUtleVdpdGhTZWVkKHsga2V5OiB1c2VyLnB1Yiwgc2VlZDogaW5zY3JpcHRpb25EYXRhLnRvU3RyaW5nKCkgfSk7XG4gICAgY29uc3QgY29tcHJlc3NlZFB1YmxpY0tleSA9IHhwdWJUb0NvbXByZXNzZWRQdWIoZGVyaXZlZC5rZXkpO1xuICAgIGNvbnN0IHhPbmx5UHVibGljS2V5ID0gdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLnRvWE9ubHlQdWJsaWNLZXkoQnVmZmVyLmZyb20oY29tcHJlc3NlZFB1YmxpY0tleSwgJ2hleCcpKTtcblxuICAgIHJldHVybiBpbnNjcmlwdGlvbnMuY3JlYXRlSW5zY3JpcHRpb25SZXZlYWxEYXRhKHhPbmx5UHVibGljS2V5LCBjb250ZW50VHlwZSwgaW5zY3JpcHRpb25EYXRhLCB0aGlzLmNvaW4ubmV0d29yayk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSB0cmFuc2FjdGlvbiB0byBzZW5kIGFuIGluc2NyaXB0aW9uXG4gICAqIEBwYXJhbSBzYXRQb2ludCBTYXRwb2ludCB5b3Ugd2FudCB0byBzZW5kXG4gICAqIEBwYXJhbSByZWNpcGllbnQgQWRkcmVzcyB5b3Ugd2FudCB0byBzZW5kIHRvXG4gICAqIEBwYXJhbSBmZWVSYXRlU2F0S0IgRmVlIHJhdGUgZm9yIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBzaWduZXIgZmlyc3Qgc2lnbmVyIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gY29zaWduZXIgc2Vjb25kIHNpZ25lciBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGluc2NyaXB0aW9uQ29uc3RyYWludHMubWluQ2hhbmdlT3V0cHV0IChvcHRpb25hbCkgdGhlIG1pbmltdW0gc2l6ZSBvZiB0aGUgY2hhbmdlIG91dHB1dFxuICAgKiBAcGFyYW0gaW5zY3JpcHRpb25Db25zdHJhaW50cy5taW5JbnNjcmlwdGlvbk91dHB1dCAob3B0aW9uYWwpIHRoZSBtaW5pbXVtIG51bWJlciBvZiBzYXRzIG9mIHRoZSBvdXRwdXQgY29udGFpbmluZyB0aGUgaW5zY3JpcHRpb25cbiAgICogQHBhcmFtIGluc2NyaXB0aW9uQ29uc3RyYWludHMubWF4SW5zY3JpcHRpb25PdXRwdXQgKG9wdGlvbmFsKSB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2F0cyBvZiB0aGUgb3V0cHV0IGNvbnRhaW5pbmcgdGhlIGluc2NyaXB0aW9uXG4gICAqIEBwYXJhbSBjaGFuZ2VBZGRyZXNzVHlwZSBBZGRyZXNzIHR5cGUgb2YgdGhlIGNoYW5nZSBhZGRyZXNzXG4gICAqL1xuICBhc3luYyBwcmVwYXJlVHJhbnNmZXIoXG4gICAgc2F0UG9pbnQ6IHN0cmluZyxcbiAgICByZWNpcGllbnQ6IHN0cmluZyxcbiAgICBmZWVSYXRlU2F0S0I6IG51bWJlcixcbiAgICB7XG4gICAgICBzaWduZXIgPSAndXNlcicsXG4gICAgICBjb3NpZ25lciA9ICdiaXRnbycsXG4gICAgICBpbnNjcmlwdGlvbkNvbnN0cmFpbnRzID0gRGVmYXVsdEluc2NyaXB0aW9uQ29uc3RyYWludHMsXG4gICAgICBjaGFuZ2VBZGRyZXNzVHlwZSA9ICdwMndzaCcsXG4gICAgfToge1xuICAgICAgc2lnbmVyPzogdXR4b2xpYi5iaXRnby5LZXlOYW1lO1xuICAgICAgY29zaWduZXI/OiB1dHhvbGliLmJpdGdvLktleU5hbWU7XG4gICAgICBpbnNjcmlwdGlvbkNvbnN0cmFpbnRzPzoge1xuICAgICAgICBtaW5DaGFuZ2VPdXRwdXQ/OiBiaWdpbnQ7XG4gICAgICAgIG1pbkluc2NyaXB0aW9uT3V0cHV0PzogYmlnaW50O1xuICAgICAgICBtYXhJbnNjcmlwdGlvbk91dHB1dD86IGJpZ2ludDtcbiAgICAgIH07XG4gICAgICBjaGFuZ2VBZGRyZXNzVHlwZT86IHV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMztcbiAgICB9XG4gICk6IFByb21pc2U8UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGFzc2VydChpc1NhdFBvaW50KHNhdFBvaW50KSk7XG5cbiAgICBjb25zdCByb290V2FsbGV0S2V5cyA9IGF3YWl0IGdldFdhbGxldEtleXModGhpcy5jb2luLCB0aGlzLndhbGxldCk7XG4gICAgY29uc3QgcGFyc2VkU2F0UG9pbnQgPSBwYXJzZVNhdFBvaW50KHNhdFBvaW50KTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMud2FsbGV0LmdldFRyYW5zYWN0aW9uKHsgdHhIYXNoOiBwYXJzZWRTYXRQb2ludC50eGlkIH0pO1xuICAgIC8vIFRPRE8oQkctNzA5MDApOiBhbGxvdyBzdXBwbGVtZW50YWwgdW5zcGVudHNcbiAgICBjb25zdCB1bnNwZW50cyA9IFt0cmFuc2FjdGlvbi5vdXRwdXRzW3BhcnNlZFNhdFBvaW50LnZvdXRdXTtcbiAgICB1bnNwZW50c1swXS52YWx1ZSA9IEJpZ0ludCh1bnNwZW50c1swXS52YWx1ZSk7XG4gICAgY29uc3QgdHhJbmZvID0geyB1bnNwZW50cyB9O1xuXG4gICAgY29uc3QgY2hhbmdlQWRkcmVzcyA9IGF3YWl0IHRoaXMud2FsbGV0LmNyZWF0ZUFkZHJlc3Moe1xuICAgICAgY2hhaW46IHV0eG9saWIuYml0Z28uZ2V0SW50ZXJuYWxDaGFpbkNvZGUoY2hhbmdlQWRkcmVzc1R5cGUpLFxuICAgIH0pO1xuICAgIGNvbnN0IG91dHB1dHM6IEluc2NyaXB0aW9uT3V0cHV0cyA9IHtcbiAgICAgIGluc2NyaXB0aW9uUmVjaXBpZW50OiByZWNpcGllbnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXG4gICAgICAgIHsgY2hhaW46IGNoYW5nZUFkZHJlc3MuY2hhaW4sIGluZGV4OiBjaGFuZ2VBZGRyZXNzLmluZGV4IH0sXG4gICAgICAgIHsgY2hhaW46IGNoYW5nZUFkZHJlc3MuY2hhaW4sIGluZGV4OiBjaGFuZ2VBZGRyZXNzLmluZGV4IH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBjb25zdCBwc2J0ID0gY3JlYXRlUHNidEZvclNpbmdsZUluc2NyaXB0aW9uUGFzc2luZ1RyYW5zYWN0aW9uKFxuICAgICAgdGhpcy5jb2luLm5ldHdvcmssXG4gICAgICB7XG4gICAgICAgIHdhbGxldEtleXM6IHJvb3RXYWxsZXRLZXlzLFxuICAgICAgICBzaWduZXIsXG4gICAgICAgIGNvc2lnbmVyLFxuICAgICAgfSxcbiAgICAgIHVuc3BlbnRzLFxuICAgICAgc2F0UG9pbnQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgeyBmZWVSYXRlU2F0S0IsIC4uLmluc2NyaXB0aW9uQ29uc3RyYWludHMgfVxuICAgICk7XG4gICAgY29uc3Qgb3V0cHV0TGF5b3V0ID0gZmluZE91dHB1dExheW91dEZvcldhbGxldFVuc3BlbnRzKHVuc3BlbnRzLCBzYXRQb2ludCwgb3V0cHV0cywge1xuICAgICAgZmVlUmF0ZVNhdEtCLFxuICAgICAgLi4uaW5zY3JpcHRpb25Db25zdHJhaW50cyxcbiAgICB9KTtcbiAgICBpZiAoIW91dHB1dExheW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb3VsZCBub3Qgb3V0cHV0IGxheW91dCBmb3IgaW5zY3JpcHRpb24gcGFzc2luZyB0cmFuc2FjdGlvbmApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB3YWxsZXRJZDogdGhpcy53YWxsZXQuaWQoKSxcbiAgICAgIHR4SGV4OiBwc2J0LmdldFVuc2lnbmVkVHgoKS50b0hleCgpLFxuICAgICAgdHhJbmZvLFxuICAgICAgZmVlSW5mbzogeyBmZWU6IE51bWJlcihvdXRwdXRMYXlvdXQubGF5b3V0LmZlZU91dHB1dCksIGZlZVN0cmluZzogb3V0cHV0TGF5b3V0LmxheW91dC5mZWVPdXRwdXQudG9TdHJpbmcoKSB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHdhbGxldFBhc3NwaHJhc2VcbiAgICogQHBhcmFtIHRhcExlYWZTY3JpcHRcbiAgICogQHBhcmFtIGNvbW1pdEFkZHJlc3NcbiAgICogQHBhcmFtIHVuc2lnbmVkQ29tbWl0VHhcbiAgICogQHBhcmFtIGNvbW1pdFRyYW5zYWN0aW9uVW5zcGVudHNcbiAgICogQHBhcmFtIHJlY2lwaWVudEFkZHJlc3NcbiAgICogQHBhcmFtIGluc2NyaXB0aW9uRGF0YVxuICAgKi9cbiAgYXN5bmMgc2lnbkFuZFNlbmRSZXZlYWwoXG4gICAgd2FsbGV0UGFzc3BocmFzZTogc3RyaW5nLFxuICAgIHRhcExlYWZTY3JpcHQ6IHV0eG9saWIuYml0Z28uVGFwTGVhZlNjcmlwdCxcbiAgICBjb21taXRBZGRyZXNzOiBzdHJpbmcsXG4gICAgdW5zaWduZWRDb21taXRUeDogQnVmZmVyLFxuICAgIGNvbW1pdFRyYW5zYWN0aW9uVW5zcGVudHM6IHV0eG9saWIuYml0Z28uV2FsbGV0VW5zcGVudFtdLFxuICAgIHJlY2lwaWVudEFkZHJlc3M6IHN0cmluZyxcbiAgICBpbnNjcmlwdGlvbkRhdGE6IEJ1ZmZlclxuICApOiBQcm9taXNlPFN1Ym1pdFRyYW5zYWN0aW9uUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW4gPSBhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi5rZXljaGFpbnMoKS5nZXQoeyBpZDogdGhpcy53YWxsZXQua2V5SWRzKClbS2V5SW5kaWNlcy5VU0VSXSB9KTtcbiAgICBjb25zdCB4cHJ2ID0gYXdhaXQgdGhpcy53YWxsZXQuZ2V0VXNlclBydih7IGtleWNoYWluOiB1c2VyS2V5Y2hhaW4sIHdhbGxldFBhc3NwaHJhc2UgfSk7XG5cbiAgICBjb25zdCBoYWxmU2lnbmVkQ29tbWl0VHJhbnNhY3Rpb24gPSAoYXdhaXQgdGhpcy53YWxsZXQuc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgIHBydjogeHBydixcbiAgICAgIHR4UHJlYnVpbGQ6IHtcbiAgICAgICAgdHhIZXg6IHVuc2lnbmVkQ29tbWl0VHgudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB0eEluZm86IHsgdW5zcGVudHM6IGNvbW1pdFRyYW5zYWN0aW9uVW5zcGVudHMgfSxcbiAgICAgIH0sXG4gICAgfSkpIGFzIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb247XG5cbiAgICBjb25zdCBkZXJpdmVkID0gdGhpcy5jb2luLmRlcml2ZUtleVdpdGhTZWVkKHsga2V5OiB4cHJ2LCBzZWVkOiBpbnNjcmlwdGlvbkRhdGEudG9TdHJpbmcoKSB9KTtcbiAgICBjb25zdCBwcnYgPSB4cHJ2VG9SYXdQcnYoZGVyaXZlZC5rZXkpO1xuXG4gICAgY29uc3QgZnVsbHlTaWduZWRSZXZlYWxUcmFuc2FjdGlvbiA9IGF3YWl0IGluc2NyaXB0aW9ucy5zaWduUmV2ZWFsVHJhbnNhY3Rpb24oXG4gICAgICBCdWZmZXIuZnJvbShwcnYsICdoZXgnKSxcbiAgICAgIHRhcExlYWZTY3JpcHQsXG4gICAgICBjb21taXRBZGRyZXNzLFxuICAgICAgcmVjaXBpZW50QWRkcmVzcyxcbiAgICAgIEJ1ZmZlci5mcm9tKGhhbGZTaWduZWRDb21taXRUcmFuc2FjdGlvbi50eEhleCwgJ2hleCcpLFxuICAgICAgdGhpcy5jb2luLm5ldHdvcmtcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LnN1Ym1pdFRyYW5zYWN0aW9uKHtcbiAgICAgIGhhbGZTaWduZWQ6IHtcbiAgICAgICAgdHhIZXg6IGhhbGZTaWduZWRDb21taXRUcmFuc2FjdGlvbi50eEhleCxcbiAgICAgICAgc2lnbmVkQ2hpbGRQc2J0OiBmdWxseVNpZ25lZFJldmVhbFRyYW5zYWN0aW9uLnRvSGV4KCksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gYW5kIHNlbmQgYSB0cmFuc2FjdGlvbiB0aGF0IHRyYW5zZmVycyBhbiBpbnNjcmlwdGlvblxuICAgKiBAcGFyYW0gd2FsbGV0UGFzc3BocmFzZSBwYXNzcGhyYXNlIHRvIHVubG9jayB5b3VyIGtleXNcbiAgICogQHBhcmFtIHR4UHJlYnVpbGQgdGhpcyBpcyB0aGUgb3V0cHV0IG9mIGBpbnNjcmlwdGlvbi5wcmVwYXJlVHJhbnNmZXJgXG4gICAqL1xuICBhc3luYyBzaWduQW5kU2VuZFRyYW5zZmVyKFxuICAgIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICB0eFByZWJ1aWxkOiBQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3VibWl0VHJhbnNhY3Rpb25SZXNwb25zZT4ge1xuICAgIGNvbnN0IHVzZXJLZXljaGFpbiA9IGF3YWl0IHRoaXMud2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiB0aGlzLndhbGxldC5rZXlJZHMoKVtLZXlJbmRpY2VzLlVTRVJdIH0pO1xuICAgIGNvbnN0IHBydiA9IHRoaXMud2FsbGV0LmdldFVzZXJQcnYoeyBrZXljaGFpbjogdXNlcktleWNoYWluLCB3YWxsZXRQYXNzcGhyYXNlIH0pO1xuXG4gICAgY29uc3QgaGFsZlNpZ25lZCA9IChhd2FpdCB0aGlzLndhbGxldC5zaWduVHJhbnNhY3Rpb24oeyBwcnYsIHR4UHJlYnVpbGQgfSkpIGFzIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb247XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LnN1Ym1pdFRyYW5zYWN0aW9uKHsgaGFsZlNpZ25lZCB9KTtcbiAgfVxufVxuIl19