@levrbet/shared 0.0.1
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.
- package/LICENSE +201 -0
- package/README.md +92 -0
- package/bin/setup-prisma.js +44 -0
- package/dist/core/config/dotenv.d.ts +16 -0
- package/dist/core/config/dotenv.js +77 -0
- package/dist/core/config/dotenv.js.map +1 -0
- package/dist/core/config/index.d.ts +2 -0
- package/dist/core/config/index.js +19 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/config/urls.d.ts +55 -0
- package/dist/core/config/urls.js +61 -0
- package/dist/core/config/urls.js.map +1 -0
- package/dist/core/contracts/abis/LevrBaseMarket.d.ts +1009 -0
- package/dist/core/contracts/abis/LevrBaseMarket.js +976 -0
- package/dist/core/contracts/abis/LevrBaseMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrConfigProvider.d.ts +2671 -0
- package/dist/core/contracts/abis/LevrConfigProvider.js +2551 -0
- package/dist/core/contracts/abis/LevrConfigProvider.js.map +1 -0
- package/dist/core/contracts/abis/LevrFeeCollector.d.ts +259 -0
- package/dist/core/contracts/abis/LevrFeeCollector.js +143 -0
- package/dist/core/contracts/abis/LevrFeeCollector.js.map +1 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.d.ts +1050 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.js +462 -0
- package/dist/core/contracts/abis/LevrFulltimeMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrFundManager.d.ts +51 -0
- package/dist/core/contracts/abis/LevrFundManager.js +4 -0
- package/dist/core/contracts/abis/LevrFundManager.js.map +1 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.d.ts +244 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.js +231 -0
- package/dist/core/contracts/abis/LevrLiquidationEngine.js.map +1 -0
- package/dist/core/contracts/abis/LevrManager.d.ts +1281 -0
- package/dist/core/contracts/abis/LevrManager.js +1090 -0
- package/dist/core/contracts/abis/LevrManager.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketFeed.d.ts +902 -0
- package/dist/core/contracts/abis/LevrMarketFeed.js +775 -0
- package/dist/core/contracts/abis/LevrMarketFeed.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketMaker.d.ts +175 -0
- package/dist/core/contracts/abis/LevrMarketMaker.js +108 -0
- package/dist/core/contracts/abis/LevrMarketMaker.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.d.ts +682 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.js +323 -0
- package/dist/core/contracts/abis/LevrMarketRiskSentinel.js.map +1 -0
- package/dist/core/contracts/abis/LevrMarketRouter.d.ts +281 -0
- package/dist/core/contracts/abis/LevrMarketRouter.js +262 -0
- package/dist/core/contracts/abis/LevrMarketRouter.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpDepository.d.ts +766 -0
- package/dist/core/contracts/abis/LevrMvpDepository.js +396 -0
- package/dist/core/contracts/abis/LevrMvpDepository.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpRouter.d.ts +305 -0
- package/dist/core/contracts/abis/LevrMvpRouter.js +291 -0
- package/dist/core/contracts/abis/LevrMvpRouter.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpStaker.d.ts +746 -0
- package/dist/core/contracts/abis/LevrMvpStaker.js +386 -0
- package/dist/core/contracts/abis/LevrMvpStaker.js.map +1 -0
- package/dist/core/contracts/abis/LevrMvpToken.d.ts +341 -0
- package/dist/core/contracts/abis/LevrMvpToken.js +183 -0
- package/dist/core/contracts/abis/LevrMvpToken.js.map +1 -0
- package/dist/core/contracts/abis/LevrOrderbook.d.ts +471 -0
- package/dist/core/contracts/abis/LevrOrderbook.js +486 -0
- package/dist/core/contracts/abis/LevrOrderbook.js.map +1 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.d.ts +167 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.js +103 -0
- package/dist/core/contracts/abis/LevrOrderbookLens.js.map +1 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.d.ts +1054 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.js +463 -0
- package/dist/core/contracts/abis/LevrOverUnderMarket.js.map +1 -0
- package/dist/core/contracts/abis/LevrPythFeed.d.ts +225 -0
- package/dist/core/contracts/abis/LevrPythFeed.js +131 -0
- package/dist/core/contracts/abis/LevrPythFeed.js.map +1 -0
- package/dist/core/contracts/abis/LevrUtil.d.ts +485 -0
- package/dist/core/contracts/abis/LevrUtil.js +226 -0
- package/dist/core/contracts/abis/LevrUtil.js.map +1 -0
- package/dist/core/contracts/abis/Storage.d.ts +34 -0
- package/dist/core/contracts/abis/Storage.js +47 -0
- package/dist/core/contracts/abis/Storage.js.map +1 -0
- package/dist/core/contracts/abis/index.d.ts +12174 -0
- package/dist/core/contracts/abis/index.js +51 -0
- package/dist/core/contracts/abis/index.js.map +1 -0
- package/dist/core/contracts/addresses.d.ts +154 -0
- package/dist/core/contracts/addresses.js +160 -0
- package/dist/core/contracts/addresses.js.map +1 -0
- package/dist/core/contracts/chains.d.ts +4 -0
- package/dist/core/contracts/chains.js +14 -0
- package/dist/core/contracts/chains.js.map +1 -0
- package/dist/core/contracts/clients/index.d.ts +1 -0
- package/dist/core/contracts/clients/index.js +18 -0
- package/dist/core/contracts/clients/index.js.map +1 -0
- package/dist/core/contracts/clients/publicClients.d.ts +24 -0
- package/dist/core/contracts/clients/publicClients.js +123 -0
- package/dist/core/contracts/clients/publicClients.js.map +1 -0
- package/dist/core/contracts/constants.d.ts +15 -0
- package/dist/core/contracts/constants.js +30 -0
- package/dist/core/contracts/constants.js.map +1 -0
- package/dist/core/contracts/index.d.ts +6 -0
- package/dist/core/contracts/index.js +23 -0
- package/dist/core/contracts/index.js.map +1 -0
- package/dist/core/contracts/instances.d.ts +48 -0
- package/dist/core/contracts/instances.js +101 -0
- package/dist/core/contracts/instances.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/indexers/envio.test.query.d.ts +5 -0
- package/dist/core/indexers/envio.test.query.js +32 -0
- package/dist/core/indexers/envio.test.query.js.map +1 -0
- package/dist/core/indexers/index.d.ts +1 -0
- package/dist/core/indexers/index.js +18 -0
- package/dist/core/indexers/index.js.map +1 -0
- package/dist/core/indexers/indexers.service.d.ts +19 -0
- package/dist/core/indexers/indexers.service.js +104 -0
- package/dist/core/indexers/indexers.service.js.map +1 -0
- package/dist/core/indexers/subsquid.test.query.d.ts +4 -0
- package/dist/core/indexers/subsquid.test.query.js +42 -0
- package/dist/core/indexers/subsquid.test.query.js.map +1 -0
- package/dist/core/prisma/index.d.ts +1 -0
- package/dist/core/prisma/index.js +21 -0
- package/dist/core/prisma/index.js.map +1 -0
- package/dist/core/prisma/schema.prisma +360 -0
- package/dist/core/privy/constants.d.ts +19 -0
- package/dist/core/privy/constants.js +28 -0
- package/dist/core/privy/constants.js.map +1 -0
- package/dist/core/privy/index.d.ts +1 -0
- package/dist/core/privy/index.js +18 -0
- package/dist/core/privy/index.js.map +1 -0
- package/dist/core/socket.io/events.d.ts +20 -0
- package/dist/core/socket.io/events.js +20 -0
- package/dist/core/socket.io/events.js.map +1 -0
- package/dist/core/socket.io/index.d.ts +2 -0
- package/dist/core/socket.io/index.js +19 -0
- package/dist/core/socket.io/index.js.map +1 -0
- package/dist/core/socket.io/rooms.d.ts +6 -0
- package/dist/core/socket.io/rooms.js +10 -0
- package/dist/core/socket.io/rooms.js.map +1 -0
- package/dist/core/types/auth/auth.types.d.ts +31 -0
- package/dist/core/types/auth/auth.types.js +15 -0
- package/dist/core/types/auth/auth.types.js.map +1 -0
- package/dist/core/types/auth/index.d.ts +2 -0
- package/dist/core/types/auth/index.js +19 -0
- package/dist/core/types/auth/index.js.map +1 -0
- package/dist/core/types/auth/request.types.d.ts +19 -0
- package/dist/core/types/auth/request.types.js +15 -0
- package/dist/core/types/auth/request.types.js.map +1 -0
- package/dist/core/types/blockchain/chains.types.d.ts +3 -0
- package/dist/core/types/blockchain/chains.types.js +8 -0
- package/dist/core/types/blockchain/chains.types.js.map +1 -0
- package/dist/core/types/blockchain/contract.types.d.ts +8 -0
- package/dist/core/types/blockchain/contract.types.js +13 -0
- package/dist/core/types/blockchain/contract.types.js.map +1 -0
- package/dist/core/types/blockchain/index.d.ts +3 -0
- package/dist/core/types/blockchain/index.js +20 -0
- package/dist/core/types/blockchain/index.js.map +1 -0
- package/dist/core/types/blockchain/oz.relayer.types.d.ts +7 -0
- package/dist/core/types/blockchain/oz.relayer.types.js +13 -0
- package/dist/core/types/blockchain/oz.relayer.types.js.map +1 -0
- package/dist/core/types/index.d.ts +6 -0
- package/dist/core/types/index.js +23 -0
- package/dist/core/types/index.js.map +1 -0
- package/dist/core/types/indexers.types.d.ts +4 -0
- package/dist/core/types/indexers.types.js +9 -0
- package/dist/core/types/indexers.types.js.map +1 -0
- package/dist/core/types/misc.types.d.ts +6 -0
- package/dist/core/types/misc.types.js +11 -0
- package/dist/core/types/misc.types.js.map +1 -0
- package/dist/core/types/oracle/fixture.types.d.ts +75 -0
- package/dist/core/types/oracle/fixture.types.js +4 -0
- package/dist/core/types/oracle/fixture.types.js.map +1 -0
- package/dist/core/types/oracle/game/game.types.d.ts +108 -0
- package/dist/core/types/oracle/game/game.types.js +64 -0
- package/dist/core/types/oracle/game/game.types.js.map +1 -0
- package/dist/core/types/oracle/game/index.d.ts +2 -0
- package/dist/core/types/oracle/game/index.js +19 -0
- package/dist/core/types/oracle/game/index.js.map +1 -0
- package/dist/core/types/oracle/game/zod.game.types.d.ts +31 -0
- package/dist/core/types/oracle/game/zod.game.types.js +22 -0
- package/dist/core/types/oracle/game/zod.game.types.js.map +1 -0
- package/dist/core/types/oracle/index.d.ts +4 -0
- package/dist/core/types/oracle/index.js +21 -0
- package/dist/core/types/oracle/index.js.map +1 -0
- package/dist/core/types/oracle/market/index.d.ts +3 -0
- package/dist/core/types/oracle/market/index.js +20 -0
- package/dist/core/types/oracle/market/index.js.map +1 -0
- package/dist/core/types/oracle/market/markets.types.d.ts +95 -0
- package/dist/core/types/oracle/market/markets.types.js +35 -0
- package/dist/core/types/oracle/market/markets.types.js.map +1 -0
- package/dist/core/types/oracle/market/odds.types.d.ts +14 -0
- package/dist/core/types/oracle/market/odds.types.js +3 -0
- package/dist/core/types/oracle/market/odds.types.js.map +1 -0
- package/dist/core/types/oracle/market/positions.types.d.ts +57 -0
- package/dist/core/types/oracle/market/positions.types.js +3 -0
- package/dist/core/types/oracle/market/positions.types.js.map +1 -0
- package/dist/core/types/oracle/requests/game.request.types.d.ts +170 -0
- package/dist/core/types/oracle/requests/game.request.types.js +126 -0
- package/dist/core/types/oracle/requests/game.request.types.js.map +1 -0
- package/dist/core/types/oracle/requests/game.response.types.d.ts +8 -0
- package/dist/core/types/oracle/requests/game.response.types.js +3 -0
- package/dist/core/types/oracle/requests/game.response.types.js.map +1 -0
- package/dist/core/types/oracle/requests/index.d.ts +5 -0
- package/dist/core/types/oracle/requests/index.js +22 -0
- package/dist/core/types/oracle/requests/index.js.map +1 -0
- package/dist/core/types/oracle/requests/market.request.types.d.ts +63 -0
- package/dist/core/types/oracle/requests/market.request.types.js +41 -0
- package/dist/core/types/oracle/requests/market.request.types.js.map +1 -0
- package/dist/core/types/oracle/requests/odds.response.types.d.ts +2 -0
- package/dist/core/types/oracle/requests/odds.response.types.js +3 -0
- package/dist/core/types/oracle/requests/odds.response.types.js.map +1 -0
- package/dist/core/types/oracle/requests/user.request.type.d.ts +4 -0
- package/dist/core/types/oracle/requests/user.request.type.js +3 -0
- package/dist/core/types/oracle/requests/user.request.type.js.map +1 -0
- package/dist/core/types/privy.types.d.ts +4 -0
- package/dist/core/types/privy.types.js +9 -0
- package/dist/core/types/privy.types.js.map +1 -0
- package/dist/core/utils/converters.utils.d.ts +29 -0
- package/dist/core/utils/converters.utils.js +97 -0
- package/dist/core/utils/converters.utils.js.map +1 -0
- package/dist/core/utils/game.utils.d.ts +4 -0
- package/dist/core/utils/game.utils.js +79 -0
- package/dist/core/utils/game.utils.js.map +1 -0
- package/dist/core/utils/index.d.ts +4 -0
- package/dist/core/utils/index.js +21 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/misc.utils.d.ts +14 -0
- package/dist/core/utils/misc.utils.js +33 -0
- package/dist/core/utils/misc.utils.js.map +1 -0
- package/dist/core/utils/position.utils.d.ts +18 -0
- package/dist/core/utils/position.utils.js +68 -0
- package/dist/core/utils/position.utils.js.map +1 -0
- package/dist/core/validators/bytes.validators.d.ts +32 -0
- package/dist/core/validators/bytes.validators.js +47 -0
- package/dist/core/validators/bytes.validators.js.map +1 -0
- package/dist/core/validators/index.d.ts +2 -0
- package/dist/core/validators/index.js +19 -0
- package/dist/core/validators/index.js.map +1 -0
- package/dist/core/validators/mongo.validators.d.ts +2 -0
- package/dist/core/validators/mongo.validators.js +10 -0
- package/dist/core/validators/mongo.validators.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/auth/index.d.ts +1 -0
- package/dist/react/hooks/auth/index.js +18 -0
- package/dist/react/hooks/auth/index.js.map +1 -0
- package/dist/react/hooks/auth/useAuthHeaders.d.ts +45 -0
- package/dist/react/hooks/auth/useAuthHeaders.js +58 -0
- package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/index.d.ts +6 -0
- package/dist/react/hooks/contracts/erc20/index.js +23 -0
- package/dist/react/hooks/contracts/erc20/index.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.d.ts +13 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.js +28 -0
- package/dist/react/hooks/contracts/erc20/useApproveErc20.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.d.ts +10 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.js +34 -0
- package/dist/react/hooks/contracts/erc20/useErc20Allowance.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.d.ts +22 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.js +95 -0
- package/dist/react/hooks/contracts/erc20/useErc20Balance.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.d.ts +8 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.js +28 -0
- package/dist/react/hooks/contracts/erc20/useErc20Decimals.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.d.ts +8 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.js +28 -0
- package/dist/react/hooks/contracts/erc20/useErc20Symbol.js.map +1 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.d.ts +13 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.js +31 -0
- package/dist/react/hooks/contracts/erc20/useTransferErc20.js.map +1 -0
- package/dist/react/hooks/contracts/index.d.ts +3 -0
- package/dist/react/hooks/contracts/index.js +20 -0
- package/dist/react/hooks/contracts/index.js.map +1 -0
- package/dist/react/hooks/contracts/useContracts.d.ts +120 -0
- package/dist/react/hooks/contracts/useContracts.js +81 -0
- package/dist/react/hooks/contracts/useContracts.js.map +1 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.d.ts +3 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.js +27 -0
- package/dist/react/hooks/contracts/useLevrMarketContractAddresses.js.map +1 -0
- package/dist/react/hooks/index.d.ts +2 -0
- package/dist/react/hooks/index.js +19 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/index.d.ts +6 -0
- package/dist/react/index.js +23 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/injectedDependencies.d.ts +78 -0
- package/dist/react/injectedDependencies.js +94 -0
- package/dist/react/injectedDependencies.js.map +1 -0
- package/dist/react/queryClient.d.ts +9 -0
- package/dist/react/queryClient.js +13 -0
- package/dist/react/queryClient.js.map +1 -0
- package/dist/react/queryKeys.d.ts +17 -0
- package/dist/react/queryKeys.js +23 -0
- package/dist/react/queryKeys.js.map +1 -0
- package/dist/react/types/contracts.types.d.ts +4 -0
- package/dist/react/types/contracts.types.js +3 -0
- package/dist/react/types/contracts.types.js.map +1 -0
- package/dist/react/types/index.d.ts +1 -0
- package/dist/react/types/index.js +18 -0
- package/dist/react/types/index.js.map +1 -0
- package/dist/server/config/cloudflare.d.ts +30 -0
- package/dist/server/config/cloudflare.js +45 -0
- package/dist/server/config/cloudflare.js.map +1 -0
- package/dist/server/config/constants.d.ts +1 -0
- package/dist/server/config/constants.js +7 -0
- package/dist/server/config/constants.js.map +1 -0
- package/dist/server/config/dotenv.d.ts +35 -0
- package/dist/server/config/dotenv.js +42 -0
- package/dist/server/config/dotenv.js.map +1 -0
- package/dist/server/config/index.d.ts +9 -0
- package/dist/server/config/index.js +31 -0
- package/dist/server/config/index.js.map +1 -0
- package/dist/server/config/kms.d.ts +22 -0
- package/dist/server/config/kms.js +54 -0
- package/dist/server/config/kms.js.map +1 -0
- package/dist/server/config/prisma.d.ts +20 -0
- package/dist/server/config/prisma.js +40 -0
- package/dist/server/config/prisma.js.map +1 -0
- package/dist/server/config/redis.d.ts +57 -0
- package/dist/server/config/redis.js +121 -0
- package/dist/server/config/redis.js.map +1 -0
- package/dist/server/config/urls.d.ts +49 -0
- package/dist/server/config/urls.js +7 -0
- package/dist/server/config/urls.js.map +1 -0
- package/dist/server/config/winston.d.ts +3 -0
- package/dist/server/config/winston.js +14 -0
- package/dist/server/config/winston.js.map +1 -0
- package/dist/server/contracts/clients/index.d.ts +1 -0
- package/dist/server/contracts/clients/index.js +18 -0
- package/dist/server/contracts/clients/index.js.map +1 -0
- package/dist/server/contracts/clients/ozRelayerService.d.ts +18 -0
- package/dist/server/contracts/clients/ozRelayerService.js +167 -0
- package/dist/server/contracts/clients/ozRelayerService.js.map +1 -0
- package/dist/server/contracts/index.d.ts +2 -0
- package/dist/server/contracts/index.js +19 -0
- package/dist/server/contracts/index.js.map +1 -0
- package/dist/server/contracts/instances.d.ts +20 -0
- package/dist/server/contracts/instances.js +28 -0
- package/dist/server/contracts/instances.js.map +1 -0
- package/dist/server/index.d.ts +11 -0
- package/dist/server/index.js +36 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/instrumentation.d.ts +9 -0
- package/dist/server/instrumentation.js +37 -0
- package/dist/server/instrumentation.js.map +1 -0
- package/dist/server/liquidation-engine/index.d.ts +3 -0
- package/dist/server/liquidation-engine/index.js +20 -0
- package/dist/server/liquidation-engine/index.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.d.ts +10 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.js +15 -0
- package/dist/server/liquidation-engine/redis.cache.manager/cache.keys.util.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.d.ts +124 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.js +242 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.js.map +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.d.ts +1 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js +115 -0
- package/dist/server/liquidation-engine/redis.cache.manager/prices.set.manager.test.js.map +1 -0
- package/dist/server/liquidation-engine/types/index.d.ts +1 -0
- package/dist/server/liquidation-engine/types/index.js +3 -0
- package/dist/server/liquidation-engine/types/index.js.map +1 -0
- package/dist/server/middleware/auth/cloudflare.handler.d.ts +6 -0
- package/dist/server/middleware/auth/cloudflare.handler.js +37 -0
- package/dist/server/middleware/auth/cloudflare.handler.js.map +1 -0
- package/dist/server/middleware/auth/hmac.handler.d.ts +11 -0
- package/dist/server/middleware/auth/hmac.handler.js +157 -0
- package/dist/server/middleware/auth/hmac.handler.js.map +1 -0
- package/dist/server/middleware/auth/index.d.ts +3 -0
- package/dist/server/middleware/auth/index.js +20 -0
- package/dist/server/middleware/auth/index.js.map +1 -0
- package/dist/server/middleware/auth/privy.handler.d.ts +7 -0
- package/dist/server/middleware/auth/privy.handler.js +31 -0
- package/dist/server/middleware/auth/privy.handler.js.map +1 -0
- package/dist/server/middleware/index.d.ts +2 -0
- package/dist/server/middleware/index.js +19 -0
- package/dist/server/middleware/index.js.map +1 -0
- package/dist/server/middleware/multiAuth.examples.d.ts +46 -0
- package/dist/server/middleware/multiAuth.examples.js +123 -0
- package/dist/server/middleware/multiAuth.examples.js.map +1 -0
- package/dist/server/middleware/multiAuth.middleware.d.ts +30 -0
- package/dist/server/middleware/multiAuth.middleware.js +90 -0
- package/dist/server/middleware/multiAuth.middleware.js.map +1 -0
- package/dist/server/middleware/rateLimit.middleware.d.ts +1 -0
- package/dist/server/middleware/rateLimit.middleware.js +19 -0
- package/dist/server/middleware/rateLimit.middleware.js.map +1 -0
- package/dist/server/oracle/index.d.ts +3 -0
- package/dist/server/oracle/index.js +20 -0
- package/dist/server/oracle/index.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.d.ts +90 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js +147 -0
- package/dist/server/oracle/redis-cache-manager/cache.keys.utils.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/channels.d.ts +2 -0
- package/dist/server/oracle/redis-cache-manager/channels.js +11 -0
- package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.d.ts +184 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js +698 -0
- package/dist/server/oracle/redis-cache-manager/game.cache.service.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/index.d.ts +4 -0
- package/dist/server/oracle/redis-cache-manager/index.js +21 -0
- package/dist/server/oracle/redis-cache-manager/index.js.map +1 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.d.ts +115 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js +279 -0
- package/dist/server/oracle/redis-cache-manager/market.cache.service.js.map +1 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.d.ts +21 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.js +128 -0
- package/dist/server/oracle/rmq-manager/base.queue.manager.js.map +1 -0
- package/dist/server/oracle/rmq-manager/index.d.ts +2 -0
- package/dist/server/oracle/rmq-manager/index.js +19 -0
- package/dist/server/oracle/rmq-manager/index.js.map +1 -0
- package/dist/server/oracle/rmq-manager/queue.configs.d.ts +5 -0
- package/dist/server/oracle/rmq-manager/queue.configs.js +38 -0
- package/dist/server/oracle/rmq-manager/queue.configs.js.map +1 -0
- package/dist/server/oracle/types/index.d.ts +2 -0
- package/dist/server/oracle/types/index.js +19 -0
- package/dist/server/oracle/types/index.js.map +1 -0
- package/dist/server/oracle/types/providers/index.d.ts +4 -0
- package/dist/server/oracle/types/providers/index.js +21 -0
- package/dist/server/oracle/types/providers/index.js.map +1 -0
- package/dist/server/oracle/types/providers/lsports.types.d.ts +148 -0
- package/dist/server/oracle/types/providers/lsports.types.js +13 -0
- package/dist/server/oracle/types/providers/lsports.types.js.map +1 -0
- package/dist/server/oracle/types/providers/optic.odds.types.d.ts +293 -0
- package/dist/server/oracle/types/providers/optic.odds.types.js +140 -0
- package/dist/server/oracle/types/providers/optic.odds.types.js.map +1 -0
- package/dist/server/oracle/types/providers/providers.types.d.ts +5 -0
- package/dist/server/oracle/types/providers/providers.types.js +10 -0
- package/dist/server/oracle/types/providers/providers.types.js.map +1 -0
- package/dist/server/oracle/types/providers/rundown.types.d.ts +194 -0
- package/dist/server/oracle/types/providers/rundown.types.js +22 -0
- package/dist/server/oracle/types/providers/rundown.types.js.map +1 -0
- package/dist/server/oracle/types/queue/index.d.ts +2 -0
- package/dist/server/oracle/types/queue/index.js +19 -0
- package/dist/server/oracle/types/queue/index.js.map +1 -0
- package/dist/server/oracle/types/queue/queue.constant.d.ts +10 -0
- package/dist/server/oracle/types/queue/queue.constant.js +14 -0
- package/dist/server/oracle/types/queue/queue.constant.js.map +1 -0
- package/dist/server/oracle/types/queue/queue.types.d.ts +5 -0
- package/dist/server/oracle/types/queue/queue.types.js +3 -0
- package/dist/server/oracle/types/queue/queue.types.js.map +1 -0
- package/dist/server/prisma/index.d.ts +2 -0
- package/dist/server/prisma/index.js +24 -0
- package/dist/server/prisma/index.js.map +1 -0
- package/dist/server/repositories/apiKey.repository.d.ts +7 -0
- package/dist/server/repositories/apiKey.repository.js +19 -0
- package/dist/server/repositories/apiKey.repository.js.map +1 -0
- package/dist/server/repositories/index.d.ts +1 -0
- package/dist/server/repositories/index.js +18 -0
- package/dist/server/repositories/index.js.map +1 -0
- package/dist/server/services/cloudflare.service.d.ts +12 -0
- package/dist/server/services/cloudflare.service.js +24 -0
- package/dist/server/services/cloudflare.service.js.map +1 -0
- package/dist/server/services/crypto.service.d.ts +17 -0
- package/dist/server/services/crypto.service.js +50 -0
- package/dist/server/services/crypto.service.js.map +1 -0
- package/dist/server/services/hmac.service.d.ts +52 -0
- package/dist/server/services/hmac.service.js +115 -0
- package/dist/server/services/hmac.service.js.map +1 -0
- package/dist/server/services/index.d.ts +5 -0
- package/dist/server/services/index.js +22 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/presigned.urls.d.ts +11 -0
- package/dist/server/services/presigned.urls.js +41 -0
- package/dist/server/services/presigned.urls.js.map +1 -0
- package/dist/server/services/privy.service.d.ts +30 -0
- package/dist/server/services/privy.service.js +122 -0
- package/dist/server/services/privy.service.js.map +1 -0
- package/dist/server/test-relayers.d.ts +1 -0
- package/dist/server/test-relayers.js +17 -0
- package/dist/server/test-relayers.js.map +1 -0
- package/dist/server/types/auth.types.d.ts +8 -0
- package/dist/server/types/auth.types.js +3 -0
- package/dist/server/types/auth.types.js.map +1 -0
- package/dist/server/types/global.types.d.ts +35 -0
- package/dist/server/types/global.types.js +4 -0
- package/dist/server/types/global.types.js.map +1 -0
- package/dist/server/types/index.d.ts +2 -0
- package/dist/server/types/index.js +19 -0
- package/dist/server/types/index.js.map +1 -0
- package/dist/server/utils/express.utils.d.ts +24 -0
- package/dist/server/utils/express.utils.js +36 -0
- package/dist/server/utils/express.utils.js.map +1 -0
- package/dist/server/utils/index.d.ts +2 -0
- package/dist/server/utils/index.js +19 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/tracing/index.d.ts +2 -0
- package/dist/server/utils/tracing/index.js +19 -0
- package/dist/server/utils/tracing/index.js.map +1 -0
- package/dist/server/utils/tracing/trace.d.ts +12 -0
- package/dist/server/utils/tracing/trace.js +50 -0
- package/dist/server/utils/tracing/trace.js.map +1 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.d.ts +126 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.js +202 -0
- package/dist/server/utils/tracing/wrap.module.with.tracing.js.map +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1,18 @@
|
|
|
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("./ozRelayerService"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/contracts/clients/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAkC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { WalletClient } from "viem";
|
|
2
|
+
import { LevrChain, LevrRelayerGroup } from "../../../core";
|
|
3
|
+
declare class OzRelayerService {
|
|
4
|
+
private relayerGroupSizes;
|
|
5
|
+
private lastUsedIndexRedisKey;
|
|
6
|
+
getWalletClient: (chainId: LevrChain, relayerGroup: LevrRelayerGroup) => Promise<WalletClient>;
|
|
7
|
+
private createWalletClient;
|
|
8
|
+
private relayersApi;
|
|
9
|
+
private getRelayer;
|
|
10
|
+
private createRelayerTransport;
|
|
11
|
+
private waitForTxConfirmation;
|
|
12
|
+
private proxyTxToRelayer;
|
|
13
|
+
private getNextIndex;
|
|
14
|
+
private isTxSuccess;
|
|
15
|
+
private isTxFailed;
|
|
16
|
+
}
|
|
17
|
+
declare const _default: OzRelayerService;
|
|
18
|
+
export default _default;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const relayer_sdk_1 = require("@openzeppelin/relayer-sdk");
|
|
13
|
+
const axios_1 = require("axios");
|
|
14
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
15
|
+
const ms_1 = __importDefault(require("ms"));
|
|
16
|
+
const typescript_memoize_1 = require("typescript-memoize");
|
|
17
|
+
const viem_1 = require("viem");
|
|
18
|
+
const core_1 = require("../../../core");
|
|
19
|
+
const config_1 = require("../../config");
|
|
20
|
+
class OzRelayerService {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.relayerGroupSizes = {
|
|
23
|
+
[core_1.LevrRelayerGroup.GAME_ADMIN]: 3,
|
|
24
|
+
[core_1.LevrRelayerGroup.FEED_PROVIDER]: 3,
|
|
25
|
+
[core_1.LevrRelayerGroup.LIQUIDATOR]: 3,
|
|
26
|
+
[core_1.LevrRelayerGroup.MATCH_MAKER]: 3,
|
|
27
|
+
[core_1.LevrRelayerGroup.POSITION_HANDLER]: 3,
|
|
28
|
+
};
|
|
29
|
+
this.lastUsedIndexRedisKey = `oz-relayer-last-used-index`;
|
|
30
|
+
this.getWalletClient = async (chainId, relayerGroup) => {
|
|
31
|
+
const index = await this.getNextIndex(chainId, relayerGroup);
|
|
32
|
+
const relayerId = `${relayerGroup}_${chainId}_${index + 1}`;
|
|
33
|
+
return this.createWalletClient(relayerId, chainId);
|
|
34
|
+
};
|
|
35
|
+
this.createRelayerTransport = (relayer, chainId) => {
|
|
36
|
+
const { waitForTxConfirmation, proxyTxToRelayer } = this;
|
|
37
|
+
return (0, viem_1.custom)({
|
|
38
|
+
async request({ method, params }) {
|
|
39
|
+
config_1.logger.info("Received request:", { method, params, relayerId: relayer.id });
|
|
40
|
+
if (method === "eth_chainId")
|
|
41
|
+
return (0, viem_1.toHex)(chainId);
|
|
42
|
+
if (method === "eth_sendTransaction") {
|
|
43
|
+
const request = params[0];
|
|
44
|
+
if (!request)
|
|
45
|
+
throw new Error("Missing transaction parameters");
|
|
46
|
+
const txId = await proxyTxToRelayer({ request, chainId, relayer });
|
|
47
|
+
return await waitForTxConfirmation(relayer.id, txId);
|
|
48
|
+
}
|
|
49
|
+
config_1.logger.warn(`Unhandled method: ${method} with params:`, params);
|
|
50
|
+
throw new Error(`Method ${method} not implemented in relayer transport`);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
this.waitForTxConfirmation = async (relayerId, txId) => {
|
|
55
|
+
for (let i = 0; i < 20; i++) {
|
|
56
|
+
await new Promise((r) => setTimeout(r, (0, ms_1.default)("5s")));
|
|
57
|
+
config_1.logger.info(`Attempt ${i + 1}: Checking if tx confirmed...`, { relayerId, txId });
|
|
58
|
+
const { data } = await this.relayersApi().getTransactionById(relayerId, txId);
|
|
59
|
+
const tx = data.data;
|
|
60
|
+
if (!tx)
|
|
61
|
+
throw new Error(`Transaction not found for ID ${txId} on relayer ${relayerId}`);
|
|
62
|
+
if (this.isTxFailed(tx.status)) {
|
|
63
|
+
config_1.logger.error("Tx Failed:", tx);
|
|
64
|
+
throw new Error(`Tx failed with status=${tx.status}; txId=${tx.id}`);
|
|
65
|
+
}
|
|
66
|
+
tx;
|
|
67
|
+
if (this.isTxSuccess(tx.status)) {
|
|
68
|
+
if (!tx.hash) {
|
|
69
|
+
config_1.logger.error("Tx Failed:", tx);
|
|
70
|
+
throw new Error(`Tx status=${tx.status} but no hash; txId=${tx.id}`);
|
|
71
|
+
}
|
|
72
|
+
config_1.logger.info(`Transaction confirmed by relayer.`, { relayerId, txId, tx });
|
|
73
|
+
return tx.hash;
|
|
74
|
+
}
|
|
75
|
+
config_1.logger.info(`Transaction still not confirmed...`, { relayerId, txId, tx });
|
|
76
|
+
}
|
|
77
|
+
throw new Error(`Timeout waiting for transaction ${txId} to be confirmed by relayer ${relayerId}`);
|
|
78
|
+
};
|
|
79
|
+
this.proxyTxToRelayer = async ({ request, chainId, relayer }) => {
|
|
80
|
+
config_1.logger.info(`Proxying transaction to relayer.`, { request, chainId, relayer });
|
|
81
|
+
const { data, to } = request;
|
|
82
|
+
try {
|
|
83
|
+
const { data: { data: tx }, } = await this.relayersApi().sendTransaction(relayer.id, {
|
|
84
|
+
data,
|
|
85
|
+
to: to ?? undefined,
|
|
86
|
+
value: 0,
|
|
87
|
+
speed: relayer_sdk_1.Speed.FASTEST,
|
|
88
|
+
valid_until: (0, dayjs_1.default)().add(100, "seconds").toISOString(),
|
|
89
|
+
});
|
|
90
|
+
if (!tx)
|
|
91
|
+
throw new Error(`Failed to send transaction to Relayer ${relayer.id}`);
|
|
92
|
+
config_1.logger.info(`Transaction sent to relayer.`, { request, chainId, relayer, tx });
|
|
93
|
+
return tx.id;
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
if ((0, axios_1.isAxiosError)(e))
|
|
97
|
+
config_1.logger.error("Axios error response data:", e.response?.data);
|
|
98
|
+
throw e;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
this.getNextIndex = async (chainId, relayerGroup) => {
|
|
102
|
+
const hashField = `${chainId}-${relayerGroup}`;
|
|
103
|
+
const groupSize = this.relayerGroupSizes[relayerGroup];
|
|
104
|
+
if (!groupSize)
|
|
105
|
+
throw new Error(`No relayer group size configured for ${relayerGroup}`);
|
|
106
|
+
// Use a Lua script to atomically get and update the index
|
|
107
|
+
const luaScript = `
|
|
108
|
+
local key = KEYS[1]
|
|
109
|
+
local field = ARGV[1]
|
|
110
|
+
local groupSize = tonumber(ARGV[2])
|
|
111
|
+
|
|
112
|
+
local current = redis.call('HGET', key, field)
|
|
113
|
+
if current == false then
|
|
114
|
+
current = 0
|
|
115
|
+
else
|
|
116
|
+
current = tonumber(current)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
local next = (current + 1) % groupSize
|
|
120
|
+
redis.call('HSET', key, field, next)
|
|
121
|
+
|
|
122
|
+
return current
|
|
123
|
+
`;
|
|
124
|
+
const index = (await config_1.redisClientManager.primaryClient.eval(luaScript, 1, this.lastUsedIndexRedisKey, hashField, groupSize.toString()));
|
|
125
|
+
return index;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
async createWalletClient(relayerId, chainId) {
|
|
129
|
+
config_1.logger.info(`Creating wallet client for relayerId=${relayerId} on chainId=${chainId}`);
|
|
130
|
+
const relayer = await this.getRelayer(relayerId);
|
|
131
|
+
return (0, viem_1.createWalletClient)({
|
|
132
|
+
chain: core_1.levrChainIdToChain[chainId],
|
|
133
|
+
transport: this.createRelayerTransport(relayer, chainId),
|
|
134
|
+
account: relayer.address,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
relayersApi() {
|
|
138
|
+
config_1.logger.info(`Creating Relayers API client`);
|
|
139
|
+
const { RELAYER_ACCESS_TOKEN } = core_1.Config.init(config_1.relayerSchema);
|
|
140
|
+
const config = new relayer_sdk_1.Configuration({ basePath: config_1.urls.relayer, accessToken: RELAYER_ACCESS_TOKEN });
|
|
141
|
+
return new relayer_sdk_1.RelayersApi(config);
|
|
142
|
+
}
|
|
143
|
+
async getRelayer(relayerId) {
|
|
144
|
+
const response = await this.relayersApi().getRelayer(relayerId);
|
|
145
|
+
const relayer = response.data.data;
|
|
146
|
+
if (!relayer)
|
|
147
|
+
throw new Error(`Relayer with ID ${relayerId} not found`);
|
|
148
|
+
return relayer;
|
|
149
|
+
}
|
|
150
|
+
isTxSuccess(status) {
|
|
151
|
+
return [relayer_sdk_1.TransactionStatus.CONFIRMED, relayer_sdk_1.TransactionStatus.MINED].includes(status);
|
|
152
|
+
}
|
|
153
|
+
isTxFailed(status) {
|
|
154
|
+
return [relayer_sdk_1.TransactionStatus.CANCELED, relayer_sdk_1.TransactionStatus.FAILED, relayer_sdk_1.TransactionStatus.EXPIRED].includes(status);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
__decorate([
|
|
158
|
+
(0, typescript_memoize_1.Memoize)(core_1.argHash)
|
|
159
|
+
], OzRelayerService.prototype, "createWalletClient", null);
|
|
160
|
+
__decorate([
|
|
161
|
+
(0, typescript_memoize_1.Memoize)()
|
|
162
|
+
], OzRelayerService.prototype, "relayersApi", null);
|
|
163
|
+
__decorate([
|
|
164
|
+
(0, typescript_memoize_1.Memoize)()
|
|
165
|
+
], OzRelayerService.prototype, "getRelayer", null);
|
|
166
|
+
exports.default = new OzRelayerService();
|
|
167
|
+
//# sourceMappingURL=ozRelayerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ozRelayerService.js","sourceRoot":"","sources":["../../../../src/server/contracts/clients/ozRelayerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -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("./clients"), exports);
|
|
18
|
+
__exportStar(require("./instances"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/contracts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,8CAA2B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GetContractReturnType, PublicClient, WalletClient } from "viem";
|
|
2
|
+
import { abis, LevrChain, LevrRelayerGroup, type CustomWalletClient } from "../../core";
|
|
3
|
+
interface ClientOptions {
|
|
4
|
+
relayer?: LevrRelayerGroup;
|
|
5
|
+
walletClient?: WalletClient;
|
|
6
|
+
publicClient?: PublicClient;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Retrieves a Levr contract instance using a relayer if provided.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The contract name, constrained to the keys of the `abis` object.
|
|
12
|
+
* @param contractName - The name of the contract to retrieve.
|
|
13
|
+
* @param chainId - The chain ID where the contract is deployed.
|
|
14
|
+
* @param options - An object containing either a relayer or a wallet client.
|
|
15
|
+
* @param options.relayer - (Optional) The relayer to use for contract interactions.
|
|
16
|
+
* @param options.walletClient - (Optional) The wallet client to use for contract interactions.
|
|
17
|
+
* @returns A promise that resolves to the contract instance typed according to the ABI.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getLevrContractWithRelayer<T extends keyof typeof abis>(contractName: T, chainId: LevrChain, { relayer, publicClient, walletClient }: ClientOptions): Promise<GetContractReturnType<(typeof abis)[T], CustomWalletClient>>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
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.getLevrContractWithRelayer = getLevrContractWithRelayer;
|
|
7
|
+
const core_1 = require("../../core");
|
|
8
|
+
const config_1 = require("../config");
|
|
9
|
+
const ozRelayerService_1 = __importDefault(require("./clients/ozRelayerService"));
|
|
10
|
+
/**
|
|
11
|
+
* Retrieves a Levr contract instance using a relayer if provided.
|
|
12
|
+
*
|
|
13
|
+
* @template T - The contract name, constrained to the keys of the `abis` object.
|
|
14
|
+
* @param contractName - The name of the contract to retrieve.
|
|
15
|
+
* @param chainId - The chain ID where the contract is deployed.
|
|
16
|
+
* @param options - An object containing either a relayer or a wallet client.
|
|
17
|
+
* @param options.relayer - (Optional) The relayer to use for contract interactions.
|
|
18
|
+
* @param options.walletClient - (Optional) The wallet client to use for contract interactions.
|
|
19
|
+
* @returns A promise that resolves to the contract instance typed according to the ABI.
|
|
20
|
+
*/
|
|
21
|
+
async function getLevrContractWithRelayer(contractName, chainId, { relayer, publicClient, walletClient }) {
|
|
22
|
+
if (relayer && !walletClient)
|
|
23
|
+
walletClient = await ozRelayerService_1.default.getWalletClient(chainId, relayer);
|
|
24
|
+
if (!publicClient)
|
|
25
|
+
publicClient = await core_1.publicClientService.getPremiumPubClient(chainId);
|
|
26
|
+
return (0, core_1.getLevrContract)(contractName, chainId, config_1.LEVR_ENV, { publicClient, walletClient });
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../../../src/server/contracts/instances.ts"],"names":[],"mappings":";;;;;AAsBA,gEAQC;AA7BD,qCAA6H;AAC7H,sCAAoC;AACpC,kFAAyD;AAQzD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,0BAA0B,CAC5C,YAAe,EACf,OAAkB,EAClB,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAiB;IAEtD,IAAI,OAAO,IAAI,CAAC,YAAY;QAAE,YAAY,GAAG,MAAM,0BAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrG,IAAI,CAAC,YAAY;QAAE,YAAY,GAAG,MAAM,0BAAmB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACxF,OAAO,IAAA,sBAAe,EAAC,YAAY,EAAE,OAAO,EAAE,iBAAQ,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAA;AAC3F,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "../core";
|
|
2
|
+
export * from "./config";
|
|
3
|
+
export * from "./contracts";
|
|
4
|
+
export * from "./liquidation-engine";
|
|
5
|
+
export * from "./middleware";
|
|
6
|
+
export * from "./oracle";
|
|
7
|
+
export * from "./prisma";
|
|
8
|
+
export * from "./repositories";
|
|
9
|
+
export * from "./services";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
export * from "./utils";
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
// Runtime check to prevent server-only code from running in browser environments
|
|
18
|
+
if (typeof globalThis.window !== "undefined") {
|
|
19
|
+
throw new Error("❌ @levrbet/shared/server cannot be used in browser/React environments.\n" +
|
|
20
|
+
"💡 Use '@levrbet/shared/core' for universal utilities or '@levrbet/shared/react' for React components.\n" +
|
|
21
|
+
"📖 See documentation: https://github.com/LEVR-LABS/levr-shared#package-structure");
|
|
22
|
+
}
|
|
23
|
+
__exportStar(require("../core"), exports);
|
|
24
|
+
__exportStar(require("./config"), exports);
|
|
25
|
+
__exportStar(require("./contracts"), exports);
|
|
26
|
+
__exportStar(require("./liquidation-engine"), exports);
|
|
27
|
+
__exportStar(require("./middleware"), exports);
|
|
28
|
+
__exportStar(require("./oracle"), exports);
|
|
29
|
+
__exportStar(require("./prisma"), exports);
|
|
30
|
+
__exportStar(require("./repositories"), exports);
|
|
31
|
+
__exportStar(require("./services"), exports);
|
|
32
|
+
__exportStar(require("./types"), exports);
|
|
33
|
+
__exportStar(require("./utils"), exports);
|
|
34
|
+
// export { sdk } from "./instrumentation"
|
|
35
|
+
// export { sdk as instrumentation } from "./instrumentation"
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iFAAiF;AACjF,IAAI,OAAQ,UAAkB,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;IACpD,MAAM,IAAI,KAAK,CACX,0EAA0E;QACtE,0GAA0G;QAC1G,kFAAkF,CACzF,CAAA;AACL,CAAC;AAED,0CAAuB;AACvB,2CAAwB;AACxB,8CAA2B;AAC3B,uDAAoC;AACpC,+CAA4B;AAC5B,2CAAwB;AACxB,2CAAwB;AACxB,iDAA8B;AAC9B,6CAA0B;AAC1B,0CAAuB;AACvB,0CAAuB;AAEvB,0CAA0C;AAC1C,6DAA6D"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
2
|
+
export declare const otelEnvConfig: Readonly<{
|
|
3
|
+
OTEL_EXPORTER_OTLP_HEADERS: string;
|
|
4
|
+
OTEL_EXPORTER_OTLP_ENDPOINT: string;
|
|
5
|
+
OTEL_SERVICE_NAME: string;
|
|
6
|
+
OTEL_SERVICE_VERSION: string;
|
|
7
|
+
LEVR_ENV: import("../core").LevrEnv;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const sdk: NodeSDK;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sdk = exports.otelEnvConfig = void 0;
|
|
4
|
+
// instrumentation.ts
|
|
5
|
+
const core_1 = require("../core");
|
|
6
|
+
const auto_instrumentations_node_1 = require("@opentelemetry/auto-instrumentations-node");
|
|
7
|
+
const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
|
|
8
|
+
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
9
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
10
|
+
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
|
|
11
|
+
const sdk_node_1 = require("@opentelemetry/sdk-node");
|
|
12
|
+
const config_1 = require("./config");
|
|
13
|
+
exports.otelEnvConfig = core_1.Config.init(config_1.opentelemetrySchema);
|
|
14
|
+
const headers = Object.fromEntries(exports.otelEnvConfig.OTEL_EXPORTER_OTLP_HEADERS.split(",").map((h) => h.split("=")));
|
|
15
|
+
// @dev for the trace, coralogix is integrated with opentelemetry, via headers
|
|
16
|
+
const traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
|
|
17
|
+
url: exports.otelEnvConfig.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
18
|
+
headers,
|
|
19
|
+
});
|
|
20
|
+
const metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter({
|
|
21
|
+
url: exports.otelEnvConfig.OTEL_EXPORTER_OTLP_ENDPOINT.replace("/v1/traces", "/v1/metrics"),
|
|
22
|
+
headers,
|
|
23
|
+
});
|
|
24
|
+
exports.sdk = new sdk_node_1.NodeSDK({
|
|
25
|
+
resource: (0, resources_1.resourceFromAttributes)({
|
|
26
|
+
"service.name": exports.otelEnvConfig.OTEL_SERVICE_NAME,
|
|
27
|
+
"service.version": exports.otelEnvConfig.OTEL_SERVICE_VERSION,
|
|
28
|
+
}),
|
|
29
|
+
traceExporter,
|
|
30
|
+
metricReader: new sdk_metrics_1.PeriodicExportingMetricReader({
|
|
31
|
+
exporter: metricExporter,
|
|
32
|
+
}),
|
|
33
|
+
instrumentations: [(0, auto_instrumentations_node_1.getNodeAutoInstrumentations)()],
|
|
34
|
+
});
|
|
35
|
+
exports.sdk.start();
|
|
36
|
+
config_1.logger.info("OpenTelemetry instrumentation started");
|
|
37
|
+
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/server/instrumentation.ts"],"names":[],"mappings":";;;AAAA,qBAAqB;AACrB,kCAAgC;AAChC,0FAAuF;AACvF,0FAA8E;AAC9E,sFAA2E;AAC3E,wDAAiE;AACjE,4DAA0E;AAC1E,sDAAiD;AACjD,qCAAsD;AAEzC,QAAA,aAAa,GAAG,aAAM,CAAC,IAAI,CAAC,4BAAmB,CAAC,CAAA;AAE7D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,qBAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAG9G,CAAA;AACD,8EAA8E;AAC9E,MAAM,aAAa,GAAG,IAAI,4CAAiB,CAAC;IACxC,GAAG,EAAE,qBAAa,CAAC,2BAA2B;IAC9C,OAAO;CACV,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,IAAI,+CAAkB,CAAC;IAC1C,GAAG,EAAE,qBAAa,CAAC,2BAA2B,CAAC,OAAO,CAAC,YAAY,EAAE,aAAa,CAAC;IACnF,OAAO;CACV,CAAC,CAAA;AAEW,QAAA,GAAG,GAAG,IAAI,kBAAO,CAAC;IAC3B,QAAQ,EAAE,IAAA,kCAAsB,EAAC;QAC7B,cAAc,EAAE,qBAAa,CAAC,iBAAiB;QAC/C,iBAAiB,EAAE,qBAAa,CAAC,oBAAoB;KACxD,CAAC;IACF,aAAa;IACb,YAAY,EAAE,IAAI,2CAA6B,CAAC;QAC5C,QAAQ,EAAE,cAAc;KAC3B,CAAC;IACF,gBAAgB,EAAE,CAAC,IAAA,wDAA2B,GAAE,CAAC;CACpD,CAAC,CAAA;AAEF,WAAG,CAAC,KAAK,EAAE,CAAA;AAEX,eAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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("./redis.cache.manager/prices.set.manager"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
__exportStar(require("./redis.cache.manager/cache.keys.util"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/liquidation-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2EAAwD;AACxD,0CAAuB;AACvB,wEAAqD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Bytes32 } from "../../../core";
|
|
2
|
+
export declare const PRICE_STREAM_KEY: (gameMarketId: Bytes32) => string;
|
|
3
|
+
export declare const switchOnPriceMarkerLiquidationKey = "liquidation:maker:switch:on";
|
|
4
|
+
export declare const MAKER_DURATION_EXPIRY = 1800;
|
|
5
|
+
export declare const marketsBeingWatched: (count: number) => string;
|
|
6
|
+
export declare const LE_STREAMS_SETS_MAX_COUNT = 1;
|
|
7
|
+
export declare const lastUpdatedStreamSetCountKey = "liquidation:streams:last:updated";
|
|
8
|
+
export declare const LE_CONSUMER_GROUP = "liquidation-consumer-group";
|
|
9
|
+
export declare const STREAM_MAX_LENGTH = 1000;
|
|
10
|
+
export declare const MARKET_TO_SET_ID = "liquidation:marketId:set:index";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MARKET_TO_SET_ID = exports.STREAM_MAX_LENGTH = exports.LE_CONSUMER_GROUP = exports.lastUpdatedStreamSetCountKey = exports.LE_STREAMS_SETS_MAX_COUNT = exports.marketsBeingWatched = exports.MAKER_DURATION_EXPIRY = exports.switchOnPriceMarkerLiquidationKey = exports.PRICE_STREAM_KEY = void 0;
|
|
4
|
+
const PRICE_STREAM_KEY = (gameMarketId) => `liquidation:prices:stream:${gameMarketId}`;
|
|
5
|
+
exports.PRICE_STREAM_KEY = PRICE_STREAM_KEY;
|
|
6
|
+
exports.switchOnPriceMarkerLiquidationKey = "liquidation:maker:switch:on";
|
|
7
|
+
exports.MAKER_DURATION_EXPIRY = 1800; // 30 minutes
|
|
8
|
+
const marketsBeingWatched = (count) => `liquidation:markets:watched:${count}`;
|
|
9
|
+
exports.marketsBeingWatched = marketsBeingWatched;
|
|
10
|
+
exports.LE_STREAMS_SETS_MAX_COUNT = 1; // TODO add env vars
|
|
11
|
+
exports.lastUpdatedStreamSetCountKey = "liquidation:streams:last:updated";
|
|
12
|
+
exports.LE_CONSUMER_GROUP = "liquidation-consumer-group";
|
|
13
|
+
exports.STREAM_MAX_LENGTH = 1000;
|
|
14
|
+
exports.MARKET_TO_SET_ID = `liquidation:marketId:set:index`;
|
|
15
|
+
//# sourceMappingURL=cache.keys.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.keys.util.js","sourceRoot":"","sources":["../../../../src/server/liquidation-engine/redis.cache.manager/cache.keys.util.ts"],"names":[],"mappings":";;;AAEO,MAAM,gBAAgB,GAAG,CAAC,YAAqB,EAAU,EAAE,CAAC,6BAA6B,YAAY,EAAE,CAAA;AAAjG,QAAA,gBAAgB,oBAAiF;AACjG,QAAA,iCAAiC,GAAG,6BAA6B,CAAA;AACjE,QAAA,qBAAqB,GAAG,IAAI,CAAA,CAAC,aAAa;AAChD,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,+BAA+B,KAAK,EAAE,CAAA;AAAvF,QAAA,mBAAmB,uBAAoE;AAEvF,QAAA,yBAAyB,GAAG,CAAC,CAAA,CAAC,oBAAoB;AAClD,QAAA,4BAA4B,GAAG,kCAAkC,CAAA;AACjE,QAAA,iBAAiB,GAAG,4BAA4B,CAAA;AAChD,QAAA,iBAAiB,GAAG,IAAI,CAAA;AACxB,QAAA,gBAAgB,GAAG,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Redis } from "ioredis";
|
|
2
|
+
import { type Bytes32, type Odds } from "../../../core";
|
|
3
|
+
import { type SnapShotReadState } from "../types";
|
|
4
|
+
/**
|
|
5
|
+
* Updates the round-robin assignment of a market's price stream to a Redis set.
|
|
6
|
+
*
|
|
7
|
+
* This function manages the distribution of market price streams across a fixed number of Redis sets,
|
|
8
|
+
* using a round-robin strategy to balance load and ensure even distribution. It performs the following steps atomically:
|
|
9
|
+
* 1. Retrieves the current round-robin index from Redis.
|
|
10
|
+
* 2. Calculates the next index, wrapping around based on `LE_STREAMS_SETS_MAX_COUNT`.
|
|
11
|
+
* 3. Adds the given `marketId` to the corresponding Redis set for the next round.
|
|
12
|
+
* 4. Updates the round-robin index in Redis.
|
|
13
|
+
* 5. Maps the `marketId` to its assigned set index in a Redis hash for quick lookup.
|
|
14
|
+
*
|
|
15
|
+
* All Redis operations are executed in a single pipeline to ensure atomicity and performance.
|
|
16
|
+
*
|
|
17
|
+
* @param redis - The Redis client instance used for executing commands.
|
|
18
|
+
* @param marketId - The unique identifier for the market, represented as a 16-byte value.
|
|
19
|
+
* @returns A promise that resolves when the operation is complete.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* - Assumes that `LE_STREAMS_SETS_MAX_COUNT`, `lastUpdatedStreamSetCountKey`, `marketsBeingWatched`, `PRICE_STREAM_KEY`,
|
|
23
|
+
* and `MARKET_TO_SET_ID` are defined and accessible in the module scope.
|
|
24
|
+
* - Ensures that each market is always assigned to a set, and the mapping is kept up-to-date for efficient retrieval.
|
|
25
|
+
* - Designed for high-throughput environments where market assignments need to be balanced dynamically.
|
|
26
|
+
*/
|
|
27
|
+
export declare const updateStreamSetsRoundRobin: (redis: Redis, marketId: Bytes32) => Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Removes a market's price stream from its associated Redis set and deletes its mapping.
|
|
30
|
+
*
|
|
31
|
+
* This function performs the following steps atomically using a Redis pipeline:
|
|
32
|
+
* 1. Retrieves the set ID associated with the given `marketId` from the `MARKET_TO_SET_ID` hash.
|
|
33
|
+
* 2. If the mapping does not exist, logs a warning and exits.
|
|
34
|
+
* 3. Removes the market's price stream key from the corresponding watched set.
|
|
35
|
+
* 4. Deletes the mapping of `marketId` from the `MARKET_TO_SET_ID` hash.
|
|
36
|
+
* 5. Executes the pipeline and checks for errors, logging and rethrowing if any occur.
|
|
37
|
+
* 6. Logs successful removal of the market from the set.
|
|
38
|
+
*
|
|
39
|
+
* @param redis - The Redis client instance used for executing commands.
|
|
40
|
+
* @param marketId - The unique identifier for the market whose stream should be removed.
|
|
41
|
+
* @returns A promise that resolves when the operation is complete.
|
|
42
|
+
* @throws If any Redis operation in the pipeline fails, the error is logged and rethrown.
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* - Ensures atomicity and consistency by using Redis pipelines.
|
|
46
|
+
* - Designed for use in environments where market-to-set mappings are dynamically managed.
|
|
47
|
+
* - Logging is performed at both warning and error levels for observability.
|
|
48
|
+
*/
|
|
49
|
+
export declare const removeStreamFromSet: (redis: Redis, marketId: Bytes32) => Promise<void>;
|
|
50
|
+
export declare const streamsOfMarketsBeingWatched: (redis: Redis, Id: number) => Promise<string[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Adds an array of price objects to a Redis stream for a specific market.
|
|
53
|
+
*
|
|
54
|
+
* This function ensures the Redis consumer group for the price stream exists,
|
|
55
|
+
* creating it if necessary. It then adds each price to the stream using a pipeline
|
|
56
|
+
* for efficiency, enforcing a maximum stream length. The first entry in the stream
|
|
57
|
+
* is guaranteed to create the stream if it does not exist. If no prices are provided,
|
|
58
|
+
* the function logs and exits early.
|
|
59
|
+
*
|
|
60
|
+
* @param redis - The Redis client instance used for stream operations.
|
|
61
|
+
* @param prices - An array of Odds objects to be added to the stream.
|
|
62
|
+
* @param marketId - The unique identifier for the market, used to derive the stream key.
|
|
63
|
+
*
|
|
64
|
+
* @remarks
|
|
65
|
+
* - The function is idempotent with respect to consumer group creation; it will not throw
|
|
66
|
+
* if the group already exists.
|
|
67
|
+
* - Each price is validated against the OddsSchema before being added.
|
|
68
|
+
* - Uses Redis pipelining for batch efficiency.
|
|
69
|
+
* - Logs the number of prices added for observability.
|
|
70
|
+
*
|
|
71
|
+
* @throws
|
|
72
|
+
* Throws any unexpected errors encountered during consumer group creation or pipeline execution.
|
|
73
|
+
*/
|
|
74
|
+
export declare const addPrices: (redis: Redis, prices: Odds[], marketId: Bytes32) => Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Deletes the price stream associated with a specific market from Redis.
|
|
77
|
+
*
|
|
78
|
+
* This function performs two main operations:
|
|
79
|
+
* 1. Removes the stream reference from the set of active streams for the given market.
|
|
80
|
+
* 2. Deletes the actual Redis key that stores the price stream data for the market.
|
|
81
|
+
*
|
|
82
|
+
* @param redis - An instance of the Redis client used to perform cache operations.
|
|
83
|
+
* @param marketId - The unique identifier (Bytes16) of the market whose price stream should be deleted.
|
|
84
|
+
* @returns A promise that resolves when the stream and its references have been fully removed.
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* - Use this function when a market is being decommissioned or its price stream is no longer required.
|
|
88
|
+
* - Ensure that no other process is concurrently writing to the same stream to avoid race conditions.
|
|
89
|
+
*/
|
|
90
|
+
export declare const deleteStream: (redis: Redis, marketId: Bytes32) => Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Retrieves and aggregates all odds data from a Redis stream for a given market.
|
|
93
|
+
*
|
|
94
|
+
* This function iteratively reads batches of messages from the specified Redis stream,
|
|
95
|
+
* deserializes each message into an `Odds` object, and accumulates the results. It continues
|
|
96
|
+
* fetching until the stream is exhausted or an error occurs. The function also tracks the
|
|
97
|
+
* snapshot state, marking it as `"INCOMPLETE"` if any error is encountered during the read process.
|
|
98
|
+
*
|
|
99
|
+
* @param redis - An instance of the Redis client used to interact with the stream.
|
|
100
|
+
* @param marketId - The unique identifier for the market whose price stream is being read.
|
|
101
|
+
* @returns An object containing:
|
|
102
|
+
* - `odds`: An array of all `Odds` objects retrieved from the stream.
|
|
103
|
+
* - `snapshotState`: The final state of the snapshot read operation, either `"COMPLETE"` or `"INCOMPLETE"`.
|
|
104
|
+
*
|
|
105
|
+
* @remarks
|
|
106
|
+
* - The function reads the stream in batches to optimize memory usage and performance.
|
|
107
|
+
* - If the stream contains no messages, an empty array is returned with a `"COMPLETE"` state.
|
|
108
|
+
* - Errors during stream processing are logged and result in an `"INCOMPLETE"` snapshot state.
|
|
109
|
+
* - The function assumes that the second field in each stream entry contains a JSON-encoded `Odds` object.
|
|
110
|
+
*
|
|
111
|
+
* @throws Never throws; errors are caught internally and reflected in the `snapshotState`.
|
|
112
|
+
*/
|
|
113
|
+
export declare const getStreamData: (redis: Redis, marketId: Bytes32) => Promise<{
|
|
114
|
+
odds: Odds[];
|
|
115
|
+
snapshotState: SnapShotReadState;
|
|
116
|
+
}>;
|
|
117
|
+
/**
|
|
118
|
+
* Sets the change-over active marker in Redis.
|
|
119
|
+
*/
|
|
120
|
+
export declare const setChangeOverActive: (redis: Redis, status: boolean) => Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Checks whether the changeover for active liquidation is enabled in Redis.
|
|
123
|
+
*/
|
|
124
|
+
export declare const checkChangeOverActive: (redis: Redis) => Promise<boolean>;
|