@helium/currency-utils 0.10.35 → 0.11.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.
@@ -9,12 +9,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getOraclePrice = exports.getBalance = exports.pythSolanaReceiverIdl = void 0;
13
- const web3_js_1 = require("@solana/web3.js");
12
+ exports.getOraclePrice = exports.PYTH_HERMES_URL = exports.getBalance = void 0;
14
13
  const spl_token_1 = require("@solana/spl-token");
15
- const pyth_1 = require("./pyth");
16
- Object.defineProperty(exports, "pythSolanaReceiverIdl", { enumerable: true, get: function () { return pyth_1.IDL; } });
17
- const anchor_1 = require("@coral-xyz/anchor");
14
+ const hermes_client_1 = require("@pythnetwork/hermes-client");
15
+ const spl_utils_1 = require("@helium/spl-utils");
18
16
  const getBalance = ({ pubKey, mint, connection, }) => __awaiter(void 0, void 0, void 0, function* () {
19
17
  try {
20
18
  const address = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, pubKey, true);
@@ -26,12 +24,28 @@ const getBalance = ({ pubKey, mint, connection, }) => __awaiter(void 0, void 0,
26
24
  }
27
25
  });
28
26
  exports.getBalance = getBalance;
29
- const getOraclePrice = ({ tokenType, cluster, connection, }) => __awaiter(void 0, void 0, void 0, function* () {
30
- const pythProgram = new anchor_1.Program(pyth_1.IDL, new anchor_1.AnchorProvider(connection, {}, {
31
- skipPreflight: true,
32
- }));
33
- const data = yield pythProgram.account.priceUpdateV2.fetch(new web3_js_1.PublicKey("4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33"));
34
- return data;
27
+ exports.PYTH_HERMES_URL = "https://hermes.pyth.network/";
28
+ const getOraclePrice = ({ tokenType }) => __awaiter(void 0, void 0, void 0, function* () {
29
+ if (tokenType !== "HNT") {
30
+ throw new Error("Only HNT is supported");
31
+ }
32
+ const priceServiceConnection = new hermes_client_1.HermesClient(exports.PYTH_HERMES_URL, {});
33
+ const priceUpdates = (yield priceServiceConnection.getLatestPriceUpdates([spl_utils_1.HNT_PRICE_FEED_ID], { encoding: "base64" }));
34
+ const price = priceUpdates.parsed[0];
35
+ return {
36
+ priceMessage: {
37
+ emaPrice: {
38
+ feedId: spl_utils_1.HNT_PRICE_FEED_ID,
39
+ price: price.ema_price.price,
40
+ conf: price.ema_price.conf,
41
+ exponent: price.ema_price.expo,
42
+ publishTime: price.ema_price.publish_time,
43
+ prevPublishTime: price.ema_price.prev_publish_time,
44
+ emaPrice: price.ema_price.ema_price,
45
+ emaConf: price.ema_price.ema_conf,
46
+ }
47
+ }
48
+ };
35
49
  });
36
50
  exports.getOraclePrice = getOraclePrice;
37
51
  //# sourceMappingURL=currencyUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.js","sourceRoot":"","sources":["../../src/currencyUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAiE;AACjE,iDAA8E;AAC9E,iCAGgB;AAIP,sGALA,UAAqB,OAKA;AAH9B,8CAAoE;AAK7D,MAAM,UAAU,GAAG,CAAO,EAC/B,MAAM,EACN,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,IAAI;QACF,MAAM,OAAO,GAAG,IAAA,yCAA6B,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAU,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAAC,WAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAA,CAAC;AAjBW,QAAA,UAAU,cAiBrB;AAEK,MAAM,cAAc,GAAG,CAAO,EACnC,SAAS,EACT,OAAO,EACP,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,WAAW,GAAgC,IAAI,gBAAO,CAC1D,UAA4B,EAC5B,IAAI,uBAAc,CAAC,UAAU,EAAE,EAAY,EAAE;QAC3C,aAAa,EAAE,IAAI;KACpB,CAAC,CACH,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CACxD,IAAI,mBAAS,CAAC,8CAA8C,CAAC,CAC9D,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC,CAAA,CAAC;AArBW,QAAA,cAAc,kBAqBzB"}
1
+ {"version":3,"file":"currencyUtils.js","sourceRoot":"","sources":["../../src/currencyUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA8E;AAE9E,8DAA0D;AAC1D,iDAAsD;AAG/C,MAAM,UAAU,GAAG,CAAO,EAC/B,MAAM,EACN,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,IAAI;QACF,MAAM,OAAO,GAAG,IAAA,yCAA6B,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAU,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAAC,WAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAA,CAAC;AAjBW,QAAA,UAAU,cAiBrB;AAEW,QAAA,eAAe,GAAG,8BAA8B,CAAA;AAiBtD,MAAM,cAAc,GAAG,CAAO,EAAC,SAAS,EAI9C,EAAE,EAAE;IACH,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC1C;IACD,MAAM,sBAAsB,GAAG,IAAI,4BAAY,CAC7C,uBAAe,EACf,EAAE,CACH,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,MAAM,sBAAsB,CAAC,qBAAqB,CAChD,CAAC,6BAAiB,CAAC,EACnB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACvB,CACF,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO;QACL,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,MAAM,EAAE,6BAAiB;gBACzB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;gBAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;gBAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;gBAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY;gBACzC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB;gBAClD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;gBACnC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;aAClC;SACF;KACF,CAAA;AACH,CAAC,CAAA,CAAC;AAlCW,QAAA,cAAc,kBAkCzB"}
@@ -1,8 +1,6 @@
1
- import { PublicKey } from "@solana/web3.js";
2
- import { getAssociatedTokenAddressSync, getAccount } from "@solana/spl-token";
3
- import { IDL as pythSolanaReceiverIdl, } from "./pyth";
4
- import { AnchorProvider, Program } from "@coral-xyz/anchor";
5
- export { pythSolanaReceiverIdl };
1
+ import { getAccount, getAssociatedTokenAddressSync } from "@solana/spl-token";
2
+ import { HermesClient } from "@pythnetwork/hermes-client";
3
+ import { HNT_PRICE_FEED_ID } from "@helium/spl-utils";
6
4
  export const getBalance = async ({ pubKey, mint, connection, }) => {
7
5
  try {
8
6
  const address = getAssociatedTokenAddressSync(mint, pubKey, true);
@@ -13,11 +11,27 @@ export const getBalance = async ({ pubKey, mint, connection, }) => {
13
11
  return BigInt(0);
14
12
  }
15
13
  };
16
- export const getOraclePrice = async ({ tokenType, cluster, connection, }) => {
17
- const pythProgram = new Program(pythSolanaReceiverIdl, new AnchorProvider(connection, {}, {
18
- skipPreflight: true,
19
- }));
20
- const data = await pythProgram.account.priceUpdateV2.fetch(new PublicKey("4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33"));
21
- return data;
14
+ export const PYTH_HERMES_URL = "https://hermes.pyth.network/";
15
+ export const getOraclePrice = async ({ tokenType }) => {
16
+ if (tokenType !== "HNT") {
17
+ throw new Error("Only HNT is supported");
18
+ }
19
+ const priceServiceConnection = new HermesClient(PYTH_HERMES_URL, {});
20
+ const priceUpdates = (await priceServiceConnection.getLatestPriceUpdates([HNT_PRICE_FEED_ID], { encoding: "base64" }));
21
+ const price = priceUpdates.parsed[0];
22
+ return {
23
+ priceMessage: {
24
+ emaPrice: {
25
+ feedId: HNT_PRICE_FEED_ID,
26
+ price: price.ema_price.price,
27
+ conf: price.ema_price.conf,
28
+ exponent: price.ema_price.expo,
29
+ publishTime: price.ema_price.publish_time,
30
+ prevPublishTime: price.ema_price.prev_publish_time,
31
+ emaPrice: price.ema_price.ema_price,
32
+ emaConf: price.ema_price.ema_conf,
33
+ }
34
+ }
35
+ };
22
36
  };
23
37
  //# sourceMappingURL=currencyUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.js","sourceRoot":"","sources":["../../../src/currencyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAW,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAEL,GAAG,IAAI,qBAAqB,GAC7B,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,cAAc,EAAE,OAAO,EAAU,MAAM,mBAAmB,CAAC;AAGpE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,MAAM,EACN,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,IAAI;QACF,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAAC,MAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,SAAS,EACT,OAAO,EACP,UAAU,GAKX,EAAE,EAAE;IACH,MAAM,WAAW,GAAgC,IAAI,OAAO,CAC1D,qBAA4B,EAC5B,IAAI,cAAc,CAAC,UAAU,EAAE,EAAY,EAAE;QAC3C,aAAa,EAAE,IAAI;KACpB,CAAC,CACH,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CACxD,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAC9D,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"currencyUtils.js","sourceRoot":"","sources":["../../../src/currencyUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtD,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,MAAM,EACN,IAAI,EACJ,UAAU,GAKX,EAAE,EAAE;IACH,IAAI;QACF,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAAC,MAAM;QACN,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,8BAA8B,CAAA;AAiB7D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EAAC,SAAS,EAI9C,EAAE,EAAE;IACH,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC1C;IACD,MAAM,sBAAsB,GAAG,IAAI,YAAY,CAC7C,eAAe,EACf,EAAE,CACH,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,MAAM,sBAAsB,CAAC,qBAAqB,CAChD,CAAC,iBAAiB,CAAC,EACnB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACvB,CACF,CAAC;IACF,MAAM,KAAK,GAAG,YAAY,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO;QACL,YAAY,EAAE;YACZ,QAAQ,EAAE;gBACR,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;gBAC5B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;gBAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;gBAC9B,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY;gBACzC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB;gBAClD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;gBACnC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;aAClC;SACF;KACF,CAAA;AACH,CAAC,CAAC"}