@levrbet/shared 0.2.44 → 0.2.45

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 (123) hide show
  1. package/dist/core/contracts/addresses.d.ts +20 -0
  2. package/dist/core/contracts/addresses.js +33 -13
  3. package/dist/core/contracts/addresses.js.map +1 -1
  4. package/dist/core/contracts/instances.d.ts +7 -2
  5. package/dist/core/contracts/instances.js +20 -1
  6. package/dist/core/contracts/instances.js.map +1 -1
  7. package/dist/core/index.d.ts +1 -0
  8. package/dist/core/index.js +1 -0
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/core/indexers/envio.test.query.d.ts +5 -2
  11. package/dist/core/indexers/envio.test.query.js +8 -3
  12. package/dist/core/indexers/envio.test.query.js.map +1 -1
  13. package/dist/core/indexers/indexers.service.js +32 -12
  14. package/dist/core/indexers/indexers.service.js.map +1 -1
  15. package/dist/core/indexers/subsquid.test.query.d.ts +4 -1
  16. package/dist/core/indexers/subsquid.test.query.js +22 -2
  17. package/dist/core/indexers/subsquid.test.query.js.map +1 -1
  18. package/dist/core/socket.io/events.d.ts +20 -0
  19. package/dist/core/socket.io/events.js +20 -0
  20. package/dist/core/socket.io/events.js.map +1 -0
  21. package/dist/core/socket.io/index.d.ts +2 -0
  22. package/dist/core/socket.io/index.js +19 -0
  23. package/dist/core/socket.io/index.js.map +1 -0
  24. package/dist/core/socket.io/rooms.d.ts +6 -0
  25. package/dist/core/socket.io/rooms.js +10 -0
  26. package/dist/core/socket.io/rooms.js.map +1 -0
  27. package/dist/core/types/oracle/market/markets.types.d.ts +4 -4
  28. package/dist/core/types/oracle/market/positions.types.d.ts +17 -1
  29. package/dist/core/types/oracle/requests/game.request.types.d.ts +7 -5
  30. package/dist/core/types/oracle/requests/game.request.types.js +6 -4
  31. package/dist/core/types/oracle/requests/game.request.types.js.map +1 -1
  32. package/dist/core/types/oracle/requests/index.d.ts +2 -0
  33. package/dist/core/types/oracle/requests/index.js +2 -0
  34. package/dist/core/types/oracle/requests/index.js.map +1 -1
  35. package/dist/core/types/oracle/requests/odds.response.types.d.ts +2 -0
  36. package/dist/core/types/oracle/requests/odds.response.types.js +3 -0
  37. package/dist/core/types/oracle/requests/odds.response.types.js.map +1 -0
  38. package/dist/core/types/oracle/requests/user.request.type.d.ts +4 -0
  39. package/dist/core/types/oracle/requests/user.request.type.js +3 -0
  40. package/dist/core/types/oracle/requests/user.request.type.js.map +1 -0
  41. package/dist/core/utils/misc.utils.d.ts +6 -0
  42. package/dist/core/utils/misc.utils.js +17 -1
  43. package/dist/core/utils/misc.utils.js.map +1 -1
  44. package/dist/core/validators/bytes.validators.d.ts +4 -3
  45. package/dist/core/validators/bytes.validators.js +4 -4
  46. package/dist/core/validators/bytes.validators.js.map +1 -1
  47. package/dist/react/hooks/auth/useAuthHeaders.js +2 -1
  48. package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -1
  49. package/dist/react/hooks/contracts/erc20/index.d.ts +6 -0
  50. package/dist/react/hooks/contracts/erc20/index.js +23 -0
  51. package/dist/react/hooks/contracts/erc20/index.js.map +1 -0
  52. package/dist/react/hooks/contracts/erc20/useApproveErc20.d.ts +13 -0
  53. package/dist/react/hooks/contracts/erc20/useApproveErc20.js +28 -0
  54. package/dist/react/hooks/contracts/erc20/useApproveErc20.js.map +1 -0
  55. package/dist/react/hooks/contracts/erc20/useErc20Allowance.d.ts +10 -0
  56. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js +34 -0
  57. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js.map +1 -0
  58. package/dist/react/hooks/contracts/erc20/useErc20Balance.d.ts +22 -0
  59. package/dist/react/hooks/contracts/erc20/useErc20Balance.js +95 -0
  60. package/dist/react/hooks/contracts/erc20/useErc20Balance.js.map +1 -0
  61. package/dist/react/hooks/contracts/erc20/useErc20Decimals.d.ts +8 -0
  62. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js +28 -0
  63. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js.map +1 -0
  64. package/dist/react/hooks/contracts/erc20/useErc20Symbol.d.ts +8 -0
  65. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js +28 -0
  66. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js.map +1 -0
  67. package/dist/react/hooks/contracts/erc20/useTransferErc20.d.ts +13 -0
  68. package/dist/react/hooks/contracts/erc20/useTransferErc20.js +31 -0
  69. package/dist/react/hooks/contracts/erc20/useTransferErc20.js.map +1 -0
  70. package/dist/react/hooks/contracts/index.d.ts +1 -0
  71. package/dist/react/hooks/contracts/index.js +1 -0
  72. package/dist/react/hooks/contracts/index.js.map +1 -1
  73. package/dist/react/hooks/contracts/useContracts.d.ts +7 -1
  74. package/dist/react/hooks/contracts/useContracts.js +24 -2
  75. package/dist/react/hooks/contracts/useContracts.js.map +1 -1
  76. package/dist/react/index.d.ts +1 -0
  77. package/dist/react/index.js +1 -0
  78. package/dist/react/index.js.map +1 -1
  79. package/dist/react/injectedDependencies.d.ts +4 -3
  80. package/dist/react/injectedDependencies.js +2 -1
  81. package/dist/react/injectedDependencies.js.map +1 -1
  82. package/dist/react/queryKeys.d.ts +17 -0
  83. package/dist/react/queryKeys.js +23 -0
  84. package/dist/react/queryKeys.js.map +1 -0
  85. package/dist/server/config/redis.d.ts +1 -1
  86. package/dist/server/config/redis.js +9 -3
  87. package/dist/server/config/redis.js.map +1 -1
  88. package/dist/server/oracle/redis-cache-manager/channels.d.ts +1 -5
  89. package/dist/server/oracle/redis-cache-manager/channels.js +5 -14
  90. package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -1
  91. package/dist/server/services/index.d.ts +1 -0
  92. package/dist/server/services/index.js +1 -0
  93. package/dist/server/services/index.js.map +1 -1
  94. package/dist/server/services/presigned.urls.d.ts +11 -0
  95. package/dist/server/services/presigned.urls.js +41 -0
  96. package/dist/server/services/presigned.urls.js.map +1 -0
  97. package/package.json +9 -6
  98. package/dist/core/prisma/generated/client.d.ts +0 -1
  99. package/dist/core/prisma/generated/client.js +0 -4
  100. package/dist/core/prisma/generated/default.d.ts +0 -1
  101. package/dist/core/prisma/generated/default.js +0 -4
  102. package/dist/core/prisma/generated/edge.d.ts +0 -1
  103. package/dist/core/prisma/generated/edge.js +0 -540
  104. package/dist/core/prisma/generated/index-browser.js +0 -523
  105. package/dist/core/prisma/generated/index.d.ts +0 -31059
  106. package/dist/core/prisma/generated/index.js +0 -565
  107. package/dist/core/prisma/generated/libquery_engine-darwin-arm64.dylib.node +0 -0
  108. package/dist/core/prisma/generated/libquery_engine-linux-musl-openssl-3.0.x.so.node +0 -0
  109. package/dist/core/prisma/generated/package.json +0 -183
  110. package/dist/core/prisma/generated/runtime/edge-esm.js +0 -34
  111. package/dist/core/prisma/generated/runtime/edge.js +0 -34
  112. package/dist/core/prisma/generated/runtime/index-browser.d.ts +0 -370
  113. package/dist/core/prisma/generated/runtime/index-browser.js +0 -16
  114. package/dist/core/prisma/generated/runtime/library.d.ts +0 -3982
  115. package/dist/core/prisma/generated/runtime/library.js +0 -146
  116. package/dist/core/prisma/generated/runtime/react-native.js +0 -83
  117. package/dist/core/prisma/generated/runtime/wasm-compiler-edge.js +0 -84
  118. package/dist/core/prisma/generated/runtime/wasm-engine-edge.js +0 -36
  119. package/dist/core/prisma/generated/schema.prisma +0 -460
  120. package/dist/core/prisma/generated/wasm-edge-light-loader.mjs +0 -4
  121. package/dist/core/prisma/generated/wasm-worker-loader.mjs +0 -4
  122. package/dist/core/prisma/generated/wasm.d.ts +0 -1
  123. package/dist/core/prisma/generated/wasm.js +0 -547
@@ -122,3 +122,23 @@ export declare const levrMarketContracts: {
122
122
  };
123
123
  };
124
124
  };
125
+ export declare const levrMarketIdToContracts: {
126
+ readonly local: {
127
+ readonly 10143: {
128
+ readonly "0xeb1dcadcfca10960803009411023082d": "0xeA8A09fE60c6e5338BF18dae2775173904ab1E1a";
129
+ readonly "0xa94fb48271ded4f41a3089f130a62d1f": "0x2F0e9De8E8b0b380B4BA40013f527D5003C83baF";
130
+ };
131
+ };
132
+ readonly dev: {
133
+ readonly 10143: {
134
+ readonly "0xeb1dcadcfca10960803009411023082d": "0x3b35C17A5A64A57180F28E26e1F54655df433f77";
135
+ readonly "0xa94fb48271ded4f41a3089f130a62d1f": "0x3b35C17A5A64A57180F28E26e1F54655df433f77";
136
+ };
137
+ };
138
+ readonly prod: {
139
+ readonly 10143: {
140
+ readonly "0xeb1dcadcfca10960803009411023082d": "0x3b35C17A5A64A57180F28E26e1F54655df433f77";
141
+ readonly "0xa94fb48271ded4f41a3089f130a62d1f": "0x3b35C17A5A64A57180F28E26e1F54655df433f77";
142
+ };
143
+ };
144
+ };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.levrMarketContracts = exports.levrContractAddresses = void 0;
3
+ exports.levrMarketIdToContracts = exports.levrMarketContracts = exports.levrContractAddresses = void 0;
4
4
  const types_1 = require("../types");
5
5
  const constants_1 = require("./constants");
6
6
  exports.levrContractAddresses = {
@@ -102,28 +102,48 @@ exports.levrContractAddresses = {
102
102
  },
103
103
  };
104
104
  exports.levrMarketContracts = {
105
- [types_1.LevrEnv.LOCAL]: {
105
+ local: {
106
106
  [types_1.LevrChain.MONAD_TESTNET]: {
107
- [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0xeA8A09fE60c6e5338BF18dae2775173904ab1E1a",
108
- [constants_1.LevrMarketId.OVER_UNDER]: "0x2F0e9De8E8b0b380B4BA40013f527D5003C83baF",
107
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: exports.levrContractAddresses.local[types_1.LevrChain.MONAD_TESTNET].levrFulltimeMarket,
108
+ [constants_1.LevrMarketId.OVER_UNDER]: exports.levrContractAddresses.local[types_1.LevrChain.MONAD_TESTNET].levrOverUnderMarket,
109
109
  },
110
110
  },
111
- [types_1.LevrEnv.DEV]: {
111
+ dev: {
112
112
  [types_1.LevrChain.MONAD_TESTNET]: {
113
- [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0xeA8A09fE60c6e5338BF18dae2775173904ab1E1a",
114
- [constants_1.LevrMarketId.OVER_UNDER]: "0x2F0e9De8E8b0b380B4BA40013f527D5003C83baF",
113
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: exports.levrContractAddresses.dev[types_1.LevrChain.MONAD_TESTNET].levrFulltimeMarket,
114
+ [constants_1.LevrMarketId.OVER_UNDER]: exports.levrContractAddresses.dev[types_1.LevrChain.MONAD_TESTNET].levrOverUnderMarket,
115
115
  },
116
116
  },
117
- [types_1.LevrEnv.STAGING]: {
117
+ staging: {
118
118
  [types_1.LevrChain.MONAD_TESTNET]: {
119
- [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0xeA8A09fE60c6e5338BF18dae2775173904ab1E1a",
120
- [constants_1.LevrMarketId.OVER_UNDER]: "0x2F0e9De8E8b0b380B4BA40013f527D5003C83baF",
119
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: exports.levrContractAddresses.staging[types_1.LevrChain.MONAD_TESTNET].levrFulltimeMarket,
120
+ [constants_1.LevrMarketId.OVER_UNDER]: exports.levrContractAddresses.staging[types_1.LevrChain.MONAD_TESTNET].levrOverUnderMarket,
121
121
  },
122
122
  },
123
- [types_1.LevrEnv.PROD]: {
123
+ prod: {
124
+ [types_1.LevrChain.MONAD_TESTNET]: {
125
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: exports.levrContractAddresses.prod[types_1.LevrChain.MONAD_TESTNET].levrFulltimeMarket,
126
+ [constants_1.LevrMarketId.OVER_UNDER]: exports.levrContractAddresses.prod[types_1.LevrChain.MONAD_TESTNET].levrOverUnderMarket,
127
+ },
128
+ },
129
+ };
130
+ exports.levrMarketIdToContracts = {
131
+ local: {
132
+ [types_1.LevrChain.MONAD_TESTNET]: {
133
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: exports.levrContractAddresses.local[types_1.LevrChain.MONAD_TESTNET].levrFulltimeMarket,
134
+ [constants_1.LevrMarketId.OVER_UNDER]: exports.levrContractAddresses.local[types_1.LevrChain.MONAD_TESTNET].levrOverUnderMarket,
135
+ },
136
+ },
137
+ dev: {
138
+ [types_1.LevrChain.MONAD_TESTNET]: {
139
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0x3b35C17A5A64A57180F28E26e1F54655df433f77",
140
+ [constants_1.LevrMarketId.OVER_UNDER]: "0x3b35C17A5A64A57180F28E26e1F54655df433f77",
141
+ },
142
+ },
143
+ prod: {
124
144
  [types_1.LevrChain.MONAD_TESTNET]: {
125
- [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0xeA8A09fE60c6e5338BF18dae2775173904ab1E1a",
126
- [constants_1.LevrMarketId.OVER_UNDER]: "0x2F0e9De8E8b0b380B4BA40013f527D5003C83baF",
145
+ [constants_1.LevrMarketId.FULL_TIME_WINNER]: "0x3b35C17A5A64A57180F28E26e1F54655df433f77",
146
+ [constants_1.LevrMarketId.OVER_UNDER]: "0x3b35C17A5A64A57180F28E26e1F54655df433f77",
127
147
  },
128
148
  },
129
149
  };
@@ -1 +1 @@
1
- {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/core/contracts/addresses.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/core/contracts/addresses.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { Account, Chain, GetContractReturnType, PublicClient, Transport, WalletClient } from "viem";
1
+ import type { Account, Address, Chain, GetContractReturnType, PublicClient, Transport, WalletClient } from "viem";
2
+ import { erc20Abi } from "viem";
2
3
  import { LevrChain, LevrEnv } from "../types";
3
4
  import { abis } from "./abis";
4
5
  export type CustomWalletClient = WalletClient<Transport, Chain, Account>;
@@ -13,7 +14,11 @@ export type CustomWalletClient = WalletClient<Transport, Chain, Account>;
13
14
  * @returns An instance of the contract typed according to its ABI and the provided wallet client.
14
15
  * @throws Will throw an error if the contract address is not found for the given contract name and chain.
15
16
  */
16
- export declare function getLevrContract<T extends keyof typeof abis>(contractName: T, chainId: LevrChain, levrEnv: LevrEnv, { publicClient, walletClient }: {
17
+ export declare function getLevrContract<T extends keyof typeof abis>(contractName: T, chainId: LevrChain, levrEnv: LevrEnv, { publicClient, walletClient }?: {
17
18
  publicClient?: PublicClient;
18
19
  walletClient?: WalletClient;
19
20
  }): GetContractReturnType<(typeof abis)[T], CustomWalletClient>;
21
+ export declare function getErc20Contract(address: Address, chainId: LevrChain, { publicClient, walletClient }?: {
22
+ publicClient?: PublicClient;
23
+ walletClient?: WalletClient;
24
+ }): GetContractReturnType<typeof erc20Abi, CustomWalletClient>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLevrContract = getLevrContract;
4
+ exports.getErc20Contract = getErc20Contract;
4
5
  const viem_1 = require("viem");
5
6
  const abis_1 = require("./abis");
6
7
  const addresses_1 = require("./addresses");
@@ -16,7 +17,7 @@ const clients_1 = require("./clients");
16
17
  * @returns An instance of the contract typed according to its ABI and the provided wallet client.
17
18
  * @throws Will throw an error if the contract address is not found for the given contract name and chain.
18
19
  */
19
- function getLevrContract(contractName, chainId, levrEnv, { publicClient, walletClient }) {
20
+ function getLevrContract(contractName, chainId, levrEnv, { publicClient, walletClient } = {}) {
20
21
  const address = addresses_1.levrContractAddresses[levrEnv][chainId][contractName];
21
22
  if (!address)
22
23
  throw new Error(`Contract address not found for ${contractName} on chain ${chainId.toString()}`);
@@ -38,4 +39,22 @@ function getLevrContract(contractName, chainId, levrEnv, { publicClient, walletC
38
39
  client: publicClient,
39
40
  });
40
41
  }
42
+ function getErc20Contract(address, chainId, { publicClient, walletClient } = {}) {
43
+ publicClient = publicClient ? publicClient : clients_1.publicClientService.getPublicClient(chainId);
44
+ if (walletClient) {
45
+ return (0, viem_1.getContract)({
46
+ address,
47
+ abi: viem_1.erc20Abi,
48
+ client: {
49
+ public: publicClient,
50
+ wallet: walletClient,
51
+ },
52
+ });
53
+ }
54
+ return (0, viem_1.getContract)({
55
+ address,
56
+ abi: viem_1.erc20Abi,
57
+ client: publicClient,
58
+ });
59
+ }
41
60
  //# sourceMappingURL=instances.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../src/core/contracts/instances.ts"],"names":[],"mappings":";;AAoBA,0CA+BC;AAlDD,+BAAkC;AAElC,iCAA6B;AAC7B,2CAAmD;AACnD,uCAA+C;AAI/C;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAC3B,YAAe,EACf,OAAkB,EAClB,OAAgB,EAChB,EAAE,YAAY,EAAE,YAAY,EAAgE;IAE5F,MAAM,OAAO,GAAG,iCAAqB,CAAC,OAAO,CAAC,CAAC,OAAwD,CAAC,CAAC,YAAY,CAEtG,CAAA;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,aAAa,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAE9G,MAAM,GAAG,GAAG,WAAI,CAAC,YAAY,CAAC,CAAA;IAE9B,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEzF,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,IAAA,kBAAW,EAAC;YACf,OAAO;YACP,GAAG;YACH,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,YAAY;aACvB;SACJ,CAAgE,CAAA;IACrE,CAAC;IAED,OAAO,IAAA,kBAAW,EAAC;QACf,OAAO;QACP,GAAG;QACH,MAAM,EAAE,YAAY;KACvB,CAAgE,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../src/core/contracts/instances.ts"],"names":[],"mappings":";;AAoBA,0CA+BC;AAED,4CAuBC;AA3ED,+BAA4C;AAE5C,iCAA6B;AAC7B,2CAAmD;AACnD,uCAA+C;AAI/C;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAC3B,YAAe,EACf,OAAkB,EAClB,OAAgB,EAChB,EAAE,YAAY,EAAE,YAAY,KAAmE,EAAE;IAEjG,MAAM,OAAO,GAAG,iCAAqB,CAAC,OAAO,CAAC,CAAC,OAAwD,CAAC,CAAC,YAAY,CAEtG,CAAA;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,aAAa,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAE9G,MAAM,GAAG,GAAG,WAAI,CAAC,YAAY,CAAC,CAAA;IAE9B,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEzF,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,IAAA,kBAAW,EAAC;YACf,OAAO;YACP,GAAG;YACH,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,YAAY;aACvB;SACJ,CAAgE,CAAA;IACrE,CAAC;IAED,OAAO,IAAA,kBAAW,EAAC;QACf,OAAO;QACP,GAAG;QACH,MAAM,EAAE,YAAY;KACvB,CAAgE,CAAA;AACrE,CAAC;AAED,SAAgB,gBAAgB,CAC5B,OAAgB,EAChB,OAAkB,EAClB,EAAE,YAAY,EAAE,YAAY,KAAmE,EAAE;IAEjG,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAAmB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEzF,IAAI,YAAY,EAAE,CAAC;QACf,OAAO,IAAA,kBAAW,EAAC;YACf,OAAO;YACP,GAAG,EAAE,eAAQ;YACb,MAAM,EAAE;gBACJ,MAAM,EAAE,YAAY;gBACpB,MAAM,EAAE,YAAY;aACvB;SACJ,CAA+D,CAAA;IACpE,CAAC;IAED,OAAO,IAAA,kBAAW,EAAC;QACf,OAAO;QACP,GAAG,EAAE,eAAQ;QACb,MAAM,EAAE,YAAY;KACvB,CAA0E,CAAA;AAC/E,CAAC"}
@@ -3,6 +3,7 @@ export * from "./contracts";
3
3
  export * from "./indexers";
4
4
  export * from "./prisma";
5
5
  export * from "./privy";
6
+ export * from "./socket.io";
6
7
  export * from "./types";
7
8
  export * from "./utils";
8
9
  export * from "./validators";
@@ -19,6 +19,7 @@ __exportStar(require("./contracts"), exports);
19
19
  __exportStar(require("./indexers"), exports);
20
20
  __exportStar(require("./prisma"), exports);
21
21
  __exportStar(require("./privy"), exports);
22
+ __exportStar(require("./socket.io"), exports);
22
23
  __exportStar(require("./types"), exports);
23
24
  __exportStar(require("./utils"), exports);
24
25
  __exportStar(require("./validators"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,8CAA2B;AAC3B,6CAA0B;AAC1B,2CAAwB;AACxB,0CAAuB;AACvB,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,8CAA2B;AAC3B,6CAA0B;AAC1B,2CAAwB;AACxB,0CAAuB;AACvB,8CAA2B;AAC3B,0CAAuB;AACvB,0CAAuB;AACvB,+CAA4B"}
@@ -1,2 +1,5 @@
1
- export declare const HEALTH_CHECK_QUERY = "\n query {\n LevrFullTimeMarket_PositionOpened(limit: 1) {\n id\n }\n }\n";
2
- export declare function checkEnvioGraphQlHealth(url: string, variables?: Record<string, any>, signal?: AbortSignal): Promise<boolean>;
1
+ export declare const HEALTH_CHECK_QUERY = "\n query {\n LevrFullTimeMarket_PositionOpened(order_by: {timestamp: desc}, limit: 1) {\n timestamp\n }\n }\n";
2
+ export declare function checkEnvioGraphQlHealth(url: string, variables?: Record<string, any>, signal?: AbortSignal): Promise<{
3
+ ok: boolean;
4
+ block: any;
5
+ }>;
@@ -5,8 +5,8 @@ exports.checkEnvioGraphQlHealth = checkEnvioGraphQlHealth;
5
5
  // GraphQL query to check if the endpoint is healthy by requesting LevrFullTimeMarket_PositionOpened
6
6
  exports.HEALTH_CHECK_QUERY = `
7
7
  query {
8
- LevrFullTimeMarket_PositionOpened(limit: 1) {
9
- id
8
+ LevrFullTimeMarket_PositionOpened(order_by: {timestamp: desc}, limit: 1) {
9
+ timestamp
10
10
  }
11
11
  }
12
12
  `;
@@ -21,6 +21,11 @@ async function checkEnvioGraphQlHealth(url, variables, signal) {
21
21
  // forward AbortSignal so the request can be aborted by caller
22
22
  signal,
23
23
  });
24
- return response.ok === true;
24
+ const data = await response.json();
25
+ const dataParsed = response.ok ? data : null;
26
+ return {
27
+ ok: response.ok === true,
28
+ block: response.ok ? dataParsed?.data?.LevrFullTimeMarket_PositionOpened?.[0]?.timestamp ?? null : null,
29
+ };
25
30
  }
26
31
  //# sourceMappingURL=envio.test.query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"envio.test.query.js","sourceRoot":"","sources":["../../../src/core/indexers/envio.test.query.ts"],"names":[],"mappings":";;;AASA,0DAaC;AAtBD,oGAAoG;AACvF,QAAA,kBAAkB,GAAG;;;;;;CAMjC,CAAA;AAEM,KAAK,UAAU,uBAAuB,CAAC,GAAW,EAAE,SAA+B,EAAE,MAAoB;IAC5G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,0BAAkB;YACzB,SAAS;SACZ,CAAC;QACF,8DAA8D;QAC9D,MAAM;KACT,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"envio.test.query.js","sourceRoot":"","sources":["../../../src/core/indexers/envio.test.query.ts"],"names":[],"mappings":";;;AASA,0DAoBC;AA7BD,oGAAoG;AACvF,QAAA,kBAAkB,GAAG;;;;;;CAMjC,CAAA;AAEM,KAAK,UAAU,uBAAuB,CAAC,GAAW,EAAE,SAA+B,EAAE,MAAoB;IAC5G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,0BAAkB;YACzB,SAAS;SACZ,CAAC;QACF,8DAA8D;QAC9D,MAAM;KACT,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAE5C,OAAO;QACH,EAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,IAAI;QACxB,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;KAC1G,CAAA;AACL,CAAC"}
@@ -14,8 +14,9 @@ const ms_1 = __importDefault(require("ms"));
14
14
  const typescript_memoize_1 = require("typescript-memoize");
15
15
  const _1 = require("../.");
16
16
  const indexers_types_1 = require("../types/indexers.types");
17
- const subsquid_test_query_1 = require("./subsquid.test.query");
18
17
  const envio_test_query_1 = require("./envio.test.query");
18
+ const subsquid_test_query_1 = require("./subsquid.test.query");
19
+ const server_1 = require("../../server");
19
20
  class IndexersService {
20
21
  /**
21
22
  * Check the health of a single indexer with caching
@@ -33,13 +34,16 @@ class IndexersService {
33
34
  }
34
35
  catch (error) {
35
36
  // node-fetch throws an AbortError when aborted; match on name to avoid noisy logs
36
- if (error && (error.name === 'AbortError' || error.type === 'aborted')) {
37
- console.warn(`Health check aborted (timeout) for ${url}`);
37
+ if (error && (error.name === "AbortError" || error.type === "aborted")) {
38
+ server_1.logger.warn(`Health check aborted (timeout) for ${url}`);
38
39
  }
39
40
  else {
40
- console.error(`Health check failed for ${url}:`, error);
41
+ server_1.logger.error(`Health check failed for ${url}:`, error);
41
42
  }
42
- return false;
43
+ return {
44
+ ok: false,
45
+ block: null,
46
+ };
43
47
  }
44
48
  finally {
45
49
  clearTimeout(timeoutId);
@@ -51,16 +55,32 @@ class IndexersService {
51
55
  */
52
56
  async getHealthyIndexer(env, chain) {
53
57
  const indexers = _1.allUrls[env].indexers[chain] || [];
58
+ const typeToBlockMap = {
59
+ [indexers_types_1.LevrIndexer.ENVIO]: null,
60
+ [indexers_types_1.LevrIndexer.SUBSQUID]: null,
61
+ };
54
62
  for (const indexer of indexers) {
55
63
  const isHealthy = await this.checkIndexerHealth(indexer.url, indexer.type);
56
- if (isHealthy) {
57
- return indexer;
58
- }
59
- else {
60
- console.log(`❌ Indexer unhealthy: ${indexer.url}`);
61
- }
64
+ typeToBlockMap[indexer.type] = isHealthy.block;
65
+ }
66
+ // use the one with the latest block if multiple are healthy
67
+ const healthyIndexers = indexers.filter((idx) => typeToBlockMap[idx.type] !== null);
68
+ if (healthyIndexers.length > 1) {
69
+ healthyIndexers.sort((a, b) => {
70
+ const blockA = typeToBlockMap[a.type] || 0;
71
+ const blockB = typeToBlockMap[b.type] || 0;
72
+ return blockB - blockA;
73
+ });
74
+ const bestIndexer = healthyIndexers[0];
75
+ return { type: bestIndexer.type, url: bestIndexer.url };
76
+ }
77
+ else if (healthyIndexers.length === 1) {
78
+ // return the first healthy one if only one is healthy
79
+ return { type: healthyIndexers[0].type, url: healthyIndexers[0].url };
80
+ }
81
+ else {
82
+ throw new Error(`No healthy indexer found for ${env} - Chain ${chain}`);
62
83
  }
63
- throw new Error(`No healthy indexers found for ${env} - Chain ${chain}`);
64
84
  }
65
85
  getIndexer(env, chain, type) {
66
86
  const indexers = _1.allUrls[env].indexers[chain] || [];
@@ -1 +1 @@
1
- {"version":3,"file":"indexers.service.js","sourceRoot":"","sources":["../../../src/core/indexers/indexers.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAmB;AACnB,2DAAoD;AACpD,2BAAkD;AAClD,4DAAqD;AACrD,+DAAkE;AAClE,yDAA4D;AAE5D,MAAM,eAAe;IAEjB;;OAEG;IAEW,AAAN,KAAK,CAAC,kBAAkB,CAC5B,GAAW,EACX,OAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,oDAAoD;QACpD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAA,YAAE,EAAC,IAAI,CAAC,CAAC,CAAA;QAEhE,IAAI,CAAC;YACD,wFAAwF;YACxF,MAAM,aAAa,GAAG,OAAO,IAAI,4BAAW,CAAC,QAAQ;gBACjD,CAAC,CAAC,MAAM,IAAA,gDAA0B,EAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC;gBACrE,CAAC,CAAC,MAAM,IAAA,0CAAuB,EAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAEtE,OAAO,aAAa,CAAA;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,kFAAkF;YAClF,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAA;YAC7D,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;YAC3D,CAAC;YACD,OAAO,KAAK,CAAA;QAChB,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAY,EAAE,KAAgB;QAClD,MAAM,QAAQ,GAAG,UAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAEnD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAE1E,IAAI,SAAS,EAAE,CAAC;gBACZ,OAAO,OAAO,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,wBAAwB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;YACtD,CAAC;QACL,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,EAAE,CAAC,CAAA;IAC5E,CAAC;IAED,UAAU,CAAC,GAAY,EAAE,KAAgB,EAAE,IAAiB;QACxD,MAAM,QAAQ,GAAG,UAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,YAAY,KAAK,WAAW,IAAI,EAAE,CAAC,CAAA;QAE5F,OAAO,OAAO,CAAC,GAAG,CAAA;IACtB,CAAC;CACJ;AAxDiB;IADb,IAAA,oCAAe,EAAC,IAAA,YAAE,EAAC,IAAI,CAAC,CAAC;yDA2BzB;AAgCQ,QAAA,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"indexers.service.js","sourceRoot":"","sources":["../../../src/core/indexers/indexers.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAmB;AACnB,2DAAoD;AACpD,2BAAkD;AAClD,4DAAqD;AACrD,yDAA4D;AAC5D,+DAAkE;AAClE,yCAAqC;AAErC,MAAM,eAAe;IACjB;;OAEG;IAEW,AAAN,KAAK,CAAC,kBAAkB,CAC5B,GAAW,EACX,OAAoB;QAKpB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,oDAAoD;QACpD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAA,YAAE,EAAC,IAAI,CAAC,CAAC,CAAA;QAEhE,IAAI,CAAC;YACD,wFAAwF;YACxF,MAAM,aAAa,GACf,OAAO,IAAI,4BAAW,CAAC,QAAQ;gBAC3B,CAAC,CAAC,MAAM,IAAA,gDAA0B,EAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC;gBACrE,CAAC,CAAC,MAAM,IAAA,0CAAuB,EAAC,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAE1E,OAAO,aAAa,CAAA;QACxB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,kFAAkF;YAClF,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;gBACrE,eAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAA;YAC5D,CAAC;iBAAM,CAAC;gBACJ,eAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;YAC1D,CAAC;YACD,OAAO;gBACH,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,IAAI;aACd,CAAA;QACL,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,GAAY,EAAE,KAAgB;QAClD,MAAM,QAAQ,GAAG,UAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAEnD,MAAM,cAAc,GAAuC;YACvD,CAAC,4BAAW,CAAC,KAAK,CAAC,EAAE,IAAI;YACzB,CAAC,4BAAW,CAAC,QAAQ,CAAC,EAAE,IAAI;SAC/B,CAAA;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YAC1E,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAA;QAClD,CAAC;QAED,4DAA4D;QAC5D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEnF,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1C,OAAO,MAAM,GAAG,MAAM,CAAA;YAC1B,CAAC,CAAC,CAAA;YACF,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAE,CAAA;YAEvC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,CAAA;QAC3D,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,sDAAsD;YACtD,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,CAAA;QAC3E,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,EAAE,CAAC,CAAA;QAC3E,CAAC;IACL,CAAC;IAED,UAAU,CAAC,GAAY,EAAE,KAAgB,EAAE,IAAiB;QACxD,MAAM,QAAQ,GAAG,UAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAEnD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACzD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,YAAY,KAAK,WAAW,IAAI,EAAE,CAAC,CAAA;QAE5F,OAAO,OAAO,CAAC,GAAG,CAAA;IACtB,CAAC;CACJ;AAhFiB;IADb,IAAA,oCAAe,EAAC,IAAA,YAAE,EAAC,IAAI,CAAC,CAAC;yDAkCzB;AAiDQ,QAAA,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA"}
@@ -1 +1,4 @@
1
- export declare function checkSubsquidGraphQLHealth(url: string, variables?: Record<string, any>, signal?: AbortSignal): Promise<boolean>;
1
+ export declare function checkSubsquidGraphQLHealth(url: string, variables?: Record<string, any>, signal?: AbortSignal): Promise<{
2
+ ok: boolean;
3
+ block: number | null;
4
+ }>;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkSubsquidGraphQLHealth = checkSubsquidGraphQLHealth;
4
+ const server_1 = require("../../server");
4
5
  const HEALTH_CHECK_QUERY = `
5
6
  query HealthCheck {
6
- levrFullTimeMarketSchemaPositionOpeneds(limit: 1) {
7
+ levrFullTimeMarketSchemaPositionOpeneds(limit: 1, orderBy: timestamp_DESC) {
7
8
  id
9
+ timestamp
8
10
  }
9
11
  }
10
12
  `;
@@ -18,6 +20,24 @@ async function checkSubsquidGraphQLHealth(url, variables, signal) {
18
20
  }),
19
21
  signal,
20
22
  });
21
- return response.ok === true;
23
+ const timestamp = response.ok ? (await response.json()).data.levrFullTimeMarketSchemaPositionOpeneds[0]?.timestamp : null;
24
+ const toUnix = (ts) => {
25
+ if (ts == null)
26
+ return null;
27
+ // numeric value or numeric string
28
+ const num = typeof ts === "number" ? ts : Number(ts);
29
+ if (!Number.isNaN(num) && Number.isFinite(num)) {
30
+ // if in milliseconds (likely > 1e12) convert to seconds, otherwise assume seconds
31
+ return num > 1e12 ? Math.floor(num / 1000) : Math.floor(num);
32
+ }
33
+ // try parsing ISO/date string
34
+ const parsed = Date.parse(String(ts));
35
+ return Number.isNaN(parsed) ? null : Math.floor(parsed / 1000);
36
+ };
37
+ server_1.logger.info("Subsquid health check response status:", response.status, url, toUnix(timestamp));
38
+ return {
39
+ ok: response.ok === true,
40
+ block: toUnix(timestamp),
41
+ };
22
42
  }
23
43
  //# sourceMappingURL=subsquid.test.query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subsquid.test.query.js","sourceRoot":"","sources":["../../../src/core/indexers/subsquid.test.query.ts"],"names":[],"mappings":";;AAQA,gEAYC;AApBD,MAAM,kBAAkB,GAAG;;;;;;CAM1B,CAAA;AAEM,KAAK,UAAU,0BAA0B,CAAC,GAAW,EAAE,SAA+B,EAAE,MAAoB;IAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,kBAAkB;YACzB,SAAS;SACZ,CAAC;QACF,MAAM;KACT,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"subsquid.test.query.js","sourceRoot":"","sources":["../../../src/core/indexers/subsquid.test.query.ts"],"names":[],"mappings":";;AAWA,gEAgCC;AA3CD,yCAAqC;AAErC,MAAM,kBAAkB,GAAG;;;;;;;CAO1B,CAAA;AAEM,KAAK,UAAU,0BAA0B,CAAC,GAAW,EAAE,SAA+B,EAAE,MAAoB;IAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,kBAAkB;YACzB,SAAS;SACZ,CAAC;QACF,MAAM;KACT,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IAEzH,MAAM,MAAM,GAAG,CAAC,EAAO,EAAiB,EAAE;QACtC,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAC3B,kCAAkC;QAClC,MAAM,GAAG,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,kFAAkF;YAClF,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;QACD,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClE,CAAC,CAAA;IAED,eAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAE9F,OAAO;QACH,EAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,IAAI;QACxB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;KAC3B,CAAA;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { GamePhase, Odds, Scores } from "../prisma";
2
+ import { LevrFixtureId } from "../types";
3
+ export declare enum RoomEvent {
4
+ JoinRoom = "joinRoom",
5
+ LeaveRoom = "leaveRoom"
6
+ }
7
+ export declare enum GameEvent {
8
+ ScoreUpdate = "gameScoreUpdate",
9
+ PhaseUpdate = "gamePhaseUpdate"
10
+ }
11
+ export type GameScoreUpdate = Scores;
12
+ export type GamePhaseUpdate = {
13
+ chainId: number;
14
+ levrFixtureId: LevrFixtureId;
15
+ phase: GamePhase;
16
+ };
17
+ export declare enum MarketEvent {
18
+ OddsUpdate = "marketOddsUpdate"
19
+ }
20
+ export type MarketOddsUpdate = Odds;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MarketEvent = exports.GameEvent = exports.RoomEvent = void 0;
4
+ var RoomEvent;
5
+ (function (RoomEvent) {
6
+ RoomEvent["JoinRoom"] = "joinRoom";
7
+ RoomEvent["LeaveRoom"] = "leaveRoom";
8
+ })(RoomEvent || (exports.RoomEvent = RoomEvent = {}));
9
+ // GAME EVENTS AND TYPES
10
+ var GameEvent;
11
+ (function (GameEvent) {
12
+ GameEvent["ScoreUpdate"] = "gameScoreUpdate";
13
+ GameEvent["PhaseUpdate"] = "gamePhaseUpdate";
14
+ })(GameEvent || (exports.GameEvent = GameEvent = {}));
15
+ // MARKET EVENTS AND TYPES
16
+ var MarketEvent;
17
+ (function (MarketEvent) {
18
+ MarketEvent["OddsUpdate"] = "marketOddsUpdate";
19
+ })(MarketEvent || (exports.MarketEvent = MarketEvent = {}));
20
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/core/socket.io/events.ts"],"names":[],"mappings":";;;AAGA,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,kCAAqB,CAAA;IACrB,oCAAuB,CAAA;AAC3B,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,wBAAwB;AACxB,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,4CAA+B,CAAA;IAC/B,4CAA+B,CAAA;AACnC,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAQD,0BAA0B;AAC1B,IAAY,WAEX;AAFD,WAAY,WAAW;IACnB,8CAA+B,CAAA;AACnC,CAAC,EAFW,WAAW,2BAAX,WAAW,QAEtB"}
@@ -0,0 +1,2 @@
1
+ export * from "./events";
2
+ export * from "./rooms";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./events"), exports);
18
+ __exportStar(require("./rooms"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/socket.io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0CAAuB"}
@@ -0,0 +1,6 @@
1
+ import { LevrFixtureId } from "../types";
2
+ declare class SocketRooms {
3
+ gameOddsRoom: (chainId: number, fixture: LevrFixtureId) => string;
4
+ }
5
+ export declare const socketRooms: SocketRooms;
6
+ export {};
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.socketRooms = void 0;
4
+ class SocketRooms {
5
+ constructor() {
6
+ this.gameOddsRoom = (chainId, fixture) => `gameOdds:chainId=${chainId}:fixtureId=${fixture}`;
7
+ }
8
+ }
9
+ exports.socketRooms = new SocketRooms();
10
+ //# sourceMappingURL=rooms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rooms.js","sourceRoot":"","sources":["../../../src/core/socket.io/rooms.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW;IAAjB;QACI,iBAAY,GAAG,CAAC,OAAe,EAAE,OAAsB,EAAU,EAAE,CAAC,oBAAoB,OAAO,cAAc,OAAO,EAAE,CAAA;IAC1H,CAAC;CAAA;AAEY,QAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { GamePhase, MarketStatus, MarketTypes, Prisma } from "../../../../core/prisma";
2
2
  import { LevrMarketId } from "../../../contracts";
3
- import { Bytes16, Bytes32 } from "../../../validators";
3
+ import { Bytes32, Bytes10 } from "../../../validators";
4
4
  import { LevrChain } from "../../blockchain";
5
5
  import { type OddsData, type PriceData } from "./odds.types";
6
6
  export type MarketWithRelations = Prisma.MarketGetPayload<{
@@ -20,7 +20,7 @@ export interface MarketPriceBroadcast {
20
20
  gamePhase: GamePhase;
21
21
  gamePeriod: number;
22
22
  gameClock: number;
23
- gameMarketId: LevrGameMarketIdBytes;
23
+ gameMarketId: LevrGameMarketId;
24
24
  nFactor: number;
25
25
  providerObjectId: string;
26
26
  levrGameObjectId: string;
@@ -94,5 +94,5 @@ export declare const SIDE_UNDER: number;
94
94
  */
95
95
  export declare const GROUP_OUTCOME: number;
96
96
  export declare const GROUP_TOTAL: number;
97
- export type LevrMarketIdBytes = Bytes16;
98
- export type LevrGameMarketIdBytes = Bytes32;
97
+ export type LevrGameMarketId = Bytes32;
98
+ export type LevrFixtureId = Bytes10;
@@ -9,13 +9,24 @@ export interface MarketPosition {
9
9
  size: number;
10
10
  pnl: number;
11
11
  pnlPercentage: number;
12
- entryPrice: number;
12
+ entryPrice: string;
13
+ entryOddsAmerican: number;
14
+ entryOddsEuropean: number;
13
15
  leverage: string;
14
16
  marketPrice: number;
15
17
  liquidationPrice: number;
16
18
  healthFactor: number;
17
19
  margin: number;
18
20
  isLong: boolean;
21
+ resultBadge?: {
22
+ label: string;
23
+ kind: BetStatus;
24
+ };
25
+ action?: {
26
+ label: string;
27
+ kind: BetAction;
28
+ disabled?: boolean;
29
+ };
19
30
  }
20
31
  export type BetStatus = "live" | "pregame" | "won" | "lost" | "open" | "cashout" | "resulted";
21
32
  export type BetAction = "cashout" | "redeem" | "view" | "sell" | "none";
@@ -30,6 +41,8 @@ export interface BetRowData {
30
41
  selectedSide: "home" | "away";
31
42
  league: string;
32
43
  odds: number;
44
+ oddsEuropean: number;
45
+ price: number;
33
46
  multiplier: string;
34
47
  wagerUsd: number;
35
48
  paidUsd: number;
@@ -42,4 +55,7 @@ export interface BetRowData {
42
55
  kind: BetAction;
43
56
  disabled?: boolean;
44
57
  };
58
+ levrMarketId?: string;
59
+ gameMarketId?: string;
60
+ levrFixtureId?: string;
45
61
  }
@@ -1,8 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { LevrMarketId } from "../../../contracts";
3
- import { LevrChain } from "../../blockchain";
3
+ import { LevrChain, Side } from "../../blockchain";
4
4
  import { RegistrationStatus } from "../game/game.types";
5
- import { Side } from "../../blockchain/contract.types";
6
5
  import { OddsServices } from "../market/providers.types";
7
6
  export declare const CreateSportsRequestSchema: z.ZodArray<z.ZodObject<{
8
7
  name: z.ZodString;
@@ -57,7 +56,7 @@ export declare const TeamSchema: z.ZodObject<{
57
56
  mascot: z.ZodString;
58
57
  }, z.core.$strip>;
59
58
  export declare const CreateFixtureRequestSchema: z.ZodObject<{
60
- levrFixtureId: z.ZodType<import("../../../validators").Bytes12, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes12, unknown>>;
59
+ levrFixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
61
60
  leagueObjectId: z.ZodString;
62
61
  opticOddsFixtureId: z.ZodString;
63
62
  lsportsFixtureId: z.ZodString;
@@ -84,11 +83,10 @@ export declare const CreateFixtureRequestSchema: z.ZodObject<{
84
83
  Scheduled: "Scheduled";
85
84
  Cancelled: "Cancelled";
86
85
  }>;
87
- registeredChainIds: z.ZodArray<z.ZodEnum<typeof LevrChain>>;
88
86
  }, z.core.$strip>;
89
87
  export declare const CreateGameRequestSchema: z.ZodArray<z.ZodObject<{
90
88
  fixtureObjectId: z.ZodString;
91
- levrFixtureId: z.ZodType<import("../../../validators").Bytes12, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes12, unknown>>;
89
+ levrFixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
92
90
  tournamentObjectId: z.ZodString;
93
91
  levrLeagueId: z.ZodType<import("../../../validators").Bytes8, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes8, unknown>>;
94
92
  levrTournamentId: z.ZodType<import("../../../validators").Bytes6, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes6, unknown>>;
@@ -171,6 +169,10 @@ export declare const GetFixturesQuerySchema: z.ZodObject<{
171
169
  endDate: z.ZodOptional<z.ZodISODateTime>;
172
170
  leagueAbbreviation: z.ZodOptional<z.ZodString>;
173
171
  }, z.core.$strip>;
172
+ export declare const FixtureIdChainIdSchema: z.ZodObject<{
173
+ fixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
174
+ chainId: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
175
+ }, z.core.$strip>;
174
176
  export declare const GameDetailsQuerySchema: z.ZodObject<{
175
177
  chainId: z.ZodCoercedNumber<unknown>;
176
178
  levrFixtureId: z.ZodOptional<z.ZodString>;