@tatumio/bch 2.0.1-alpha.356.1 → 2.0.1-alpha.358

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "name": "@tatumio/bch",
3
- "version": "2.0.1-alpha.356.1",
3
+ "version": "2.0.1-alpha.358",
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.356.1",
9
- "@tatumio/api-client": "2.0.1-alpha.356.1",
8
+ "@tatumio/api-client": "2.0.1-alpha.358",
10
9
  "axios": "^0.26.0",
11
10
  "form-data": "^4.0.0",
12
- "@tatumio/shared-testing-btc-based": "2.0.1-alpha.356.1",
13
- "@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.356.1",
14
- "@tatumio/shared-abstract-sdk": "2.0.1-alpha.356.1",
11
+ "@tatumio/shared-testing-common": "2.0.1-alpha.358",
12
+ "@tatumio/shared-abstract-sdk": "2.0.1-alpha.358",
15
13
  "bignumber.js": "^9.0.2",
16
- "@tatumio/shared-core": "2.0.1-alpha.356.1",
17
- "@tatumio/shared-blockchain-abstract": "2.0.1-alpha.356.1",
14
+ "@tatumio/shared-core": "2.0.1-alpha.358",
15
+ "@tatumio/shared-blockchain-btc-based": "2.0.1-alpha.358",
16
+ "@tatumio/shared-blockchain-abstract": "2.0.1-alpha.358",
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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"}