@eyettea/zeta-backend 0.0.1-rc.10
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/README.md +1 -0
- package/dist/types/api/index.d.ts +11 -0
- package/dist/types/api/index.d.ts.map +1 -0
- package/dist/types/api/types.d.ts +19 -0
- package/dist/types/api/types.d.ts.map +1 -0
- package/dist/types/app.d.ts +1160 -0
- package/dist/types/app.d.ts.map +1 -0
- package/dist/types/config/database.d.ts +17 -0
- package/dist/types/config/database.d.ts.map +1 -0
- package/dist/types/config/env.d.ts +20 -0
- package/dist/types/config/env.d.ts.map +1 -0
- package/dist/types/database/aggregates.d.ts +14 -0
- package/dist/types/database/aggregates.d.ts.map +1 -0
- package/dist/types/database/clmmTicks.d.ts +9 -0
- package/dist/types/database/clmmTicks.d.ts.map +1 -0
- package/dist/types/database/liquidityTicks.d.ts +7 -0
- package/dist/types/database/liquidityTicks.d.ts.map +1 -0
- package/dist/types/database/mints.d.ts +18 -0
- package/dist/types/database/mints.d.ts.map +1 -0
- package/dist/types/database/poolEvents.d.ts +37 -0
- package/dist/types/database/poolEvents.d.ts.map +1 -0
- package/dist/types/database/pools.d.ts +47 -0
- package/dist/types/database/pools.d.ts.map +1 -0
- package/dist/types/database/priceTicks.d.ts +7 -0
- package/dist/types/database/priceTicks.d.ts.map +1 -0
- package/dist/types/database/schemas.d.ts +134 -0
- package/dist/types/database/schemas.d.ts.map +1 -0
- package/dist/types/database/types.d.ts +114 -0
- package/dist/types/database/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/errors.d.ts +91 -0
- package/dist/types/lib/errors.d.ts.map +1 -0
- package/dist/types/lib/logger.d.ts +2 -0
- package/dist/types/lib/logger.d.ts.map +1 -0
- package/dist/types/lib/validation.d.ts +3 -0
- package/dist/types/lib/validation.d.ts.map +1 -0
- package/dist/types/routes/compute.d.ts +124 -0
- package/dist/types/routes/compute.d.ts.map +1 -0
- package/dist/types/routes/ohlcv.d.ts +74 -0
- package/dist/types/routes/ohlcv.d.ts.map +1 -0
- package/dist/types/routes/pools.d.ts +413 -0
- package/dist/types/routes/pools.d.ts.map +1 -0
- package/dist/types/routes/response.d.ts +73 -0
- package/dist/types/routes/response.d.ts.map +1 -0
- package/dist/types/routes/websocket.d.ts +42 -0
- package/dist/types/routes/websocket.d.ts.map +1 -0
- package/dist/types/services/Services.d.ts +21 -0
- package/dist/types/services/Services.d.ts.map +1 -0
- package/dist/types/services/computeService.d.ts +103 -0
- package/dist/types/services/computeService.d.ts.map +1 -0
- package/dist/types/services/poolEventsHandler.d.ts +26 -0
- package/dist/types/services/poolEventsHandler.d.ts.map +1 -0
- package/dist/types/services/poolEventsSubscriptionService.d.ts +16 -0
- package/dist/types/services/poolEventsSubscriptionService.d.ts.map +1 -0
- package/dist/types/services/poolService.d.ts +114 -0
- package/dist/types/services/poolService.d.ts.map +1 -0
- package/dist/types/services/poolStateWebsocketService.d.ts +13 -0
- package/dist/types/services/poolStateWebsocketService.d.ts.map +1 -0
- package/dist/types/services/poolStatsService.d.ts +66 -0
- package/dist/types/services/poolStatsService.d.ts.map +1 -0
- package/dist/types/services/priceService.d.ts +36 -0
- package/dist/types/services/priceService.d.ts.map +1 -0
- package/dist/types/utils/period.d.ts +8 -0
- package/dist/types/utils/period.d.ts.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/routes/response.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB,CAAC,CAAC,CAAE,SAAQ,QAAQ;IACvD,IAAI,EAAE,CAAC,GAAG;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAA;YACZ,QAAQ,EAAE,MAAM,CAAA;YAChB,UAAU,EAAE,MAAM,CAAA;SACnB,CAAA;KACF,CAAA;CACF;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,oBAAoB,CAAC,CAAC,CAAC,CAYzB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAK3C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAEjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAE/C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAwBzD;AAGD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Elysia } from 'elysia';
|
|
2
|
+
export declare const websocketRouter: Elysia<"", {
|
|
3
|
+
decorator: {};
|
|
4
|
+
store: {};
|
|
5
|
+
derive: {};
|
|
6
|
+
resolve: {};
|
|
7
|
+
}, {
|
|
8
|
+
typebox: {};
|
|
9
|
+
error: {};
|
|
10
|
+
}, {
|
|
11
|
+
schema: {};
|
|
12
|
+
standaloneSchema: {};
|
|
13
|
+
macro: {};
|
|
14
|
+
macroFn: {};
|
|
15
|
+
parser: {};
|
|
16
|
+
response: {};
|
|
17
|
+
}, {
|
|
18
|
+
ws: {
|
|
19
|
+
"pool-state": {
|
|
20
|
+
subscribe: {
|
|
21
|
+
body: unknown;
|
|
22
|
+
params: {};
|
|
23
|
+
query: unknown;
|
|
24
|
+
headers: unknown;
|
|
25
|
+
response: {};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}, {
|
|
30
|
+
derive: {};
|
|
31
|
+
resolve: {};
|
|
32
|
+
schema: {};
|
|
33
|
+
standaloneSchema: {};
|
|
34
|
+
response: {};
|
|
35
|
+
}, {
|
|
36
|
+
derive: {};
|
|
37
|
+
resolve: {};
|
|
38
|
+
schema: {};
|
|
39
|
+
standaloneSchema: {};
|
|
40
|
+
response: {};
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/routes/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAiBhC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmD1B,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Zeta } from '@eyettea/typescript-sdk';
|
|
2
|
+
import { PriceService } from './priceService';
|
|
3
|
+
import { PoolService } from './poolService';
|
|
4
|
+
import { PoolStatsService } from './poolStatsService';
|
|
5
|
+
import { PoolEventsSubscriptionService } from './poolEventsSubscriptionService';
|
|
6
|
+
import { StandardPoolEventsHandler, ClmmPoolEventsHandler } from './poolEventsHandler';
|
|
7
|
+
import { ComputeService } from './computeService';
|
|
8
|
+
export declare class Services {
|
|
9
|
+
private static instance;
|
|
10
|
+
readonly zeta: Zeta;
|
|
11
|
+
readonly priceService: PriceService;
|
|
12
|
+
readonly poolService: PoolService;
|
|
13
|
+
readonly poolStatsService: PoolStatsService;
|
|
14
|
+
readonly poolEventsSubscriptionService: PoolEventsSubscriptionService;
|
|
15
|
+
readonly standardPoolEventsHandler: StandardPoolEventsHandler;
|
|
16
|
+
readonly clmmPoolEventsHandler: ClmmPoolEventsHandler;
|
|
17
|
+
readonly computeService: ComputeService;
|
|
18
|
+
private constructor();
|
|
19
|
+
static getInstance(): Services;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Services.d.ts","sourceRoot":"","sources":["../../../src/services/Services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAW;IAElC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,YAAY,EAAE,YAAY,CAAC;IAC3C,SAAgB,WAAW,EAAE,WAAW,CAAC;IACzC,SAAgB,gBAAgB,EAAE,gBAAgB,CAAC;IACnD,SAAgB,6BAA6B,EAAE,6BAA6B,CAAC;IAC7E,SAAgB,yBAAyB,EAAE,yBAAyB,CAAC;IACrE,SAAgB,qBAAqB,EAAE,qBAAqB,CAAC;IAC7D,SAAgB,cAAc,EAAE,cAAc,CAAC;IAE/C,OAAO;IAuBP,MAAM,CAAC,WAAW,IAAI,QAAQ;CAM/B"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { Zeta, SwapDetails } from '@eyettea/typescript-sdk';
|
|
2
|
+
import type { PriceService } from './priceService';
|
|
3
|
+
import type { TokenInfo } from '@alephium/token-list';
|
|
4
|
+
import { PoolType } from './poolService';
|
|
5
|
+
export interface TokenAmountWithPrice {
|
|
6
|
+
mint: string;
|
|
7
|
+
symbol: string;
|
|
8
|
+
amount: string;
|
|
9
|
+
decimals: number;
|
|
10
|
+
priceUSD?: string;
|
|
11
|
+
usdValue?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SwapBaseInParams {
|
|
14
|
+
inputMint: string;
|
|
15
|
+
outputMint: string;
|
|
16
|
+
amount: string;
|
|
17
|
+
slippageBps?: string;
|
|
18
|
+
poolType?: PoolType;
|
|
19
|
+
}
|
|
20
|
+
export interface SwapBaseOutParams {
|
|
21
|
+
inputMint: string;
|
|
22
|
+
outputMint: string;
|
|
23
|
+
amount: string;
|
|
24
|
+
slippageBps?: string;
|
|
25
|
+
poolType?: PoolType;
|
|
26
|
+
}
|
|
27
|
+
export interface SwapComputeResult {
|
|
28
|
+
swapType: 'BaseIn' | 'BaseOut';
|
|
29
|
+
inputMint: string;
|
|
30
|
+
inputAmount: string;
|
|
31
|
+
outputMint: string;
|
|
32
|
+
outputAmount: string;
|
|
33
|
+
otherAmountThreshold: string;
|
|
34
|
+
slippageBps: number;
|
|
35
|
+
priceImpactPct: number;
|
|
36
|
+
routePlan: any[];
|
|
37
|
+
inputToken: TokenAmountWithPrice;
|
|
38
|
+
outputToken: TokenAmountWithPrice;
|
|
39
|
+
priceInfo?: {
|
|
40
|
+
inputPriceUSD: string;
|
|
41
|
+
outputPriceUSD: string;
|
|
42
|
+
inputUSDValue: string;
|
|
43
|
+
outputUSDValue: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export declare class ComputeServiceError extends Error {
|
|
47
|
+
code?: string | undefined;
|
|
48
|
+
constructor(message: string, code?: string | undefined);
|
|
49
|
+
}
|
|
50
|
+
export declare class ComputeService {
|
|
51
|
+
private zeta;
|
|
52
|
+
private priceService;
|
|
53
|
+
constructor(zeta: Zeta, priceService: PriceService);
|
|
54
|
+
computeSwapBaseIn(params: SwapBaseInParams): Promise<SwapComputeResult>;
|
|
55
|
+
computeSwapBaseOut(params: SwapBaseOutParams): Promise<SwapComputeResult>;
|
|
56
|
+
parseSlippageBps(slippageBps?: string): number;
|
|
57
|
+
getTokenInfo(id: string): Promise<TokenInfo>;
|
|
58
|
+
getPoolState(inputTokenId: string, outputTokenId: string): Promise<import("@eyettea/typescript-sdk").CpmmPoolContractState>;
|
|
59
|
+
convertSwapDetailsToResponse(swapDetails: SwapDetails, slippage: number): Promise<SwapComputeResult>;
|
|
60
|
+
computeClmmSwapBaseIn(params: {
|
|
61
|
+
inputMint: string;
|
|
62
|
+
outputMint: string;
|
|
63
|
+
amount: bigint;
|
|
64
|
+
slippage: number;
|
|
65
|
+
}): Promise<SwapComputeResult>;
|
|
66
|
+
computeClmmSwapBaseOut(params: {
|
|
67
|
+
inputMint: string;
|
|
68
|
+
outputMint: string;
|
|
69
|
+
amount: bigint;
|
|
70
|
+
slippage: number;
|
|
71
|
+
}): Promise<SwapComputeResult>;
|
|
72
|
+
applySlippage(value: bigint, slippageBps: number, direction: 'min' | 'max'): bigint;
|
|
73
|
+
getClmmSwapContext(inputMint: string, outputMint: string): Promise<{
|
|
74
|
+
inputToken: TokenInfo;
|
|
75
|
+
outputToken: TokenInfo;
|
|
76
|
+
token0Info: TokenInfo;
|
|
77
|
+
token1Info: TokenInfo;
|
|
78
|
+
zeroForOne: boolean;
|
|
79
|
+
configIndex: bigint;
|
|
80
|
+
}>;
|
|
81
|
+
calculateClmmPriceImpact(distribution: {
|
|
82
|
+
baseSqrtPriceX96: bigint;
|
|
83
|
+
sqrtPriceX96: bigint;
|
|
84
|
+
}, context: {
|
|
85
|
+
token0Info: TokenInfo;
|
|
86
|
+
token1Info: TokenInfo;
|
|
87
|
+
inputToken: TokenInfo;
|
|
88
|
+
outputToken: TokenInfo;
|
|
89
|
+
zeroForOne: boolean;
|
|
90
|
+
}, tokenInAmount: bigint, tokenOutAmount: bigint): number;
|
|
91
|
+
buildSwapComputeResult(params: {
|
|
92
|
+
swapType: 'BaseIn' | 'BaseOut';
|
|
93
|
+
tokenInInfo: TokenInfo;
|
|
94
|
+
tokenOutInfo: TokenInfo;
|
|
95
|
+
tokenInAmount: bigint;
|
|
96
|
+
tokenOutAmount: bigint;
|
|
97
|
+
otherAmountThreshold: bigint;
|
|
98
|
+
slippage: number;
|
|
99
|
+
priceImpactPct: number;
|
|
100
|
+
routePlan: any[];
|
|
101
|
+
}): Promise<SwapComputeResult>;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=computeService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeService.d.ts","sourceRoot":"","sources":["../../../src/services/computeService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PoolService, PoolRecord } from './poolService';
|
|
2
|
+
import type { CpmmTokenPairTypes, ClmmPoolTypes } from '@eyettea/typescript-sdk';
|
|
3
|
+
import type { PriceTickInsert, LiquidityTickInsert } from '../database/types';
|
|
4
|
+
declare abstract class BasePoolEventsHandler {
|
|
5
|
+
protected storePriceData(priceData: PriceTickInsert): Promise<void>;
|
|
6
|
+
protected storeLiquidityData(liquidityData: LiquidityTickInsert): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class StandardPoolEventsHandler extends BasePoolEventsHandler {
|
|
9
|
+
private poolService;
|
|
10
|
+
constructor(poolService: PoolService);
|
|
11
|
+
capturePriceFromSwap(tokenPairId: string, txId: string, swapData: CpmmTokenPairTypes.SwapEvent): Promise<void>;
|
|
12
|
+
captureLiquidityFromMint(tokenPairId: string, txId: string, mintEvent: CpmmTokenPairTypes.MintEvent): Promise<void>;
|
|
13
|
+
captureLiquidityFromBurn(tokenPairId: string, txId: string, burnEvent: CpmmTokenPairTypes.BurnEvent): Promise<void>;
|
|
14
|
+
calculatePriceFromSwap(swapData: CpmmTokenPairTypes.SwapEvent, poolRecord: PoolRecord, token0Decimals: number, token1Decimals: number): Promise<string>;
|
|
15
|
+
captureLiquidityFromEvent(tokenPairId: string, txId: string, event: CpmmTokenPairTypes.MintEvent | CpmmTokenPairTypes.BurnEvent): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare class ClmmPoolEventsHandler extends BasePoolEventsHandler {
|
|
18
|
+
private poolService;
|
|
19
|
+
constructor(poolService: PoolService);
|
|
20
|
+
capturePriceFromSwap(tokenPairId: string, txId: string, swapData: ClmmPoolTypes.SwapEvent): Promise<void>;
|
|
21
|
+
captureLiquidityFromMint(tokenPairId: string, txId: string, mintEvent: ClmmPoolTypes.MintEvent): Promise<void>;
|
|
22
|
+
captureLiquidityFromBurn(tokenPairId: string, txId: string, burnEvent: ClmmPoolTypes.BurnEvent): Promise<void>;
|
|
23
|
+
captureLiquidityFromEvent(poolId: string, txId: string, event: ClmmPoolTypes.MintEvent | ClmmPoolTypes.BurnEvent): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=poolEventsHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolEventsHandler.d.ts","sourceRoot":"","sources":["../../../src/services/poolEventsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAKjF,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM5E,uBAAe,qBAAqB;cAClB,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;cAQzD,kBAAkB,CAAC,aAAa,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtF;AAED,qBAAa,yBAA0B,SAAQ,qBAAqB;IACtD,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAKtC,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kBAAkB,CAAC,SAAS,GACrC,OAAO,CAAC,IAAI,CAAC;IA6DV,wBAAwB,CAC5B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,kBAAkB,CAAC,SAAS,GACtC,OAAO,CAAC,IAAI,CAAC;IAIV,wBAAwB,CAC5B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,kBAAkB,CAAC,SAAS,GACtC,OAAO,CAAC,IAAI,CAAC;IAIV,sBAAsB,CAC1B,QAAQ,EAAE,kBAAkB,CAAC,SAAS,EACtC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAmDZ,yBAAyB,CAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,kBAAkB,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAS,GACjE,OAAO,CAAC,IAAI,CAAC;CA4DjB;AAGD,qBAAa,qBAAsB,SAAQ,qBAAqB;IAClD,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAItC,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,CAAC,SAAS,GAChC,OAAO,CAAC,IAAI,CAAC;IA2DV,wBAAwB,CAC5B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,CAAC,SAAS,GACjC,OAAO,CAAC,IAAI,CAAC;IAIV,wBAAwB,CAC5B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,CAAC,SAAS,GACjC,OAAO,CAAC,IAAI,CAAC;IAIV,yBAAyB,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC,SAAS,GACvD,OAAO,CAAC,IAAI,CAAC;CA0EjB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Zeta } from '@eyettea/typescript-sdk';
|
|
2
|
+
import type { PoolService } from './poolService';
|
|
3
|
+
import type { StandardPoolEventsHandler, ClmmPoolEventsHandler } from './poolEventsHandler';
|
|
4
|
+
export declare class PoolEventsSubscriptionService {
|
|
5
|
+
private zeta;
|
|
6
|
+
private poolService;
|
|
7
|
+
private standardPoolEventsHandler;
|
|
8
|
+
private clmmPoolEventsHandler;
|
|
9
|
+
private isSubscribed;
|
|
10
|
+
private readonly standard;
|
|
11
|
+
private readonly concentrated;
|
|
12
|
+
constructor(zeta: Zeta, poolService: PoolService, standardPoolEventsHandler: StandardPoolEventsHandler, clmmPoolEventsHandler: ClmmPoolEventsHandler);
|
|
13
|
+
startSubscription(): Promise<void>;
|
|
14
|
+
stopSubscription(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=poolEventsSubscriptionService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolEventsSubscriptionService.d.ts","sourceRoot":"","sources":["../../../src/services/poolEventsSubscriptionService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,IAAI,EAGL,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AA6Y5F,qBAAa,6BAA6B;IAMtC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,qBAAqB;IAR/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAGtD,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,yBAAyB,EAAE,yBAAyB,EACpD,qBAAqB,EAAE,qBAAqB;IAUhD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBxC,gBAAgB,IAAI,IAAI;CAWzB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { Zeta, CpmmPoolContractState, ClmmPoolContractState } from '@eyettea/typescript-sdk';
|
|
2
|
+
import { type SqlClient } from '../config/database';
|
|
3
|
+
import type { TokenInfo } from '@alephium/token-list';
|
|
4
|
+
import type { PriceService } from './priceService';
|
|
5
|
+
import type { PoolStatsService, PoolStats } from './poolStatsService';
|
|
6
|
+
import type { ClmmPoolTypes } from '@eyettea/typescript-sdk';
|
|
7
|
+
import type { PoolEvent, PoolRow, PoolEventCounterRow, PoolFactoryEventCounterRow } from '../database/types';
|
|
8
|
+
import type { ClmmPosition } from '../api/types';
|
|
9
|
+
import Decimal from 'decimal.js';
|
|
10
|
+
export type CpmmPoolWithStats = CpmmPoolContractState & PoolStats & {
|
|
11
|
+
type: typeof PoolType.Standard;
|
|
12
|
+
};
|
|
13
|
+
export type ClmmPoolWithStats = ClmmPoolContractState & PoolStats & {
|
|
14
|
+
type: typeof PoolType.Concentrated;
|
|
15
|
+
};
|
|
16
|
+
export type PoolWithStats = CpmmPoolWithStats | ClmmPoolWithStats;
|
|
17
|
+
export declare const PoolType: {
|
|
18
|
+
readonly Standard: "standard";
|
|
19
|
+
readonly Concentrated: "concentrated";
|
|
20
|
+
readonly All: "all";
|
|
21
|
+
};
|
|
22
|
+
export type PoolType = (typeof PoolType)[keyof typeof PoolType];
|
|
23
|
+
export declare const PoolSortType: {
|
|
24
|
+
readonly Desc: "desc";
|
|
25
|
+
readonly Asc: "asc";
|
|
26
|
+
};
|
|
27
|
+
export type PoolSortType = (typeof PoolSortType)[keyof typeof PoolSortType];
|
|
28
|
+
export type PoolRecord = PoolRow;
|
|
29
|
+
export type PoolEventCounterRecord = PoolEventCounterRow;
|
|
30
|
+
export type PoolFactoryEventCounterRecord = PoolFactoryEventCounterRow;
|
|
31
|
+
export interface ClmmTickRecord {
|
|
32
|
+
pool_id: string;
|
|
33
|
+
tick: bigint;
|
|
34
|
+
liquidity_gross: bigint;
|
|
35
|
+
liquidity_net: bigint;
|
|
36
|
+
}
|
|
37
|
+
export interface ClmmLiquidityRow {
|
|
38
|
+
tick: string;
|
|
39
|
+
sqrtPriceX96: string;
|
|
40
|
+
price: string;
|
|
41
|
+
liquidity: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class PoolService {
|
|
44
|
+
private zeta;
|
|
45
|
+
private priceService;
|
|
46
|
+
private poolStatsService;
|
|
47
|
+
constructor(zeta: Zeta, priceService: PriceService, poolStatsService: PoolStatsService);
|
|
48
|
+
private getCpmmFeeRate;
|
|
49
|
+
private getClmmFeeRate;
|
|
50
|
+
private getTokensInfo;
|
|
51
|
+
private poolRecordToCpmmPool;
|
|
52
|
+
private poolRecordToCpmmPoolWithStats;
|
|
53
|
+
private poolRecordToClmmPool;
|
|
54
|
+
private poolRecordToClmmPoolWithStats;
|
|
55
|
+
getPoolByTokenPairId(tokenPairId: string): Promise<CpmmPoolWithStats | undefined>;
|
|
56
|
+
getPoolsByToken(token0Id: string, token1Id?: string, poolType?: PoolType, page?: number, pageSize?: number): Promise<{
|
|
57
|
+
pools: CpmmPoolWithStats[];
|
|
58
|
+
total: number;
|
|
59
|
+
page: number;
|
|
60
|
+
pageSize: number;
|
|
61
|
+
totalPages: number;
|
|
62
|
+
}>;
|
|
63
|
+
getPoolByTokenPair(token0Id: string, token1Id: string): Promise<CpmmPoolWithStats | undefined>;
|
|
64
|
+
getPoolsByIds(poolIds: string[]): Promise<PoolWithStats[]>;
|
|
65
|
+
getAllPools(page?: number, pageSize?: number, poolType?: PoolType, sortType?: PoolSortType): Promise<{
|
|
66
|
+
pools: PoolWithStats[];
|
|
67
|
+
total: number;
|
|
68
|
+
page: number;
|
|
69
|
+
pageSize: number;
|
|
70
|
+
totalPages: number;
|
|
71
|
+
}>;
|
|
72
|
+
recordPoolEvent(poolId: string, eventType: string, txId: string, blockHash: string, eventData: unknown, client?: SqlClient): Promise<void>;
|
|
73
|
+
recordMintEvent(poolId: string, mintEvent: ClmmPoolTypes.MintEvent, client?: SqlClient): Promise<void>;
|
|
74
|
+
recordBurnEvent(poolId: string, burnEvent: ClmmPoolTypes.BurnEvent, client?: SqlClient): Promise<void>;
|
|
75
|
+
getClmmPositions(candidates: string[], client?: SqlClient): Promise<ClmmPosition[]>;
|
|
76
|
+
recordPoolFactoryEvent(poolId: string, eventType: string, txId: string, blockHash: string, eventData: unknown, client?: SqlClient): Promise<void>;
|
|
77
|
+
getPoolEvents(poolId: string, client?: SqlClient): Promise<PoolEvent[]>;
|
|
78
|
+
getPoolEventCounter(poolId: string, client?: SqlClient): Promise<PoolEventCounterRecord | undefined>;
|
|
79
|
+
createPoolEventCounter(poolId: string, fromCount?: number, client?: SqlClient): Promise<void>;
|
|
80
|
+
updatePoolEventCounter(poolId: string, fromCount: number, client?: SqlClient): Promise<void>;
|
|
81
|
+
applyClmmTickDeltas(poolId: string, deltas: Array<{
|
|
82
|
+
tick: bigint;
|
|
83
|
+
liquidityGrossDelta: bigint;
|
|
84
|
+
liquidityNetDelta: bigint;
|
|
85
|
+
}>): Promise<void>;
|
|
86
|
+
getClmmTicks(poolId: string): Promise<ClmmTickRecord[]>;
|
|
87
|
+
getPoolFactoryEventCounter(poolFactoryId: string, client?: SqlClient): Promise<PoolFactoryEventCounterRecord | undefined>;
|
|
88
|
+
createPoolFactoryEventCounter(poolFactoryId: string, fromCount?: number, client?: SqlClient): Promise<void>;
|
|
89
|
+
updatePoolFactoryEventCounter(poolFactoryId: string, fromCount: number, client?: SqlClient): Promise<void>;
|
|
90
|
+
getPoolById(id: string): Promise<PoolRecord | undefined>;
|
|
91
|
+
getTokenInfos(pool: PoolRecord): Promise<{
|
|
92
|
+
token0: TokenInfo;
|
|
93
|
+
token1: TokenInfo;
|
|
94
|
+
}>;
|
|
95
|
+
buildClmmLiquidityRows(token0: TokenInfo, token1: TokenInfo, tickRows: ClmmTickRecord[]): ClmmLiquidityRow[];
|
|
96
|
+
upsertPool(params: {
|
|
97
|
+
id: string;
|
|
98
|
+
token0: string;
|
|
99
|
+
token1: string;
|
|
100
|
+
configIndex?: number;
|
|
101
|
+
poolType: 'standard' | 'concentrated';
|
|
102
|
+
}, client?: SqlClient): Promise<void>;
|
|
103
|
+
private calculateCpmmPoolTVL;
|
|
104
|
+
private calculateClmmPoolTVL;
|
|
105
|
+
computePoolReserves(poolRecord: PoolRecord): Promise<{
|
|
106
|
+
amount0: string;
|
|
107
|
+
amount1: string;
|
|
108
|
+
totalLiquidity: string;
|
|
109
|
+
}>;
|
|
110
|
+
private fetchClmmTokenReserves;
|
|
111
|
+
computePoolTVL(poolRecord: PoolRecord): Promise<Decimal>;
|
|
112
|
+
computePoolTVLById(poolId: string): Promise<string>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=poolService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolService.d.ts","sourceRoot":"","sources":["../../../src/services/poolService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class PoolStateWebSocketService {
|
|
2
|
+
private static clients;
|
|
3
|
+
private static poolSubscriptions;
|
|
4
|
+
static addClient(clientId: string, send: (message: string) => void): void;
|
|
5
|
+
static removeClient(clientId: string): void;
|
|
6
|
+
static subscribeToClmmPool(clientId: string, poolId: string): Promise<void>;
|
|
7
|
+
static unsubscribeFromClmmPool(clientId: string, poolId: string): void;
|
|
8
|
+
static publishPoolState(poolId: string): Promise<void>;
|
|
9
|
+
private static removeSubscription;
|
|
10
|
+
private static buildPoolStateUpdate;
|
|
11
|
+
private static sendMessage;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=poolStateWebsocketService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolStateWebsocketService.d.ts","sourceRoot":"","sources":["../../../src/services/poolStateWebsocketService.ts"],"names":[],"mappings":"AAiBA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAsC;IAC5D,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAkC;IAElE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAQzE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;WAY9B,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjF,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;WAQzD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5D,OAAO,CAAC,MAAM,CAAC,kBAAkB;mBAUZ,oBAAoB;IA0BzC,OAAO,CAAC,MAAM,CAAC,WAAW;CAe3B"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Decimal from 'decimal.js';
|
|
2
|
+
export interface PoolStats {
|
|
3
|
+
feeRate: number;
|
|
4
|
+
openTime: string;
|
|
5
|
+
tvl: number;
|
|
6
|
+
day: PeriodicalPoolStats;
|
|
7
|
+
week: PeriodicalPoolStats;
|
|
8
|
+
month: PeriodicalPoolStats;
|
|
9
|
+
}
|
|
10
|
+
export interface PeriodicalPoolStats {
|
|
11
|
+
volume: string;
|
|
12
|
+
volumeQuote: string;
|
|
13
|
+
volumeFee: string;
|
|
14
|
+
apr: string;
|
|
15
|
+
feeApr: string;
|
|
16
|
+
priceMin: string;
|
|
17
|
+
priceMax: string;
|
|
18
|
+
rewardApr: string[];
|
|
19
|
+
tvl: string;
|
|
20
|
+
feeRate: string;
|
|
21
|
+
}
|
|
22
|
+
export interface OHLCVItem {
|
|
23
|
+
o: number;
|
|
24
|
+
h: number;
|
|
25
|
+
l: number;
|
|
26
|
+
c: number;
|
|
27
|
+
vBase: number;
|
|
28
|
+
vQuote: number;
|
|
29
|
+
unixTime: number;
|
|
30
|
+
}
|
|
31
|
+
export interface OHLVCResult {
|
|
32
|
+
type: string;
|
|
33
|
+
items: OHLCVItem[];
|
|
34
|
+
}
|
|
35
|
+
export interface OHLCVResponse {
|
|
36
|
+
success: boolean;
|
|
37
|
+
data: OHLVCResult;
|
|
38
|
+
}
|
|
39
|
+
export interface LiquidityLinePoint {
|
|
40
|
+
time: number;
|
|
41
|
+
amount0: number;
|
|
42
|
+
amount1: number;
|
|
43
|
+
}
|
|
44
|
+
export interface LiquidityLineData {
|
|
45
|
+
count: number;
|
|
46
|
+
line: LiquidityLinePoint[];
|
|
47
|
+
}
|
|
48
|
+
export declare class PoolStatsService {
|
|
49
|
+
constructor();
|
|
50
|
+
calculateAllPeriodsPoolStats(poolId: string, currentTVL?: Decimal): Promise<{
|
|
51
|
+
day: PeriodicalPoolStats;
|
|
52
|
+
week: PeriodicalPoolStats;
|
|
53
|
+
month: PeriodicalPoolStats;
|
|
54
|
+
}>;
|
|
55
|
+
calculatePoolStats(poolId: string, periodType: 'day' | 'week' | 'month', currentTVL?: Decimal): Promise<PeriodicalPoolStats>;
|
|
56
|
+
private getDefaultStats;
|
|
57
|
+
private getTimeRange;
|
|
58
|
+
private calculateFeeAPR;
|
|
59
|
+
private parseDecimalField;
|
|
60
|
+
private mapRowsToItems;
|
|
61
|
+
getOHLCV(poolId: string, intervalType: string, timeFrom: number, timeTo: number): Promise<OHLVCResult>;
|
|
62
|
+
getOHLCVForTokenPair(token0Id: string, token1Id: string, intervalType: string, timeFrom: number, timeTo: number): Promise<OHLVCResult>;
|
|
63
|
+
getLiquidityLineWithRange(tokenPairId: string, startTime: number, endTime: number): Promise<LiquidityLineData>;
|
|
64
|
+
getLiquidityLineByDays(tokenPairId: string, days: number): Promise<LiquidityLineData>;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=poolStatsService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poolStatsService.d.ts","sourceRoot":"","sources":["../../../src/services/poolStatsService.ts"],"names":[],"mappings":"AAGA,OAAO,OAAO,MAAM,YAAY,CAAC;AAMjC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,mBAAmB,CAAC;IACzB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,kBAAkB,EAAE,CAAC;CAC5B;AAaD,qBAAa,gBAAgB;;IAGrB,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,GAAE,OAAwB,GACnC,OAAO,CAAC;QAAE,GAAG,EAAE,mBAAmB,CAAC;QAAC,IAAI,EAAE,mBAAmB,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC;IAQzF,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EACpC,UAAU,GAAE,OAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC;IA0C/B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,cAAc;IAYhB,QAAQ,CACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAgBjB,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC;IAsBjB,yBAAyB,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC;IAkDvB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAK5F"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type Decimal from 'decimal.js';
|
|
2
|
+
import { type Zeta } from '@eyettea/typescript-sdk';
|
|
3
|
+
export interface TokenPrice {
|
|
4
|
+
id: string;
|
|
5
|
+
symbol: string;
|
|
6
|
+
price: Decimal;
|
|
7
|
+
priceUSD: Decimal;
|
|
8
|
+
}
|
|
9
|
+
export declare class PriceService {
|
|
10
|
+
private readonly zeta;
|
|
11
|
+
private priceCache;
|
|
12
|
+
private readonly CACHE_DURATION;
|
|
13
|
+
constructor(zeta: Zeta);
|
|
14
|
+
private fetchTokenPrices;
|
|
15
|
+
getTokenPrice(symbol: string): Promise<Decimal | undefined>;
|
|
16
|
+
getTokenPricesFromSymbols(symbols: string[]): Promise<TokenPrice[]>;
|
|
17
|
+
getTokenPricesFromIds(tokenIds: string[]): Promise<TokenPrice[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Calculate USD value for a token amount
|
|
20
|
+
*/
|
|
21
|
+
calculateUSDValue(symbol: string, amount: string, decimals: number): Promise<Decimal | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate USD values for multiple token amounts
|
|
24
|
+
*/
|
|
25
|
+
calculateUSDValues(tokens: Array<{
|
|
26
|
+
symbol: string;
|
|
27
|
+
amount: string;
|
|
28
|
+
decimals: number;
|
|
29
|
+
}>): Promise<Array<{
|
|
30
|
+
symbol: string;
|
|
31
|
+
amount: string;
|
|
32
|
+
usdValue: Decimal | undefined;
|
|
33
|
+
}>>;
|
|
34
|
+
private resolveTokenInfosBySymbols;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=priceService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priceService.d.ts","sourceRoot":"","sources":["../../../src/services/priceService.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,YAAY,CAAC;AACtC,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAIlE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,YAAY;IAIX,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,UAAU,CAA6E;IAC/F,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;gBAEZ,IAAI,EAAE,IAAI;YAEzB,gBAAgB;IA6CjB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAgB3D,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA4BnE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAgC7E;;OAEG;IACU,iBAAiB,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQ/B;;OAEG;IACU,kBAAkB,CAC7B,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,GAClE,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,CAAC,CAAC;YA2BtE,0BAA0B;CAazC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"period.d.ts","sourceRoot":"","sources":["../../../src/utils/period.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE5D"}
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@eyettea/zeta-backend",
|
|
3
|
+
"version": "0.0.1-rc.10",
|
|
4
|
+
"engines": {
|
|
5
|
+
"bun": ">=1.3.0 < 1.4.0"
|
|
6
|
+
},
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "bun run --watch src/index.ts",
|
|
9
|
+
"build": "bun build src/index.ts --outdir dist --target=node",
|
|
10
|
+
"build:types": "tsc -p tsconfig.types.json && tsc-alias -p tsconfig.types.json",
|
|
11
|
+
"start": "bun run dist/index.js",
|
|
12
|
+
"lint": "eslint --max-warnings=0 . --ext .ts",
|
|
13
|
+
"lint:fix": "eslint --max-warnings=0 . --ext .ts --fix",
|
|
14
|
+
"format": "prettier --write .",
|
|
15
|
+
"format:check": "prettier --check .",
|
|
16
|
+
"typecheck": "tsc --noEmit",
|
|
17
|
+
"publish:package": "bun run build:types && npm publish --tag rc --access public"
|
|
18
|
+
},
|
|
19
|
+
"types": "dist/types/index.d.ts",
|
|
20
|
+
"files": ["dist/types"],
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"types": "./dist/types/index.d.ts"
|
|
24
|
+
},
|
|
25
|
+
"./api": {
|
|
26
|
+
"types": "./dist/types/api/index.d.ts"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@elysiajs/cors": "^1.4.0",
|
|
31
|
+
"@elysiajs/openapi": "^1.4.11",
|
|
32
|
+
"@eyettea/typescript-sdk": "0.0.1-rc.5",
|
|
33
|
+
"@sinclair/typebox": "^0.34.41",
|
|
34
|
+
"dotenv": "^17.0.0",
|
|
35
|
+
"postgres": "^3.4.7",
|
|
36
|
+
"zod": "^3.25.67"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@elysiajs/eden": "1.4.5",
|
|
40
|
+
"@types/node": "^20.19.2",
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^6.17.0",
|
|
42
|
+
"@typescript-eslint/parser": "^6.17.0",
|
|
43
|
+
"bun-types": "^1.2.17",
|
|
44
|
+
"elysia": "1.4.19",
|
|
45
|
+
"eslint": "^8.56.0",
|
|
46
|
+
"eslint-config-prettier": "^9.1.0",
|
|
47
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
48
|
+
"prettier": "^3.2.5",
|
|
49
|
+
"tsc-alias": "^1.8.16",
|
|
50
|
+
"typescript": "^5.3.3"
|
|
51
|
+
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"elysia": "1.4.19"
|
|
54
|
+
}
|
|
55
|
+
}
|