@tatumio/bch 2.0.1-alpha.357 → 2.0.1-alpha.359

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/package.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "name": "@tatumio/bch",
3
- "version": "2.0.1-alpha.357",
3
+ "version": "2.0.1-alpha.359",
4
4
  "license": "MIT",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
7
7
  "dependencies": {
8
- "@tatumio/shared-testing-common": "2.0.1-alpha.357",
9
- "@tatumio/api-client": "2.0.1-alpha.357",
8
+ "@tatumio/api-client": "2.0.1-alpha.359",
10
9
  "axios": "^0.26.0",
11
10
  "form-data": "^4.0.0",
12
- "@tatumio/shared-testing-btc-based": "2.0.1-alpha.357",
13
- "@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.357",
14
- "@tatumio/shared-abstract-sdk": "2.0.1-alpha.357",
11
+ "@tatumio/shared-testing-common": "2.0.1-alpha.359",
12
+ "@tatumio/shared-abstract-sdk": "2.0.1-alpha.359",
15
13
  "bignumber.js": "^9.0.2",
16
- "@tatumio/shared-core": "2.0.1-alpha.357",
17
- "@tatumio/shared-blockchain-abstract": "2.0.1-alpha.357",
14
+ "@tatumio/shared-core": "2.0.1-alpha.359",
15
+ "@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.359",
16
+ "@tatumio/shared-blockchain-abstract": "2.0.1-alpha.359",
18
17
  "bip32": "^2.0.5",
19
18
  "bip39": "^3.0.2",
20
19
  "bitcoinjs-lib": "^5.2.0",
21
20
  "hdkey": "^2.0.1",
22
21
  "bitcore-lib": "8.25.8",
23
- "coininfo": "^5.1.0",
24
22
  "@tatumio/bitcoincashjs2-lib": "^4.1.2",
25
- "lodash": "^4.17.21",
26
23
  "cashaddrjs": "^0.4.4",
24
+ "coininfo": "^5.1.0",
25
+ "lodash": "^4.17.21",
26
+ "bitcore-lib-cash": "^8.25.40",
27
27
  "tslib": "^2.0.0"
28
28
  },
29
29
  "peerDependencies": {}
package/src/index.d.ts CHANGED
@@ -1,4 +1,9 @@
1
+ import { BchTx } from '@tatumio/api-client';
2
+ export declare type BchApiCallsType = {
3
+ bchGetRawTransaction: (hash: string) => Promise<BchTx>;
4
+ };
1
5
  export * from './lib/bch.sdk';
2
6
  export * from './lib/bch.sdk.wallet';
3
- export { BchTransactionTypes, bchTransactions } from './lib/bch.sdk.tx';
7
+ export { bchTransactions } from './lib/services/bch.sdk.tx';
4
8
  export * from './lib/bch.wallet.utils';
9
+ export * from './lib/bch.sdk.types';
package/src/index.js CHANGED
@@ -4,7 +4,8 @@ exports.bchTransactions = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./lib/bch.sdk"), exports);
6
6
  tslib_1.__exportStar(require("./lib/bch.sdk.wallet"), exports);
7
- var bch_sdk_tx_1 = require("./lib/bch.sdk.tx");
7
+ var bch_sdk_tx_1 = require("./lib/services/bch.sdk.tx");
8
8
  Object.defineProperty(exports, "bchTransactions", { enumerable: true, get: function () { return bch_sdk_tx_1.bchTransactions; } });
9
9
  tslib_1.__exportStar(require("./lib/bch.wallet.utils"), exports);
10
+ tslib_1.__exportStar(require("./lib/bch.sdk.types"), exports);
10
11
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/bch/src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA6B;AAC7B,+DAAoC;AACpC,+CAAuE;AAAzC,6GAAA,eAAe,OAAA;AAC7C,iEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/blockchain/bch/src/index.ts"],"names":[],"mappings":";;;;AAMA,wDAA6B;AAC7B,+DAAoC;AACpC,wDAA2D;AAAlD,6GAAA,eAAe,OAAA;AACxB,iEAAsC;AACtC,8DAAmC"}
@@ -0,0 +1,31 @@
1
+ export declare const tx1: {
2
+ hex: string;
3
+ txid: string;
4
+ size: number;
5
+ version: number;
6
+ locktime: number;
7
+ vin: {
8
+ txid: string;
9
+ vout: number;
10
+ scriptSig: {
11
+ asm: string;
12
+ hex: string;
13
+ };
14
+ sequence: number;
15
+ }[];
16
+ vout: {
17
+ value: number;
18
+ n: number;
19
+ scriptPubKey: {
20
+ asm: string;
21
+ hex: string;
22
+ reqSigs: number;
23
+ type: string;
24
+ addresses: string[];
25
+ };
26
+ }[];
27
+ blockhash: string;
28
+ confirmations: number;
29
+ time: number;
30
+ blocktime: number;
31
+ };
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tx1 = void 0;
4
+ exports.tx1 = {
5
+ hex: '0200000001be829223456ef71e0a5f2953b0147bf54e91ff2c249c26a5b9adfd4c4de4f9c2010000006441dbfab0bc5eb7540f2d6419347f8dcf869e2220079048c5851f44e6e2066746157a92ad12ea0cc6666a8d80f8856c2680d6f3023d493fe0fc68c51956571f153241210316f66bbc017bc50df20efb0e6bf86fa6dd2c812d0c2da120f69bc0e99f28229bffffffff0240420f00000000001976a914e831bb079ba85eb9013773b7023ee8c482a62f8f88ace0673500000000001976a914ada119a49237d2915c053935a7e00f74e486652a88ac00000000',
6
+ txid: '3c5c04ce94d1573b63f0d94fd2a2bc8d59e21ac7ae14e49e227ad2e3e2f71ed5',
7
+ size: 219,
8
+ version: 2,
9
+ locktime: 0,
10
+ vin: [
11
+ {
12
+ txid: 'c2f9e44d4cfdad1235269c242cff914ef57b14b053295f0a1ef76e85339282be',
13
+ vout: 1,
14
+ scriptSig: {
15
+ asm: 'dbfab0bc5eb7540f2d6419347f8dcf869e2220079048c5851f44e6e2066746157a92ad12ea0cc6666a8d80f8856c2680d6f3023d493fe0fc68c51956571f153241 0316f66bbc017bc50df20efb0e6bf86fa6dd2c812d0c2da120f69bc0e99f28229b',
16
+ hex: '41dbfab0bc5eb7540f2d6419347f8dcf869e2220079048c5851f44e6e2066746157a92ad12ea0cc6666a8d80f8856c2680d6f3023d493fe0fc68c51956571f153241210316f66bbc017bc50df20efb0e6bf86fa6dd2c812d0c2da120f69bc0e99f28229b',
17
+ },
18
+ sequence: 4294967295,
19
+ },
20
+ ],
21
+ vout: [
22
+ {
23
+ value: 0.01,
24
+ n: 0,
25
+ scriptPubKey: {
26
+ asm: 'OP_DUP OP_HASH160 e831bb079ba85eb9013773b7023ee8c482a62f8f OP_EQUALVERIFY OP_CHECKSIG',
27
+ hex: '76a914e831bb079ba85eb9013773b7023ee8c482a62f8f88ac',
28
+ reqSigs: 1,
29
+ type: 'pubkeyhash',
30
+ addresses: ['qr5rrwc8nw59awgpxaemwq37arzg9f303u9fp2ws65'],
31
+ },
32
+ },
33
+ {
34
+ value: 0.035,
35
+ n: 1,
36
+ scriptPubKey: {
37
+ asm: 'OP_DUP OP_HASH160 ada119a49237d2915c053935a7e00f74e486652a OP_EQUALVERIFY OP_CHECKSIG',
38
+ hex: '76a914ada119a49237d2915c053935a7e00f74e486652a88ac',
39
+ reqSigs: 1,
40
+ type: 'pubkeyhash',
41
+ addresses: ['qzk6zxdyjgma9y2uq5untflqpa6wfpn99gxh5sdrtl'],
42
+ },
43
+ },
44
+ ],
45
+ blockhash: '0000000008056815cde178647c723234bf33738ee9be483e22fbb5788e38771b',
46
+ confirmations: 6,
47
+ time: 1666781723,
48
+ blocktime: 1666781723,
49
+ };
50
+ //# sourceMappingURL=mocked.tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocked.tx.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/__tests__/mocked.tx.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,GAAG,EAAE,wbAAwb;IAC7b,IAAI,EAAE,kEAAkE;IACxE,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,GAAG,EAAE;QACH;YACE,IAAI,EAAE,kEAAkE;YACxE,IAAI,EAAE,CAAC;YACP,SAAS,EAAE;gBACT,GAAG,EAAE,uMAAuM;gBAC5M,GAAG,EAAE,0MAA0M;aAChN;YACD,QAAQ,EAAE,UAAU;SACrB;KACF;IACD,IAAI,EAAE;QACJ;YACE,KAAK,EAAE,IAAI;YACX,CAAC,EAAE,CAAC;YACJ,YAAY,EAAE;gBACZ,GAAG,EAAE,uFAAuF;gBAC5F,GAAG,EAAE,oDAAoD;gBACzD,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,CAAC,4CAA4C,CAAC;aAC1D;SACF;QACD;YACE,KAAK,EAAE,KAAK;YACZ,CAAC,EAAE,CAAC;YACJ,YAAY,EAAE;gBACZ,GAAG,EAAE,uFAAuF;gBAC5F,GAAG,EAAE,oDAAoD;gBACzD,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE,CAAC,4CAA4C,CAAC;aAC1D;SACF;KACF;IACD,SAAS,EAAE,kEAAkE;IAC7E,aAAa,EAAE,CAAC;IAChB,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,UAAU;CACtB,CAAA"}
@@ -1,6 +1,15 @@
1
1
  import { BitcoinCashService } from '@tatumio/api-client';
2
2
  import { SDKArguments } from '@tatumio/shared-abstract-sdk';
3
- export declare const TatumBchSDK: (args: SDKArguments) => {
3
+ import { BchApiCallsType } from '..';
4
+ export declare const TatumBchSDK: (args: SDKArguments, apiCalls?: BchApiCallsType) => {
5
+ kms: {
6
+ signBitcoinCashKMSTransaction: (tx: import("@tatumio/api-client").PendingTransaction, privateKeys: string[], testnet: boolean) => Promise<any>;
7
+ sign(tx: import("@tatumio/api-client").PendingTransaction, privateKeys: string[]): Promise<string>;
8
+ getAllPending(signatures?: string): import("@tatumio/api-client").CancelablePromise<import("@tatumio/api-client").PendingTransaction[]>;
9
+ get: typeof import("@tatumio/api-client").KeyManagementSystemService.getPendingTransactionToSign;
10
+ complete: typeof import("@tatumio/api-client").KeyManagementSystemService.completePendingSignature;
11
+ delete: typeof import("@tatumio/api-client").KeyManagementSystemService.deletePendingTransactionToSign;
12
+ };
4
13
  wallet: {
5
14
  generateAddressFromXPub(xpub: string, i: number, options?: {
6
15
  testnet: boolean;
@@ -15,7 +24,38 @@ export declare const TatumBchSDK: (args: SDKArguments) => {
15
24
  testnet: boolean;
16
25
  }): Promise<import("@tatumio/api-client").TronWallet>;
17
26
  };
18
- transaction: import("@tatumio/shared-blockchain-btc-based").BtcBasedTx<import("./bch.sdk.tx").BchTransactionTypes>;
27
+ transaction: {
28
+ sendTransaction: (body: import("./bch.sdk.types").BchTransactionTypes, args: {
29
+ testnet?: boolean;
30
+ }) => Promise<import("@tatumio/api-client").TransactionHash>;
31
+ prepareSignedTransaction: (body: import("./bch.sdk.types").BchTransactionTypes, args: {
32
+ testnet?: boolean;
33
+ }) => Promise<string>;
34
+ };
35
+ virtualAccount: {
36
+ send: (isTestnet: boolean, body: import("@tatumio/api-client").TransferBchMnemonic | import("@tatumio/api-client").TransferBchKeyPair | import("@tatumio/api-client").TransferBchKMS) => Promise<{
37
+ completed?: boolean;
38
+ txId?: string;
39
+ id?: undefined;
40
+ } | {
41
+ id: string;
42
+ } | import("@tatumio/api-client").OffchainTransactionSignatureResult>;
43
+ depositAddress: {
44
+ checkExists: (address: string, index?: number) => Promise<any>;
45
+ create: any;
46
+ createMultiple: any;
47
+ assign: any;
48
+ remove: any;
49
+ getByAccount: any;
50
+ };
51
+ withdrawal: {
52
+ getAll: (status?: "InProgress" | "Done" | "Cancelled", pageSize?: number, offset?: number) => Promise<any[]>;
53
+ broadcast: any;
54
+ create: any;
55
+ complete: any;
56
+ };
57
+ storeTokenAddress: any;
58
+ };
19
59
  blockchain: {
20
60
  info: typeof BitcoinCashService.bchGetBlockChainInfo;
21
61
  broadcast: typeof BitcoinCashService.bchBroadcast;
@@ -25,30 +65,6 @@ export declare const TatumBchSDK: (args: SDKArguments) => {
25
65
  getTransaction: typeof BitcoinCashService.bchGetRawTransaction;
26
66
  send: typeof BitcoinCashService.bchTransferBlockchain;
27
67
  };
28
- kms: {
29
- sign(tx: import("@tatumio/api-client").PendingTransaction, privateKeys: string[]): Promise<string>;
30
- getAllPending(signatures?: string): import("@tatumio/api-client").CancelablePromise<import("@tatumio/api-client").PendingTransaction[]>;
31
- get: typeof import("@tatumio/api-client").KeyManagementSystemService.getPendingTransactionToSign;
32
- complete: typeof import("@tatumio/api-client").KeyManagementSystemService.completePendingSignature;
33
- delete: typeof import("@tatumio/api-client").KeyManagementSystemService.deletePendingTransactionToSign;
34
- };
35
- virtualAccount: {
36
- depositAddress: {
37
- checkExists: (address: string, index?: number) => Promise<import("@tatumio/api-client").Account>;
38
- create: typeof import("@tatumio/api-client").BlockchainAddressesService.generateDepositAddress;
39
- createMultiple: typeof import("@tatumio/api-client").BlockchainAddressesService.generateDepositAddressesBatch;
40
- assign: typeof import("@tatumio/api-client").BlockchainAddressesService.assignAddress;
41
- remove: typeof import("@tatumio/api-client").BlockchainAddressesService.removeAddress;
42
- getByAccount: typeof import("@tatumio/api-client").BlockchainAddressesService.getAllDepositAddresses;
43
- };
44
- withdrawal: {
45
- getAll: (status?: "InProgress" | "Done" | "Cancelled", pageSize?: number, offset?: number) => Promise<import("@tatumio/api-client").WithdrawalObject[]>;
46
- broadcast: typeof import("@tatumio/api-client").WithdrawalService.broadcastBlockchainTransaction;
47
- create: typeof import("@tatumio/api-client").WithdrawalService.storeWithdrawal;
48
- complete: typeof import("@tatumio/api-client").WithdrawalService.completeWithdrawal;
49
- };
50
- storeTokenAddress: typeof import("@tatumio/api-client").BlockchainOperationsService.storeTokenAddress;
51
- };
52
68
  getExchangeRate(basePair?: import("@tatumio/api-client").Fiat): import("@tatumio/api-client").CancelablePromise<import("@tatumio/api-client").ExchangeRate>;
53
69
  storage: {
54
70
  upload: typeof import("@tatumio/api-client").IpfsService.storeIpfs;
@@ -2,7 +2,7 @@ import { SdkError, SdkErrorCode } from '@tatumio/shared-abstract-sdk';
2
2
  export declare const BCH_ERRORS_MAPPING: {
3
3
  'Transaction has absurd fees': SdkErrorCode;
4
4
  };
5
- export declare type BchSdkErrorCode = SdkErrorCode.BTC_BASED_FEE_TOO_SMALL | SdkErrorCode.BTC_BASED_UTXO_NOT_FOUND | SdkErrorCode.BTC_BASED_NOT_ENOUGH_BALANCE;
5
+ export declare type BchSdkErrorCode = SdkErrorCode.BTC_BASED_FEE_TOO_SMALL | SdkErrorCode.BTC_BASED_UTXO_NOT_FOUND | SdkErrorCode.BTC_BASED_NOT_ENOUGH_BALANCE | SdkErrorCode.BTC_BASED_WRONG_BODY | SdkErrorCode.UNSUPPORTED_CHAIN | SdkErrorCode.BTC_BASED_TX_PREPARATION_UTXO | SdkErrorCode.BTC_BASED_DESTINATION_LESS_THAN_ZERO | SdkErrorCode.BTC_BASED_MNEMONIC_OR_KEYPAIR_EXPECTED | SdkErrorCode.BTC_BASED_TX_FAILED | SdkErrorCode.BTC_BASED_BLOCKCHAIN_ERROR;
6
6
  export declare class BchSdkError extends SdkError {
7
7
  constructor(error: Error | BchSdkErrorCode);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bch.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.errors.ts"],"names":[],"mappings":";;;AAAA,sEAAqE;AAExD,QAAA,kBAAkB,GAAG;IAChC,6BAA6B,EAAE,kCAAY,CAAC,oBAAoB;CACjE,CAAA;AAOD,MAAa,WAAY,SAAQ,8BAAQ;IACvC,YAAY,KAA8B;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,CAAC;gBACJ,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;SACH;aAAM;YACL,KAAK,CAAC;gBACJ,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,0BAAkB;aAC1C,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAbD,kCAaC"}
1
+ {"version":3,"file":"bch.sdk.errors.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.errors.ts"],"names":[],"mappings":";;;AAAA,sEAAqE;AAExD,QAAA,kBAAkB,GAAG;IAChC,6BAA6B,EAAE,kCAAY,CAAC,oBAAoB;CACjE,CAAA;AAcD,MAAa,WAAY,SAAQ,8BAAQ;IACvC,YAAY,KAA8B;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,CAAC;gBACJ,IAAI,EAAE,KAAK;aACZ,CAAC,CAAA;SACH;aAAM;YACL,KAAK,CAAC;gBACJ,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,0BAAkB;aAC1C,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAbD,kCAaC"}
@@ -4,11 +4,15 @@ exports.TatumBchSDK = void 0;
4
4
  const shared_core_1 = require("@tatumio/shared-core");
5
5
  const shared_blockchain_btc_based_1 = require("@tatumio/shared-blockchain-btc-based");
6
6
  const api_client_1 = require("@tatumio/api-client");
7
- const bch_sdk_tx_1 = require("./bch.sdk.tx");
7
+ const bch_sdk_tx_1 = require("./services/bch.sdk.tx");
8
8
  const bch_sdk_wallet_1 = require("./bch.sdk.wallet");
9
+ const bch_sdk_virtualAccount_1 = require("./services/bch.sdk.virtualAccount");
10
+ const bch_sdk_kms_1 = require("./services/bch.sdk.kms");
9
11
  const blockchain = shared_core_1.Blockchain.BCH;
10
- const TatumBchSDK = (args) => {
11
- return Object.assign(Object.assign({}, (0, shared_blockchain_btc_based_1.btcBasedSdk)(Object.assign(Object.assign({}, args), { blockchain }))), { wallet: (0, bch_sdk_wallet_1.bchWallet)(), transaction: (0, bch_sdk_tx_1.bchTransactions)(), blockchain: {
12
+ const TatumBchSDK = (args, apiCalls = {
13
+ bchGetRawTransaction: api_client_1.ApiServices.blockchain.bcash.bchGetRawTransaction,
14
+ }) => {
15
+ return Object.assign(Object.assign({}, (0, shared_blockchain_btc_based_1.btcBasedSdk)(Object.assign(Object.assign({}, args), { blockchain }))), { kms: Object.assign(Object.assign({}, (0, shared_blockchain_btc_based_1.btcBasedSdk)(Object.assign(Object.assign({}, args), { blockchain })).kms), { signBitcoinCashKMSTransaction: bch_sdk_kms_1.signBitcoinCashKMSTransaction }), wallet: (0, bch_sdk_wallet_1.bchWallet)(), transaction: (0, bch_sdk_tx_1.bchTransactions)(apiCalls), virtualAccount: Object.assign(Object.assign({}, (0, shared_blockchain_btc_based_1.btcBasedSdk)(Object.assign(Object.assign({}, args), { blockchain })).virtualAccount), (0, bch_sdk_virtualAccount_1.virtualAccountService)({ blockchain })), blockchain: {
12
16
  info: api_client_1.BitcoinCashService.bchGetBlockChainInfo,
13
17
  broadcast: api_client_1.BitcoinCashService.bchBroadcast,
14
18
  getBlockHash: api_client_1.BitcoinCashService.bchGetBlockHash,
@@ -1 +1 @@
1
- {"version":3,"file":"bch.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sFAAkE;AAClE,oDAAwD;AAExD,6CAA8C;AAC9C,qDAA4C;AAE5C,MAAM,UAAU,GAAG,wBAAU,CAAC,GAAG,CAAA;AAE1B,MAAM,WAAW,GAAG,CAAC,IAAkB,EAAE,EAAE;IAChD,uCACK,IAAA,yCAAW,kCAAM,IAAI,KAAE,UAAU,IAAG,KACvC,MAAM,EAAE,IAAA,0BAAS,GAAE,EACnB,WAAW,EAAE,IAAA,4BAAe,GAAE,EAC9B,UAAU,EAAE;YACV,IAAI,EAAE,+BAAkB,CAAC,oBAAoB;YAC7C,SAAS,EAAE,+BAAkB,CAAC,YAAY;YAC1C,YAAY,EAAE,+BAAkB,CAAC,eAAe;YAChD,QAAQ,EAAE,+BAAkB,CAAC,WAAW;YACxC,eAAe,EAAE,+BAAkB,CAAC,iBAAiB;YACrD,cAAc,EAAE,+BAAkB,CAAC,oBAAoB;YACvD,IAAI,EAAE,+BAAkB,CAAC,qBAAqB;SAC/C,IACF;AACH,CAAC,CAAA;AAfY,QAAA,WAAW,eAevB"}
1
+ {"version":3,"file":"bch.sdk.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.ts"],"names":[],"mappings":";;;AAAA,sDAAiD;AACjD,sFAAkE;AAClE,oDAAqE;AAErE,sDAAuD;AACvD,qDAA4C;AAE5C,8EAAyE;AACzE,wDAAsE;AAEtE,MAAM,UAAU,GAAG,wBAAU,CAAC,GAAG,CAAA;AAE1B,MAAM,WAAW,GAAG,CACzB,IAAkB,EAClB,WAA4B;IAC1B,oBAAoB,EAAE,wBAAW,CAAC,UAAU,CAAC,KAAK,CAAC,oBAAoB;CACxE,EACD,EAAE;IACF,uCACK,IAAA,yCAAW,kCAAM,IAAI,KAAE,UAAU,IAAG,KACvC,GAAG,kCACE,IAAA,yCAAW,kCAAM,IAAI,KAAE,UAAU,IAAG,CAAC,GAAG,KAC3C,6BAA6B,EAA7B,2CAA6B,KAE/B,MAAM,EAAE,IAAA,0BAAS,GAAE,EACnB,WAAW,EAAE,IAAA,4BAAe,EAAC,QAAQ,CAAC,EACtC,cAAc,kCACT,IAAA,yCAAW,kCAAM,IAAI,KAAE,UAAU,IAAG,CAAC,cAAc,GACnD,IAAA,8CAAqB,EAAC,EAAE,UAAU,EAAE,CAAC,GAE1C,UAAU,EAAE;YACV,IAAI,EAAE,+BAAkB,CAAC,oBAAoB;YAC7C,SAAS,EAAE,+BAAkB,CAAC,YAAY;YAC1C,YAAY,EAAE,+BAAkB,CAAC,eAAe;YAChD,QAAQ,EAAE,+BAAkB,CAAC,WAAW;YACxC,eAAe,EAAE,+BAAkB,CAAC,iBAAiB;YACrD,cAAc,EAAE,+BAAkB,CAAC,oBAAoB;YACvD,IAAI,EAAE,+BAAkB,CAAC,qBAAqB;SAC/C,IACF;AACH,CAAC,CAAA;AA5BY,QAAA,WAAW,eA4BvB"}
@@ -1,4 +1,6 @@
1
1
  import { BchTransaction, BchTransactionKMS } from '@tatumio/api-client';
2
- import { BtcBasedTx } from '@tatumio/shared-blockchain-btc-based';
3
2
  export declare type BchTransactionTypes = BchTransaction | BchTransactionKMS;
4
- export declare const bchTransactions: () => BtcBasedTx<BchTransactionTypes>;
3
+ export interface Signature {
4
+ id: string;
5
+ index?: number;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=bch.sdk.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.sdk.types.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { PendingTransaction } from '@tatumio/api-client';
2
+ /**
3
+ * Sign Bitcoin Cash pending transaction from Tatum KMS
4
+ * @param tx pending transaction from KMS
5
+ * @param privateKeys private keys to sign transaction with.
6
+ * @param testnet mainnet or testnet version
7
+ * @returns transaction data to be broadcast to blockchain.
8
+ */
9
+ export declare const signBitcoinCashKMSTransaction: (tx: PendingTransaction, privateKeys: string[], testnet: boolean) => Promise<any>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signBitcoinCashKMSTransaction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // @ts-ignore
6
+ const coininfo = tslib_1.__importStar(require("coininfo"));
7
+ // @ts-ignore
8
+ const BitcoinCashJS = tslib_1.__importStar(require("@tatumio/bitcoincashjs2-lib"));
9
+ const api_client_1 = require("@tatumio/api-client");
10
+ /**
11
+ * Sign Bitcoin Cash pending transaction from Tatum KMS
12
+ * @param tx pending transaction from KMS
13
+ * @param privateKeys private keys to sign transaction with.
14
+ * @param testnet mainnet or testnet version
15
+ * @returns transaction data to be broadcast to blockchain.
16
+ */
17
+ const signBitcoinCashKMSTransaction = (tx, privateKeys, testnet) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
+ if (tx.chain !== api_client_1.Currency.BCH) {
19
+ throw Error('Unsupported chain.');
20
+ }
21
+ const [data, amountsToDecode] = tx.serializedTransaction.split(':');
22
+ const transaction = BitcoinCashJS.Transaction.fromHex(data);
23
+ const amountsToSign = JSON.parse(amountsToDecode);
24
+ const network = testnet ? coininfo.bitcoincash.test.toBitcoinJS() : coininfo.bitcoincash.main.toBitcoinJS();
25
+ const builder = BitcoinCashJS.TransactionBuilder.fromTransaction(transaction, network);
26
+ for (const [i, privateKey] of privateKeys.entries()) {
27
+ const ecPair = BitcoinCashJS.ECPair.fromWIF(privateKey, network);
28
+ builder.sign(i, ecPair, undefined, 0x01, amountsToSign[i], undefined, BitcoinCashJS.ECSignature.SCHNORR);
29
+ }
30
+ return builder.build().toHex();
31
+ });
32
+ exports.signBitcoinCashKMSTransaction = signBitcoinCashKMSTransaction;
33
+ //# sourceMappingURL=bch.sdk.kms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.sdk.kms.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/services/bch.sdk.kms.ts"],"names":[],"mappings":";;;;AACA,aAAa;AACb,2DAAoC;AACpC,aAAa;AACb,mFAA4D;AAC5D,oDAA8C;AAE9C;;;;;;GAMG;AACI,MAAM,6BAA6B,GAAG,CAC3C,EAAsB,EACtB,WAAqB,EACrB,OAAgB,EAChB,EAAE;IACF,IAAI,EAAE,CAAC,KAAK,KAAK,qBAAQ,CAAC,GAAG,EAAE;QAC7B,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAA;KAClC;IACD,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3G,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACtF,KAAK,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;KACzG;IACD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;AAChC,CAAC,CAAA,CAAA;AAlBY,QAAA,6BAA6B,iCAkBzC"}
@@ -0,0 +1,9 @@
1
+ import { PendingTransaction } from '@tatumio/api-client';
2
+ /**
3
+ * Sign Bitcoin Cash pending transaction from Tatum KMS
4
+ * @param tx pending transaction from KMS
5
+ * @param mnemonic mnemonic to generate private keys to sign transaction with.
6
+ * @param testnet mainnet or testnet version
7
+ * @returns transaction data to be broadcast to blockchain.
8
+ */
9
+ export declare const signKmsTransactionFromVirtualAccount: (tx: PendingTransaction, mnemonic: string, testnet: boolean) => Promise<any>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signKmsTransactionFromVirtualAccount = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // @ts-ignore
6
+ const coininfo = tslib_1.__importStar(require("coininfo"));
7
+ const api_client_1 = require("@tatumio/api-client");
8
+ const bch_sdk_wallet_1 = require("../bch.sdk.wallet");
9
+ // @ts-ignore
10
+ const bitcoincashjs2_lib_1 = require("@tatumio/bitcoincashjs2-lib");
11
+ /**
12
+ * Sign Bitcoin Cash pending transaction from Tatum KMS
13
+ * @param tx pending transaction from KMS
14
+ * @param mnemonic mnemonic to generate private keys to sign transaction with.
15
+ * @param testnet mainnet or testnet version
16
+ * @returns transaction data to be broadcast to blockchain.
17
+ */
18
+ const signKmsTransactionFromVirtualAccount = (tx, mnemonic, testnet) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
19
+ var _a;
20
+ if (tx.chain !== api_client_1.Currency.BCH || !tx.withdrawalResponses) {
21
+ throw Error('Unsupported chain.');
22
+ }
23
+ const [data, amountsToDecode] = tx.serializedTransaction.split(':');
24
+ const transaction = bitcoincashjs2_lib_1.Transaction.fromHex(data);
25
+ const amountsToSign = JSON.parse(amountsToDecode);
26
+ const network = testnet ? coininfo.bitcoincash.test.toBitcoinJS() : coininfo.bitcoincash.main.toBitcoinJS();
27
+ const builder = bitcoincashjs2_lib_1.TransactionBuilder.fromTransaction(transaction, network);
28
+ for (const [i, response] of tx.withdrawalResponses.entries()) {
29
+ if (response.vIn === '-1') {
30
+ continue;
31
+ }
32
+ const wallet = (0, bch_sdk_wallet_1.bchWallet)();
33
+ const ecPair = new bitcoincashjs2_lib_1.ECPair().fromWIF(yield wallet.generatePrivateKeyFromMnemonic(mnemonic, ((_a = response.address) === null || _a === void 0 ? void 0 : _a.derivationKey) || 0, {
34
+ testnet,
35
+ }), network);
36
+ builder.sign(i, ecPair, undefined, 0x01, amountsToSign[i], undefined, bitcoincashjs2_lib_1.ECSignature.SCHNORR);
37
+ }
38
+ return builder.build().toHex();
39
+ });
40
+ exports.signKmsTransactionFromVirtualAccount = signKmsTransactionFromVirtualAccount;
41
+ //# sourceMappingURL=bch.sdk.offchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.sdk.offchain.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/services/bch.sdk.offchain.ts"],"names":[],"mappings":";;;;AACA,aAAa;AACb,2DAAoC;AACpC,oDAA8C;AAC9C,sDAA6C;AAC7C,aAAa;AACb,oEAAkG;AAElG;;;;;;GAMG;AACI,MAAM,oCAAoC,GAAG,CAClD,EAAsB,EACtB,QAAgB,EAChB,OAAgB,EAChB,EAAE;;IACF,IAAI,EAAE,CAAC,KAAK,KAAK,qBAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE;QACxD,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAA;KAClC;IACD,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnE,MAAM,WAAW,GAAG,gCAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAa,CAAA;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3G,MAAM,OAAO,GAAG,uCAAkB,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACxE,KAAK,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE;QAC5D,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,EAAE;YACzB,SAAQ;SACT;QACD,MAAM,MAAM,GAAG,IAAA,0BAAS,GAAE,CAAA;QAC1B,MAAM,MAAM,GAAG,IAAI,2BAAM,EAAE,CAAC,OAAO,CACjC,MAAM,MAAM,CAAC,8BAA8B,CAAC,QAAQ,EAAE,CAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,aAAa,KAAI,CAAC,EAAE;YAC1F,OAAO;SACR,CAAC,EACF,OAAO,CACR,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,gCAAW,CAAC,OAAO,CAAC,CAAA;KAC3F;IACD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;AAChC,CAAC,CAAA,CAAA;AA3BY,QAAA,oCAAoC,wCA2BhD"}
@@ -0,0 +1,11 @@
1
+ import { TransactionHash } from '@tatumio/api-client';
2
+ import { BchApiCallsType } from '../..';
3
+ import { BchTransactionTypes } from '../bch.sdk.types';
4
+ export declare const bchTransactions: (apiCalls: BchApiCallsType) => {
5
+ sendTransaction: (body: BchTransactionTypes, args: {
6
+ testnet?: boolean;
7
+ }) => Promise<TransactionHash>;
8
+ prepareSignedTransaction: (body: BchTransactionTypes, args: {
9
+ testnet?: boolean;
10
+ }) => Promise<string>;
11
+ };
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bchTransactions = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const api_client_1 = require("@tatumio/api-client");
6
+ const bch_address_1 = require("../utils/bch.address");
7
+ const bch_sdk_errors_1 = require("../bch.sdk.errors");
8
+ const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
9
+ // @ts-ignore
10
+ const coininfo = tslib_1.__importStar(require("coininfo"));
11
+ // @ts-ignore
12
+ const BitcoinCashJS = tslib_1.__importStar(require("@tatumio/bitcoincashjs2-lib"));
13
+ const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
14
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
15
+ // @ts-ignore
16
+ const bitcoreLibCash = tslib_1.__importStar(require("bitcore-lib-cash"));
17
+ const bchTransactions = (apiCalls) => {
18
+ const sendTransaction = (body, args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
19
+ return api_client_1.ApiServices.blockchain.bcash.bchBroadcast({
20
+ txData: yield prepareSignedTransaction(body, args),
21
+ });
22
+ });
23
+ // @TODO add support - by address
24
+ const prepareSignedTransaction = (body, args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
25
+ var _a, _b, _c;
26
+ try {
27
+ const network = args.testnet
28
+ ? coininfo.bitcoincash.test.toBitcoinJS()
29
+ : coininfo.bitcoincash.main.toBitcoinJS();
30
+ const transactionBuilder = new BitcoinCashJS.TransactionBuilder(network);
31
+ const privateKeysToSign = [];
32
+ const signaturesToSign = [];
33
+ const amountToSign = [];
34
+ const outputs = [];
35
+ const txs = yield getTransactions(apiCalls, body.fromUTXO.map((u) => u.txHash));
36
+ for (const [i, item] of body.fromUTXO.entries()) {
37
+ transactionBuilder.addInput(item.txHash, item.index, 0xffffffff, null);
38
+ if ('signatureId' in item) {
39
+ privateKeysToSign.push(item.signatureId);
40
+ signaturesToSign.push({ id: item.signatureId, index: item.signatureIdIndex });
41
+ }
42
+ else if ('privateKey' in item)
43
+ privateKeysToSign.push(item.privateKey);
44
+ const vout = (_b = (_a = txs === null || txs === void 0 ? void 0 : txs[i]) === null || _a === void 0 ? void 0 : _a.vout) === null || _b === void 0 ? void 0 : _b[item.index];
45
+ if (!vout || !vout.value)
46
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_UTXO_NOT_FOUND);
47
+ amountToSign.push(shared_abstract_sdk_1.amountUtils.toSatoshis(vout.value));
48
+ }
49
+ for (const item of body.to) {
50
+ const value = shared_abstract_sdk_1.amountUtils.toSatoshis(item.value);
51
+ try {
52
+ const address = bch_address_1.bcashAddressHelper.getAddress(item.address);
53
+ transactionBuilder.addOutput(address, value);
54
+ outputs.push(value);
55
+ }
56
+ catch (e) {
57
+ const address = new bitcoreLibCash.Address.fromString(item.address);
58
+ transactionBuilder.addOutput(address.toLegacyAddress(), value);
59
+ outputs.push(value);
60
+ }
61
+ }
62
+ // send the change to change address
63
+ if (body.changeAddress) {
64
+ const sumOfInputs = lodash_1.default.sum(amountToSign);
65
+ const sumOfOutputs = lodash_1.default.sum(outputs);
66
+ const defaultFee = 0.00001;
67
+ const txFee = shared_abstract_sdk_1.amountUtils.toSatoshis((_c = body.fee) !== null && _c !== void 0 ? _c : defaultFee);
68
+ const change = Number(new bignumber_js_1.default(sumOfInputs).minus(sumOfOutputs).minus(txFee));
69
+ transactionBuilder.addOutput(bch_address_1.bcashAddressHelper.getAddress(body.changeAddress), change);
70
+ }
71
+ verifyAmounts(amountToSign, body);
72
+ // Validate if all from entries are signatureId or non signatureId
73
+ if (privateKeysToSign.length !== 0 && body.fromUTXO.length !== privateKeysToSign.length) {
74
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_WRONG_BODY);
75
+ }
76
+ if (signaturesToSign.length !== 0 && body.fromUTXO.length !== signaturesToSign.length) {
77
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_WRONG_BODY);
78
+ }
79
+ if ('signatureId' in body.fromUTXO[0]) {
80
+ return JSON.stringify({
81
+ txData: `${transactionBuilder.buildIncomplete().toHex()}:${JSON.stringify(amountToSign)}`,
82
+ privateKeysToSign,
83
+ signaturesToSign,
84
+ amountToSign,
85
+ });
86
+ }
87
+ for (let i = 0; i < privateKeysToSign.length; i++) {
88
+ const ecPair = BitcoinCashJS.ECPair.fromWIF(privateKeysToSign[i]);
89
+ transactionBuilder.sign(i, ecPair, undefined, transactionBuilder.hashTypes.SIGHASH_ALL, amountToSign[i], transactionBuilder.signatureAlgorithms.SCHNORR);
90
+ }
91
+ return transactionBuilder.build().toHex();
92
+ }
93
+ catch (e) {
94
+ throw new bch_sdk_errors_1.BchSdkError(e);
95
+ }
96
+ });
97
+ function verifyAmounts(amountToSign, body) {
98
+ const outputsSum = body.to
99
+ .map((to) => shared_abstract_sdk_1.amountUtils.toSatoshis(to.value))
100
+ .reduce((e, acc) => e.plus(acc), new bignumber_js_1.default(0));
101
+ const inputsSum = amountToSign
102
+ .map((i) => new bignumber_js_1.default(i))
103
+ .reduce((v, acc) => v.plus(acc), new bignumber_js_1.default(0));
104
+ if (outputsSum.eq(inputsSum)) {
105
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_FEE_TOO_SMALL);
106
+ }
107
+ if (outputsSum.gt(inputsSum)) {
108
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_NOT_ENOUGH_BALANCE);
109
+ }
110
+ }
111
+ const getTransactions = (apiCalls, txHash) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
112
+ const result = [];
113
+ for (const tx of txHash) {
114
+ result.push(apiCalls.bchGetRawTransaction(tx));
115
+ }
116
+ return Promise.all(result);
117
+ });
118
+ return {
119
+ sendTransaction,
120
+ prepareSignedTransaction,
121
+ };
122
+ };
123
+ exports.bchTransactions = bchTransactions;
124
+ //# sourceMappingURL=bch.sdk.tx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.sdk.tx.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/services/bch.sdk.tx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { TransferBchKeyPair, TransferBchKMS, TransferBchMnemonic } from '@tatumio/api-client';
2
+ import { Blockchain } from '@tatumio/shared-core';
3
+ export declare const virtualAccountService: (args: {
4
+ blockchain: Blockchain;
5
+ }) => {
6
+ send: (isTestnet: boolean, body: TransferBchMnemonic | TransferBchKeyPair | TransferBchKMS) => Promise<{
7
+ completed?: boolean;
8
+ txId?: string;
9
+ id?: undefined;
10
+ } | {
11
+ id: string;
12
+ } | import("@tatumio/api-client").OffchainTransactionSignatureResult>;
13
+ depositAddress: {
14
+ checkExists: (address: string, index?: number) => Promise<any>;
15
+ create: any;
16
+ createMultiple: any;
17
+ assign: any;
18
+ remove: any;
19
+ getByAccount: any;
20
+ };
21
+ withdrawal: {
22
+ getAll: (status?: "InProgress" | "Done" | "Cancelled", pageSize?: number, offset?: number) => Promise<any[]>;
23
+ broadcast: any;
24
+ create: any;
25
+ complete: any;
26
+ };
27
+ storeTokenAddress: any;
28
+ };
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.virtualAccountService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const api_client_1 = require("@tatumio/api-client");
6
+ const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
7
+ const shared_blockchain_abstract_1 = require("@tatumio/shared-blockchain-abstract");
8
+ const shared_core_1 = require("@tatumio/shared-core");
9
+ const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
10
+ const bch_sdk_errors_1 = require("../bch.sdk.errors");
11
+ const shared_blockchain_btc_based_1 = require("@tatumio/shared-blockchain-btc-based");
12
+ // @ts-ignore
13
+ const BitcoinCashJS = tslib_1.__importStar(require("@tatumio/bitcoincashjs2-lib"));
14
+ // @ts-ignore
15
+ const bitcoreLibCash = tslib_1.__importStar(require("bitcore-lib-cash"));
16
+ // @ts-ignore
17
+ const coininfo = tslib_1.__importStar(require("coininfo"));
18
+ const addOutputAddressValue = (transactionBuilder, address, value) => {
19
+ try {
20
+ transactionBuilder.addOutput(address, value);
21
+ }
22
+ catch (_) {
23
+ const addressFromString = new bitcoreLibCash.Address.fromString(address);
24
+ transactionBuilder.addOutput(addressFromString.toLegacyAddress(), value);
25
+ }
26
+ };
27
+ const prepareTransaction = (data, out, amount, credentials, isTestnet, multipleAmounts) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
28
+ const { mnemonic, keyPair, xpub, attr: changeAddress } = credentials;
29
+ const network = isTestnet
30
+ ? coininfo.bitcoincash.test.toBitcoinJS()
31
+ : coininfo.bitcoincash.main.toBitcoinJS();
32
+ const transactionBuilder = new BitcoinCashJS.TransactionBuilder(network);
33
+ for (const input of data) {
34
+ if (input.vIn !== '-1') {
35
+ transactionBuilder.addInput(input.vIn, input.vInIndex);
36
+ }
37
+ }
38
+ const lastVin = data.find((d) => d.vIn === '-1');
39
+ if (multipleAmounts === null || multipleAmounts === void 0 ? void 0 : multipleAmounts.length) {
40
+ for (const [i, multipleAmount] of multipleAmounts.entries()) {
41
+ addOutputAddressValue(transactionBuilder, out.split(',')[i], Number(new bignumber_js_1.default(multipleAmount).multipliedBy(100000000).toFixed(8, bignumber_js_1.default.ROUND_FLOOR)));
42
+ }
43
+ }
44
+ else {
45
+ addOutputAddressValue(transactionBuilder, out, Number(new bignumber_js_1.default(amount).multipliedBy(100000000).toFixed(0, bignumber_js_1.default.ROUND_FLOOR)));
46
+ }
47
+ if (!lastVin) {
48
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_TX_PREPARATION_UTXO);
49
+ }
50
+ const value = Number(new bignumber_js_1.default(lastVin.amount || -1).multipliedBy(100000000).toFixed(0, bignumber_js_1.default.ROUND_FLOOR));
51
+ try {
52
+ if (xpub) {
53
+ addOutputAddressValue(transactionBuilder, (0, shared_blockchain_btc_based_1.btcBasedWalletUtils)(shared_core_1.Blockchain.BCH).generateAddressFromXPub(xpub, 0, { testnet: isTestnet }), value);
54
+ }
55
+ else if (changeAddress) {
56
+ addOutputAddressValue(transactionBuilder, changeAddress, value);
57
+ }
58
+ else {
59
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_MNEMONIC_OR_KEYPAIR_EXPECTED);
60
+ }
61
+ }
62
+ catch (e) {
63
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_TX_FAILED);
64
+ }
65
+ if (value < 0) {
66
+ console.log(`Wrong amount for BCH offchain amount.`);
67
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_DESTINATION_LESS_THAN_ZERO);
68
+ }
69
+ try {
70
+ for (const [i, input] of data.entries()) {
71
+ // when there is no address field present, input is pool transfer to 0
72
+ if (input.vIn === '-1') {
73
+ continue;
74
+ }
75
+ if (!input.amount) {
76
+ console.log(`Missing amount preparing BCH offchain transaction.`);
77
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_TX_FAILED);
78
+ }
79
+ const value = Number(new bignumber_js_1.default(input.amount).multipliedBy(100000000).toFixed(0, bignumber_js_1.default.ROUND_FLOOR));
80
+ if (mnemonic) {
81
+ const privateKey = yield (0, shared_blockchain_btc_based_1.btcBasedWalletUtils)(shared_core_1.Blockchain.BCH).generatePrivateKeyFromMnemonic(mnemonic, input.address && input.address.derivationKey ? input.address.derivationKey : 0, { testnet: isTestnet });
82
+ const ecPair = BitcoinCashJS.ECPair.fromWIF(privateKey, network);
83
+ transactionBuilder.sign(i, ecPair, undefined, 0x01, value, undefined, BitcoinCashJS.ECSignature.SCHNORR);
84
+ }
85
+ else if (keyPair) {
86
+ // @ts-ignore
87
+ const privateKey = keyPair.find((k) => k.address === input.address.address);
88
+ if (privateKey) {
89
+ const ecPair = BitcoinCashJS.ECPair.fromWIF(privateKey.privateKey, network);
90
+ transactionBuilder.sign(i, ecPair, undefined, 0x01, value, undefined, BitcoinCashJS.ECSignature.SCHNORR);
91
+ }
92
+ }
93
+ }
94
+ return transactionBuilder.build().toHex();
95
+ }
96
+ catch (e) {
97
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_BLOCKCHAIN_ERROR);
98
+ }
99
+ });
100
+ const sendBchVirtualAccountTransaction = (body, isTestnet) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
101
+ const withdrawal = body;
102
+ if (!withdrawal.fee) {
103
+ withdrawal.fee = '0.00005';
104
+ }
105
+ const { id, data } = yield api_client_1.ApiServices.offChain.withdrawal.storeWithdrawal(withdrawal);
106
+ if (!data) {
107
+ throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_TX_FAILED);
108
+ }
109
+ const { amount, address } = withdrawal;
110
+ const prepareTx = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
111
+ return yield prepareTransaction(data, address, amount, {
112
+ mnemonic: 'mnemonic' in body ? body.mnemonic : undefined,
113
+ xpub: 'xpub' in body ? body.xpub : undefined,
114
+ keyPair: 'keyPair' in body ? Object.assign(body.keyPair, []) : undefined,
115
+ attr: body.attr,
116
+ }, isTestnet, body.multipleAmounts);
117
+ });
118
+ try {
119
+ const txPrepared = yield prepareTx();
120
+ return Object.assign({}, (yield api_client_1.ApiServices.offChain.withdrawal.broadcastBlockchainTransaction({
121
+ txData: txPrepared,
122
+ withdrawalId: id,
123
+ currency: api_client_1.Currency.BCH,
124
+ })));
125
+ }
126
+ catch (e) {
127
+ console.error(e);
128
+ try {
129
+ if (typeof id !== 'string') {
130
+ console.log('Missing withdrawal ID');
131
+ throw e;
132
+ }
133
+ yield api_client_1.ApiServices.offChain.withdrawal.cancelInProgressWithdrawal(id);
134
+ }
135
+ catch (e1) {
136
+ console.log(e);
137
+ return { id };
138
+ }
139
+ throw e;
140
+ }
141
+ });
142
+ const virtualAccountService = (args) => {
143
+ return Object.assign(Object.assign({}, (0, shared_blockchain_abstract_1.abstractBlockchainVirtualAccount)(args)), { send: (isTestnet, body) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
144
+ if ('signatureId' in body) {
145
+ return api_client_1.ApiServices.offChain.blockchain.bchTransfer(body);
146
+ }
147
+ else {
148
+ return yield sendBchVirtualAccountTransaction(body, isTestnet);
149
+ }
150
+ }) });
151
+ };
152
+ exports.virtualAccountService = virtualAccountService;
153
+ //# sourceMappingURL=bch.sdk.virtualAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bch.sdk.virtualAccount.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/services/bch.sdk.virtualAccount.ts"],"names":[],"mappings":";;;;AAAA,oDAQ4B;AAC5B,sEAA2D;AAC3D,oFAAsF;AACtF,sDAAiD;AACjD,wEAAoC;AACpC,sDAA+C;AAE/C,sFAA0E;AAC1E,aAAa;AACb,mFAA4D;AAE5D,aAAa;AACb,yEAAkD;AAClD,aAAa;AACb,2DAAoC;AAOpC,MAAM,qBAAqB,GAAG,CAAC,kBAAsC,EAAE,OAAe,EAAE,KAAa,EAAE,EAAE;IACvG,IAAI;QACF,kBAAkB,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;KAC7C;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACxE,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,KAAK,CAAC,CAAA;KACzE;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,IAAoB,EACpB,GAAW,EACX,MAAc,EACd,WAKC,EACD,SAAkB,EAClB,eAA0B,EACT,EAAE;IACnB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,WAAW,CAAA;IACpE,MAAM,OAAO,GAAG,SAAS;QACvB,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;QACzC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3C,MAAM,kBAAkB,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAExE,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE;QACxB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;YACtB,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;SACvD;KACF;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAA;IAChD,IAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,MAAM,EAAE;QAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE;YAC3D,qBAAqB,CACnB,kBAAkB,EAClB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACjB,MAAM,CAAC,IAAI,sBAAS,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,sBAAS,CAAC,WAAW,CAAC,CAAC,CAChG,CAAA;SACF;KACF;SAAM;QACL,qBAAqB,CACnB,kBAAkB,EAClB,GAAG,EACH,MAAM,CAAC,IAAI,sBAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,sBAAS,CAAC,WAAW,CAAC,CAAC,CACxF,CAAA;KACF;IAED,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,6BAA6B,CAAC,CAAA;KAClE;IACD,MAAM,KAAK,GAAG,MAAM,CAClB,IAAI,sBAAS,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,sBAAS,CAAC,WAAW,CAAC,CAC9F,CAAA;IAED,IAAI;QACF,IAAI,IAAI,EAAE;YACR,qBAAqB,CACnB,kBAAkB,EAClB,IAAA,iDAAmB,EAAC,wBAAU,CAAC,GAAG,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAC5F,KAAK,CACN,CAAA;SACF;aAAM,IAAI,aAAa,EAAE;YACxB,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAA;SAChE;aAAM;YACL,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,sCAAsC,CAAC,CAAA;SAC3E;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,mBAAmB,CAAC,CAAA;KACxD;IAED,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;QACpD,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,oCAAoC,CAAC,CAAA;KACzE;IAED,IAAI;QACF,KAAK,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACvC,sEAAsE;YACtE,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;gBACtB,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;gBACjE,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,mBAAmB,CAAC,CAAA;aACxD;YACD,MAAM,KAAK,GAAG,MAAM,CAClB,IAAI,sBAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,sBAAS,CAAC,WAAW,CAAC,CACtF,CAAA;YACD,IAAI,QAAQ,EAAE;gBACZ,MAAM,UAAU,GAAG,MAAM,IAAA,iDAAmB,EAAC,wBAAU,CAAC,GAAG,CAAC,CAAC,8BAA8B,CACzF,QAAQ,EACR,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC9E,EAAE,OAAO,EAAE,SAAS,EAAE,CACvB,CAAA;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;gBAChE,kBAAkB,CAAC,IAAI,CACrB,CAAC,EACD,MAAM,EACN,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACT,aAAa,CAAC,WAAW,CAAC,OAAO,CAClC,CAAA;aACF;iBAAM,IAAI,OAAO,EAAE;gBAClB,aAAa;gBACb,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC3E,IAAI,UAAU,EAAE;oBACd,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;oBAE3E,kBAAkB,CAAC,IAAI,CACrB,CAAC,EACD,MAAM,EACN,SAAS,EACT,IAAI,EACJ,KAAK,EACL,SAAS,EACT,aAAa,CAAC,WAAW,CAAC,OAAO,CAClC,CAAA;iBACF;aACF;SACF;QAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAA;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,0BAA0B,CAAC,CAAA;KAC/D;AACH,CAAC,CAAA,CAAA;AAED,MAAM,gCAAgC,GAAG,CACvC,IAA8C,EAC9C,SAAkB,EAClB,EAAE;IACF,MAAM,UAAU,GAAe,IAAkB,CAAA;IACjD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QACnB,UAAU,CAAC,GAAG,GAAG,SAAS,CAAA;KAC3B;IAED,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,wBAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;IAEtF,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,4BAAW,CAAC,kCAAY,CAAC,mBAAmB,CAAC,CAAA;KACxD;IAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAA;IAEtC,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,OAAA,MAAM,kBAAkB,CACtB,IAAI,EACJ,OAAO,EACP,MAAM,EACN;YACE,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACxD,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC5C,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAe,CAAC,CAAC,CAAC,CAAC,SAAS;YACrF,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,EACD,SAAS,EACT,IAAI,CAAC,eAAe,CACrB,CAAA;MAAA,CAAA;IACH,IAAI;QACF,MAAM,UAAU,GAAG,MAAM,SAAS,EAAE,CAAA;QACpC,yBACK,CAAC,MAAM,wBAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC;YACvE,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,qBAAQ,CAAC,GAAG;SACvB,CAAC,CAAC,EACJ;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAChB,IAAI;YACF,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;gBACpC,MAAM,CAAC,CAAA;aACR;YACD,MAAM,wBAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAA;SACrE;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,EAAE,EAAE,EAAE,CAAA;SACd;QACD,MAAM,CAAC,CAAA;KACR;AACH,CAAC,CAAA,CAAA;AAEM,MAAM,qBAAqB,GAAG,CAAC,IAAgC,EAAE,EAAE;IACxE,uCACK,IAAA,6DAAgC,EAAC,IAAI,CAAC,KACzC,IAAI,EAAE,CAAO,SAAkB,EAAE,IAA+D,EAAE,EAAE;YAClG,IAAI,aAAa,IAAI,IAAI,EAAE;gBACzB,OAAO,wBAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;aACzD;iBAAM;gBACL,OAAO,MAAM,gCAAgC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;aAC/D;QACH,CAAC,CAAA,IACF;AACH,CAAC,CAAA;AAXY,QAAA,qBAAqB,yBAWjC"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ import { Buffer } from 'buffer';
2
3
  interface Hash {
3
4
  hash: Buffer;
4
5
  }
@@ -7,6 +7,7 @@ const coininfo_1 = tslib_1.__importDefault(require("coininfo"));
7
7
  // @ts-ignore
8
8
  const bitcoincashjs2_lib_1 = tslib_1.__importDefault(require("@tatumio/bitcoincashjs2-lib"));
9
9
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
10
+ const buffer_1 = require("buffer");
10
11
  exports.bcashAddressHelper = {
11
12
  getAddress: (address) => {
12
13
  try {
@@ -36,7 +37,7 @@ exports.bcashAddressHelper = {
36
37
  version = bitcoincash.versions.scripthash;
37
38
  break;
38
39
  }
39
- const hashBuf = Buffer.from(hash);
40
+ const hashBuf = buffer_1.Buffer.from(hash);
40
41
  return bitcoincashjs2_lib_1.default.address.toBase58Check(hashBuf, version);
41
42
  },
42
43
  decode: (address) => {
@@ -1 +1 @@
1
- {"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,gEAA+B;AAC/B,aAAa;AACb,6FAA+C;AAC/C,iDAAwC;AAgB3B,QAAA,kBAAkB,GAAG;IAChC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9B,IAAI;YACF,OAAO,0BAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;SACnD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,OAAO,CAAA;SACf;IACH,CAAC;IACD,eAAe,EAAE,CAAC,OAAe,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAY,0BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;QAC3C,QAAQ,MAAM,EAAE;YACd,KAAK,aAAa;gBAChB,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;YACP,KAAK,SAAS;gBACZ,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;SACR;QAED,IAAI,OAAO,GAAW,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;QACjD,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;gBACrC,MAAK;YACP,KAAK,MAAM;gBACT,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAA;gBACzC,MAAK;SACR;QAED,MAAM,OAAO,GAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEzC,OAAO,4BAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IACD,MAAM,EAAE,CAAC,OAAe,EAAW,EAAE;QACnC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAU,4BAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAEvE,IAAI,OAAO,GAAY;YACrB,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,IAAI;YACJ,MAAM,EAAE,EAAE;SACX,CAAA;QACD,QAAQ,OAAO,EAAE;YACf,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;SACR;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"bch.address.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/bch/src/lib/utils/bch.address.ts"],"names":[],"mappings":";;;;AAAA,aAAa;AACb,gEAA+B;AAC/B,aAAa;AACb,6FAA+C;AAC/C,iDAAwC;AACxC,mCAA+B;AAgBlB,QAAA,kBAAkB,GAAG;IAChC,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;QAC9B,IAAI;YACF,OAAO,0BAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;SACnD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,OAAO,CAAA;SACf;IACH,CAAC;IACD,eAAe,EAAE,CAAC,OAAe,EAAE,EAAE;QACnC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAY,0BAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;QAC3C,QAAQ,MAAM,EAAE;YACd,KAAK,aAAa;gBAChB,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;YACP,KAAK,SAAS;gBACZ,WAAW,GAAG,kBAAQ,CAAC,WAAW,CAAC,IAAI,CAAA;gBACvC,MAAK;SACR;QAED,IAAI,OAAO,GAAW,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;QACjD,QAAQ,IAAI,EAAE;YACZ,KAAK,OAAO;gBACV,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAA;gBACrC,MAAK;YACP,KAAK,MAAM;gBACT,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAA;gBACzC,MAAK;SACR;QAED,MAAM,OAAO,GAAW,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEzC,OAAO,4BAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IACD,MAAM,EAAE,CAAC,OAAe,EAAW,EAAE;QACnC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAU,4BAAK,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QAEvE,IAAI,OAAO,GAAY;YACrB,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,IAAI;YACJ,MAAM,EAAE,EAAE;SACX,CAAA;QACD,QAAQ,OAAO,EAAE;YACf,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,aAAa;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,OAAO;oBACb,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;YACP,KAAK,wBAAQ,CAAC,OAAO,CAAC,UAAU;gBAC9B,OAAO,GAAG;oBACR,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,MAAM;oBACZ,IAAI;oBACJ,MAAM,EAAE,QAAQ;iBACjB,CAAA;gBACD,MAAK;SACR;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bchTransactions = void 0;
4
- const tslib_1 = require("tslib");
5
- const api_client_1 = require("@tatumio/api-client");
6
- const bch_address_1 = require("./utils/bch.address");
7
- const bch_sdk_errors_1 = require("./bch.sdk.errors");
8
- const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
9
- // @ts-ignore
10
- const coininfo = tslib_1.__importStar(require("coininfo"));
11
- // @ts-ignore
12
- const BitcoinCashJS = tslib_1.__importStar(require("@tatumio/bitcoincashjs2-lib"));
13
- const bignumber_js_1 = tslib_1.__importDefault(require("bignumber.js"));
14
- const lodash_1 = tslib_1.__importDefault(require("lodash"));
15
- const sendTransaction = (body, args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
16
- return api_client_1.ApiServices.blockchain.bcash.bchBroadcast({
17
- txData: yield prepareSignedTransaction(body, args),
18
- });
19
- });
20
- // @TODO add support - by address
21
- const prepareSignedTransaction = (body, args) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
- var _a, _b, _c;
23
- try {
24
- const network = args.testnet
25
- ? coininfo.bitcoincash.test.toBitcoinJS()
26
- : coininfo.bitcoincash.main.toBitcoinJS();
27
- const transactionBuilder = new BitcoinCashJS.TransactionBuilder(network);
28
- const privateKeysToSign = [];
29
- const amountToSign = [];
30
- const outputs = [];
31
- const txs = yield getTransactions(body.fromUTXO.map((u) => u.txHash));
32
- for (const [i, item] of body.fromUTXO.entries()) {
33
- transactionBuilder.addInput(item.txHash, item.index, 0xffffffff, null);
34
- if ('signatureId' in item)
35
- privateKeysToSign.push(item.signatureId);
36
- else if ('privateKey' in item)
37
- privateKeysToSign.push(item.privateKey);
38
- const vout = (_b = (_a = txs === null || txs === void 0 ? void 0 : txs[i]) === null || _a === void 0 ? void 0 : _a.vout) === null || _b === void 0 ? void 0 : _b[item.index];
39
- if (!vout || !vout.value)
40
- throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_UTXO_NOT_FOUND);
41
- amountToSign.push(shared_abstract_sdk_1.amountUtils.toSatoshis(vout.value));
42
- const fromUTXO = body.fromUTXO;
43
- if (fromUTXO && 'signatureId' in fromUTXO[0] && fromUTXO[0].signatureId) {
44
- return JSON.stringify({ txData: JSON.stringify(txs[i]), privateKeysToSign });
45
- }
46
- }
47
- body.to.forEach((item) => {
48
- const value = shared_abstract_sdk_1.amountUtils.toSatoshis(item.value);
49
- transactionBuilder.addOutput(bch_address_1.bcashAddressHelper.getAddress(item.address), value);
50
- outputs.push(value);
51
- });
52
- // send the change to change address
53
- if (body.changeAddress) {
54
- const sumOfInputs = lodash_1.default.sum(amountToSign);
55
- const sumOfOutputs = lodash_1.default.sum(outputs);
56
- const defaultFee = 0.00001;
57
- const txFee = shared_abstract_sdk_1.amountUtils.toSatoshis((_c = body.fee) !== null && _c !== void 0 ? _c : defaultFee);
58
- const change = Number(new bignumber_js_1.default(sumOfInputs).minus(sumOfOutputs).minus(txFee));
59
- transactionBuilder.addOutput(body.changeAddress, change);
60
- }
61
- verifyAmounts(amountToSign, body);
62
- for (let i = 0; i < privateKeysToSign.length; i++) {
63
- const ecPair = BitcoinCashJS.ECPair.fromWIF(privateKeysToSign[i], network);
64
- transactionBuilder.sign(i, ecPair, undefined, 0x01, amountToSign[i], undefined, BitcoinCashJS.ECSignature.SCHNORR);
65
- }
66
- return transactionBuilder.build().toHex();
67
- }
68
- catch (e) {
69
- throw new bch_sdk_errors_1.BchSdkError(e);
70
- }
71
- });
72
- function verifyAmounts(amountToSign, body) {
73
- const outputsSum = body.to
74
- .map((to) => shared_abstract_sdk_1.amountUtils.toSatoshis(to.value))
75
- .reduce((e, acc) => e.plus(acc), new bignumber_js_1.default(0));
76
- const inputsSum = amountToSign
77
- .map((i) => new bignumber_js_1.default(i))
78
- .reduce((v, acc) => v.plus(acc), new bignumber_js_1.default(0));
79
- if (outputsSum.eq(inputsSum)) {
80
- throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_FEE_TOO_SMALL);
81
- }
82
- if (outputsSum.gt(inputsSum)) {
83
- throw new bch_sdk_errors_1.BchSdkError(shared_abstract_sdk_1.SdkErrorCode.BTC_BASED_NOT_ENOUGH_BALANCE);
84
- }
85
- }
86
- const getTransactions = (txHash) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
87
- const result = [];
88
- for (const tx of txHash) {
89
- result.push(api_client_1.ApiServices.blockchain.bcash.bchGetRawTransaction(tx));
90
- }
91
- return Promise.all(result);
92
- });
93
- const bchTransactions = () => ({
94
- sendTransaction,
95
- prepareSignedTransaction,
96
- });
97
- exports.bchTransactions = bchTransactions;
98
- //# sourceMappingURL=bch.sdk.tx.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bch.sdk.tx.js","sourceRoot":"","sources":["../../../../../../packages/blockchain/bch/src/lib/bch.sdk.tx.ts"],"names":[],"mappings":"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"}