@levrbet/shared 0.2.44 → 0.2.46

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 (133) hide show
  1. package/README.md +45 -46
  2. package/dist/core/contracts/addresses.d.ts +20 -0
  3. package/dist/core/contracts/addresses.js +33 -13
  4. package/dist/core/contracts/addresses.js.map +1 -1
  5. package/dist/core/contracts/instances.d.ts +7 -2
  6. package/dist/core/contracts/instances.js +20 -1
  7. package/dist/core/contracts/instances.js.map +1 -1
  8. package/dist/core/index.d.ts +1 -0
  9. package/dist/core/index.js +1 -0
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/indexers/envio.test.query.d.ts +5 -2
  12. package/dist/core/indexers/envio.test.query.js +8 -3
  13. package/dist/core/indexers/envio.test.query.js.map +1 -1
  14. package/dist/core/indexers/indexers.service.js +32 -12
  15. package/dist/core/indexers/indexers.service.js.map +1 -1
  16. package/dist/core/indexers/subsquid.test.query.d.ts +4 -1
  17. package/dist/core/indexers/subsquid.test.query.js +22 -2
  18. package/dist/core/indexers/subsquid.test.query.js.map +1 -1
  19. package/dist/core/prisma/index.d.ts +1 -1
  20. package/dist/core/prisma/index.js +7 -4
  21. package/dist/core/prisma/index.js.map +1 -1
  22. package/dist/core/socket.io/events.d.ts +20 -0
  23. package/dist/core/socket.io/events.js +20 -0
  24. package/dist/core/socket.io/events.js.map +1 -0
  25. package/dist/core/socket.io/index.d.ts +2 -0
  26. package/dist/{server/prisma → core/socket.io}/index.js +2 -7
  27. package/dist/core/socket.io/index.js.map +1 -0
  28. package/dist/core/socket.io/rooms.d.ts +6 -0
  29. package/dist/core/socket.io/rooms.js +10 -0
  30. package/dist/core/socket.io/rooms.js.map +1 -0
  31. package/dist/core/types/oracle/market/markets.types.d.ts +4 -4
  32. package/dist/core/types/oracle/market/positions.types.d.ts +17 -1
  33. package/dist/core/types/oracle/requests/game.request.types.d.ts +7 -5
  34. package/dist/core/types/oracle/requests/game.request.types.js +6 -4
  35. package/dist/core/types/oracle/requests/game.request.types.js.map +1 -1
  36. package/dist/core/types/oracle/requests/index.d.ts +2 -0
  37. package/dist/core/types/oracle/requests/index.js +2 -0
  38. package/dist/core/types/oracle/requests/index.js.map +1 -1
  39. package/dist/core/types/oracle/requests/odds.response.types.d.ts +2 -0
  40. package/dist/core/types/oracle/requests/odds.response.types.js +3 -0
  41. package/dist/core/types/oracle/requests/odds.response.types.js.map +1 -0
  42. package/dist/core/types/oracle/requests/user.request.type.d.ts +4 -0
  43. package/dist/core/types/oracle/requests/user.request.type.js +3 -0
  44. package/dist/core/types/oracle/requests/user.request.type.js.map +1 -0
  45. package/dist/core/utils/misc.utils.d.ts +6 -0
  46. package/dist/core/utils/misc.utils.js +17 -1
  47. package/dist/core/utils/misc.utils.js.map +1 -1
  48. package/dist/core/validators/bytes.validators.d.ts +4 -3
  49. package/dist/core/validators/bytes.validators.js +4 -4
  50. package/dist/core/validators/bytes.validators.js.map +1 -1
  51. package/dist/react/hooks/auth/useAuthHeaders.js +2 -1
  52. package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -1
  53. package/dist/react/hooks/contracts/erc20/index.d.ts +6 -0
  54. package/dist/react/hooks/contracts/erc20/index.js +23 -0
  55. package/dist/react/hooks/contracts/erc20/index.js.map +1 -0
  56. package/dist/react/hooks/contracts/erc20/useApproveErc20.d.ts +13 -0
  57. package/dist/react/hooks/contracts/erc20/useApproveErc20.js +28 -0
  58. package/dist/react/hooks/contracts/erc20/useApproveErc20.js.map +1 -0
  59. package/dist/react/hooks/contracts/erc20/useErc20Allowance.d.ts +10 -0
  60. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js +34 -0
  61. package/dist/react/hooks/contracts/erc20/useErc20Allowance.js.map +1 -0
  62. package/dist/react/hooks/contracts/erc20/useErc20Balance.d.ts +22 -0
  63. package/dist/react/hooks/contracts/erc20/useErc20Balance.js +95 -0
  64. package/dist/react/hooks/contracts/erc20/useErc20Balance.js.map +1 -0
  65. package/dist/react/hooks/contracts/erc20/useErc20Decimals.d.ts +8 -0
  66. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js +28 -0
  67. package/dist/react/hooks/contracts/erc20/useErc20Decimals.js.map +1 -0
  68. package/dist/react/hooks/contracts/erc20/useErc20Symbol.d.ts +8 -0
  69. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js +28 -0
  70. package/dist/react/hooks/contracts/erc20/useErc20Symbol.js.map +1 -0
  71. package/dist/react/hooks/contracts/erc20/useTransferErc20.d.ts +13 -0
  72. package/dist/react/hooks/contracts/erc20/useTransferErc20.js +31 -0
  73. package/dist/react/hooks/contracts/erc20/useTransferErc20.js.map +1 -0
  74. package/dist/react/hooks/contracts/index.d.ts +1 -0
  75. package/dist/react/hooks/contracts/index.js +1 -0
  76. package/dist/react/hooks/contracts/index.js.map +1 -1
  77. package/dist/react/hooks/contracts/useContracts.d.ts +7 -1
  78. package/dist/react/hooks/contracts/useContracts.js +24 -2
  79. package/dist/react/hooks/contracts/useContracts.js.map +1 -1
  80. package/dist/react/index.d.ts +1 -0
  81. package/dist/react/index.js +1 -0
  82. package/dist/react/index.js.map +1 -1
  83. package/dist/react/injectedDependencies.d.ts +4 -3
  84. package/dist/react/injectedDependencies.js +2 -1
  85. package/dist/react/injectedDependencies.js.map +1 -1
  86. package/dist/react/queryKeys.d.ts +17 -0
  87. package/dist/react/queryKeys.js +23 -0
  88. package/dist/react/queryKeys.js.map +1 -0
  89. package/dist/server/config/redis.d.ts +1 -1
  90. package/dist/server/config/redis.js +9 -3
  91. package/dist/server/config/redis.js.map +1 -1
  92. package/dist/server/index.d.ts +0 -1
  93. package/dist/server/index.js +0 -1
  94. package/dist/server/index.js.map +1 -1
  95. package/dist/server/oracle/redis-cache-manager/channels.d.ts +1 -5
  96. package/dist/server/oracle/redis-cache-manager/channels.js +5 -14
  97. package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -1
  98. package/dist/server/services/index.d.ts +1 -0
  99. package/dist/server/services/index.js +1 -0
  100. package/dist/server/services/index.js.map +1 -1
  101. package/dist/server/services/presigned.urls.d.ts +11 -0
  102. package/dist/server/services/presigned.urls.js +41 -0
  103. package/dist/server/services/presigned.urls.js.map +1 -0
  104. package/package.json +15 -7
  105. package/{dist/core/prisma/generated → prisma}/schema.prisma +16 -12
  106. package/scripts/setup-prisma.js +98 -0
  107. package/dist/core/prisma/generated/client.d.ts +0 -1
  108. package/dist/core/prisma/generated/client.js +0 -4
  109. package/dist/core/prisma/generated/default.d.ts +0 -1
  110. package/dist/core/prisma/generated/default.js +0 -4
  111. package/dist/core/prisma/generated/edge.d.ts +0 -1
  112. package/dist/core/prisma/generated/edge.js +0 -540
  113. package/dist/core/prisma/generated/index-browser.js +0 -523
  114. package/dist/core/prisma/generated/index.d.ts +0 -31059
  115. package/dist/core/prisma/generated/index.js +0 -565
  116. package/dist/core/prisma/generated/libquery_engine-darwin-arm64.dylib.node +0 -0
  117. package/dist/core/prisma/generated/libquery_engine-linux-musl-openssl-3.0.x.so.node +0 -0
  118. package/dist/core/prisma/generated/package.json +0 -183
  119. package/dist/core/prisma/generated/runtime/edge-esm.js +0 -34
  120. package/dist/core/prisma/generated/runtime/edge.js +0 -34
  121. package/dist/core/prisma/generated/runtime/index-browser.d.ts +0 -370
  122. package/dist/core/prisma/generated/runtime/index-browser.js +0 -16
  123. package/dist/core/prisma/generated/runtime/library.d.ts +0 -3982
  124. package/dist/core/prisma/generated/runtime/library.js +0 -146
  125. package/dist/core/prisma/generated/runtime/react-native.js +0 -83
  126. package/dist/core/prisma/generated/runtime/wasm-compiler-edge.js +0 -84
  127. package/dist/core/prisma/generated/runtime/wasm-engine-edge.js +0 -36
  128. package/dist/core/prisma/generated/wasm-edge-light-loader.mjs +0 -4
  129. package/dist/core/prisma/generated/wasm-worker-loader.mjs +0 -4
  130. package/dist/core/prisma/generated/wasm.d.ts +0 -1
  131. package/dist/core/prisma/generated/wasm.js +0 -547
  132. package/dist/server/prisma/index.d.ts +0 -2
  133. package/dist/server/prisma/index.js.map +0 -1
package/README.md CHANGED
@@ -5,15 +5,43 @@ Shared utilities, components, and types for the LEVR platform.
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @levrbet/shared
8
+ npm install @levrbet/shared @prisma/client prisma
9
9
  ```
10
10
 
11
+ ## Prisma Setup
12
+
13
+ This package includes a Prisma schema. After installation, run the setup script to generate the Prisma client:
14
+
15
+ ```bash
16
+ npx levrbet-prisma-setup
17
+ ```
18
+
19
+ Or add it to your `postinstall` script in `package.json`:
20
+
21
+ ```json
22
+ {
23
+ "scripts": {
24
+ "postinstall": "levrbet-prisma-setup"
25
+ }
26
+ }
27
+ ```
28
+
29
+ This will:
30
+
31
+ 1. Copy the Prisma schema to your project's `prisma/` folder
32
+ 2. Generate the `@prisma/client` in your `node_modules`
33
+
11
34
  ## Usage
12
35
 
13
36
  ```typescript
14
37
  // Core utilities (universal - works in both browser and Node.js)
15
38
  import { e18, LevrBaseMarket } from "@levrbet/shared/core"
16
39
 
40
+ // Prisma types and client (requires running prisma setup first)
41
+ import { PrismaClient, GamePhase, MarketStatus } from "@levrbet/shared/core"
42
+ // Or directly from @prisma/client
43
+ import { PrismaClient, GamePhase } from "@prisma/client"
44
+
17
45
  // Server-only utilities
18
46
  import { authMiddleWare, validateApiKey } from "@levrbet/shared/server"
19
47
 
@@ -23,68 +51,39 @@ import { useAuth } from "@levrbet/shared/react"
23
51
 
24
52
  ## Package Structure
25
53
 
26
- - **`/core`** - Blockchain contracts, types, and universal utilities
27
- - **`/server`** - Node.js server utilities (auth, database, logging, middleware)
28
- - **`/react`** - React components and hooks
29
-
30
- ## Module Formats
31
-
32
- This package provides **dual builds** for maximum compatibility:
54
+ - **`/core`** - Blockchain contracts, types, Prisma re-exports, and universal utilities
55
+ - **`/server`** - Node.js server utilities (auth, database, logging, middleware)
56
+ - **`/react`** - React components and hooks
33
57
 
34
- - **ESM** (`dist/esm/`) - For React/Vite consumers (preserves React context)
35
- - **CommonJS** (`dist/cjs/`) - For Node.js servers
58
+ ## Peer Dependencies
36
59
 
37
- Both formats are automatically selected based on how you import:
60
+ This package requires the following peer dependencies:
38
61
 
39
- ```javascript
40
- // ESM (React/Vite)
41
- import { e18 } from "@levrbet/shared/core"
42
-
43
- // CommonJS (Node.js servers)
44
- const { e18 } = require("@levrbet/shared/core")
45
- ```
46
-
47
- ### TypeScript Configuration
48
-
49
- **React/Vite consumers** - Use bundler resolution:
50
-
51
- ```json
52
- {
53
- "compilerOptions": {
54
- "moduleResolution": "bundler"
55
- }
56
- }
57
- ```
58
-
59
- **Node.js servers** - Use classic resolution:
60
-
61
- ```json
62
- {
63
- "compilerOptions": {
64
- "module": "CommonJS",
65
- "moduleResolution": "node",
66
- "esModuleInterop": true
67
- }
68
- }
69
- ```
62
+ | Package | Required For |
63
+ | ----------------------- | ---------------------------- |
64
+ | `@prisma/client` | Database types and client |
65
+ | `prisma` | Generating the Prisma client |
66
+ | `react` | React hooks (optional) |
67
+ | `@tanstack/react-query` | React query hooks (optional) |
68
+ | `@privy-io/react-auth` | Privy auth hooks (optional) |
70
69
 
71
70
  ## Development
72
71
 
73
72
  ```bash
74
73
  npm install # Install dependencies
75
74
  npm run build # Build package
76
- npm run watch # Watch mode
75
+ npm run dev # Build and pack for local testing
77
76
  ```
78
77
 
79
78
  ### Local Testing
80
79
 
81
80
  ```bash
82
81
  # In this package
83
- npm run dev
84
- npm link
82
+ npm run dev # Creates a .tgz file
85
83
 
86
84
  # In consumer project
87
- npm link @levrbet/shared
85
+ npm install /path/to/levr-shared/*.tgz
86
+ npx levrbet-prisma-setup
88
87
  ```
89
88
 
90
89
  ## License
@@ -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":"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"}
@@ -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"}
@@ -1 +1 @@
1
- export * from "./generated";
1
+ export * from "@prisma/client";
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
- // Core exports Prisma types and enums for browser/React consumers
3
- // The ESM build uses a custom generated wrapper (pure ESM enums)
4
- // The CJS build (server) gets the full client
2
+ // Re-export everything from the Prisma client
3
+ // This allows consumers to import from "@levrbet/shared/core" instead of "@prisma/client"
4
+ //
5
+ // Note: Consumers must run `levrbet-setup-prisma` (postinstall) to generate the Prisma client
6
+ // PrismaClient requires Node.js runtime and won't work in browsers.
7
+ // Browser/React consumers should only use types and enums.
5
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
9
  if (k2 === undefined) k2 = k;
7
10
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -17,5 +20,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
20
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
21
  };
19
22
  Object.defineProperty(exports, "__esModule", { value: true });
20
- __exportStar(require("./generated"), exports);
23
+ __exportStar(require("@prisma/client"), exports);
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/prisma/index.ts"],"names":[],"mappings":";AAAA,kEAAkE;AAClE,iEAAiE;AACjE,8CAA8C;;;;;;;;;;;;;;;;AAE9C,8CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/prisma/index.ts"],"names":[],"mappings":";AAAA,8CAA8C;AAC9C,0FAA0F;AAC1F,EAAE;AACF,8FAA8F;AAC9F,oEAAoE;AACpE,2DAA2D;;;;;;;;;;;;;;;;AAE3D,iDAA8B"}
@@ -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";
@@ -14,11 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PrismaClient = exports.Prisma = void 0;
18
- // Server exports the full Prisma Client for database operations
19
- var generated_1 = require("../../core/prisma/generated");
20
- Object.defineProperty(exports, "Prisma", { enumerable: true, get: function () { return generated_1.Prisma; } });
21
- Object.defineProperty(exports, "PrismaClient", { enumerable: true, get: function () { return generated_1.PrismaClient; } });
22
- // Re-export all types and enums from core
23
- __exportStar(require("../../core/prisma"), exports);
17
+ __exportStar(require("./events"), exports);
18
+ __exportStar(require("./rooms"), exports);
24
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 {};