@levrbet/shared 0.2.43 → 0.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/contracts/addresses.d.ts +20 -0
- package/dist/core/contracts/addresses.js +33 -13
- package/dist/core/contracts/addresses.js.map +1 -1
- package/dist/core/contracts/instances.d.ts +7 -2
- package/dist/core/contracts/instances.js +20 -1
- package/dist/core/contracts/instances.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/indexers/envio.test.query.d.ts +5 -2
- package/dist/core/indexers/envio.test.query.js +8 -3
- package/dist/core/indexers/envio.test.query.js.map +1 -1
- package/dist/core/indexers/indexers.service.js +32 -12
- package/dist/core/indexers/indexers.service.js.map +1 -1
- package/dist/core/indexers/subsquid.test.query.d.ts +4 -1
- package/dist/core/indexers/subsquid.test.query.js +22 -2
- package/dist/core/indexers/subsquid.test.query.js.map +1 -1
- 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/oracle/market/markets.types.d.ts +4 -4
- package/dist/core/types/oracle/market/positions.types.d.ts +17 -1
- package/dist/core/types/oracle/requests/game.request.types.d.ts +7 -5
- package/dist/core/types/oracle/requests/game.request.types.js +6 -4
- package/dist/core/types/oracle/requests/game.request.types.js.map +1 -1
- package/dist/core/types/oracle/requests/index.d.ts +2 -0
- package/dist/core/types/oracle/requests/index.js +2 -0
- package/dist/core/types/oracle/requests/index.js.map +1 -1
- 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/utils/misc.utils.d.ts +6 -0
- package/dist/core/utils/misc.utils.js +17 -1
- package/dist/core/utils/misc.utils.js.map +1 -1
- package/dist/core/validators/bytes.validators.d.ts +4 -3
- package/dist/core/validators/bytes.validators.js +4 -4
- package/dist/core/validators/bytes.validators.js.map +1 -1
- package/dist/react/hooks/auth/useAuthHeaders.js +2 -1
- package/dist/react/hooks/auth/useAuthHeaders.js.map +1 -1
- 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 +1 -0
- package/dist/react/hooks/contracts/index.js +1 -0
- package/dist/react/hooks/contracts/index.js.map +1 -1
- package/dist/react/hooks/contracts/useContracts.d.ts +7 -1
- package/dist/react/hooks/contracts/useContracts.js +24 -2
- package/dist/react/hooks/contracts/useContracts.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/injectedDependencies.d.ts +4 -3
- package/dist/react/injectedDependencies.js +2 -1
- package/dist/react/injectedDependencies.js.map +1 -1
- 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/server/config/redis.d.ts +1 -1
- package/dist/server/config/redis.js +9 -3
- package/dist/server/config/redis.js.map +1 -1
- package/dist/server/oracle/redis-cache-manager/channels.d.ts +1 -5
- package/dist/server/oracle/redis-cache-manager/channels.js +5 -14
- package/dist/server/oracle/redis-cache-manager/channels.js.map +1 -1
- package/dist/server/services/index.d.ts +1 -0
- package/dist/server/services/index.js +1 -0
- package/dist/server/services/index.js.map +1 -1
- 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/package.json +9 -6
- package/dist/core/prisma/generated/client.d.ts +0 -1
- package/dist/core/prisma/generated/client.js +0 -4
- package/dist/core/prisma/generated/default.d.ts +0 -1
- package/dist/core/prisma/generated/default.js +0 -4
- package/dist/core/prisma/generated/edge.d.ts +0 -1
- package/dist/core/prisma/generated/edge.js +0 -536
- package/dist/core/prisma/generated/index-browser.js +0 -523
- package/dist/core/prisma/generated/index.d.ts +0 -31059
- package/dist/core/prisma/generated/index.js +0 -557
- package/dist/core/prisma/generated/libquery_engine-linux-musl-openssl-3.0.x.so.node +0 -0
- package/dist/core/prisma/generated/package.json +0 -183
- package/dist/core/prisma/generated/runtime/edge-esm.js +0 -34
- package/dist/core/prisma/generated/runtime/edge.js +0 -34
- package/dist/core/prisma/generated/runtime/index-browser.d.ts +0 -370
- package/dist/core/prisma/generated/runtime/index-browser.js +0 -16
- package/dist/core/prisma/generated/runtime/library.d.ts +0 -3982
- package/dist/core/prisma/generated/runtime/library.js +0 -146
- package/dist/core/prisma/generated/runtime/react-native.js +0 -83
- package/dist/core/prisma/generated/runtime/wasm-compiler-edge.js +0 -84
- package/dist/core/prisma/generated/runtime/wasm-engine-edge.js +0 -36
- package/dist/core/prisma/generated/schema.prisma +0 -460
- package/dist/core/prisma/generated/wasm-edge-light-loader.mjs +0 -4
- package/dist/core/prisma/generated/wasm-worker-loader.mjs +0 -4
- package/dist/core/prisma/generated/wasm.d.ts +0 -1
- package/dist/core/prisma/generated/wasm.js +0 -543
|
@@ -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
|
-
|
|
105
|
+
local: {
|
|
106
106
|
[types_1.LevrChain.MONAD_TESTNET]: {
|
|
107
|
-
[constants_1.LevrMarketId.FULL_TIME_WINNER]:
|
|
108
|
-
[constants_1.LevrMarketId.OVER_UNDER]:
|
|
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
|
-
|
|
111
|
+
dev: {
|
|
112
112
|
[types_1.LevrChain.MONAD_TESTNET]: {
|
|
113
|
-
[constants_1.LevrMarketId.FULL_TIME_WINNER]:
|
|
114
|
-
[constants_1.LevrMarketId.OVER_UNDER]:
|
|
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
|
-
|
|
117
|
+
staging: {
|
|
118
118
|
[types_1.LevrChain.MONAD_TESTNET]: {
|
|
119
|
-
[constants_1.LevrMarketId.FULL_TIME_WINNER]:
|
|
120
|
-
[constants_1.LevrMarketId.OVER_UNDER]:
|
|
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
|
-
|
|
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]: "
|
|
126
|
-
[constants_1.LevrMarketId.OVER_UNDER]: "
|
|
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":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../src/core/contracts/addresses.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,2CAA0C;AAE7B,QAAA,qBAAqB,GAAG;IACjC,KAAK,EAAE;QACH,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,kBAAkB,EAAE,4CAA4C;YAChE,iBAAiB,EAAE,4CAA4C;YAC/D,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,4CAA4C;YAC1D,YAAY,EAAE,4CAA4C;YAC1D,WAAW,EAAE,4CAA4C;YACzD,cAAc,EAAE,4CAA4C;YAC5D,qBAAqB,EAAE,4CAA4C;YACnE,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,gBAAgB,EAAE,4CAA4C;YAC9D,sBAAsB,EAAE,4CAA4C;YACpE,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,iBAAiB,EAAE,4CAA4C;YAC/D,kBAAkB,EAAE,4CAA4C;YAChE,mBAAmB,EAAE,4CAA4C;YACjE,QAAQ,EAAE,4CAA4C;YACtD,SAAS,EAAE,4CAA4C,EAAE,iBAAiB;SAC7E;KACJ;IACD,GAAG,EAAE;QACD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,kBAAkB,EAAE,4CAA4C;YAChE,iBAAiB,EAAE,4CAA4C;YAC/D,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,4CAA4C;YAC1D,YAAY,EAAE,4CAA4C;YAC1D,WAAW,EAAE,4CAA4C;YACzD,cAAc,EAAE,4CAA4C;YAC5D,qBAAqB,EAAE,4CAA4C;YACnE,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,gBAAgB,EAAE,4CAA4C;YAC9D,sBAAsB,EAAE,4CAA4C;YACpE,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,iBAAiB,EAAE,4CAA4C;YAC/D,kBAAkB,EAAE,4CAA4C;YAChE,mBAAmB,EAAE,4CAA4C;YACjE,QAAQ,EAAE,4CAA4C;YACtD,SAAS,EAAE,4CAA4C,EAAE,iBAAiB;SAC7E;KACJ;IACD,OAAO,EAAE;QACL,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,kBAAkB,EAAE,4CAA4C;YAChE,iBAAiB,EAAE,4CAA4C;YAC/D,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,4CAA4C;YAC1D,YAAY,EAAE,4CAA4C;YAC1D,WAAW,EAAE,4CAA4C;YACzD,cAAc,EAAE,4CAA4C;YAC5D,qBAAqB,EAAE,4CAA4C;YACnE,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,gBAAgB,EAAE,4CAA4C;YAC9D,sBAAsB,EAAE,4CAA4C;YACpE,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,iBAAiB,EAAE,4CAA4C;YAC/D,kBAAkB,EAAE,4CAA4C;YAChE,mBAAmB,EAAE,4CAA4C;YACjE,QAAQ,EAAE,4CAA4C;YACtD,SAAS,EAAE,4CAA4C,EAAE,iBAAiB;SAC7E;KACJ;IACD,IAAI,EAAE;QACF,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,kBAAkB,EAAE,4CAA4C;YAChE,iBAAiB,EAAE,4CAA4C;YAC/D,aAAa,EAAE,4CAA4C;YAC3D,YAAY,EAAE,4CAA4C;YAC1D,YAAY,EAAE,4CAA4C;YAC1D,WAAW,EAAE,4CAA4C;YACzD,cAAc,EAAE,4CAA4C;YAC5D,qBAAqB,EAAE,4CAA4C;YACnE,gBAAgB,EAAE,4CAA4C;YAC9D,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,gBAAgB,EAAE,4CAA4C;YAC9D,sBAAsB,EAAE,4CAA4C;YACpE,eAAe,EAAE,4CAA4C;YAC7D,aAAa,EAAE,4CAA4C;YAC3D,iBAAiB,EAAE,4CAA4C;YAC/D,kBAAkB,EAAE,4CAA4C;YAChE,mBAAmB,EAAE,4CAA4C;YACjE,QAAQ,EAAE,4CAA4C;YACtD,SAAS,EAAE,4CAA4C,EAAE,iBAAiB;SAC7E;KACJ;CACK,CAAA;AAEG,QAAA,mBAAmB,GAAG;IAC/B,KAAK,EAAE;QACH,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,6BAAqB,CAAC,KAAK,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,kBAAkB;YACxG,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,6BAAqB,CAAC,KAAK,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,mBAAmB;SACtG;KACJ;IACD,GAAG,EAAE;QACD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,6BAAqB,CAAC,GAAG,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,kBAAkB;YACtG,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,6BAAqB,CAAC,GAAG,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,mBAAmB;SACpG;KACJ;IACD,OAAO,EAAE;QACL,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,6BAAqB,CAAC,OAAO,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,kBAAkB;YAC1G,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,6BAAqB,CAAC,OAAO,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,mBAAmB;SACxG;KACJ;IACD,IAAI,EAAE;QACF,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,6BAAqB,CAAC,IAAI,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,kBAAkB;YACvG,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,6BAAqB,CAAC,IAAI,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,mBAAmB;SACrG;KACJ;CACK,CAAA;AAEG,QAAA,uBAAuB,GAAG;IACnC,KAAK,EAAE;QACH,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,6BAAqB,CAAC,KAAK,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,kBAAkB;YACxG,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,6BAAqB,CAAC,KAAK,CAAC,iBAAS,CAAC,aAAa,CAAC,CAAC,mBAAmB;SACtG;KACJ;IACD,GAAG,EAAE;QACD,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,4CAA4C;YAC7E,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,4CAA4C;SAC1E;KACJ;IACD,IAAI,EAAE;QACF,CAAC,iBAAS,CAAC,aAAa,CAAC,EAAE;YACvB,CAAC,wBAAY,CAAC,gBAAgB,CAAC,EAAE,4CAA4C;YAC7E,CAAC,wBAAY,CAAC,UAAU,CAAC,EAAE,4CAA4C;SAC1E;KACJ;CACK,CAAA"}
|
|
@@ -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;
|
|
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"}
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.js
CHANGED
|
@@ -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);
|
package/dist/core/index.js.map
CHANGED
|
@@ -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
|
|
2
|
-
export declare function checkEnvioGraphQlHealth(url: string, variables?: Record<string, any>, signal?: AbortSignal): Promise<
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 ===
|
|
37
|
-
|
|
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
|
-
|
|
41
|
+
server_1.logger.error(`Health check failed for ${url}:`, error);
|
|
41
42
|
}
|
|
42
|
-
return
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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,
|
|
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<
|
|
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
|
-
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"subsquid.test.query.js","sourceRoot":"","sources":["../../../src/core/indexers/subsquid.test.query.ts"],"names":[],"mappings":";;AAWA,gEAgCC;AA3CD,yCAAqC;AAErC,MAAM,kBAAkB,GAAG;;;;;;;CAO1B,CAAA;AAEM,KAAK,UAAU,0BAA0B,CAAC,GAAW,EAAE,SAA+B,EAAE,MAAoB;IAC/G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC9B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACjB,KAAK,EAAE,kBAAkB;YACzB,SAAS;SACZ,CAAC;QACF,MAAM;KACT,CAAC,CAAA;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IAEzH,MAAM,MAAM,GAAG,CAAC,EAAO,EAAiB,EAAE;QACtC,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAC3B,kCAAkC;QAClC,MAAM,GAAG,GAAG,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,kFAAkF;YAClF,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;QACD,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClE,CAAC,CAAA;IAED,eAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAE9F,OAAO;QACH,EAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,IAAI;QACxB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;KAC3B,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GamePhase, Odds, Scores } from "../prisma";
|
|
2
|
+
import { LevrFixtureId } from "../types";
|
|
3
|
+
export declare enum RoomEvent {
|
|
4
|
+
JoinRoom = "joinRoom",
|
|
5
|
+
LeaveRoom = "leaveRoom"
|
|
6
|
+
}
|
|
7
|
+
export declare enum GameEvent {
|
|
8
|
+
ScoreUpdate = "gameScoreUpdate",
|
|
9
|
+
PhaseUpdate = "gamePhaseUpdate"
|
|
10
|
+
}
|
|
11
|
+
export type GameScoreUpdate = Scores;
|
|
12
|
+
export type GamePhaseUpdate = {
|
|
13
|
+
chainId: number;
|
|
14
|
+
levrFixtureId: LevrFixtureId;
|
|
15
|
+
phase: GamePhase;
|
|
16
|
+
};
|
|
17
|
+
export declare enum MarketEvent {
|
|
18
|
+
OddsUpdate = "marketOddsUpdate"
|
|
19
|
+
}
|
|
20
|
+
export type MarketOddsUpdate = Odds;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MarketEvent = exports.GameEvent = exports.RoomEvent = void 0;
|
|
4
|
+
var RoomEvent;
|
|
5
|
+
(function (RoomEvent) {
|
|
6
|
+
RoomEvent["JoinRoom"] = "joinRoom";
|
|
7
|
+
RoomEvent["LeaveRoom"] = "leaveRoom";
|
|
8
|
+
})(RoomEvent || (exports.RoomEvent = RoomEvent = {}));
|
|
9
|
+
// GAME EVENTS AND TYPES
|
|
10
|
+
var GameEvent;
|
|
11
|
+
(function (GameEvent) {
|
|
12
|
+
GameEvent["ScoreUpdate"] = "gameScoreUpdate";
|
|
13
|
+
GameEvent["PhaseUpdate"] = "gamePhaseUpdate";
|
|
14
|
+
})(GameEvent || (exports.GameEvent = GameEvent = {}));
|
|
15
|
+
// MARKET EVENTS AND TYPES
|
|
16
|
+
var MarketEvent;
|
|
17
|
+
(function (MarketEvent) {
|
|
18
|
+
MarketEvent["OddsUpdate"] = "marketOddsUpdate";
|
|
19
|
+
})(MarketEvent || (exports.MarketEvent = MarketEvent = {}));
|
|
20
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/core/socket.io/events.ts"],"names":[],"mappings":";;;AAGA,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,kCAAqB,CAAA;IACrB,oCAAuB,CAAA;AAC3B,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAED,wBAAwB;AACxB,IAAY,SAGX;AAHD,WAAY,SAAS;IACjB,4CAA+B,CAAA;IAC/B,4CAA+B,CAAA;AACnC,CAAC,EAHW,SAAS,yBAAT,SAAS,QAGpB;AAQD,0BAA0B;AAC1B,IAAY,WAEX;AAFD,WAAY,WAAW;IACnB,8CAA+B,CAAA;AACnC,CAAC,EAFW,WAAW,2BAAX,WAAW,QAEtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./events"), exports);
|
|
18
|
+
__exportStar(require("./rooms"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/socket.io/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,0CAAuB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.socketRooms = void 0;
|
|
4
|
+
class SocketRooms {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.gameOddsRoom = (chainId, fixture) => `gameOdds:chainId=${chainId}:fixtureId=${fixture}`;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.socketRooms = new SocketRooms();
|
|
10
|
+
//# sourceMappingURL=rooms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rooms.js","sourceRoot":"","sources":["../../../src/core/socket.io/rooms.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW;IAAjB;QACI,iBAAY,GAAG,CAAC,OAAe,EAAE,OAAsB,EAAU,EAAE,CAAC,oBAAoB,OAAO,cAAc,OAAO,EAAE,CAAA;IAC1H,CAAC;CAAA;AAEY,QAAA,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GamePhase, MarketStatus, MarketTypes, Prisma } from "../../../../core/prisma";
|
|
2
2
|
import { LevrMarketId } from "../../../contracts";
|
|
3
|
-
import {
|
|
3
|
+
import { Bytes32, Bytes10 } from "../../../validators";
|
|
4
4
|
import { LevrChain } from "../../blockchain";
|
|
5
5
|
import { type OddsData, type PriceData } from "./odds.types";
|
|
6
6
|
export type MarketWithRelations = Prisma.MarketGetPayload<{
|
|
@@ -20,7 +20,7 @@ export interface MarketPriceBroadcast {
|
|
|
20
20
|
gamePhase: GamePhase;
|
|
21
21
|
gamePeriod: number;
|
|
22
22
|
gameClock: number;
|
|
23
|
-
gameMarketId:
|
|
23
|
+
gameMarketId: LevrGameMarketId;
|
|
24
24
|
nFactor: number;
|
|
25
25
|
providerObjectId: string;
|
|
26
26
|
levrGameObjectId: string;
|
|
@@ -94,5 +94,5 @@ export declare const SIDE_UNDER: number;
|
|
|
94
94
|
*/
|
|
95
95
|
export declare const GROUP_OUTCOME: number;
|
|
96
96
|
export declare const GROUP_TOTAL: number;
|
|
97
|
-
export type
|
|
98
|
-
export type
|
|
97
|
+
export type LevrGameMarketId = Bytes32;
|
|
98
|
+
export type LevrFixtureId = Bytes10;
|
|
@@ -9,13 +9,24 @@ export interface MarketPosition {
|
|
|
9
9
|
size: number;
|
|
10
10
|
pnl: number;
|
|
11
11
|
pnlPercentage: number;
|
|
12
|
-
entryPrice:
|
|
12
|
+
entryPrice: string;
|
|
13
|
+
entryOddsAmerican: number;
|
|
14
|
+
entryOddsEuropean: number;
|
|
13
15
|
leverage: string;
|
|
14
16
|
marketPrice: number;
|
|
15
17
|
liquidationPrice: number;
|
|
16
18
|
healthFactor: number;
|
|
17
19
|
margin: number;
|
|
18
20
|
isLong: boolean;
|
|
21
|
+
resultBadge?: {
|
|
22
|
+
label: string;
|
|
23
|
+
kind: BetStatus;
|
|
24
|
+
};
|
|
25
|
+
action?: {
|
|
26
|
+
label: string;
|
|
27
|
+
kind: BetAction;
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
};
|
|
19
30
|
}
|
|
20
31
|
export type BetStatus = "live" | "pregame" | "won" | "lost" | "open" | "cashout" | "resulted";
|
|
21
32
|
export type BetAction = "cashout" | "redeem" | "view" | "sell" | "none";
|
|
@@ -30,6 +41,8 @@ export interface BetRowData {
|
|
|
30
41
|
selectedSide: "home" | "away";
|
|
31
42
|
league: string;
|
|
32
43
|
odds: number;
|
|
44
|
+
oddsEuropean: number;
|
|
45
|
+
price: number;
|
|
33
46
|
multiplier: string;
|
|
34
47
|
wagerUsd: number;
|
|
35
48
|
paidUsd: number;
|
|
@@ -42,4 +55,7 @@ export interface BetRowData {
|
|
|
42
55
|
kind: BetAction;
|
|
43
56
|
disabled?: boolean;
|
|
44
57
|
};
|
|
58
|
+
levrMarketId?: string;
|
|
59
|
+
gameMarketId?: string;
|
|
60
|
+
levrFixtureId?: string;
|
|
45
61
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { LevrMarketId } from "../../../contracts";
|
|
3
|
-
import { LevrChain } from "../../blockchain";
|
|
3
|
+
import { LevrChain, Side } from "../../blockchain";
|
|
4
4
|
import { RegistrationStatus } from "../game/game.types";
|
|
5
|
-
import { Side } from "../../blockchain/contract.types";
|
|
6
5
|
import { OddsServices } from "../market/providers.types";
|
|
7
6
|
export declare const CreateSportsRequestSchema: z.ZodArray<z.ZodObject<{
|
|
8
7
|
name: z.ZodString;
|
|
@@ -57,7 +56,7 @@ export declare const TeamSchema: z.ZodObject<{
|
|
|
57
56
|
mascot: z.ZodString;
|
|
58
57
|
}, z.core.$strip>;
|
|
59
58
|
export declare const CreateFixtureRequestSchema: z.ZodObject<{
|
|
60
|
-
levrFixtureId: z.ZodType<import("../../../validators").
|
|
59
|
+
levrFixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
|
|
61
60
|
leagueObjectId: z.ZodString;
|
|
62
61
|
opticOddsFixtureId: z.ZodString;
|
|
63
62
|
lsportsFixtureId: z.ZodString;
|
|
@@ -84,11 +83,10 @@ export declare const CreateFixtureRequestSchema: z.ZodObject<{
|
|
|
84
83
|
Scheduled: "Scheduled";
|
|
85
84
|
Cancelled: "Cancelled";
|
|
86
85
|
}>;
|
|
87
|
-
registeredChainIds: z.ZodArray<z.ZodEnum<typeof LevrChain>>;
|
|
88
86
|
}, z.core.$strip>;
|
|
89
87
|
export declare const CreateGameRequestSchema: z.ZodArray<z.ZodObject<{
|
|
90
88
|
fixtureObjectId: z.ZodString;
|
|
91
|
-
levrFixtureId: z.ZodType<import("../../../validators").
|
|
89
|
+
levrFixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
|
|
92
90
|
tournamentObjectId: z.ZodString;
|
|
93
91
|
levrLeagueId: z.ZodType<import("../../../validators").Bytes8, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes8, unknown>>;
|
|
94
92
|
levrTournamentId: z.ZodType<import("../../../validators").Bytes6, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes6, unknown>>;
|
|
@@ -171,6 +169,10 @@ export declare const GetFixturesQuerySchema: z.ZodObject<{
|
|
|
171
169
|
endDate: z.ZodOptional<z.ZodISODateTime>;
|
|
172
170
|
leagueAbbreviation: z.ZodOptional<z.ZodString>;
|
|
173
171
|
}, z.core.$strip>;
|
|
172
|
+
export declare const FixtureIdChainIdSchema: z.ZodObject<{
|
|
173
|
+
fixtureId: z.ZodType<import("../../../validators").Bytes10, unknown, z.core.$ZodTypeInternals<import("../../../validators").Bytes10, unknown>>;
|
|
174
|
+
chainId: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
175
|
+
}, z.core.$strip>;
|
|
174
176
|
export declare const GameDetailsQuerySchema: z.ZodObject<{
|
|
175
177
|
chainId: z.ZodCoercedNumber<unknown>;
|
|
176
178
|
levrFixtureId: z.ZodOptional<z.ZodString>;
|