@cityofzion/bs-neo3 1.2.0 → 1.3.0

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.
Files changed (46) hide show
  1. package/dist/BSNeo3.d.ts +3 -3
  2. package/dist/BSNeo3.js +9 -9
  3. package/dist/builder/invocation/FlamingoSwapInvocationBuilderNeo3.d.ts +7 -0
  4. package/dist/builder/invocation/FlamingoSwapInvocationBuilderNeo3.js +95 -0
  5. package/dist/builder/invocation/NeonDappKitInvocationBuilderNeo3.d.ts +34 -0
  6. package/dist/builder/invocation/NeonDappKitInvocationBuilderNeo3.js +102 -0
  7. package/dist/constants/FlamingoSwapConstants.d.ts +36 -0
  8. package/dist/constants/FlamingoSwapConstants.js +853 -0
  9. package/dist/{BSNeo3Helper.js → helpers/BSNeo3Helper.js} +2 -2
  10. package/dist/helpers/FlamingoSwapHelper.d.ts +19 -0
  11. package/dist/helpers/FlamingoSwapHelper.js +84 -0
  12. package/dist/index.d.ts +13 -11
  13. package/dist/index.js +13 -11
  14. package/dist/{DoraBDSNeo3.d.ts → services/blockchain-data/DoraBDSNeo3.d.ts} +4 -4
  15. package/dist/{DoraBDSNeo3.js → services/blockchain-data/DoraBDSNeo3.js} +3 -3
  16. package/dist/{RpcBDSNeo3.d.ts → services/blockchain-data/RpcBDSNeo3.d.ts} +2 -2
  17. package/dist/{RpcBDSNeo3.js → services/blockchain-data/RpcBDSNeo3.js} +4 -4
  18. package/dist/{FlamingoEDSNeo3.d.ts → services/exchange-data/FlamingoEDSNeo3.d.ts} +1 -1
  19. package/dist/{FlamingoEDSNeo3.js → services/exchange-data/FlamingoEDSNeo3.js} +1 -1
  20. package/dist/{DoraESNeo3.d.ts → services/explorer/DoraESNeo3.d.ts} +2 -2
  21. package/dist/{DoraESNeo3.js → services/explorer/DoraESNeo3.js} +1 -1
  22. package/dist/{NeonDappKitLedgerServiceNeo3.d.ts → services/ledger/NeonDappKitLedgerServiceNeo3.d.ts} +2 -4
  23. package/dist/services/ledger/NeonDappKitLedgerServiceNeo3.js +135 -0
  24. package/dist/{GhostMarketNDSNeo3.d.ts → services/nft-data/GhostMarketNDSNeo3.d.ts} +2 -2
  25. package/dist/{RpcNDSNeo3.d.ts → services/nft-data/RpcNDSNeo3.d.ts} +1 -1
  26. package/dist/services/swap/FlamingoSwapServiceNeo3.d.ts +23 -0
  27. package/dist/services/swap/FlamingoSwapServiceNeo3.js +271 -0
  28. package/dist/services/swap/handlers/FlamingoSwapDetailsHandler.d.ts +24 -0
  29. package/dist/services/swap/handlers/FlamingoSwapDetailsHandler.js +178 -0
  30. package/dist/services/swap/handlers/FlamingoSwapRouteHandler.d.ts +13 -0
  31. package/dist/services/swap/handlers/FlamingoSwapRouteHandler.js +181 -0
  32. package/dist/services/swap/handlers/FlamingoSwapSocketHandler.d.ts +9 -0
  33. package/dist/services/swap/handlers/FlamingoSwapSocketHandler.js +57 -0
  34. package/dist/services/swap/handlers/index.d.ts +3 -0
  35. package/dist/services/swap/handlers/index.js +19 -0
  36. package/package.json +7 -5
  37. package/dist/NeonDappKitLedgerServiceNeo3.js +0 -110
  38. package/dist/flamingo-swap/FlamingoSwapControllerService.d.ts +0 -20
  39. package/dist/flamingo-swap/FlamingoSwapControllerService.js +0 -290
  40. package/dist/flamingo-swap/FlamingoSwapHelper.d.ts +0 -48
  41. package/dist/flamingo-swap/FlamingoSwapHelper.js +0 -171
  42. package/dist/flamingo-swap/FlamingoSwapNeonDappKitInvocationBuilder.d.ts +0 -19
  43. package/dist/flamingo-swap/FlamingoSwapNeonDappKitInvocationBuilder.js +0 -208
  44. package/dist/{BSNeo3Helper.d.ts → helpers/BSNeo3Helper.d.ts} +0 -0
  45. package/dist/{GhostMarketNDSNeo3.js → services/nft-data/GhostMarketNDSNeo3.js} +1 -1
  46. /package/dist/{RpcNDSNeo3.js → services/nft-data/RpcNDSNeo3.js} +0 -0
@@ -10,8 +10,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  var _a, _BSNeo3Helper_EXTRA_TOKENS_BY_NETWORK_ID, _BSNeo3Helper_RPC_LIST_BY_NETWORK_ID;
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.BSNeo3Helper = void 0;
13
- const mainnet_json_1 = __importDefault(require("./assets/tokens/mainnet.json"));
14
- const common_json_1 = __importDefault(require("./assets/tokens/common.json"));
13
+ const common_json_1 = __importDefault(require("../assets/tokens/common.json"));
14
+ const mainnet_json_1 = __importDefault(require("../assets/tokens/mainnet.json"));
15
15
  class BSNeo3Helper {
16
16
  static getTokens(network) {
17
17
  var _b;
@@ -0,0 +1,19 @@
1
+ import { Network, SwapRoute, Token } from '@cityofzion/blockchain-service';
2
+ import BigNumber from 'bignumber.js';
3
+ import { FlamingoSwapPoolInfo, FlamingoSwapPools, FlamingoSwapScriptHashes, FlamingoSwapTokens } from '../constants/FlamingoSwapConstants';
4
+ import { BSNeo3NetworkId } from './BSNeo3Helper';
5
+ export declare class FlamingoSwapHelper {
6
+ static getFlamingoSwapPools(network: Network<BSNeo3NetworkId>): FlamingoSwapPools;
7
+ static getFlamingoSwapPool(network: Network<BSNeo3NetworkId>, name: string): FlamingoSwapPoolInfo;
8
+ static getFlamingoSwapTokens(network: Network<BSNeo3NetworkId>): FlamingoSwapTokens;
9
+ static getFlamingoSwapToken(network: Network<BSNeo3NetworkId>, name: string): Token;
10
+ static getFlamingoSwapScriptHashes(network: Network<BSNeo3NetworkId>): FlamingoSwapScriptHashes;
11
+ static getRoutePath(route: SwapRoute[]): Token[];
12
+ static overrideToken(network: Network<BSNeo3NetworkId>, token: Token): Token;
13
+ static overrideAmountInput(network: Network<BSNeo3NetworkId>, amount: string, token: Token): BigNumber;
14
+ static overrideAmountToDisplay(network: Network<BSNeo3NetworkId>, amount: string, token: Token): string;
15
+ static overrideRoute(network: Network<BSNeo3NetworkId>, route: SwapRoute[]): SwapRoute[];
16
+ static normalizeHash(hash: string): string;
17
+ static isNeoToken(network: Network<BSNeo3NetworkId>, token: Token): boolean;
18
+ static formatAmount(amount: string, decimals: number): string;
19
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FlamingoSwapHelper = void 0;
7
+ const neon_core_1 = require("@cityofzion/neon-core");
8
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
+ const FlamingoSwapConstants_1 = require("../constants/FlamingoSwapConstants");
10
+ class FlamingoSwapHelper {
11
+ static getFlamingoSwapPools(network) {
12
+ const pools = FlamingoSwapConstants_1.FlamingoSwapConstants.FLAMINGO_SWAP_POOLS[network.id];
13
+ if (!pools) {
14
+ throw new Error('Invalid network');
15
+ }
16
+ return pools;
17
+ }
18
+ static getFlamingoSwapPool(network, name) {
19
+ const pools = this.getFlamingoSwapPools(network);
20
+ const pool = pools[name];
21
+ if (!pool) {
22
+ throw new Error('Invalid pool');
23
+ }
24
+ return pool;
25
+ }
26
+ static getFlamingoSwapTokens(network) {
27
+ const tokens = FlamingoSwapConstants_1.FlamingoSwapConstants.FLAMINGO_SWAP_TOKENS[network.id];
28
+ if (!tokens) {
29
+ throw new Error('Invalid network');
30
+ }
31
+ return tokens;
32
+ }
33
+ static getFlamingoSwapToken(network, name) {
34
+ const tokens = this.getFlamingoSwapTokens(network);
35
+ const token = tokens[name];
36
+ if (!token) {
37
+ throw new Error('Invalid token');
38
+ }
39
+ return token;
40
+ }
41
+ static getFlamingoSwapScriptHashes(network) {
42
+ const swapScriptHashes = FlamingoSwapConstants_1.FlamingoSwapConstants.FLAMINGO_SWAP_SCRIPT_HASHES[network.id];
43
+ if (!swapScriptHashes) {
44
+ throw new Error('Invalid network');
45
+ }
46
+ return swapScriptHashes;
47
+ }
48
+ static getRoutePath(route) {
49
+ return route
50
+ .flatMap(item => [item.tokenToUse, item.tokenToReceive])
51
+ .filter((item, index, arr) => arr.indexOf(item) === index);
52
+ }
53
+ static overrideToken(network, token) {
54
+ return this.isNeoToken(network, token) ? this.getFlamingoSwapToken(network, 'bNEO') : token;
55
+ }
56
+ static overrideAmountInput(network, amount, token) {
57
+ const overrodeToken = this.overrideToken(network, token);
58
+ return new bignumber_js_1.default(amount).shiftedBy(overrodeToken.decimals);
59
+ }
60
+ static overrideAmountToDisplay(network, amount, token) {
61
+ const overrodeToken = this.overrideToken(network, token);
62
+ return new bignumber_js_1.default(amount).shiftedBy(-overrodeToken.decimals).toFixed();
63
+ }
64
+ static overrideRoute(network, route) {
65
+ const overrodeRoute = [];
66
+ for (const routeItem of route) {
67
+ if (!this.isNeoToken(network, routeItem.tokenToUse) && !this.isNeoToken(network, routeItem.tokenToReceive)) {
68
+ overrodeRoute.push(routeItem);
69
+ }
70
+ }
71
+ return overrodeRoute;
72
+ }
73
+ static normalizeHash(hash) {
74
+ return hash.startsWith('0x') ? hash.slice(2) : hash;
75
+ }
76
+ static isNeoToken(network, token) {
77
+ const NEO = this.getFlamingoSwapToken(network, 'NEO');
78
+ return this.normalizeHash(token.hash) === this.normalizeHash(NEO.hash);
79
+ }
80
+ static formatAmount(amount, decimals) {
81
+ return neon_core_1.u.BigInteger.fromDecimal(Number(amount), decimals).toString();
82
+ }
83
+ }
84
+ exports.FlamingoSwapHelper = FlamingoSwapHelper;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- export * from './flamingo-swap/FlamingoSwapControllerService';
2
- export * from './flamingo-swap/FlamingoSwapHelper';
3
- export * from './flamingo-swap/FlamingoSwapNeonDappKitInvocationBuilder';
4
1
  export * from './BSNeo3';
5
- export * from './BSNeo3Helper';
6
- export * from './DoraBDSNeo3';
7
- export * from './DoraESNeo3';
8
- export * from './FlamingoEDSNeo3';
9
- export * from './GhostMarketNDSNeo3';
10
- export * from './NeonDappKitLedgerServiceNeo3';
11
- export * from './RpcBDSNeo3';
12
- export * from './RpcNDSNeo3';
2
+ export * from './builder/invocation/FlamingoSwapInvocationBuilderNeo3';
3
+ export * from './builder/invocation/NeonDappKitInvocationBuilderNeo3';
4
+ export * from './constants/FlamingoSwapConstants';
5
+ export * from './helpers/BSNeo3Helper';
6
+ export * from './helpers/FlamingoSwapHelper';
7
+ export * from './services/blockchain-data/DoraBDSNeo3';
8
+ export * from './services/blockchain-data/RpcBDSNeo3';
9
+ export * from './services/exchange-data/FlamingoEDSNeo3';
10
+ export * from './services/explorer/DoraESNeo3';
11
+ export * from './services/ledger/NeonDappKitLedgerServiceNeo3';
12
+ export * from './services/nft-data/GhostMarketNDSNeo3';
13
+ export * from './services/nft-data/RpcNDSNeo3';
14
+ export * from './services/swap/FlamingoSwapServiceNeo3';
package/dist/index.js CHANGED
@@ -14,15 +14,17 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./flamingo-swap/FlamingoSwapControllerService"), exports);
18
- __exportStar(require("./flamingo-swap/FlamingoSwapHelper"), exports);
19
- __exportStar(require("./flamingo-swap/FlamingoSwapNeonDappKitInvocationBuilder"), exports);
20
17
  __exportStar(require("./BSNeo3"), exports);
21
- __exportStar(require("./BSNeo3Helper"), exports);
22
- __exportStar(require("./DoraBDSNeo3"), exports);
23
- __exportStar(require("./DoraESNeo3"), exports);
24
- __exportStar(require("./FlamingoEDSNeo3"), exports);
25
- __exportStar(require("./GhostMarketNDSNeo3"), exports);
26
- __exportStar(require("./NeonDappKitLedgerServiceNeo3"), exports);
27
- __exportStar(require("./RpcBDSNeo3"), exports);
28
- __exportStar(require("./RpcNDSNeo3"), exports);
18
+ __exportStar(require("./builder/invocation/FlamingoSwapInvocationBuilderNeo3"), exports);
19
+ __exportStar(require("./builder/invocation/NeonDappKitInvocationBuilderNeo3"), exports);
20
+ __exportStar(require("./constants/FlamingoSwapConstants"), exports);
21
+ __exportStar(require("./helpers/BSNeo3Helper"), exports);
22
+ __exportStar(require("./helpers/FlamingoSwapHelper"), exports);
23
+ __exportStar(require("./services/blockchain-data/DoraBDSNeo3"), exports);
24
+ __exportStar(require("./services/blockchain-data/RpcBDSNeo3"), exports);
25
+ __exportStar(require("./services/exchange-data/FlamingoEDSNeo3"), exports);
26
+ __exportStar(require("./services/explorer/DoraESNeo3"), exports);
27
+ __exportStar(require("./services/ledger/NeonDappKitLedgerServiceNeo3"), exports);
28
+ __exportStar(require("./services/nft-data/GhostMarketNDSNeo3"), exports);
29
+ __exportStar(require("./services/nft-data/RpcNDSNeo3"), exports);
30
+ __exportStar(require("./services/swap/FlamingoSwapServiceNeo3"), exports);
@@ -1,7 +1,7 @@
1
- import { BalanceResponse, ContractResponse, TransactionsByAddressParams, TransactionsByAddressResponse, TransactionResponse, Network, Token } from '@cityofzion/blockchain-service';
2
- import { RPCBDSNeo3 } from './RpcBDSNeo3';
3
- import { BSNeo3NetworkId } from './BSNeo3Helper';
4
- export declare class DoraBDSNeo3 extends RPCBDSNeo3 {
1
+ import { BalanceResponse, ContractResponse, Network, Token, TransactionResponse, TransactionsByAddressParams, TransactionsByAddressResponse } from '@cityofzion/blockchain-service';
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
+ import { RpcBDSNeo3 } from './RpcBDSNeo3';
4
+ export declare class DoraBDSNeo3 extends RpcBDSNeo3 {
5
5
  constructor(network: Network<BSNeo3NetworkId>, feeToken: Token, claimToken: Token, tokens: Token[]);
6
6
  getTransaction(hash: string): Promise<TransactionResponse>;
7
7
  getTransactionsByAddress({ address, nextPageParams, }: TransactionsByAddressParams): Promise<TransactionsByAddressResponse>;
@@ -10,15 +10,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DoraBDSNeo3 = void 0;
13
- const neon_js_1 = require("@cityofzion/neon-js");
14
13
  const api_1 = require("@cityofzion/dora-ts/dist/api");
14
+ const neon_js_1 = require("@cityofzion/neon-js");
15
+ const BSNeo3Helper_1 = require("../../helpers/BSNeo3Helper");
15
16
  const RpcBDSNeo3_1 = require("./RpcBDSNeo3");
16
- const BSNeo3Helper_1 = require("./BSNeo3Helper");
17
17
  const NeoRest = new api_1.NeoRESTApi({
18
18
  doraUrl: 'https://dora.coz.io',
19
19
  endpoint: '/api/v2/neo3',
20
20
  });
21
- class DoraBDSNeo3 extends RpcBDSNeo3_1.RPCBDSNeo3 {
21
+ class DoraBDSNeo3 extends RpcBDSNeo3_1.RpcBDSNeo3 {
22
22
  constructor(network, feeToken, claimToken, tokens) {
23
23
  super(network, feeToken, claimToken, tokens);
24
24
  }
@@ -1,6 +1,6 @@
1
1
  import { BDSClaimable, BalanceResponse, BlockchainDataService, ContractResponse, Network, RpcResponse, Token, TransactionResponse, TransactionsByAddressParams, TransactionsByAddressResponse } from '@cityofzion/blockchain-service';
2
- import { BSNeo3NetworkId } from './BSNeo3Helper';
3
- export declare class RPCBDSNeo3 implements BlockchainDataService, BDSClaimable {
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
+ export declare class RpcBDSNeo3 implements BlockchainDataService, BDSClaimable {
4
4
  readonly _tokenCache: Map<string, Token>;
5
5
  readonly _feeToken: Token;
6
6
  readonly _claimToken: Token;
@@ -9,11 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RPCBDSNeo3 = void 0;
12
+ exports.RpcBDSNeo3 = void 0;
13
13
  const neon_core_1 = require("@cityofzion/neon-core");
14
14
  const neon_dappkit_1 = require("@cityofzion/neon-dappkit");
15
- const BSNeo3Helper_1 = require("./BSNeo3Helper");
16
- class RPCBDSNeo3 {
15
+ const BSNeo3Helper_1 = require("../../helpers/BSNeo3Helper");
16
+ class RpcBDSNeo3 {
17
17
  constructor(network, feeToken, claimToken, tokens) {
18
18
  this._tokenCache = new Map();
19
19
  this._tokens = [];
@@ -185,4 +185,4 @@ class RPCBDSNeo3 {
185
185
  });
186
186
  }
187
187
  }
188
- exports.RPCBDSNeo3 = RPCBDSNeo3;
188
+ exports.RpcBDSNeo3 = RpcBDSNeo3;
@@ -1,5 +1,5 @@
1
1
  import { CryptoCompareEDS, ExchangeDataService, GetTokenPriceHistoryParams, GetTokenPricesParams, Network, TokenPricesHistoryResponse, TokenPricesResponse } from '@cityofzion/blockchain-service';
2
- import { BSNeo3NetworkId } from './BSNeo3Helper';
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
3
  export declare class FlamingoEDSNeo3 extends CryptoCompareEDS implements ExchangeDataService {
4
4
  #private;
5
5
  constructor(network: Network<BSNeo3NetworkId>);
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.FlamingoEDSNeo3 = void 0;
28
28
  const blockchain_service_1 = require("@cityofzion/blockchain-service");
29
29
  const axios_1 = __importDefault(require("axios"));
30
- const BSNeo3Helper_1 = require("./BSNeo3Helper");
30
+ const BSNeo3Helper_1 = require("../../helpers/BSNeo3Helper");
31
31
  class FlamingoEDSNeo3 extends blockchain_service_1.CryptoCompareEDS {
32
32
  constructor(network) {
33
33
  super();
@@ -1,5 +1,5 @@
1
- import { ExplorerService, BuildNftUrlParams, Network } from '@cityofzion/blockchain-service';
2
- import { BSNeo3NetworkId } from './BSNeo3Helper';
1
+ import { BuildNftUrlParams, ExplorerService, Network } from '@cityofzion/blockchain-service';
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
3
  export declare class DoraESNeo3 implements ExplorerService {
4
4
  #private;
5
5
  constructor(network: Network<BSNeo3NetworkId>);
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  var _DoraESNeo3_network;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DoraESNeo3 = void 0;
16
- const BSNeo3Helper_1 = require("./BSNeo3Helper");
16
+ const BSNeo3Helper_1 = require("../../helpers/BSNeo3Helper");
17
17
  class DoraESNeo3 {
18
18
  constructor(network) {
19
19
  _DoraESNeo3_network.set(this, void 0);
@@ -1,7 +1,8 @@
1
1
  import { Account, LedgerService, LedgerServiceEmitter } from '@cityofzion/blockchain-service';
2
- import Transport from '@ledgerhq/hw-transport';
3
2
  import { api } from '@cityofzion/neon-js';
3
+ import Transport from '@ledgerhq/hw-transport';
4
4
  export declare class NeonDappKitLedgerServiceNeo3 implements LedgerService {
5
+ #private;
5
6
  getLedgerTransport?: ((account: Account) => Promise<Transport>) | undefined;
6
7
  emitter: LedgerServiceEmitter;
7
8
  constructor(getLedgerTransport?: ((account: Account) => Promise<Transport>) | undefined);
@@ -9,7 +10,4 @@ export declare class NeonDappKitLedgerServiceNeo3 implements LedgerService {
9
10
  getSigningCallback(transport: Transport): api.SigningFunction;
10
11
  getSignature(transport: Transport, serializedTransaction: string, networkMagic: number, addressIndex?: number): Promise<string>;
11
12
  getPublicKey(transport: Transport, addressIndex?: number): Promise<string>;
12
- private toBip44Buffer;
13
- private to8BitHex;
14
- private derSignatureToHex;
15
13
  }
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ var _NeonDappKitLedgerServiceNeo3_instances, _NeonDappKitLedgerServiceNeo3_sendChunk, _NeonDappKitLedgerServiceNeo3_toBip44, _NeonDappKitLedgerServiceNeo3_to8BitHex, _NeonDappKitLedgerServiceNeo3_derSignatureToHex;
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.NeonDappKitLedgerServiceNeo3 = void 0;
22
+ const neon_dappkit_1 = require("@cityofzion/neon-dappkit");
23
+ const neon_js_1 = require("@cityofzion/neon-js");
24
+ const events_1 = __importDefault(require("events"));
25
+ var LedgerStatus;
26
+ (function (LedgerStatus) {
27
+ LedgerStatus[LedgerStatus["OK"] = 36864] = "OK";
28
+ })(LedgerStatus || (LedgerStatus = {}));
29
+ var LedgerCommand;
30
+ (function (LedgerCommand) {
31
+ LedgerCommand[LedgerCommand["GET_PUBLIC_KEY"] = 4] = "GET_PUBLIC_KEY";
32
+ LedgerCommand[LedgerCommand["SIGN"] = 2] = "SIGN";
33
+ })(LedgerCommand || (LedgerCommand = {}));
34
+ var LedgerSecondParameter;
35
+ (function (LedgerSecondParameter) {
36
+ LedgerSecondParameter[LedgerSecondParameter["MORE_DATA"] = 128] = "MORE_DATA";
37
+ LedgerSecondParameter[LedgerSecondParameter["LAST_DATA"] = 0] = "LAST_DATA";
38
+ })(LedgerSecondParameter || (LedgerSecondParameter = {}));
39
+ class NeonDappKitLedgerServiceNeo3 {
40
+ constructor(getLedgerTransport) {
41
+ this.getLedgerTransport = getLedgerTransport;
42
+ _NeonDappKitLedgerServiceNeo3_instances.add(this);
43
+ this.emitter = new events_1.default();
44
+ }
45
+ getAddress(transport) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ const publicKey = yield this.getPublicKey(transport);
48
+ const { address } = new neon_js_1.wallet.Account(publicKey);
49
+ return address;
50
+ });
51
+ }
52
+ getSigningCallback(transport) {
53
+ return (transaction, { witnessIndex, network }) => __awaiter(this, void 0, void 0, function* () {
54
+ const publicKey = yield this.getPublicKey(transport);
55
+ const account = new neon_js_1.wallet.Account(publicKey);
56
+ const witnessScriptHash = neon_js_1.wallet.getScriptHashFromVerificationScript(transaction.witnesses[witnessIndex].verificationScript.toString());
57
+ if (account.scriptHash !== witnessScriptHash) {
58
+ throw new Error('Invalid witness script hash');
59
+ }
60
+ const signature = yield this.getSignature(transport, transaction.serialize(false), network, witnessIndex);
61
+ return signature;
62
+ });
63
+ }
64
+ getSignature(transport, serializedTransaction, networkMagic, addressIndex = 0) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ try {
67
+ this.emitter.emit('getSignatureStart');
68
+ const bip44 = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_toBip44).call(this, addressIndex);
69
+ // Send the BIP44 account as first chunk
70
+ yield __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_sendChunk).call(this, transport, LedgerCommand.SIGN, 0, LedgerSecondParameter.MORE_DATA, bip44);
71
+ // Send the network magic as second chunk
72
+ yield __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_sendChunk).call(this, transport, LedgerCommand.SIGN, 1, LedgerSecondParameter.MORE_DATA, neon_dappkit_1.NeonParser.numToHex(networkMagic, 4, true));
73
+ const chunks = serializedTransaction.match(/.{1,510}/g) || [];
74
+ for (let i = 0; i < chunks.length - 1; i++) {
75
+ // We plus 2 because we already sent 2 chunks before
76
+ const commandIndex = 2 + i;
77
+ yield __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_sendChunk).call(this, transport, LedgerCommand.SIGN, commandIndex, LedgerSecondParameter.MORE_DATA, chunks[i]);
78
+ }
79
+ // Again we plus 2 because we already sent 2 chunks before getting the chunks
80
+ const lastChunkIndex = 2 + chunks.length;
81
+ const response = yield __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_sendChunk).call(this, transport, LedgerCommand.SIGN, lastChunkIndex, LedgerSecondParameter.LAST_DATA, chunks[chunks.length - 1]);
82
+ if (response.length <= 2) {
83
+ throw new Error(`No more data but Ledger did not return signature!`);
84
+ }
85
+ const signature = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_derSignatureToHex).call(this, response.toString('hex'));
86
+ return signature;
87
+ }
88
+ finally {
89
+ this.emitter.emit('getSignatureEnd');
90
+ }
91
+ });
92
+ }
93
+ getPublicKey(transport, addressIndex = 0) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ const bip44 = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_toBip44).call(this, addressIndex);
96
+ const result = yield __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_sendChunk).call(this, transport, LedgerCommand.GET_PUBLIC_KEY, 0x00, LedgerSecondParameter.LAST_DATA, bip44);
97
+ const publicKey = result.toString('hex').substring(0, 130);
98
+ return publicKey;
99
+ });
100
+ }
101
+ }
102
+ exports.NeonDappKitLedgerServiceNeo3 = NeonDappKitLedgerServiceNeo3;
103
+ _NeonDappKitLedgerServiceNeo3_instances = new WeakSet(), _NeonDappKitLedgerServiceNeo3_sendChunk = function _NeonDappKitLedgerServiceNeo3_sendChunk(transport, command, commandIndex, secondParameter, chunk) {
104
+ return transport.send(0x80, command, commandIndex, secondParameter, Buffer.from(chunk, 'hex'), [LedgerStatus.OK]);
105
+ }, _NeonDappKitLedgerServiceNeo3_toBip44 = function _NeonDappKitLedgerServiceNeo3_toBip44(addressIndex = 0, changeIndex = 0, accountIndex = 0) {
106
+ const accountHex = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_to8BitHex).call(this, accountIndex + 0x80000000);
107
+ const changeHex = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_to8BitHex).call(this, changeIndex);
108
+ const addressHex = __classPrivateFieldGet(this, _NeonDappKitLedgerServiceNeo3_instances, "m", _NeonDappKitLedgerServiceNeo3_to8BitHex).call(this, addressIndex);
109
+ return '8000002C' + '80000378' + accountHex + changeHex + addressHex;
110
+ }, _NeonDappKitLedgerServiceNeo3_to8BitHex = function _NeonDappKitLedgerServiceNeo3_to8BitHex(num) {
111
+ const hex = num.toString(16);
112
+ return '0'.repeat(8 - hex.length) + hex;
113
+ }, _NeonDappKitLedgerServiceNeo3_derSignatureToHex = function _NeonDappKitLedgerServiceNeo3_derSignatureToHex(response) {
114
+ const ss = new neon_js_1.u.StringStream(response);
115
+ // The first byte is format. It is usually 0x30 (SEQ) or 0x31 (SET)
116
+ // The second byte represents the total length of the DER module.
117
+ ss.read(2);
118
+ // Now we read each field off
119
+ // Each field is encoded with a type byte, length byte followed by the data itself
120
+ ss.read(1); // Read and drop the type
121
+ const r = ss.readVarBytes();
122
+ ss.read(1);
123
+ const s = ss.readVarBytes();
124
+ // We will need to ensure both integers are 32 bytes long
125
+ const integers = [r, s].map(i => {
126
+ if (i.length < 64) {
127
+ i = '0'.repeat(i.length - 64) + i;
128
+ }
129
+ if (i.length > 64) {
130
+ i = i.substr(-64);
131
+ }
132
+ return i;
133
+ });
134
+ return integers.join('');
135
+ };
@@ -1,5 +1,5 @@
1
- import { NftResponse, NftsResponse, GetNftParam, GetNftsByAddressParams, Network } from '@cityofzion/blockchain-service';
2
- import { BSNeo3NetworkId } from './BSNeo3Helper';
1
+ import { GetNftParam, GetNftsByAddressParams, Network, NftResponse, NftsResponse } from '@cityofzion/blockchain-service';
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
3
  import { RpcNDSNeo3 } from './RpcNDSNeo3';
4
4
  export declare class GhostMarketNDSNeo3 extends RpcNDSNeo3 {
5
5
  #private;
@@ -1,5 +1,5 @@
1
1
  import { GetNftParam, GetNftsByAddressParams, HasTokenParam, Network, NftDataService, NftResponse, NftsResponse } from '@cityofzion/blockchain-service';
2
- import { BSNeo3NetworkId } from './BSNeo3Helper';
2
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
3
3
  export declare abstract class RpcNDSNeo3 implements NftDataService {
4
4
  #private;
5
5
  protected constructor(network: Network<BSNeo3NetworkId>);
@@ -0,0 +1,23 @@
1
+ import { Account, Network, PoolGraph, SwapService, SwapServiceEvents, SwapServiceSwapToReceiveArgs, SwapServiceSwapToUseArgs, Token } from '@cityofzion/blockchain-service';
2
+ import TypedEmitter from 'typed-emitter';
3
+ import { BSNeo3NetworkId } from '../../helpers/BSNeo3Helper';
4
+ import { NeonDappKitLedgerServiceNeo3 } from '../ledger/NeonDappKitLedgerServiceNeo3';
5
+ type BuildSwapInvocationArgs = SwapServiceSwapToUseArgs<BSNeo3NetworkId> | SwapServiceSwapToReceiveArgs<BSNeo3NetworkId>;
6
+ export declare class FlamingoSwapServiceNeo3 implements SwapService<BSNeo3NetworkId> {
7
+ #private;
8
+ eventEmitter: TypedEmitter<SwapServiceEvents>;
9
+ constructor(network: Network<BSNeo3NetworkId>, ledgerService: NeonDappKitLedgerServiceNeo3);
10
+ buildSwapInvocationArgs(): BuildSwapInvocationArgs;
11
+ listSwappableTokens(network: Network<BSNeo3NetworkId>): PoolGraph;
12
+ swap(isLedger?: boolean): Promise<void>;
13
+ startListeningBlockGeneration(): void;
14
+ stopListeningBlockGeneration(): void;
15
+ setAccountToUse(account: Account | null): void;
16
+ setAmountToUse(val: string | null): void;
17
+ setAmountToReceive(val: string | null): void;
18
+ setDeadline(deadline: string): void;
19
+ setSlippage(slippage: number): void;
20
+ setTokenToUse(val: Token | null): Promise<void>;
21
+ setTokenToReceive(val: Token | null): Promise<void>;
22
+ }
23
+ export {};