levr-sdk 0.0.1 → 0.0.2
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 +109 -13
- package/dist/esm/abis/StateView.js +149 -0
- package/dist/esm/abis/V3QuoterV2.js +26 -0
- package/dist/esm/abis/index.js +4 -0
- package/dist/esm/balance.js +30 -4
- package/dist/esm/balance.js.map +1 -1
- package/dist/esm/client/hook/use-balance.js +2 -1
- package/dist/esm/client/hook/use-balance.js.map +1 -1
- package/dist/esm/client/hook/use-fee-receivers.js +0 -1
- package/dist/esm/client/hook/use-fee-receivers.js.map +1 -1
- package/dist/esm/client/hook/use-governance.js +13 -32
- package/dist/esm/client/hook/use-governance.js.map +1 -1
- package/dist/esm/client/hook/use-project.js +7 -10
- package/dist/esm/client/hook/use-project.js.map +1 -1
- package/dist/esm/client/hook/use-proposals.js +2 -4
- package/dist/esm/client/hook/use-proposals.js.map +1 -1
- package/dist/esm/client/hook/use-stake.js +3 -23
- package/dist/esm/client/hook/use-stake.js.map +1 -1
- package/dist/esm/client/hook/use-swap.js +14 -6
- package/dist/esm/client/hook/use-swap.js.map +1 -1
- package/dist/esm/client/levr-provider.js +9 -2
- package/dist/esm/client/levr-provider.js.map +1 -1
- package/dist/esm/client/query-keys.js +1 -1
- package/dist/esm/client/query-keys.js.map +1 -1
- package/dist/esm/constants.js +41 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/fee-receivers.js +5 -2
- package/dist/esm/fee-receivers.js.map +1 -1
- package/dist/esm/governance.js +20 -5
- package/dist/esm/governance.js.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pool-key.js +152 -0
- package/dist/esm/pool-key.js.map +1 -0
- package/dist/esm/project.js +48 -5
- package/dist/esm/project.js.map +1 -1
- package/dist/esm/projects.js +2 -30
- package/dist/esm/projects.js.map +1 -1
- package/dist/esm/quote/index.js +98 -0
- package/dist/esm/quote/index.js.map +1 -0
- package/dist/esm/quote/v3.js +62 -0
- package/dist/esm/quote/v3.js.map +1 -0
- package/dist/esm/quote/v4.js +228 -0
- package/dist/esm/quote/v4.js.map +1 -0
- package/dist/esm/stake.js +102 -40
- package/dist/esm/stake.js.map +1 -1
- package/dist/esm/usd-price.js +149 -0
- package/dist/esm/usd-price.js.map +1 -0
- package/dist/esm/util.js +45 -1
- package/dist/esm/util.js.map +1 -1
- package/dist/types/abis/StateView.d.ts +278 -0
- package/dist/types/abis/V3QuoterV2.d.ts +39 -0
- package/dist/types/abis/index.d.ts +2 -0
- package/dist/types/balance.d.ts +4 -6
- package/dist/types/balance.d.ts.map +1 -1
- package/dist/types/client/hook/index.d.ts +1 -1
- package/dist/types/client/hook/index.d.ts.map +1 -1
- package/dist/types/client/hook/use-balance.d.ts +3 -1
- package/dist/types/client/hook/use-balance.d.ts.map +1 -1
- package/dist/types/client/hook/use-fee-receivers.d.ts +1 -1
- package/dist/types/client/hook/use-fee-receivers.d.ts.map +1 -1
- package/dist/types/client/hook/use-governance.d.ts +20 -15
- package/dist/types/client/hook/use-governance.d.ts.map +1 -1
- package/dist/types/client/hook/use-project.d.ts +3 -1
- package/dist/types/client/hook/use-project.d.ts.map +1 -1
- package/dist/types/client/hook/use-proposals.d.ts +1 -1
- package/dist/types/client/hook/use-proposals.d.ts.map +1 -1
- package/dist/types/client/hook/use-stake.d.ts +37 -132
- package/dist/types/client/hook/use-stake.d.ts.map +1 -1
- package/dist/types/client/hook/use-swap.d.ts +2 -1
- package/dist/types/client/hook/use-swap.d.ts.map +1 -1
- package/dist/types/client/levr-provider.d.ts +31 -38
- package/dist/types/client/levr-provider.d.ts.map +1 -1
- package/dist/types/client/query-keys.d.ts +1 -1
- package/dist/types/client/query-keys.d.ts.map +1 -1
- package/dist/types/constants.d.ts +18 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/fee-receivers.d.ts +1 -2
- package/dist/types/fee-receivers.d.ts.map +1 -1
- package/dist/types/governance.d.ts +8 -21
- package/dist/types/governance.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pool-key.d.ts +121 -0
- package/dist/types/pool-key.d.ts.map +1 -0
- package/dist/types/project.d.ts +7 -12
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/projects.d.ts +1 -1
- package/dist/types/projects.d.ts.map +1 -1
- package/dist/types/quote/index.d.ts +97 -0
- package/dist/types/quote/index.d.ts.map +1 -0
- package/dist/types/quote/v3.d.ts +78 -0
- package/dist/types/quote/v3.d.ts.map +1 -0
- package/dist/types/quote/v4.d.ts +95 -0
- package/dist/types/quote/v4.d.ts.map +1 -0
- package/dist/types/stake.d.ts +38 -59
- package/dist/types/stake.d.ts.map +1 -1
- package/dist/types/types.d.ts +15 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/usd-price.d.ts +141 -0
- package/dist/types/usd-price.d.ts.map +1 -0
- package/dist/types/util.d.ts +17 -0
- package/dist/types/util.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/esm/quote-v4.js +0 -169
- package/dist/esm/quote-v4.js.map +0 -1
- package/dist/types/quote-v4.d.ts +0 -54
- package/dist/types/quote-v4.d.ts.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TransactionReceipt } from 'viem';
|
|
2
|
-
import type { PopPublicClient, PopWalletClient } from './types';
|
|
2
|
+
import type { BalanceResult, PopPublicClient, PopWalletClient, PricingResult } from './types';
|
|
3
3
|
export type GovernanceConfig = {
|
|
4
4
|
wallet: PopWalletClient;
|
|
5
5
|
publicClient: PopPublicClient;
|
|
@@ -7,6 +7,7 @@ export type GovernanceConfig = {
|
|
|
7
7
|
tokenDecimals: number;
|
|
8
8
|
clankerToken: `0x${string}`;
|
|
9
9
|
trustedForwarder?: `0x${string}`;
|
|
10
|
+
pricing?: PricingResult;
|
|
10
11
|
};
|
|
11
12
|
export type ProposalDetails = {
|
|
12
13
|
id: bigint;
|
|
@@ -28,10 +29,7 @@ export type FormattedProposalDetails = {
|
|
|
28
29
|
id: bigint;
|
|
29
30
|
proposalType: number;
|
|
30
31
|
proposer: `0x${string}`;
|
|
31
|
-
amount:
|
|
32
|
-
raw: bigint;
|
|
33
|
-
formatted: string;
|
|
34
|
-
};
|
|
32
|
+
amount: BalanceResult;
|
|
35
33
|
recipient: `0x${string}`;
|
|
36
34
|
description: string;
|
|
37
35
|
createdAt: {
|
|
@@ -46,14 +44,8 @@ export type FormattedProposalDetails = {
|
|
|
46
44
|
timestamp: bigint;
|
|
47
45
|
date: Date;
|
|
48
46
|
};
|
|
49
|
-
yesVotes:
|
|
50
|
-
|
|
51
|
-
formatted: string;
|
|
52
|
-
};
|
|
53
|
-
noVotes: {
|
|
54
|
-
raw: bigint;
|
|
55
|
-
formatted: string;
|
|
56
|
-
};
|
|
47
|
+
yesVotes: BalanceResult;
|
|
48
|
+
noVotes: BalanceResult;
|
|
57
49
|
totalBalanceVoted: bigint;
|
|
58
50
|
executed: boolean;
|
|
59
51
|
cycleId: bigint;
|
|
@@ -78,6 +70,7 @@ export declare class Governance {
|
|
|
78
70
|
private tokenDecimals;
|
|
79
71
|
private clankerToken;
|
|
80
72
|
private userAddress;
|
|
73
|
+
private pricing?;
|
|
81
74
|
constructor(config: GovernanceConfig);
|
|
82
75
|
/**
|
|
83
76
|
* Propose a transfer from treasury to recipient
|
|
@@ -186,14 +179,8 @@ export declare class Governance {
|
|
|
186
179
|
* Get airdrop status for treasury with detailed status information
|
|
187
180
|
*/
|
|
188
181
|
getAirdropStatus(): Promise<{
|
|
189
|
-
availableAmount:
|
|
190
|
-
|
|
191
|
-
formatted: string;
|
|
192
|
-
};
|
|
193
|
-
allocatedAmount: {
|
|
194
|
-
raw: bigint;
|
|
195
|
-
formatted: string;
|
|
196
|
-
};
|
|
182
|
+
availableAmount: BalanceResult;
|
|
183
|
+
allocatedAmount: BalanceResult;
|
|
197
184
|
isAvailable: boolean;
|
|
198
185
|
error?: string;
|
|
199
186
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAM9C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/governance.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,13 +6,15 @@ export * from './constants';
|
|
|
6
6
|
export * from './deploy-v4';
|
|
7
7
|
export * from './fee-receivers';
|
|
8
8
|
export * from './governance';
|
|
9
|
+
export * from './pool-key';
|
|
9
10
|
export * from './project';
|
|
10
11
|
export * from './projects';
|
|
11
12
|
export * from './proposals';
|
|
12
|
-
export * from './quote
|
|
13
|
+
export * from './quote';
|
|
13
14
|
export * from './schema';
|
|
14
15
|
export * from './stake';
|
|
15
16
|
export * from './swap-v4';
|
|
16
17
|
export * from './types';
|
|
18
|
+
export * from './usd-price';
|
|
17
19
|
export * from './util';
|
|
18
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { PublicClient } from 'viem';
|
|
2
|
+
import type { PoolKey } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* @description Sort two token addresses for pool key (currency0 < currency1)
|
|
5
|
+
*/
|
|
6
|
+
export declare const sortTokens: (tokenA: `0x${string}`, tokenB: `0x${string}`) => [`0x${string}`, `0x${string}`];
|
|
7
|
+
/**
|
|
8
|
+
* @description Default pool configuration
|
|
9
|
+
* 0.3% fee tier is the most common on Uniswap
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_POOL_CONFIG: {
|
|
12
|
+
readonly fee: 3000;
|
|
13
|
+
readonly tickSpacing: 60;
|
|
14
|
+
readonly hooks: "0x0000000000000000000000000000000000000000";
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* @description Create a pool key for two tokens
|
|
18
|
+
* @param token0 First token address
|
|
19
|
+
* @param token1 Second token address
|
|
20
|
+
* @param fee Fee tier (in hundredths of a bip, e.g. 3000 = 0.3%). Defaults to 3000 (0.3%)
|
|
21
|
+
* @param tickSpacing Tick spacing. Defaults to 60 (for 0.3% fee tier)
|
|
22
|
+
* @param hooks Hooks address. Defaults to zero address (no hooks)
|
|
23
|
+
* @returns Properly sorted PoolKey
|
|
24
|
+
*/
|
|
25
|
+
export declare const createPoolKey: (token0: `0x${string}`, token1: `0x${string}`, fee?: number, tickSpacing?: number, hooks?: `0x${string}`) => PoolKey;
|
|
26
|
+
/**
|
|
27
|
+
* @description Calculate pool ID from pool key (keccak256 of abi.encode(PoolKey))
|
|
28
|
+
* @param poolKey Pool key
|
|
29
|
+
* @returns Pool ID as bytes32
|
|
30
|
+
*/
|
|
31
|
+
export declare const getPoolId: (poolKey: PoolKey) => `0x${string}`;
|
|
32
|
+
/**
|
|
33
|
+
* @description Common fee tiers and their corresponding tick spacings
|
|
34
|
+
* Ordered by preference: 0.3% is most common for major pairs, then 0.05%, then 1%
|
|
35
|
+
* From Uniswap V4 documentation
|
|
36
|
+
*/
|
|
37
|
+
export declare const COMMON_FEE_TIERS: readonly [{
|
|
38
|
+
readonly fee: 3000;
|
|
39
|
+
readonly tickSpacing: 60;
|
|
40
|
+
}, {
|
|
41
|
+
readonly fee: 500;
|
|
42
|
+
readonly tickSpacing: 10;
|
|
43
|
+
}, {
|
|
44
|
+
readonly fee: 10000;
|
|
45
|
+
readonly tickSpacing: 200;
|
|
46
|
+
}];
|
|
47
|
+
/**
|
|
48
|
+
* @description Parameters for discovering a pool
|
|
49
|
+
*/
|
|
50
|
+
export type DiscoverPoolParams = {
|
|
51
|
+
publicClient: PublicClient;
|
|
52
|
+
token0: `0x${string}`;
|
|
53
|
+
token1: `0x${string}`;
|
|
54
|
+
hooks?: `0x${string}`;
|
|
55
|
+
feeTiers?: readonly {
|
|
56
|
+
fee: number;
|
|
57
|
+
tickSpacing: number;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* @description Return type for pool discovery
|
|
62
|
+
*/
|
|
63
|
+
export type DiscoverPoolReturnType = {
|
|
64
|
+
poolKey: PoolKey;
|
|
65
|
+
sqrtPriceX96: bigint;
|
|
66
|
+
liquidity: bigint;
|
|
67
|
+
tick: number;
|
|
68
|
+
} | null;
|
|
69
|
+
/**
|
|
70
|
+
* @description Discover an existing pool by trying common fee tiers
|
|
71
|
+
* @param params Discovery parameters
|
|
72
|
+
* @returns Pool data if found, null otherwise
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* This function tries to find an initialized pool by:
|
|
76
|
+
* 1. Trying common fee tiers (0.05%, 0.3%, 1%)
|
|
77
|
+
* 2. Querying StateView contract to check if pool exists and has liquidity
|
|
78
|
+
* 3. Returning the first valid pool found
|
|
79
|
+
*
|
|
80
|
+
* Uses Uniswap V4's StateView contract to fetch pool state:
|
|
81
|
+
* - getSlot0(): sqrtPriceX96, tick, protocol/LP fees
|
|
82
|
+
* - getLiquidity(): pool liquidity
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const pool = await discoverPool({
|
|
87
|
+
* publicClient,
|
|
88
|
+
* token0: WETH_ADDRESS,
|
|
89
|
+
* token1: USDC_ADDRESS,
|
|
90
|
+
* })
|
|
91
|
+
* if (pool) {
|
|
92
|
+
* console.log('Found pool:', pool.poolKey)
|
|
93
|
+
* console.log('Liquidity:', pool.liquidity)
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare const discoverPool: ({ publicClient, token0, token1, hooks, feeTiers, }: DiscoverPoolParams) => Promise<DiscoverPoolReturnType>;
|
|
98
|
+
/**
|
|
99
|
+
* @description Find a liquid pool by discovering pools with liquidity
|
|
100
|
+
* @param params Discovery parameters
|
|
101
|
+
* @returns Pool key if found, null otherwise
|
|
102
|
+
*
|
|
103
|
+
* @remarks
|
|
104
|
+
* This is a convenience wrapper around discoverPool that returns just the pool key.
|
|
105
|
+
* It uses the StateView contract to find pools with actual liquidity.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const poolKey = await findLiquidPool({
|
|
110
|
+
* publicClient,
|
|
111
|
+
* token0: WETH_ADDRESS,
|
|
112
|
+
* token1: USDC_ADDRESS,
|
|
113
|
+
* })
|
|
114
|
+
* if (poolKey) {
|
|
115
|
+
* console.log('Found pool with fee tier:', poolKey.fee)
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export type FindLiquidPoolParams = DiscoverPoolParams;
|
|
120
|
+
export declare const findLiquidPool: (params: FindLiquidPoolParams) => Promise<PoolKey | null>;
|
|
121
|
+
//# sourceMappingURL=pool-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-key.d.ts","sourceRoot":"","sources":["../../src/pool-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAKxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,KAAK,MAAM,EAAE,EACrB,QAAQ,KAAK,MAAM,EAAE,KACpB,CAAC,KAAK,MAAM,EAAE,EAAE,KAAK,MAAM,EAAE,CAE/B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAA;AAEV;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GACxB,QAAQ,KAAK,MAAM,EAAE,EACrB,QAAQ,KAAK,MAAM,EAAE,EACrB,MAAK,MAAgC,EACrC,cAAa,MAAwC,EACrD,QAAO,KAAK,MAAM,EAA8B,KAC/C,OASF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS,OAAO,KAAG,KAAK,MAAM,EAkBvD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAInB,CAAA;AAEV;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,MAAM,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IACrB,QAAQ,CAAC,EAAE,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC3D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAA;AAER;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,YAAY,GAAU,oDAMhC,kBAAkB,KAAG,OAAO,CAAC,sBAAsB,CA0DrD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAErD,eAAO,MAAM,cAAc,GAAU,QAAQ,oBAAoB,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAGzF,CAAA"}
|
package/dist/types/project.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { PoolKey, PopPublicClient } from './types';
|
|
1
|
+
import type { BalanceResult, PoolKey, PopPublicClient, PricingResult } from './types';
|
|
2
2
|
export type ProjectParams = {
|
|
3
3
|
publicClient: PopPublicClient;
|
|
4
|
-
factoryAddress: `0x${string}`;
|
|
5
|
-
chainId: number;
|
|
6
4
|
clankerToken: `0x${string}`;
|
|
5
|
+
oraclePublicClient?: PopPublicClient;
|
|
7
6
|
};
|
|
8
7
|
export type ProjectMetadata = {
|
|
9
8
|
description: string;
|
|
@@ -16,17 +15,12 @@ export type PoolInfo = {
|
|
|
16
15
|
numPositions: bigint;
|
|
17
16
|
};
|
|
18
17
|
export type TreasuryStats = {
|
|
19
|
-
balance:
|
|
20
|
-
|
|
21
|
-
formatted: string;
|
|
22
|
-
};
|
|
23
|
-
totalAllocated: {
|
|
24
|
-
raw: bigint;
|
|
25
|
-
formatted: string;
|
|
26
|
-
};
|
|
18
|
+
balance: BalanceResult;
|
|
19
|
+
totalAllocated: BalanceResult;
|
|
27
20
|
utilization: number;
|
|
28
21
|
};
|
|
29
22
|
export type Project = {
|
|
23
|
+
chainId: number;
|
|
30
24
|
treasury: `0x${string}`;
|
|
31
25
|
governor: `0x${string}`;
|
|
32
26
|
staking: `0x${string}`;
|
|
@@ -43,9 +37,10 @@ export type Project = {
|
|
|
43
37
|
};
|
|
44
38
|
pool?: PoolInfo;
|
|
45
39
|
treasuryStats?: TreasuryStats;
|
|
40
|
+
pricing?: PricingResult;
|
|
46
41
|
};
|
|
47
42
|
/**
|
|
48
43
|
* Get project data for a clanker token
|
|
49
44
|
*/
|
|
50
|
-
export declare function project({ publicClient,
|
|
45
|
+
export declare function project({ publicClient, clankerToken, oraclePublicClient, }: ProjectParams): Promise<Project | null>;
|
|
51
46
|
//# sourceMappingURL=project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/project.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/project.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGrF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,eAAe,CAAA;IAC7B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAA;IAC3B,kBAAkB,CAAC,EAAE,eAAe,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,EAAE,CAAA;IACnB,SAAS,EAAE,EAAE,CAAA;CACd,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,aAAa,CAAA;IACtB,cAAc,EAAE,aAAa,CAAA;IAC7B,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAA;IAC1B,SAAS,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB,KAAK,EAAE;QACL,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;QACtB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAA;CACxB,CAAA;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,EAC5B,YAAY,EACZ,YAAY,EACZ,kBAAkB,GACnB,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CA0MzC"}
|
package/dist/types/projects.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/projects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/projects.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAkC,MAAM,WAAW,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,eAAe,CAAA;IAC7B,cAAc,EAAE,KAAK,MAAM,EAAE,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,CAAA;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAcD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,EAC7B,YAAY,EACZ,cAAc,EACd,OAAO,EACP,SAAS,EACT,OAAkB,EAClB,QAAc,GACf,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAkN1C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Unified quote API for Uniswap V3 and V4
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* This module provides quote functionality for both Uniswap V3 and V4 pools.
|
|
6
|
+
* Each version offers two methods:
|
|
7
|
+
* - `read`: Performs an async call to get the quote immediately
|
|
8
|
+
* - `bytecode`: Returns encoded call data for use in multicalls or custom execution
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // V3 Read (immediate result)
|
|
13
|
+
* const v3Quote = await quote.v3.read({
|
|
14
|
+
* publicClient,
|
|
15
|
+
* quoterAddress: '0x...',
|
|
16
|
+
* tokenIn: '0x123...',
|
|
17
|
+
* tokenOut: '0x456...',
|
|
18
|
+
* amountIn: parseUnits('1', 18),
|
|
19
|
+
* fee: 3000,
|
|
20
|
+
* })
|
|
21
|
+
* console.log(`Output: ${formatUnits(v3Quote.amountOut, 6)}`)
|
|
22
|
+
*
|
|
23
|
+
* // V3 Bytecode (for multicall)
|
|
24
|
+
* const v3Bytecode = quote.v3.bytecode({
|
|
25
|
+
* quoterAddress: '0x...',
|
|
26
|
+
* tokenIn: '0x123...',
|
|
27
|
+
* tokenOut: '0x456...',
|
|
28
|
+
* amountIn: parseUnits('1', 18),
|
|
29
|
+
* fee: 3000,
|
|
30
|
+
* })
|
|
31
|
+
* // Use v3Bytecode.address and v3Bytecode.data in multicall
|
|
32
|
+
*
|
|
33
|
+
* // V4 Read (immediate result with hook fees and price impact)
|
|
34
|
+
* const v4Quote = await quote.v4.read({
|
|
35
|
+
* publicClient,
|
|
36
|
+
* poolKey,
|
|
37
|
+
* zeroForOne: true,
|
|
38
|
+
* amountIn: parseEther('1'),
|
|
39
|
+
* pricing,
|
|
40
|
+
* tokenAddress: '0x...',
|
|
41
|
+
* })
|
|
42
|
+
* console.log(`Output: ${formatEther(v4Quote.amountOut)}`)
|
|
43
|
+
* console.log(`Price Impact: ${v4Quote.priceImpactBps}%`)
|
|
44
|
+
* console.log(`Hook Fees:`, v4Quote.hookFees)
|
|
45
|
+
*
|
|
46
|
+
* // V4 Bytecode (for multicall)
|
|
47
|
+
* const v4Bytecode = quote.v4.bytecode({
|
|
48
|
+
* publicClient, // Needed for chain ID
|
|
49
|
+
* poolKey,
|
|
50
|
+
* zeroForOne: true,
|
|
51
|
+
* amountIn: parseEther('1'),
|
|
52
|
+
* })
|
|
53
|
+
* // Use v4Bytecode.address and v4Bytecode.data in multicall
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export type { QuoteV3Params, QuoteV3ReadReturnType, QuoteV3BytecodeReturnType, } from './v3';
|
|
57
|
+
export type { QuoteV4Params, QuoteV4ReadReturnType, QuoteV4BytecodeReturnType, } from './v4';
|
|
58
|
+
/**
|
|
59
|
+
* @description Unified quote API for Uniswap V3 and V4
|
|
60
|
+
*/
|
|
61
|
+
export declare const quote: {
|
|
62
|
+
/**
|
|
63
|
+
* Uniswap V3 quote methods
|
|
64
|
+
*/
|
|
65
|
+
v3: {
|
|
66
|
+
/**
|
|
67
|
+
* Get a V3 quote by reading from the quoter contract
|
|
68
|
+
* @param params Quote parameters
|
|
69
|
+
* @returns Quote result with output amount
|
|
70
|
+
*/
|
|
71
|
+
read: (params: import("./v3").QuoteV3Params) => Promise<import("./v3").QuoteV3ReadReturnType>;
|
|
72
|
+
/**
|
|
73
|
+
* Get encoded bytecode for a V3 quote (for multicalls)
|
|
74
|
+
* @param params Quote parameters
|
|
75
|
+
* @returns Contract address and encoded call data
|
|
76
|
+
*/
|
|
77
|
+
bytecode: (params: import("./v3").QuoteV3Params) => import("./v3").QuoteV3BytecodeReturnType;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Uniswap V4 quote methods
|
|
81
|
+
*/
|
|
82
|
+
v4: {
|
|
83
|
+
/**
|
|
84
|
+
* Get a V4 quote by reading from the quoter contract
|
|
85
|
+
* @param params Quote parameters
|
|
86
|
+
* @returns Quote result with output amount, gas estimate, price impact, and hook fees
|
|
87
|
+
*/
|
|
88
|
+
read: (params: import("./v4").QuoteV4Params) => Promise<import("./v4").QuoteV4ReadReturnType>;
|
|
89
|
+
/**
|
|
90
|
+
* Get encoded bytecode for a V4 quote (for multicalls)
|
|
91
|
+
* @param params Quote parameters
|
|
92
|
+
* @returns Contract address and encoded call data
|
|
93
|
+
*/
|
|
94
|
+
bytecode: (params: import("./v4").QuoteV4Params) => import("./v4").QuoteV4BytecodeReturnType;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/quote/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAGH,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,MAAM,CAAA;AAEb,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,MAAM,CAAA;AAMb;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;IAGL;;OAEG;;QAED;;;;WAIG;;QAEH;;;;WAIG;;;CAGN,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { PublicClient } from 'viem';
|
|
2
|
+
import { V3QuoterV2 } from '../abis';
|
|
3
|
+
/**
|
|
4
|
+
* @description Parameters for quoting a V3 swap
|
|
5
|
+
*/
|
|
6
|
+
export type QuoteV3Params = {
|
|
7
|
+
/**
|
|
8
|
+
* Public client for V3 quoter queries (only required for read method)
|
|
9
|
+
*/
|
|
10
|
+
publicClient?: PublicClient;
|
|
11
|
+
/**
|
|
12
|
+
* V3 Quoter V2 address
|
|
13
|
+
*/
|
|
14
|
+
quoterAddress: `0x${string}`;
|
|
15
|
+
/**
|
|
16
|
+
* Input token address
|
|
17
|
+
*/
|
|
18
|
+
tokenIn: `0x${string}`;
|
|
19
|
+
/**
|
|
20
|
+
* Output token address
|
|
21
|
+
*/
|
|
22
|
+
tokenOut: `0x${string}`;
|
|
23
|
+
/**
|
|
24
|
+
* Amount of input token (in wei)
|
|
25
|
+
*/
|
|
26
|
+
amountIn: bigint;
|
|
27
|
+
/**
|
|
28
|
+
* Fee tier (500 = 0.05%, 3000 = 0.3%, 10000 = 1%)
|
|
29
|
+
*/
|
|
30
|
+
fee: number;
|
|
31
|
+
/**
|
|
32
|
+
* Optional sqrt price limit (0n = no limit)
|
|
33
|
+
*/
|
|
34
|
+
sqrtPriceLimitX96?: bigint;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* @description Return type for V3 quote read method
|
|
38
|
+
*/
|
|
39
|
+
export type QuoteV3ReadReturnType = {
|
|
40
|
+
/**
|
|
41
|
+
* Amount of output token (in wei)
|
|
42
|
+
*/
|
|
43
|
+
amountOut: bigint;
|
|
44
|
+
/**
|
|
45
|
+
* Fee tier used for the quote
|
|
46
|
+
*/
|
|
47
|
+
fee: number;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* @description Return type for V3 quote bytecode method
|
|
51
|
+
*/
|
|
52
|
+
export type QuoteV3BytecodeReturnType = {
|
|
53
|
+
/**
|
|
54
|
+
* Target contract address
|
|
55
|
+
*/
|
|
56
|
+
address: `0x${string}`;
|
|
57
|
+
/**
|
|
58
|
+
* Encoded function call data
|
|
59
|
+
*/
|
|
60
|
+
data: `0x${string}`;
|
|
61
|
+
/**
|
|
62
|
+
* Contract ABI for multicall
|
|
63
|
+
*/
|
|
64
|
+
abi: typeof V3QuoterV2;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* @description Quote a swap on Uniswap V3 by reading from the quoter contract
|
|
68
|
+
* @param params Parameters for V3 quote
|
|
69
|
+
* @returns Output amount and fee tier
|
|
70
|
+
*/
|
|
71
|
+
export declare const quoteV3Read: (params: QuoteV3Params) => Promise<QuoteV3ReadReturnType>;
|
|
72
|
+
/**
|
|
73
|
+
* @description Get bytecode for a V3 quote that can be used in multicalls
|
|
74
|
+
* @param params Parameters for V3 quote
|
|
75
|
+
* @returns Contract address, encoded call data, and ABI
|
|
76
|
+
*/
|
|
77
|
+
export declare const quoteV3Bytecode: (params: QuoteV3Params) => QuoteV3BytecodeReturnType;
|
|
78
|
+
//# sourceMappingURL=v3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v3.d.ts","sourceRoot":"","sources":["../../../src/quote/v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMpC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,aAAa,EAAE,KAAK,MAAM,EAAE,CAAA;IAC5B;;OAEG;IACH,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtB;;OAEG;IACH,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;IACvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtB;;OAEG;IACH,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,GAAG,EAAE,OAAO,UAAU,CAAA;CACvB,CAAA;AAMD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,qBAAqB,CAoCtF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,aAAa,KAAG,yBAsBvD,CAAA"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { PublicClient } from 'viem';
|
|
2
|
+
import { V4Quoter } from '../abis';
|
|
3
|
+
import type { PoolKey, PricingResult } from '../types';
|
|
4
|
+
export type QuoteV4Params = {
|
|
5
|
+
/**
|
|
6
|
+
* Public client for V4 quoter queries (only required for read method)
|
|
7
|
+
*/
|
|
8
|
+
publicClient?: PublicClient;
|
|
9
|
+
/**
|
|
10
|
+
* Pool key containing currency pair and fee info
|
|
11
|
+
*/
|
|
12
|
+
poolKey: PoolKey;
|
|
13
|
+
/**
|
|
14
|
+
* Swap direction (true = currency0 to currency1, false = currency1 to currency0)
|
|
15
|
+
*/
|
|
16
|
+
zeroForOne: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Amount of input token (in wei)
|
|
19
|
+
*/
|
|
20
|
+
amountIn: bigint;
|
|
21
|
+
/**
|
|
22
|
+
* Optional hook data
|
|
23
|
+
*/
|
|
24
|
+
hookData?: `0x${string}`;
|
|
25
|
+
/**
|
|
26
|
+
* Optional pricing data for price impact calculation
|
|
27
|
+
*/
|
|
28
|
+
pricing?: PricingResult;
|
|
29
|
+
/**
|
|
30
|
+
* Decimals for currency0 (default: 18)
|
|
31
|
+
*/
|
|
32
|
+
currency0Decimals?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Decimals for currency1 (default: 18)
|
|
35
|
+
*/
|
|
36
|
+
currency1Decimals?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Project token address to determine which currency is token vs WETH
|
|
39
|
+
*/
|
|
40
|
+
tokenAddress?: `0x${string}`;
|
|
41
|
+
};
|
|
42
|
+
export type QuoteV4ReadReturnType = {
|
|
43
|
+
/**
|
|
44
|
+
* Amount of output token (in wei)
|
|
45
|
+
*/
|
|
46
|
+
amountOut: bigint;
|
|
47
|
+
/**
|
|
48
|
+
* Estimated gas for the swap
|
|
49
|
+
*/
|
|
50
|
+
gasEstimate: bigint;
|
|
51
|
+
/**
|
|
52
|
+
* Price impact percentage (e.g., 0.5 for 0.5%)
|
|
53
|
+
* Only calculated if pricing data is provided
|
|
54
|
+
*/
|
|
55
|
+
priceImpactBps?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Fee information from Clanker hooks (if available)
|
|
58
|
+
* - Static fees: clankerFee and pairedFee in basis points
|
|
59
|
+
* - Dynamic fees: baseFee and maxLpFee in basis points
|
|
60
|
+
*/
|
|
61
|
+
hookFees?: {
|
|
62
|
+
type: 'static' | 'dynamic';
|
|
63
|
+
clankerFee?: number;
|
|
64
|
+
pairedFee?: number;
|
|
65
|
+
baseFee?: number;
|
|
66
|
+
maxLpFee?: number;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
export type QuoteV4BytecodeReturnType = {
|
|
70
|
+
/**
|
|
71
|
+
* Target contract address
|
|
72
|
+
*/
|
|
73
|
+
address: `0x${string}`;
|
|
74
|
+
/**
|
|
75
|
+
* Encoded function call data
|
|
76
|
+
*/
|
|
77
|
+
data: `0x${string}`;
|
|
78
|
+
/**
|
|
79
|
+
* Contract ABI for multicall
|
|
80
|
+
*/
|
|
81
|
+
abi: typeof V4Quoter;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* @description Quote a swap on Uniswap V4 by reading from the quoter contract
|
|
85
|
+
* @param params Quote parameters including pool key and amount
|
|
86
|
+
* @returns Quote result with output amount, gas estimate, price impact, and hook fees
|
|
87
|
+
*/
|
|
88
|
+
export declare const quoteV4Read: (params: QuoteV4Params) => Promise<QuoteV4ReadReturnType>;
|
|
89
|
+
/**
|
|
90
|
+
* @description Get bytecode for a V4 quote that can be used in multicalls
|
|
91
|
+
* @param params Quote parameters including pool key and amount
|
|
92
|
+
* @returns Contract address, encoded call data, and ABI
|
|
93
|
+
*/
|
|
94
|
+
export declare const quoteV4Bytecode: (params: QuoteV4Params) => QuoteV4BytecodeReturnType;
|
|
95
|
+
//# sourceMappingURL=v4.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../../../src/quote/v4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAiD,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEjF,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAMtD,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;IACxB;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;IACtB;;OAEG;IACH,IAAI,EAAE,KAAK,MAAM,EAAE,CAAA;IACnB;;OAEG;IACH,GAAG,EAAE,OAAO,QAAQ,CAAA;CACrB,CAAA;AAsLD;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,qBAAqB,CAwEtF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,aAAa,KAAG,yBAiCvD,CAAA"}
|