@sonarwatch/portfolio-plugins 0.6.3 → 0.6.5

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 (90) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/package.json +5 -2
  3. package/src/index.js +6 -0
  4. package/src/index.js.map +1 -1
  5. package/src/platforms.d.ts +3 -0
  6. package/src/platforms.js +16 -1
  7. package/src/platforms.js.map +1 -1
  8. package/src/plugins/astroport/constants.d.ts +3 -0
  9. package/src/plugins/astroport/constants.js +7 -0
  10. package/src/plugins/astroport/constants.js.map +1 -0
  11. package/src/plugins/astroport/index.d.ts +4 -0
  12. package/src/plugins/astroport/index.js +11 -0
  13. package/src/plugins/astroport/index.js.map +1 -0
  14. package/src/plugins/astroport/lpSeiFetcher.d.ts +3 -0
  15. package/src/plugins/astroport/lpSeiFetcher.js +72 -0
  16. package/src/plugins/astroport/lpSeiFetcher.js.map +1 -0
  17. package/src/plugins/astroport/lpSeiJob.d.ts +3 -0
  18. package/src/plugins/astroport/lpSeiJob.js +75 -0
  19. package/src/plugins/astroport/lpSeiJob.js.map +1 -0
  20. package/src/plugins/astroport/types.d.ts +18 -0
  21. package/src/plugins/astroport/types.js +3 -0
  22. package/src/plugins/astroport/types.js.map +1 -0
  23. package/src/plugins/auxexchange/aptosLpJob.js +2 -2
  24. package/src/plugins/auxexchange/aptosLpJob.js.map +1 -1
  25. package/src/plugins/liquiditypools-sei/constants.d.ts +4 -0
  26. package/src/plugins/liquiditypools-sei/constants.js +15 -0
  27. package/src/plugins/liquiditypools-sei/constants.js.map +1 -0
  28. package/src/plugins/liquiditypools-sei/fetcher.d.ts +3 -0
  29. package/src/plugins/liquiditypools-sei/fetcher.js +87 -0
  30. package/src/plugins/liquiditypools-sei/fetcher.js.map +1 -0
  31. package/src/plugins/liquiditypools-sei/index.d.ts +4 -0
  32. package/src/plugins/liquiditypools-sei/index.js +11 -0
  33. package/src/plugins/liquiditypools-sei/index.js.map +1 -0
  34. package/src/plugins/liquiditypools-sei/job.d.ts +3 -0
  35. package/src/plugins/liquiditypools-sei/job.js +91 -0
  36. package/src/plugins/liquiditypools-sei/job.js.map +1 -0
  37. package/src/plugins/liquiditypools-sei/types.d.ts +4 -0
  38. package/src/plugins/liquiditypools-sei/types.js +3 -0
  39. package/src/plugins/liquiditypools-sei/types.js.map +1 -0
  40. package/src/plugins/liquidswap/aptosLpJob.js +2 -2
  41. package/src/plugins/liquidswap/aptosLpJob.js.map +1 -1
  42. package/src/plugins/pancakeswap/aptosLpJob.js +2 -2
  43. package/src/plugins/pancakeswap/aptosLpJob.js.map +1 -1
  44. package/src/plugins/tokens/fetchers/sei.js +1 -1
  45. package/src/plugins/tokens/fetchers/sei.js.map +1 -1
  46. package/src/plugins/tokens/fetchers/solana.js +0 -1
  47. package/src/plugins/tokens/fetchers/solana.js.map +1 -1
  48. package/src/utils/clients/constants.js +1 -1
  49. package/src/utils/clients/constants.js.map +1 -1
  50. package/src/utils/clients/getClientCosmWasm.d.ts +3 -0
  51. package/src/utils/clients/getClientCosmWasm.js +10 -0
  52. package/src/utils/clients/getClientCosmWasm.js.map +1 -0
  53. package/src/utils/clients/getClientCosmos.d.ts +99 -0
  54. package/src/utils/clients/getClientCosmos.js +10 -0
  55. package/src/utils/clients/getClientCosmos.js.map +1 -0
  56. package/src/utils/clients/getClientIbc.d.ts +182 -0
  57. package/src/utils/clients/getClientIbc.js +12 -0
  58. package/src/utils/clients/getClientIbc.js.map +1 -0
  59. package/src/utils/clients/getClientSei.d.ts +123 -13
  60. package/src/utils/clients/getClientSei.js +2 -2
  61. package/src/utils/clients/getClientSei.js.map +1 -1
  62. package/src/utils/clients/index.d.ts +3 -0
  63. package/src/utils/clients/index.js +7 -1
  64. package/src/utils/clients/index.js.map +1 -1
  65. package/src/utils/misc/{setLpPriceSource.d.ts → computeAndStoreLpPrice.d.ts} +1 -1
  66. package/src/utils/misc/computeAndStoreLpPrice.js +83 -0
  67. package/src/utils/misc/computeAndStoreLpPrice.js.map +1 -0
  68. package/src/utils/misc/computeAndStoreTokenPrice.d.ts +18 -0
  69. package/src/utils/misc/computeAndStoreTokenPrice.js +104 -0
  70. package/src/utils/misc/computeAndStoreTokenPrice.js.map +1 -0
  71. package/src/utils/misc/getDecimalsForToken.d.ts +1 -1
  72. package/src/utils/misc/getDecimalsForToken.js +24 -1
  73. package/src/utils/misc/getDecimalsForToken.js.map +1 -1
  74. package/src/utils/sei/constants.d.ts +4 -0
  75. package/src/utils/sei/constants.js +16 -0
  76. package/src/utils/sei/constants.js.map +1 -0
  77. package/src/utils/sei/getAllBalances.d.ts +3 -2
  78. package/src/utils/sei/getAllBalances.js +3 -3
  79. package/src/utils/sei/getAllBalances.js.map +1 -1
  80. package/src/utils/sei/getQueryBalanceByOwner.d.ts +1 -0
  81. package/src/utils/sei/getQueryBalanceByOwner.js +11 -0
  82. package/src/utils/sei/getQueryBalanceByOwner.js.map +1 -0
  83. package/src/utils/sei/index.d.ts +2 -0
  84. package/src/utils/sei/index.js +2 -0
  85. package/src/utils/sei/index.js.map +1 -1
  86. package/src/utils/sei/types.d.ts +25 -0
  87. package/src/utils/sei/types.js +3 -0
  88. package/src/utils/sei/types.js.map +1 -0
  89. package/src/utils/misc/setLpPriceSource.js +0 -126
  90. package/src/utils/misc/setLpPriceSource.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import { NetworkIdType, TokenPrice } from '@sonarwatch/portfolio-core';
2
+ import BigNumber from 'bignumber.js';
3
+ import { Cache } from '../../Cache';
4
+ export type TokenInfo = {
5
+ mint: string;
6
+ tokenPrice: TokenPrice | undefined;
7
+ rawReserve: BigNumber;
8
+ };
9
+ export type PartialTokenUnderlying = {
10
+ networkId: NetworkIdType;
11
+ address: string;
12
+ decimals: number;
13
+ price: number;
14
+ };
15
+ export default function checkComputeAndStoreTokensPrices(cache: Cache, source: string, networkId: NetworkIdType, tokenX: TokenInfo, tokenY: TokenInfo): Promise<{
16
+ partialTokenUnderlyingX: PartialTokenUnderlying;
17
+ partialTokenUnderlyingY: PartialTokenUnderlying;
18
+ } | undefined>;
@@ -0,0 +1,104 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const getSourceWeight_1 = __importDefault(require("./getSourceWeight"));
16
+ const platforms_1 = require("../../platforms");
17
+ const getDecimalsForToken_1 = require("./getDecimalsForToken");
18
+ function checkComputeAndStoreTokensPrices(cache, source, networkId, tokenX, tokenY) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ let partialTokenUnderlyingX;
21
+ let partialTokenUnderlyingY;
22
+ if (!tokenX.tokenPrice || !tokenY.tokenPrice) {
23
+ const decimalsTokenX = tokenX.tokenPrice
24
+ ? tokenX.tokenPrice.decimals
25
+ : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenX.mint, networkId);
26
+ const decimalsTokenY = tokenY.tokenPrice
27
+ ? tokenY.tokenPrice.decimals
28
+ : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenY.mint, networkId);
29
+ if (decimalsTokenX === undefined || decimalsTokenY === undefined)
30
+ return undefined;
31
+ const tokenXReserve = tokenX.rawReserve.dividedBy(Math.pow(10, decimalsTokenX));
32
+ const tokenYReserve = tokenY.rawReserve.dividedBy(Math.pow(10, decimalsTokenY));
33
+ let priceX;
34
+ let priceY;
35
+ if (!tokenX.tokenPrice && tokenY.tokenPrice) {
36
+ priceX = tokenY.rawReserve
37
+ .multipliedBy(tokenY.tokenPrice.price)
38
+ .dividedBy(tokenXReserve)
39
+ .toNumber();
40
+ priceY = tokenY.tokenPrice.price;
41
+ }
42
+ else if (!tokenY.tokenPrice && tokenX.tokenPrice) {
43
+ priceX = tokenX.tokenPrice.price;
44
+ priceY = tokenXReserve
45
+ .multipliedBy(tokenX.tokenPrice.price)
46
+ .dividedBy(tokenYReserve)
47
+ .toNumber();
48
+ }
49
+ else {
50
+ console.log('computeAndStoreTokenPrice : Unable to compute token price, requires at least one token to compute a price.');
51
+ return undefined;
52
+ }
53
+ const weight = (0, getSourceWeight_1.default)(tokenXReserve.multipliedBy(priceX).multipliedBy(2));
54
+ const address = tokenX.tokenPrice ? tokenY.mint : tokenX.mint;
55
+ const price = tokenX.tokenPrice ? priceY : priceX;
56
+ const decimals = tokenX.tokenPrice ? decimalsTokenY : decimalsTokenX;
57
+ if (decimals === undefined)
58
+ return undefined;
59
+ const tokenPriceSourceDest = {
60
+ id: source,
61
+ weight,
62
+ address,
63
+ networkId,
64
+ platformId: platforms_1.walletTokensPlatform.id,
65
+ decimals,
66
+ price,
67
+ timestamp: Date.now(),
68
+ };
69
+ partialTokenUnderlyingX = {
70
+ networkId,
71
+ address: tokenX.mint,
72
+ decimals: decimalsTokenX,
73
+ price: priceX,
74
+ };
75
+ partialTokenUnderlyingY = {
76
+ networkId,
77
+ address: tokenY.mint,
78
+ decimals: decimalsTokenY,
79
+ price: priceY,
80
+ };
81
+ yield cache.setTokenPriceSource(tokenPriceSourceDest);
82
+ }
83
+ else if (tokenX.tokenPrice && tokenY.tokenPrice) {
84
+ partialTokenUnderlyingX = {
85
+ networkId,
86
+ address: tokenX.mint,
87
+ decimals: tokenX.tokenPrice.decimals,
88
+ price: tokenX.tokenPrice.price,
89
+ };
90
+ partialTokenUnderlyingY = {
91
+ networkId,
92
+ address: tokenY.mint,
93
+ decimals: tokenY.tokenPrice.decimals,
94
+ price: tokenY.tokenPrice.price,
95
+ };
96
+ }
97
+ else {
98
+ return undefined;
99
+ }
100
+ return { partialTokenUnderlyingX, partialTokenUnderlyingY };
101
+ });
102
+ }
103
+ exports.default = checkComputeAndStoreTokensPrices;
104
+ //# sourceMappingURL=computeAndStoreTokenPrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"computeAndStoreTokenPrice.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/computeAndStoreTokenPrice.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { NetworkIdType } from '@sonarwatch/portfolio-core';
2
2
  /**
3
- * Return the decimals of a token on any network using RPC calls.
3
+ * Return the decimals of a token on any network using RPC calls or TokenList.
4
4
  *
5
5
  * @param address The mint/address of the token.
6
6
  * @param networkId The network on which to execute the request.
@@ -10,11 +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.getDecimalsForToken = void 0;
13
+ const portfolio_core_1 = require("@sonarwatch/portfolio-core");
13
14
  const web3_js_1 = require("@solana/web3.js");
15
+ const core_1 = require("@sei-js/core");
14
16
  const clients_1 = require("../clients");
15
17
  const aptos_1 = require("../aptos");
18
+ const constants_1 = require("../clients/constants");
19
+ const sei_1 = require("../sei");
16
20
  /**
17
- * Return the decimals of a token on any network using RPC calls.
21
+ * Return the decimals of a token on any network using RPC calls or TokenList.
18
22
  *
19
23
  * @param address The mint/address of the token.
20
24
  * @param networkId The network on which to execute the request.
@@ -40,6 +44,25 @@ function getDecimalsForToken(address, networkId) {
40
44
  const res = yield client.getTokenSupply(new web3_js_1.PublicKey(address));
41
45
  return res.value.decimals ? res.value.decimals : undefined;
42
46
  }
47
+ case 'sei': {
48
+ if (address.startsWith('factory')) {
49
+ const client = yield (0, clients_1.getClientSei)();
50
+ const rep = yield client.cosmos.bank.v1beta1.denomMetadata({
51
+ denom: address,
52
+ });
53
+ const denoms = rep.metadata.denomUnits;
54
+ return denoms[denoms.length - 1].exponent;
55
+ }
56
+ if (address.startsWith('ibc')) {
57
+ return 0;
58
+ }
59
+ if (address.startsWith('sei')) {
60
+ const client = yield (0, core_1.getCosmWasmClient)((0, constants_1.getUrlEndpoint)(portfolio_core_1.NetworkId.sei));
61
+ const tokenInfo = (yield client.queryContractSmart(address, sei_1.tokenInfoQueryMsg));
62
+ return tokenInfo.decimals || undefined;
63
+ }
64
+ return undefined;
65
+ }
43
66
  default:
44
67
  throw new Error('getDecimalsForToken : Network not supported');
45
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"getDecimalsForToken.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getDecimalsForToken.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6CAA4C;AAC5C,wCAA6D;AAC7D,oCAAwC;AAExC;;;;;;;GAOG;AACH,SAAsB,mBAAmB,CACvC,OAAe,EACf,SAAwB;;QAExB,QAAQ,SAAS,EAAE;YACjB,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAA,wBAAc,GAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC;oBACjC,QAAQ,EAAE,oBAAY;oBACtB,cAAc,EAAE,CAAC,OAAO,CAAC;oBACzB,SAAS,EAAE,EAAE;iBACd,CAAC,CAAa,CAAC;gBAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;aACnB;YACD,KAAK,QAAQ,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChE,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;aAC5D;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAClE;IACH,CAAC;CAAA;AAvBD,kDAuBC"}
1
+ {"version":3,"file":"getDecimalsForToken.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/getDecimalsForToken.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+DAAsE;AACtE,6CAA4C;AAC5C,uCAAiD;AACjD,wCAA2E;AAC3E,oCAAwC;AACxC,oDAAsD;AACtD,gCAAsD;AAEtD;;;;;;;GAOG;AACH,SAAsB,mBAAmB,CACvC,OAAe,EACf,SAAwB;;QAExB,QAAQ,SAAS,EAAE;YACjB,KAAK,OAAO,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAA,wBAAc,GAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC;oBACjC,QAAQ,EAAE,oBAAY;oBACtB,cAAc,EAAE,CAAC,OAAO,CAAC;oBACzB,SAAS,EAAE,EAAE;iBACd,CAAC,CAAa,CAAC;gBAChB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,SAAS,CAAC;gBAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;aACnB;YACD,KAAK,QAAQ,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,IAAA,yBAAe,GAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChE,OAAO,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;aAC5D;YACD,KAAK,KAAK,CAAC,CAAC;gBACV,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;oBACjC,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAY,GAAE,CAAC;oBACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;wBACzD,KAAK,EAAE,OAAO;qBACf,CAAC,CAAC;oBACH,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACvC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;iBAC3C;gBACD,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC7B,OAAO,CAAC,CAAC;iBACV;gBACD,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;oBAC7B,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAiB,EAAC,IAAA,0BAAc,EAAC,0BAAS,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtE,MAAM,SAAS,GAAG,CAAC,MAAM,MAAM,CAAC,kBAAkB,CAChD,OAAO,EACP,uBAAiB,CAClB,CAAc,CAAC;oBAChB,OAAO,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC;iBACxC;gBACD,OAAO,SAAS,CAAC;aAClB;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAClE;IACH,CAAC;CAAA;AA7CD,kDA6CC"}
@@ -0,0 +1,4 @@
1
+ export declare const infoQueryMsg: any;
2
+ export declare const tokenInfoQueryMsg: any;
3
+ export declare const minterQueryMsg: any;
4
+ export declare const poolQueryMsg: any;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.poolQueryMsg = exports.minterQueryMsg = exports.tokenInfoQueryMsg = exports.infoQueryMsg = void 0;
4
+ exports.infoQueryMsg = JSON.parse(`{
5
+ "info": {}
6
+ }`);
7
+ exports.tokenInfoQueryMsg = JSON.parse(`{
8
+ "token_info": {}
9
+ }`);
10
+ exports.minterQueryMsg = JSON.parse(`{
11
+ "minter": {}
12
+ }`);
13
+ exports.poolQueryMsg = JSON.parse(`{
14
+ "pool": {}
15
+ }`);
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;;EAErC,CAAC,CAAC;AACS,QAAA,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC;;EAE1C,CAAC,CAAC;AAES,QAAA,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;;EAEvC,CAAC,CAAC;AAES,QAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;;EAErC,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
- import { LCDQueryClient } from '@sei-js/proto/types/codegen/cosmos/bank/v1beta1/query.lcd';
2
- export declare function getAllBalances(client: LCDQueryClient, owner: string): Promise<import("@sei-js/proto/types/codegen/cosmos/base/v1beta1/coin").CoinSDKType[]>;
1
+ import { QueryAllBalancesRequest, QueryAllBalancesResponse } from '@sei-js/proto/types/codegen/cosmos/bank/v1beta1/query';
2
+ export type AllBalances = (request: QueryAllBalancesRequest) => Promise<QueryAllBalancesResponse>;
3
+ export declare function getAllBalances(allBalances: AllBalances, owner: string): Promise<import("@sei-js/proto/types/codegen/cosmos/base/v1beta1/coin").Coin[]>;
@@ -17,13 +17,13 @@ const long_1 = __importDefault(require("long"));
17
17
  const maxBalances = 1500;
18
18
  const limit = long_1.default.fromNumber(200);
19
19
  const key = new Uint8Array(0);
20
- function getAllBalances(client, owner) {
20
+ function getAllBalances(allBalances, owner) {
21
21
  return __awaiter(this, void 0, void 0, function* () {
22
22
  const balances = [];
23
23
  let offset = long_1.default.ZERO;
24
24
  let nextKey = new Uint8Array(0);
25
25
  do {
26
- const res = yield client.allBalances({
26
+ const res = yield allBalances({
27
27
  address: owner,
28
28
  pagination: {
29
29
  countTotal: true,
@@ -34,7 +34,7 @@ function getAllBalances(client, owner) {
34
34
  },
35
35
  });
36
36
  balances.push(...res.balances);
37
- nextKey = res.pagination.next_key;
37
+ nextKey = res.pagination.nextKey;
38
38
  offset = offset.add(limit);
39
39
  if (offset.greaterThanOrEqual(res.pagination.total))
40
40
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"getAllBalances.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/getAllBalances.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,gDAAwB;AAExB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,KAAK,GAAG,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACnC,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAE1C,SAAsB,cAAc,CAAC,MAAsB,EAAE,KAAa;;QACxE,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,GAAsB,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACnD,GAAG;YACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;gBACnC,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE,IAAI;oBAChB,GAAG;oBACH,KAAK;oBACL,MAAM;oBACN,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,QAA6B,CAAC;YACvD,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,MAAM;SAC5D,QAAQ,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;CAAA;AArBD,wCAqBC"}
1
+ {"version":3,"file":"getAllBalances.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/getAllBalances.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAIA,gDAAwB;AAExB,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,KAAK,GAAG,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACnC,MAAM,GAAG,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAM1C,SAAsB,cAAc,CAAC,WAAwB,EAAE,KAAa;;QAC1E,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,GAAsB,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACnD,GAAG;YACD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;gBAC5B,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE,IAAI;oBAChB,GAAG;oBACH,KAAK;oBACL,MAAM;oBACN,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,OAA4B,CAAC;YACtD,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,MAAM;SAC5D,QAAQ,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;CAAA;AArBD,wCAqBC"}
@@ -0,0 +1 @@
1
+ export default function getQueryBalanceByOwner(owner: string): JSON;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function getQueryBalanceByOwner(owner) {
4
+ return JSON.parse(`{
5
+ "balance": {
6
+ "address": "${owner}"
7
+ }
8
+ }`);
9
+ }
10
+ exports.default = getQueryBalanceByOwner;
11
+ //# sourceMappingURL=getQueryBalanceByOwner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQueryBalanceByOwner.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/getQueryBalanceByOwner.ts"],"names":[],"mappings":";;AAAA,SAAwB,sBAAsB,CAAC,KAAa;IAC1D,OAAO,IAAI,CAAC,KAAK,CAAC;;oBAEA,KAAK;;IAErB,CAAC,CAAC;AACN,CAAC;AAND,yCAMC"}
@@ -1 +1,3 @@
1
1
  export * from './getAllBalances';
2
+ export * from './constants';
3
+ export * from './types';
@@ -15,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./getAllBalances"), exports);
18
+ __exportStar(require("./constants"), exports);
19
+ __exportStar(require("./types"), exports);
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,8CAA4B;AAC5B,0CAAwB"}
@@ -0,0 +1,25 @@
1
+ export type PoolInfo = {
2
+ lp_token_address: string;
3
+ lp_token_supply: string;
4
+ token1_denom: {
5
+ [k: string]: string;
6
+ };
7
+ token1_reserve: string;
8
+ token2_denom: {
9
+ [k: string]: string;
10
+ };
11
+ token2_reserve: string;
12
+ };
13
+ export type TokenInfo = {
14
+ decimals: number;
15
+ name: string;
16
+ symbol: string;
17
+ total_supply: string;
18
+ };
19
+ export type MinterInfo = {
20
+ cap: string;
21
+ minter: string;
22
+ };
23
+ export type Balance = {
24
+ balance: string;
25
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/sei/types.ts"],"names":[],"mappings":""}
@@ -1,126 +0,0 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
16
- const platforms_1 = require("../../platforms");
17
- const getSourceWeight_1 = __importDefault(require("./getSourceWeight"));
18
- const getDecimalsForToken_1 = require("./getDecimalsForToken");
19
- const minimumLiquidity = new bignumber_js_1.default(5000);
20
- /**
21
- * Add a price source for a pool in the cache.
22
- * If one of the token composing the pool doesn't have a price in the cache, add a new token price source for it.
23
- *
24
- * @param cache The cache on which the LP price will be stored
25
- * @param tokenMintX The address/mint of the first token
26
- * @param tokenMintY The address/mint of the second token
27
- * @param poolData An object with informmations about the pool
28
- * @param networkId The network for which the LP price source is stored
29
- * @param platformId The platform from which the price is calculated
30
- *
31
- */
32
- function setLpPriceSource(cache, poolData, networkId, platformId) {
33
- return __awaiter(this, void 0, void 0, function* () {
34
- const tokenX = poolData.mintTokenX;
35
- const tokenY = poolData.mintTokenY;
36
- const tokenPrices = yield cache.getTokenPrices([tokenX, tokenY], networkId);
37
- const tokenPriceX = tokenPrices[0];
38
- const tokenPriceY = tokenPrices[1];
39
- const decimalsTokenX = tokenPriceX
40
- ? tokenPriceX.decimals
41
- : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenX, networkId);
42
- const decimalsY = tokenPriceY
43
- ? tokenPriceY.decimals
44
- : yield (0, getDecimalsForToken_1.getDecimalsForToken)(tokenY, networkId);
45
- if (!decimalsTokenX || !decimalsY)
46
- return;
47
- const reserveAmountX = poolData.reserveTokenX.div(Math.pow(10, decimalsTokenX));
48
- const reserveAmountY = poolData.reserveTokenY.div(Math.pow(10, decimalsY));
49
- let priceTokenX;
50
- let priceTokenY;
51
- if (!tokenPriceX && tokenPriceY) {
52
- priceTokenY = tokenPriceY.price;
53
- priceTokenX = reserveAmountY
54
- .multipliedBy(priceTokenY)
55
- .dividedBy(reserveAmountX)
56
- .toNumber();
57
- }
58
- else if (!tokenPriceY && tokenPriceX) {
59
- priceTokenX = tokenPriceX.price;
60
- priceTokenY = reserveAmountX
61
- .multipliedBy(priceTokenX)
62
- .dividedBy(reserveAmountY)
63
- .toNumber();
64
- }
65
- else {
66
- return;
67
- }
68
- const totalLiquidity = reserveAmountX
69
- .multipliedBy(priceTokenX)
70
- .plus(reserveAmountY.multipliedBy(priceTokenY));
71
- if (totalLiquidity.isLessThan(minimumLiquidity))
72
- return;
73
- if (!tokenPriceX || !tokenPriceY) {
74
- const weight = (0, getSourceWeight_1.default)(reserveAmountX.multipliedBy(priceTokenX).multipliedBy(2));
75
- const address = tokenPriceX ? tokenX : tokenY;
76
- const decimals = tokenPriceX ? decimalsTokenX : decimalsY;
77
- const price = tokenPriceX ? priceTokenX : priceTokenY;
78
- yield cache.setTokenPriceSource({
79
- id: `${platformId}-${poolData.id}`,
80
- weight,
81
- address,
82
- networkId,
83
- platformId: platforms_1.walletTokensPlatform.id,
84
- decimals,
85
- price,
86
- timestamp: Date.now(),
87
- });
88
- }
89
- const reserveValueX = reserveAmountX.multipliedBy(priceTokenX);
90
- const reserveValueY = reserveAmountY.multipliedBy(priceTokenY);
91
- const lpPrice = reserveValueX
92
- .plus(reserveValueY)
93
- .dividedBy(poolData.supply)
94
- .toNumber();
95
- const amountPerLpX = reserveAmountX.dividedBy(poolData.supply).toNumber();
96
- const amountPerLpY = reserveAmountY.dividedBy(poolData.supply).toNumber();
97
- yield cache.setTokenPriceSource({
98
- id: platformId,
99
- weight: 1,
100
- address: poolData.id,
101
- networkId,
102
- platformId,
103
- decimals: poolData.lpDecimals,
104
- price: lpPrice,
105
- underlyings: [
106
- {
107
- networkId,
108
- address: tokenX,
109
- decimals: decimalsTokenX,
110
- price: priceTokenX,
111
- amountPerLp: amountPerLpX,
112
- },
113
- {
114
- networkId,
115
- address: tokenY,
116
- decimals: decimalsY,
117
- price: priceTokenY,
118
- amountPerLp: amountPerLpY,
119
- },
120
- ],
121
- timestamp: Date.now(),
122
- });
123
- });
124
- }
125
- exports.default = setLpPriceSource;
126
- //# sourceMappingURL=setLpPriceSource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setLpPriceSource.js","sourceRoot":"","sources":["../../../../../../packages/plugins/src/utils/misc/setLpPriceSource.ts"],"names":[],"mappings":"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"}