main.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {
  2. connectToTerra,
  3. queryBalanceOnTerra,
  4. queryTerra,
  5. relayTerra,
  6. setAccountNumOnTerra,
  7. setSeqNumOnTerra,
  8. TerraConnectionData,
  9. } from "./terra";
  10. export type ConnectionData = {
  11. terraData: TerraConnectionData;
  12. };
  13. import { logger } from "../helpers";
  14. export function connectRelayer(): ConnectionData {
  15. let td = connectToTerra();
  16. return { terraData: td };
  17. }
  18. export async function setAccountNum(connectionData: ConnectionData) {
  19. try {
  20. await setAccountNumOnTerra(connectionData.terraData);
  21. } catch (e) {
  22. logger.error("setAccountNum: query failed: %o", e);
  23. }
  24. }
  25. export async function setSeqNum(connectionData: ConnectionData) {
  26. try {
  27. await setSeqNumOnTerra(connectionData.terraData);
  28. } catch (e) {
  29. logger.error("setSeqNum: query failed: %o", e);
  30. }
  31. }
  32. // Exceptions from this method are caught at the higher level.
  33. export async function relay(
  34. signedVAAs: Array<string>,
  35. connectionData: ConnectionData
  36. ): Promise<any> {
  37. return await relayTerra(connectionData.terraData, signedVAAs);
  38. }
  39. export async function query(
  40. priceIdStr: string
  41. ): Promise<any> {
  42. let result: any;
  43. try {
  44. let terraData = connectToTerra();
  45. result = await queryTerra(terraData, priceIdStr);
  46. } catch (e) {
  47. logger.error("query failed: %o", e);
  48. result = "Error: unhandled exception";
  49. }
  50. return result;
  51. }
  52. export async function queryBalance(
  53. connectionData: ConnectionData
  54. ): Promise<number> {
  55. let balance: number = NaN;
  56. try {
  57. balance = await queryBalanceOnTerra(connectionData.terraData);
  58. } catch (e) {
  59. logger.error("balance query failed: %o", e);
  60. }
  61. return balance;
  62. }