timelock-sdk 0.0.150 → 0.0.151

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.
@@ -1,14 +1,14 @@
1
- import { n as optionsMarketAbi, r as lensAbi, t as uniswapMathLensAbi } from "./uniswapMathLens-D5k9_mba.js";
1
+ import { n as optionsMarketAbi, r as lensAbi, t as uniswapMathLensAbi } from "./uniswapMathLens-BvytoF0M.cjs";
2
2
  import * as viem0 from "viem";
3
3
  import { Address, Client, GetContractReturnType, Hex, PublicClient } from "viem";
4
- import Big from "big.js";
5
- import JSBI from "jsbi";
6
4
  import React, { ReactNode } from "react";
5
+ import "graphql";
7
6
  import { GraphQLClient, RequestOptions } from "graphql-request";
8
- import * as _tanstack_react_query0 from "@tanstack/react-query";
7
+ import * as _tanstack_react_query1 from "@tanstack/react-query";
9
8
  import { NonUndefinedGuard } from "@tanstack/react-query";
10
- import "graphql";
11
9
  import * as _tanstack_query_core23 from "@tanstack/query-core";
10
+ import Big from "big.js";
11
+ import JSBI from "jsbi";
12
12
  import * as _wagmi_core0 from "@wagmi/core";
13
13
 
14
14
  //#region src/generated/graphql.d.ts
@@ -424,7 +424,7 @@ declare const getErc20: (address: Address, client: Client) => {
424
424
  }];
425
425
  readonly stateMutability: "nonpayable";
426
426
  }], "symbol", readonly []>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<string>;
427
- allowance: (args: readonly [`0x${string}`, `0x${string}`], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
427
+ decimals: (options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
428
428
  readonly type: "constructor";
429
429
  readonly inputs: readonly [{
430
430
  readonly name: "name_";
@@ -602,8 +602,8 @@ declare const getErc20: (address: Address, client: Client) => {
602
602
  readonly internalType: "bool";
603
603
  }];
604
604
  readonly stateMutability: "nonpayable";
605
- }], "allowance", readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<bigint>;
606
- balanceOf: (args: readonly [`0x${string}`], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
605
+ }], "decimals", readonly []>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<number>;
606
+ name: (options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
607
607
  readonly type: "constructor";
608
608
  readonly inputs: readonly [{
609
609
  readonly name: "name_";
@@ -781,8 +781,8 @@ declare const getErc20: (address: Address, client: Client) => {
781
781
  readonly internalType: "bool";
782
782
  }];
783
783
  readonly stateMutability: "nonpayable";
784
- }], "balanceOf", readonly [`0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<bigint>;
785
- decimals: (options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
784
+ }], "name", readonly []>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<string>;
785
+ allowance: (args: readonly [`0x${string}`, `0x${string}`], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
786
786
  readonly type: "constructor";
787
787
  readonly inputs: readonly [{
788
788
  readonly name: "name_";
@@ -960,8 +960,8 @@ declare const getErc20: (address: Address, client: Client) => {
960
960
  readonly internalType: "bool";
961
961
  }];
962
962
  readonly stateMutability: "nonpayable";
963
- }], "decimals", readonly []>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<number>;
964
- name: (options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
963
+ }], "allowance", readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<bigint>;
964
+ balanceOf: (args: readonly [`0x${string}`], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
965
965
  readonly type: "constructor";
966
966
  readonly inputs: readonly [{
967
967
  readonly name: "name_";
@@ -1139,7 +1139,7 @@ declare const getErc20: (address: Address, client: Client) => {
1139
1139
  readonly internalType: "bool";
1140
1140
  }];
1141
1141
  readonly stateMutability: "nonpayable";
1142
- }], "name", readonly []>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<string>;
1142
+ }], "balanceOf", readonly [`0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined) => Promise<bigint>;
1143
1143
  totalSupply: (options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
1144
1144
  readonly type: "constructor";
1145
1145
  readonly inputs: readonly [{
@@ -16973,13 +16973,13 @@ declare const getStateView: (client: Client | PublicClient) => {
16973
16973
  readonly internalType: "int128";
16974
16974
  }];
16975
16975
  readonly stateMutability: "view";
16976
- }], "getSlot0", readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, {
16976
+ }], "getSlot0", readonly [`0x${string}`, {
16977
16977
  currency0: `0x${string}`;
16978
16978
  currency1: `0x${string}`;
16979
16979
  fee: number;
16980
16980
  tickSpacing: number;
16981
16981
  hooks: `0x${string}`;
16982
- }]>, "address" | "abi" | "args" | "functionName">> | undefined] | [args: readonly [`0x${string}`, {
16982
+ }] | readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined] | [args: readonly [`0x${string}`, {
16983
16983
  currency0: `0x${string}`;
16984
16984
  currency1: `0x${string}`;
16985
16985
  fee: number;
@@ -17820,13 +17820,13 @@ declare const getStateView: (client: Client | PublicClient) => {
17820
17820
  readonly internalType: "int128";
17821
17821
  }];
17822
17822
  readonly stateMutability: "view";
17823
- }], "getSlot0", readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, {
17823
+ }], "getSlot0", readonly [`0x${string}`, {
17824
17824
  currency0: `0x${string}`;
17825
17825
  currency1: `0x${string}`;
17826
17826
  fee: number;
17827
17827
  tickSpacing: number;
17828
17828
  hooks: `0x${string}`;
17829
- }]>, "address" | "abi" | "args" | "functionName">> | undefined]) => Promise<never>;
17829
+ }] | readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined]) => Promise<never>;
17830
17830
  getTickBitmap: (...parameters: [args: readonly [`0x${string}`, `0x${string}`, number], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
17831
17831
  readonly type: "function";
17832
17832
  readonly name: "getFeeGrowthGlobals";
@@ -40900,7 +40900,7 @@ declare const useClosedUserOptions: (userAddr?: Address, marketAddr?: Address |
40900
40900
  };
40901
40901
  //#endregion
40902
40902
  //#region src/hooks/options/useExerciseOption.d.ts
40903
- declare const useExerciseOption: (marketAddr?: Address) => _tanstack_react_query0.UseMutationResult<`0x${string}`, Error, {
40903
+ declare const useExerciseOption: (marketAddr?: Address) => _tanstack_react_query1.UseMutationResult<`0x${string}`, Error, {
40904
40904
  option: OptionData;
40905
40905
  liquidities: readonly bigint[];
40906
40906
  }, unknown>;
@@ -41145,7 +41145,7 @@ declare const useMaxPositionSize: (marketAddr: Address | undefined, strikeTick?:
41145
41145
  };
41146
41146
  //#endregion
41147
41147
  //#region src/hooks/options/useMintOption.d.ts
41148
- declare const useMintOption: (marketAddr?: Address) => _tanstack_react_query0.UseMutationResult<`0x${string}`, Error, {
41148
+ declare const useMintOption: (marketAddr?: Address) => _tanstack_react_query1.UseMutationResult<`0x${string}`, Error, {
41149
41149
  optionType: "CALL" | "PUT";
41150
41150
  amount: bigint;
41151
41151
  duration: number;
@@ -41171,7 +41171,7 @@ declare const useOptionPremium: (marketAddr: Address | undefined, optionType: "C
41171
41171
  };
41172
41172
  //#endregion
41173
41173
  //#region src/hooks/options/useExtendOption.d.ts
41174
- declare const useExtendOption: (marketAddr?: Address) => _tanstack_react_query0.UseMutationResult<`0x${string}`, Error, {
41174
+ declare const useExtendOption: (marketAddr?: Address) => _tanstack_react_query1.UseMutationResult<`0x${string}`, Error, {
41175
41175
  option: OptionData;
41176
41176
  duration: number;
41177
41177
  }, unknown>;
@@ -42036,7 +42036,7 @@ declare const useOptionTimeline: (marketAddr?: Address, optionId?: bigint) => {
42036
42036
  };
42037
42037
  //#endregion
42038
42038
  //#region src/hooks/perps/useMintPerp.d.ts
42039
- declare const useMintPerp: (marketAddr?: Address) => _tanstack_react_query0.UseMutationResult<void, Error, {
42039
+ declare const useMintPerp: (marketAddr?: Address) => _tanstack_react_query1.UseMutationResult<void, Error, {
42040
42040
  optionType: "CALL" | "PUT";
42041
42041
  amount: bigint;
42042
42042
  duration: number;
@@ -42044,13 +42044,13 @@ declare const useMintPerp: (marketAddr?: Address) => _tanstack_react_query0.UseM
42044
42044
  }, unknown>;
42045
42045
  //#endregion
42046
42046
  //#region src/hooks/perps/useClosePerp.d.ts
42047
- declare const useClosePerp: () => _tanstack_react_query0.UseMutationResult<void, Error, ExercisePerpBody, unknown>;
42047
+ declare const useClosePerp: () => _tanstack_react_query1.UseMutationResult<void, Error, ExercisePerpBody, unknown>;
42048
42048
  //#endregion
42049
42049
  //#region src/hooks/perps/usePerpsOperator.d.ts
42050
42050
  declare const usePerpsOperator: () => {
42051
42051
  operator: PerpsOperator | undefined;
42052
42052
  address: `0x${string}` | undefined;
42053
- signMessage: _tanstack_react_query0.UseMutationResult<void, Error, void, unknown>;
42053
+ signMessage: _tanstack_react_query1.UseMutationResult<void, Error, void, unknown>;
42054
42054
  };
42055
42055
  //#endregion
42056
42056
  //#region src/hooks/perps/useUserPerps.d.ts
@@ -43589,7 +43589,7 @@ declare const useUserOperators: (userAddr?: Address, marketAddr?: Address) => {
43589
43589
  };
43590
43590
  //#endregion
43591
43591
  //#region src/hooks/operators/useSetOperatorPerms.d.ts
43592
- declare const useSetOperatorPerms: (marketAddr?: Address) => _tanstack_react_query0.UseMutationResult<`0x${string}`, Error, {
43592
+ declare const useSetOperatorPerms: (marketAddr?: Address) => _tanstack_react_query1.UseMutationResult<`0x${string}`, Error, {
43593
43593
  operator: Address;
43594
43594
  canExtend: boolean;
43595
43595
  canExercise: boolean;
@@ -43902,8 +43902,8 @@ declare const usePriceAtTick: (poolManager?: Address, poolKey?: PoolKey, tick?:
43902
43902
  declare const usePriceAtSqrtPriceX96: (poolManager?: Address, poolKey?: PoolKey, sqrtPriceX96?: bigint) => Amount | undefined;
43903
43903
  //#endregion
43904
43904
  //#region src/hooks/pool/usePriceHistory.d.ts
43905
- declare const usePriceHistory: (pool: Address | undefined, token: 0 | 1, resolution: PriceResolution, startTimestamp: Date, endTimestamp: Date) => _tanstack_react_query0.UseQueryResult<PriceDataPoint[], Error>;
43906
- declare const useMarketPriceHistory: (marketAddr: Address | undefined, resolution: PriceResolution, startTimestamp: Date, endTimestamp: Date) => _tanstack_react_query0.UseQueryResult<PriceDataPoint[], Error>;
43905
+ declare const usePriceHistory: (pool: Address | undefined, token: 0 | 1, resolution: PriceResolution, startTimestamp: Date, endTimestamp: Date) => _tanstack_react_query1.UseQueryResult<PriceDataPoint[], Error>;
43906
+ declare const useMarketPriceHistory: (marketAddr: Address | undefined, resolution: PriceResolution, startTimestamp: Date, endTimestamp: Date) => _tanstack_react_query1.UseQueryResult<PriceDataPoint[], Error>;
43907
43907
  //#endregion
43908
43908
  //#region src/hooks/vault/useBurnLiquidity.d.ts
43909
43909
  interface BurnPosition {
@@ -44322,7 +44322,7 @@ interface MintPositionParams {
44322
44322
  tickUpper: number;
44323
44323
  liquidity: bigint;
44324
44324
  }
44325
- declare const useMintLiquidity: (vaultAddr?: Address) => _tanstack_react_query0.UseMutationResult<void, Error, MintPositionParams | MintPositionParams[], unknown>;
44325
+ declare const useMintLiquidity: (vaultAddr?: Address) => _tanstack_react_query1.UseMutationResult<void, Error, MintPositionParams | MintPositionParams[], unknown>;
44326
44326
  //#endregion
44327
44327
  //#region src/hooks/vault/useVaultData.d.ts
44328
44328
  declare const useVaultData: (vaultAddr?: Address) => Partial<NonUndefinedGuard<{
@@ -68884,13 +68884,13 @@ declare const useLens: () => {
68884
68884
  readonly internalType: "int128";
68885
68885
  }];
68886
68886
  readonly stateMutability: "view";
68887
- }], "getSlot0", readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, {
68887
+ }], "getSlot0", readonly [`0x${string}`, {
68888
68888
  currency0: `0x${string}`;
68889
68889
  currency1: `0x${string}`;
68890
68890
  fee: number;
68891
68891
  tickSpacing: number;
68892
68892
  hooks: `0x${string}`;
68893
- }]>, "address" | "abi" | "args" | "functionName">> | undefined] | [args: readonly [`0x${string}`, {
68893
+ }] | readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined] | [args: readonly [`0x${string}`, {
68894
68894
  currency0: `0x${string}`;
68895
68895
  currency1: `0x${string}`;
68896
68896
  fee: number;
@@ -69731,13 +69731,13 @@ declare const useLens: () => {
69731
69731
  readonly internalType: "int128";
69732
69732
  }];
69733
69733
  readonly stateMutability: "view";
69734
- }], "getSlot0", readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, {
69734
+ }], "getSlot0", readonly [`0x${string}`, {
69735
69735
  currency0: `0x${string}`;
69736
69736
  currency1: `0x${string}`;
69737
69737
  fee: number;
69738
69738
  tickSpacing: number;
69739
69739
  hooks: `0x${string}`;
69740
- }]>, "address" | "abi" | "args" | "functionName">> | undefined]) => Promise<never>;
69740
+ }] | readonly [`0x${string}`, `0x${string}`]>, "address" | "abi" | "args" | "functionName">> | undefined]) => Promise<never>;
69741
69741
  getTickBitmap: (...parameters: [args: readonly [`0x${string}`, `0x${string}`, number], options?: viem0.Prettify<viem0.UnionOmit<viem0.ReadContractParameters<readonly [{
69742
69742
  readonly type: "function";
69743
69743
  readonly name: "getFeeGrowthGlobals";
@@ -77336,4 +77336,4 @@ declare const useLens: () => {
77336
77336
  };
77337
77337
  //#endregion
77338
77338
  export { ExerciseOptionEvent as $, getTickAtPrice as A, TimelockProvider as At, PriceDataPoint as B, getTimelockMarket as Bt, getPayoutAtTick as C, zero as Ct, getPriceAtSqrtPriceX96 as D, OptionData as Dt, getNearestValidStrikeTick as E, useExerciseOption as Et, token0ToToken1 as F, TimelockMarketData as Ft, useUserOperators as G, getCurrentPrice as H, swapRouters as Ht, token0ToToken1AtTick as I, UniswapMathLens as It, useClosedUserPerps as J, useOperatorPerms as K, token1ToToken0 as L, getErc20 as Lt, liquiditiesToAmount1 as M, useTimelockConfig as Mt, liquiditiesToAmounts as N, TimelockLens as Nt, getPriceAtTick as O, useActiveUserOptions as Ot, roundTick as P, TimelockMarket as Pt, useMintPerp as Q, token1ToToken0AtTick as R, getStateView as Rt, getPayoutAtPrice as S, wrapPriceUnscaled as St, getAmountsFromLiquidity as T, useMarketData as Tt, getPriceHistory as U, swappers as Ut, PriceResolution as V, stateViews as Vt, useSetOperatorPerms as W, timelockLenses as Wt, usePerpsOperator as X, useUserPerps as Y, useClosePerp as Z, useCurrentTick as _, unscaleAmount as _t, useTokenData as a, useOptionPremium as at, UniswapPoolData as b, wrapAmountUnscaled as bt, batchGetAmountsFromLiquidity as c, useMaxPositionSize as ct, useLiquidityBlocks as d, formatAmount as dt, ExtendEvent as et, useBurnLiquidity as f, formatCondensed as ft, usePriceAtTick as g, scalePrice as gt, usePriceAtSqrtPriceX96 as h, scaleAmount as ht, TokenData as i, useExtendOption as it, liquiditiesToAmount0 as j, useCurrentMarket as jt, getSqrtPriceX96AtPrice as k, useClosedUserOptions as kt, useMintLiquidity as l, Amount as lt, usePriceHistory as m, formatVagueAmount as mt, useApproval as n, OptionEvent as nt, useVaultTVL as o, useOptionPnl as ot, useMarketPriceHistory as p, formatUSD as pt, useActiveUserPerps as q, useTokenBalance as r, useOptionTimeline as rt, useVaultData as s, useMintOption as st, useLens as t, MintOptionEvent as tt, LiquidityBlockData as u, EMPTY_ARRAY as ut, useCurrentPrice as v, unscalePrice as vt, PRICE_PRECISION as w, useMarketVolume as wt, usePoolData as x, wrapPrice as xt, PoolKey as y, wrapAmount as yt, PriceData as z, getTimelockLens as zt };
77339
- //# sourceMappingURL=client-DHFNhNXS.d.ts.map
77339
+ //# sourceMappingURL=client-CpvAWmEA.d.cts.map
package/dist/client.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
 
4
- const require_optionUtils = require('./optionUtils-ChajfNR0.cjs');
4
+ const require_optionUtils = require('./optionUtils-A4nEDz-4.cjs');
5
5
  const require_optionsMarket = require('./optionsMarket-XbnJNwMF.cjs');
6
6
  const require_singleOwnerVault = require('./singleOwnerVault-GCpQV7pN.cjs');
7
7
  let viem = require("viem");
package/dist/client.d.cts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./uniswapMathLens-BvytoF0M.cjs";
2
- import { $ as ExerciseOptionEvent, At as TimelockProvider, Dt as OptionData, Et as useExerciseOption, G as useUserOperators, J as useClosedUserPerps, K as useOperatorPerms, Mt as useTimelockConfig, Ot as useActiveUserOptions, Q as useMintPerp, Tt as useMarketData, W as useSetOperatorPerms, X as usePerpsOperator, Y as useUserPerps, Z as useClosePerp, _ as useCurrentTick, a as useTokenData, at as useOptionPremium, b as UniswapPoolData, c as batchGetAmountsFromLiquidity, ct as useMaxPositionSize, d as useLiquidityBlocks, et as ExtendEvent, f as useBurnLiquidity, g as usePriceAtTick, h as usePriceAtSqrtPriceX96, i as TokenData, it as useExtendOption, jt as useCurrentMarket, kt as useClosedUserOptions, l as useMintLiquidity, m as usePriceHistory, n as useApproval, nt as OptionEvent, o as useVaultTVL, ot as useOptionPnl, p as useMarketPriceHistory, q as useActiveUserPerps, r as useTokenBalance, rt as useOptionTimeline, s as useVaultData, st as useMintOption, t as useLens, tt as MintOptionEvent, u as LiquidityBlockData, v as useCurrentPrice, wt as useMarketVolume, x as usePoolData, y as PoolKey } from "./client-BMqa0QR5.cjs";
2
+ import { $ as ExerciseOptionEvent, At as TimelockProvider, Dt as OptionData, Et as useExerciseOption, G as useUserOperators, J as useClosedUserPerps, K as useOperatorPerms, Mt as useTimelockConfig, Ot as useActiveUserOptions, Q as useMintPerp, Tt as useMarketData, W as useSetOperatorPerms, X as usePerpsOperator, Y as useUserPerps, Z as useClosePerp, _ as useCurrentTick, a as useTokenData, at as useOptionPremium, b as UniswapPoolData, c as batchGetAmountsFromLiquidity, ct as useMaxPositionSize, d as useLiquidityBlocks, et as ExtendEvent, f as useBurnLiquidity, g as usePriceAtTick, h as usePriceAtSqrtPriceX96, i as TokenData, it as useExtendOption, jt as useCurrentMarket, kt as useClosedUserOptions, l as useMintLiquidity, m as usePriceHistory, n as useApproval, nt as OptionEvent, o as useVaultTVL, ot as useOptionPnl, p as useMarketPriceHistory, q as useActiveUserPerps, r as useTokenBalance, rt as useOptionTimeline, s as useVaultData, st as useMintOption, t as useLens, tt as MintOptionEvent, u as LiquidityBlockData, v as useCurrentPrice, wt as useMarketVolume, x as usePoolData, y as PoolKey } from "./client-CpvAWmEA.cjs";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, PoolKey, TimelockProvider, TokenData, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMarketVolume, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtSqrtPriceX96, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useTokenBalance, useTokenData, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import "./uniswapMathLens-D5k9_mba.js";
2
- import { $ as ExerciseOptionEvent, At as TimelockProvider, Dt as OptionData, Et as useExerciseOption, G as useUserOperators, J as useClosedUserPerps, K as useOperatorPerms, Mt as useTimelockConfig, Ot as useActiveUserOptions, Q as useMintPerp, Tt as useMarketData, W as useSetOperatorPerms, X as usePerpsOperator, Y as useUserPerps, Z as useClosePerp, _ as useCurrentTick, a as useTokenData, at as useOptionPremium, b as UniswapPoolData, c as batchGetAmountsFromLiquidity, ct as useMaxPositionSize, d as useLiquidityBlocks, et as ExtendEvent, f as useBurnLiquidity, g as usePriceAtTick, h as usePriceAtSqrtPriceX96, i as TokenData, it as useExtendOption, jt as useCurrentMarket, kt as useClosedUserOptions, l as useMintLiquidity, m as usePriceHistory, n as useApproval, nt as OptionEvent, o as useVaultTVL, ot as useOptionPnl, p as useMarketPriceHistory, q as useActiveUserPerps, r as useTokenBalance, rt as useOptionTimeline, s as useVaultData, st as useMintOption, t as useLens, tt as MintOptionEvent, u as LiquidityBlockData, v as useCurrentPrice, wt as useMarketVolume, x as usePoolData, y as PoolKey } from "./client-DHFNhNXS.js";
2
+ import { $ as ExerciseOptionEvent, At as TimelockProvider, Dt as OptionData, Et as useExerciseOption, G as useUserOperators, J as useClosedUserPerps, K as useOperatorPerms, Mt as useTimelockConfig, Ot as useActiveUserOptions, Q as useMintPerp, Tt as useMarketData, W as useSetOperatorPerms, X as usePerpsOperator, Y as useUserPerps, Z as useClosePerp, _ as useCurrentTick, a as useTokenData, at as useOptionPremium, b as UniswapPoolData, c as batchGetAmountsFromLiquidity, ct as useMaxPositionSize, d as useLiquidityBlocks, et as ExtendEvent, f as useBurnLiquidity, g as usePriceAtTick, h as usePriceAtSqrtPriceX96, i as TokenData, it as useExtendOption, jt as useCurrentMarket, kt as useClosedUserOptions, l as useMintLiquidity, m as usePriceHistory, n as useApproval, nt as OptionEvent, o as useVaultTVL, ot as useOptionPnl, p as useMarketPriceHistory, q as useActiveUserPerps, r as useTokenBalance, rt as useOptionTimeline, s as useVaultData, st as useMintOption, t as useLens, tt as MintOptionEvent, u as LiquidityBlockData, v as useCurrentPrice, wt as useMarketVolume, x as usePoolData, y as PoolKey } from "./client-4fmvLRg4.js";
3
3
  export { ExerciseOptionEvent, ExtendEvent, LiquidityBlockData, MintOptionEvent, OptionData, OptionEvent, PoolKey, TimelockProvider, TokenData, UniswapPoolData, batchGetAmountsFromLiquidity, useActiveUserOptions, useActiveUserPerps, useApproval, useBurnLiquidity, useClosePerp, useClosedUserOptions, useClosedUserPerps, useCurrentMarket, useCurrentPrice, useCurrentTick, useExerciseOption, useExtendOption, useLens, useLiquidityBlocks, useMarketData, useMarketPriceHistory, useMarketVolume, useMaxPositionSize, useMintLiquidity, useMintOption, useMintPerp, useOperatorPerms, useOptionPnl, useOptionPremium, useOptionTimeline, usePerpsOperator, usePoolData, usePriceAtSqrtPriceX96, usePriceAtTick, usePriceHistory, useSetOperatorPerms, useTimelockConfig, useTokenBalance, useTokenData, useUserOperators, useUserPerps, useVaultData, useVaultTVL };
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  import { i as erc20Abi$1, r as lensAbi, t as optionsMarketAbi } from "./optionsMarket-C_RhiADr.js";
5
- import { A as token1ToToken0, B as swappers, D as roundTick, F as getStateView, H as statelessStateViewAbi, I as getTimelockLens, L as getTimelockMarket, N as getPriceHistory, O as token0ToToken1, P as getErc20, b as getPriceAtSqrtPriceX96, f as wrapAmount, j as token1ToToken0AtTick, k as token0ToToken1AtTick, m as wrapPrice, r as EMPTY_ARRAY, t as getPayoutAtPrice, v as getAmountsFromLiquidity, x as getPriceAtTick, y as getNearestValidStrikeTick } from "./optionUtils-BW_lbQA-.js";
5
+ import { A as token1ToToken0, B as swappers, D as roundTick, F as getStateView, H as statelessStateViewAbi, I as getTimelockLens, L as getTimelockMarket, N as getPriceHistory, O as token0ToToken1, P as getErc20, b as getPriceAtSqrtPriceX96, f as wrapAmount, j as token1ToToken0AtTick, k as token0ToToken1AtTick, m as wrapPrice, r as EMPTY_ARRAY, t as getPayoutAtPrice, v as getAmountsFromLiquidity, x as getPriceAtTick, y as getNearestValidStrikeTick } from "./optionUtils-BlHHdANG.js";
6
6
  import { t as singleOwnerVaultAbi } from "./singleOwnerVault-BJyEs_D_.js";
7
7
  import { encodeAbiParameters, encodeFunctionData, erc20Abi, maxUint256, zeroAddress } from "viem";
8
8
  import React, { createContext, useContext, useEffect, useMemo } from "react";
@@ -1097,7 +1097,7 @@ const swappers = {
1097
1097
  };
1098
1098
  const timelockLenses = {
1099
1099
  [viem_chains.monadTestnet.id]: "0x22745deD5F51A2F33D98c5682048f5d10baE3b92",
1100
- [viem_chains.unichainSepolia.id]: "0xF87aeAf01e021947c560982422996fF533BA085b"
1100
+ [viem_chains.unichainSepolia.id]: "0x40deCbfB827d423B584d8Dd724d34e20f14a3da2"
1101
1101
  };
1102
1102
  const swapRouters = {
1103
1103
  [viem_chains.monadTestnet.id]: "0xEd8a7Ca09c6Db6F4b9FAcB8De7e9A5449B1D21a4",
@@ -1695,4 +1695,4 @@ Object.defineProperty(exports, 'zero', {
1695
1695
  return zero;
1696
1696
  }
1697
1697
  });
1698
- //# sourceMappingURL=optionUtils-ChajfNR0.cjs.map
1698
+ //# sourceMappingURL=optionUtils-A4nEDz-4.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"optionUtils-ChajfNR0.cjs","names":["erc20Abi","optionsMarketAbi","lensAbi","swappers: Record<number, Address>","monadTestnet","unichainSepolia","timelockLenses: Record<number, Address>","swapRouters: Record<number, Address>","stateViews: Record<number, Address>","filled: PriceDataPoint[]","lastKnownPrice: PriceDataPoint | null","JSBI","Big","TickMath","SqrtPriceMath","EMPTY_ARRAY: never[]","zero: Amount","Big"],"sources":["../src/abis/statelessStateView.ts","../src/lib/contracts.ts","../src/lib/price.ts","../src/lib/liquidityUtils.ts","../src/lib/numberUtils.ts","../src/lib/optionUtils.ts"],"sourcesContent":["export const statelessStateViewAbi = [\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n] as const;\n","import type {Address, Client, PublicClient, GetContractReturnType} from 'viem';\nimport {getContract} from 'viem';\nimport {monadTestnet, unichainSepolia} from 'viem/chains';\n\nimport {erc20Abi} from '~/abis/erc20';\nimport {lensAbi} from '~/abis/lens';\nimport {uniswapMathLensAbi} from '~/abis/uniswapMathLens';\nimport {optionsMarketAbi} from '~/abis/optionsMarket';\nimport {statelessStateViewAbi} from '~/abis/statelessStateView';\n\nexport type TimelockMarket = GetContractReturnType<\n typeof optionsMarketAbi,\n Client,\n Address\n>;\nexport type TimelockLens = GetContractReturnType<\n typeof lensAbi,\n Client,\n Address\n>;\nexport type UniswapMathLens = GetContractReturnType<\n typeof uniswapMathLensAbi,\n Client,\n Address\n>;\n\nexport type TimelockMarketData = Awaited<\n ReturnType<TimelockLens['read']['getMarketData']>\n> & {address: Address};\n\nexport const getErc20 = (address: Address, client: Client) =>\n getContract({abi: erc20Abi, address, client});\n\nexport const getTimelockMarket = (\n address: Address,\n client: Client,\n): TimelockMarket => {\n return getContract({abi: optionsMarketAbi, address, client});\n};\n\nexport const getStateView = (client: Client | PublicClient) => {\n return getContract({\n abi: statelessStateViewAbi,\n address: stateViews[client.chain!.id],\n client,\n });\n};\n\nexport const getTimelockLens = (client: Client | PublicClient) =>\n getContract({\n abi: lensAbi,\n address: timelockLenses[client.chain!.id],\n client,\n });\n\nexport const swappers: Record<number, Address> = {\n [monadTestnet.id]: '0x877309663591ad974bE2c0C7fB453844c8D613D8',\n [unichainSepolia.id]: '0xa145eb0CAdB5F3c5e42931e60ee609DE74FDEA0b',\n};\nexport const timelockLenses: Record<number, Address> = {\n [monadTestnet.id]: '0x22745deD5F51A2F33D98c5682048f5d10baE3b92',\n [unichainSepolia.id]: '0xF87aeAf01e021947c560982422996fF533BA085b',\n};\nexport const swapRouters: Record<number, Address> = {\n [monadTestnet.id]: '0xEd8a7Ca09c6Db6F4b9FAcB8De7e9A5449B1D21a4',\n [unichainSepolia.id]: '0x7C9fBd739cb0e09657B7c6aB4eFc37bEe80820B0',\n};\nexport const stateViews: Record<number, Address> = {\n [monadTestnet.id]: '0xB85e32Ff9b08Be61cD888e5D997E51951BCA1A69',\n [unichainSepolia.id]: '0xB5ABc500f54a798E20ae8f91e21DBa29B1CE3F5a',\n};\n","import type {Address} from 'viem';\n\nexport interface PriceData {\n currentPrice: number;\n percentChange: number;\n poolAddr: string;\n timestamp: number;\n}\n\nexport interface PriceDataPoint {\n timestamp: Date;\n price: number;\n}\n\nexport type PriceResolution = '1m' | '5m' | '15m' | '1h' | '4h' | '1d';\n\nconst getResolutionConfig = (resolution: PriceResolution) => {\n const resolutionMap = {\n '1m': {timeframe: 'minute', aggregate: '1', seconds: 60},\n '5m': {timeframe: 'minute', aggregate: '5', seconds: 300},\n '15m': {timeframe: 'minute', aggregate: '15', seconds: 900},\n '1h': {timeframe: 'hour', aggregate: '1', seconds: 3600},\n '4h': {timeframe: 'hour', aggregate: '4', seconds: 14400},\n '1d': {timeframe: 'day', aggregate: '1', seconds: 86400},\n };\n return resolutionMap[resolution];\n};\n\nconst fillGaps = (\n prices: PriceDataPoint[],\n start: Date,\n end: Date,\n intervalMs: number,\n): PriceDataPoint[] => {\n if (prices.length === 0) return [];\n\n const priceMap = new Map<number, PriceDataPoint>();\n\n for (const point of prices) {\n const alignedTime =\n Math.floor(point.timestamp.getTime() / intervalMs) * intervalMs;\n priceMap.set(alignedTime, point);\n }\n const filled: PriceDataPoint[] = [];\n\n const actualStart =\n Math.floor(prices[0].timestamp.getTime() / intervalMs) * intervalMs;\n\n let currentTime = actualStart;\n let lastKnownPrice: PriceDataPoint | null = null;\n\n while (currentTime <= end.getTime()) {\n const existing = priceMap.get(currentTime);\n\n if (existing) {\n filled.push(existing);\n lastKnownPrice = existing;\n } else if (lastKnownPrice) {\n filled.push({\n timestamp: new Date(currentTime),\n price: lastKnownPrice.price,\n });\n }\n currentTime += intervalMs;\n }\n return filled;\n};\n\nexport const getPriceHistory = async (\n pool: Address,\n token: 0 | 1,\n resolution: PriceResolution,\n start: Date,\n end: Date,\n): Promise<PriceDataPoint[]> => {\n const network = 'monad-testnet';\n const {timeframe, aggregate, seconds} = getResolutionConfig(resolution);\n\n if (end.getTime() > Date.now()) {\n end = new Date(Date.now());\n }\n const startSecs = Math.floor(start.getTime() / 1000);\n const endSecs = Math.floor(end.getTime() / 1000);\n const diffSeconds = endSecs - startSecs;\n\n const limit = Math.min(Math.ceil(diffSeconds / seconds), 1000);\n\n const url =\n `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${pool}/ohlcv/${timeframe}` +\n `?aggregate=${aggregate}` +\n `&limit=${limit}` +\n `&token=${token === 0 ? 'base' : 'quote'}` +\n '&currency=usd' +\n `&before_timestamp=${endSecs}`;\n\n const res = await fetch(url, {headers: {Accept: 'application/json'}});\n\n if (!res.ok) {\n throw new Error(`Failed to fetch price history: ${res.statusText}`);\n }\n const data = (await res.json()) as {\n data: {\n attributes: {\n ohlcv_list: [number, number, number, number, number, number][];\n };\n };\n };\n const prices: PriceDataPoint[] = data.data.attributes.ohlcv_list\n .map(([timestamp, , , , close]) => ({\n timestamp: new Date(timestamp * 1000),\n price: close,\n }))\n .sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n\n return fillGaps(prices, start, end, seconds * 1000).filter(\n point =>\n point.timestamp.getTime() / 1000 >= startSecs &&\n point.timestamp.getTime() / 1000 <= endSecs,\n );\n};\n\nexport const getCurrentPrice = async (\n poolAddr: Address,\n tokenAddr: Address,\n): Promise<PriceData> => {\n const network = 'monad-testnet';\n const geckoUrl = `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${poolAddr.toLowerCase()}`;\n\n const response = await fetch(geckoUrl, {\n method: 'GET',\n headers: {Accept: 'application/json', 'User-Agent': 'TimelockTrade/1.0'},\n cache: 'no-store', // Keep no-store for real-time data\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch price data for pool ${poolAddr}`);\n }\n const data = (await response.json()) as {\n data: {\n attributes: {\n base_token_price_quote_token: string;\n quote_token_price_base_token: string;\n price_change_percentage: {h24: string};\n };\n relationships: {\n base_token: {data: {id: string; type: string}};\n quote_token: {data: {id: string; type: string}};\n };\n };\n };\n const pool = data.data.attributes;\n const relationships = data.data.relationships;\n\n const baseTokenAddr = relationships.base_token.data.id\n .split('_')[1]\n .toLowerCase();\n const quoteTokenAddr = relationships.quote_token.data.id\n .split('_')[1]\n .toLowerCase();\n\n const isBaseToken = tokenAddr.toLowerCase() === baseTokenAddr.toLowerCase();\n const isQuoteToken = tokenAddr.toLowerCase() === quoteTokenAddr.toLowerCase();\n\n if (!isBaseToken && !isQuoteToken) {\n throw new Error(`Token ${tokenAddr} is not part of pool ${poolAddr}`);\n }\n const price = isBaseToken\n ? pool.base_token_price_quote_token\n : pool.quote_token_price_base_token;\n const priceChange = pool.price_change_percentage?.h24;\n\n return {\n currentPrice: parseFloat(price || '0'),\n percentChange: parseFloat(priceChange || '0'),\n poolAddr: poolAddr,\n timestamp: Date.now(),\n };\n};\n","import {SqrtPriceMath, TickMath} from '@uniswap/v3-sdk';\nimport Big from 'big.js';\nimport JSBI from 'jsbi';\nimport type {Amount} from './numberUtils';\n\nexport const PRICE_PRECISION = BigInt(1e18);\n\nexport const getPriceAtSqrtPriceX96 = (sqrtPriceX96: bigint) => {\n const priceX192 = sqrtPriceX96 * sqrtPriceX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getSqrtPriceX96AtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return sqrtPriceX96;\n};\n\nexport const getPriceAtTick = (tick: number) => {\n const sqrtRatioX96 = BigInt(TickMath.getSqrtRatioAtTick(tick).toString());\n\n const priceX192 = sqrtRatioX96 * sqrtRatioX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getTickAtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n};\n\nexport const getNearestValidStrikeTick = (\n optionType: 'CALL' | 'PUT',\n optionAssetIsToken0: boolean,\n tickSpacing: number,\n currentTick: number,\n strikeTick?: number,\n) => {\n strikeTick = roundTick(strikeTick ?? currentTick, tickSpacing);\n\n if (\n (optionType === 'CALL' && optionAssetIsToken0) ||\n (optionType === 'PUT' && !optionAssetIsToken0)\n ) {\n strikeTick += tickSpacing;\n }\n return strikeTick;\n};\n\nexport const roundTick = (tick: number, spacing: number) => {\n const rem = tick % spacing;\n if (rem >= 0) return tick - rem;\n return tick - rem - spacing;\n};\n\nexport const token0ToToken1 = (amount0: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0 = (amount1: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const token0ToToken1AtTick = (amount0: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0AtTick = (amount1: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const getAmountsFromLiquidity = (\n tickLower: number,\n tickUpper: number,\n liquidity: bigint,\n currentTick: number,\n): [bigint, bigint] => {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(currentTick);\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n let delta0 = JSBI.BigInt(0);\n let delta1 = JSBI.BigInt(0);\n\n if (currentTick < tickLower) {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else if (currentTick >= tickUpper) {\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n }\n return [BigInt(delta0.toString()), BigInt(delta1.toString())];\n};\n\nexport const liquiditiesToAmount0 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount0 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount0Delta = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(amount0Delta.toString());\n }\n return amount0;\n};\n\nexport const liquiditiesToAmount1 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount1 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount1Delta = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(amount1Delta.toString());\n }\n return amount1;\n};\n\nexport const liquiditiesToAmounts = (\n liquidities: bigint[],\n startTick: number,\n price: bigint,\n tickSpacing: number,\n) => {\n let amount0 = 0n;\n let amount1 = 0n;\n\n const sqrtRatioX96 = getSqrtPriceX96AtPrice(price);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n if (JSBI.lessThanOrEqual(sqrtRatioX96, sqrtRatioAX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n } else if (JSBI.lessThan(sqrtRatioX96, sqrtRatioBX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n amount1 += BigInt(delta1.toString());\n } else {\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(delta1.toString());\n }\n }\n return [amount0, amount1];\n};\n","import Big from 'big.js';\n\nexport const EMPTY_ARRAY: never[] = [];\n\nexport type Amount = {\n scaled: bigint;\n unscaled: Big;\n decimals: number;\n formatted: string;\n};\n\nexport const zero: Amount = {\n scaled: 0n,\n unscaled: Big(0),\n decimals: 18,\n formatted: '0',\n};\n\nexport const wrapAmount = (scaled: bigint, decimals: number): Amount => {\n const unscaled = unscaleAmount(scaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals, formatted};\n};\n\nexport const wrapAmountUnscaled = (\n unscaled: Big | number | string,\n decimals: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scaled = scaleAmount(unscaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals, formatted};\n};\n\nexport const wrapPrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n): Amount => {\n const unscaled = unscalePrice(scaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals: 36 + decimals1 - decimals0, formatted};\n};\n\nexport const wrapPriceUnscaled = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scaled = scalePrice(unscaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals: 36 + decimals1 - decimals0, formatted};\n};\n\nexport const unscaleAmount = (scaled: bigint, decimals: number) => {\n return new Big(scaled.toString()).div(new Big(10).pow(decimals));\n};\n\nexport const scaleAmount = (\n unscaled: Big | number | string,\n decimals: number,\n) => {\n return BigInt(\n Big(unscaled).mul(new Big(10).pow(decimals)).round().toFixed(0),\n );\n};\n\nexport const unscalePrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return new Big(scaled.toString())\n .mul(new Big(10).pow(decimals0))\n .div(new Big(10).pow(decimals1))\n .div(new Big(10).pow(precision));\n};\n\nexport const scalePrice = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return BigInt(\n Big(unscaled)\n .mul(new Big(10).pow(precision))\n .mul(new Big(10).pow(decimals1))\n .div(new Big(10).pow(decimals0))\n .round()\n .toFixed(0),\n );\n};\n\nexport const formatAmount = (value?: Big | number | string) => {\n if (!value) return '-';\n value = new Big(value);\n\n if (value.gte(1e8)) return formatVagueAmount(value, 2);\n return formatCondensed(Big(value).toFixed(100));\n};\n\nexport const formatVagueAmount = (\n value: Big | number | bigint | string,\n fractionDigits = 2,\n) => {\n value = Number(value);\n if (value === 0) return '0';\n\n const formatted = value.toExponential(fractionDigits);\n return formatted.replace(/\\.?0+e/, 'e').replace(/e\\+/, 'e');\n};\n\nexport const formatCondensed = (\n input: string | number,\n decimals = 2,\n): string => {\n const str = (typeof input === 'number' ? input.toFixed(20) : input)\n .replace(/(\\.\\d*?)0+$/, '$1')\n .replace(/\\.$/, '');\n\n const [whole, decimal] = str.split('.');\n\n const formattedWhole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n if (!decimal) return formattedWhole;\n\n const leadingZeroMatch = decimal.match(/^(0{3,})/);\n\n if (leadingZeroMatch) {\n const zeroCount = leadingZeroMatch[1].length;\n const subscript = toSubscript(zeroCount.toString());\n const remaining = decimal.slice(zeroCount);\n\n const twoDigits = remaining.slice(0, decimals);\n return `${formattedWhole}.0${subscript}${twoDigits}`;\n } else {\n // No subscript needed, find first 2 significant digits\n const nonZeroStart = decimal.search(/[1-9]/); // Find first non-zero digit\n\n if (nonZeroStart === -1) {\n return formattedWhole; // All zeros\n }\n const significantPart = decimal.slice(nonZeroStart);\n const twoDigits = significantPart.slice(0, decimals);\n const leadingZeros = decimal.slice(0, nonZeroStart);\n\n return `${formattedWhole}.${leadingZeros}${twoDigits}`;\n }\n};\n\nconst toSubscript = (input: string) => {\n return input.replace(/[0-9]/g, m => '₀₁₂₃₄₅₆₇₈₉'[+m]);\n};\n\nexport const formatUSD = (value: Big | string | number): string => {\n return '$' + formatAmount(value);\n};\n","import type {OptionData} from '~/package/client';\nimport {\n getPriceAtTick,\n liquiditiesToAmounts,\n token0ToToken1,\n token1ToToken0,\n} from './liquidityUtils';\n\nexport const getPayoutAtTick = (\n option: OptionData,\n liquidities: bigint[],\n tick: number,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n return getPayoutAtPrice(\n option,\n liquidities,\n getPriceAtTick(tick),\n tickSpacing,\n optionAssetIsToken0,\n );\n};\n\nexport const getPayoutAtPrice = (\n option: OptionData,\n liquidities: bigint[],\n price: bigint,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n const [borrowedAmount0, borrowedAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n option.entryPrice,\n tickSpacing,\n );\n const [repayAmount0, repayAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n price,\n tickSpacing,\n );\n const totalAmount = optionAssetIsToken0\n ? borrowedAmount1 + token0ToToken1(borrowedAmount0, price)\n : borrowedAmount0 + token1ToToken0(borrowedAmount1, price);\n\n const repayAmount = optionAssetIsToken0\n ? repayAmount1 + token0ToToken1(repayAmount0, price)\n : repayAmount0 + token1ToToken0(repayAmount1, price);\n\n const delta = totalAmount - repayAmount;\n const payout = delta < 0n ? 0n : delta;\n\n return payout;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"optionUtils-A4nEDz-4.cjs","names":["erc20Abi","optionsMarketAbi","lensAbi","swappers: Record<number, Address>","monadTestnet","unichainSepolia","timelockLenses: Record<number, Address>","swapRouters: Record<number, Address>","stateViews: Record<number, Address>","filled: PriceDataPoint[]","lastKnownPrice: PriceDataPoint | null","JSBI","Big","TickMath","SqrtPriceMath","EMPTY_ARRAY: never[]","zero: Amount","Big"],"sources":["../src/abis/statelessStateView.ts","../src/lib/contracts.ts","../src/lib/price.ts","../src/lib/liquidityUtils.ts","../src/lib/numberUtils.ts","../src/lib/optionUtils.ts"],"sourcesContent":["export const statelessStateViewAbi = [\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthGlobals',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'feeGrowthGlobal0',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthGlobal1',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getFeeGrowthInside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthInside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'owner', type: 'address', internalType: 'address'},\n {name: 'tickLower', type: 'int24', internalType: 'int24'},\n {name: 'tickUpper', type: 'int24', internalType: 'int24'},\n {name: 'salt', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [\n {name: 'liquidity', type: 'uint128', internalType: 'uint128'},\n {\n name: 'feeGrowthInside0LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthInside1LastX128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getPositionLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'positionId', type: 'bytes32', internalType: 'bytes32'},\n ],\n outputs: [{name: 'liquidity', type: 'uint128', internalType: 'uint128'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getSlot0',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n ],\n outputs: [\n {\n name: 'sqrtPriceX96',\n type: 'uint160',\n internalType: 'uint160',\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n {name: 'protocolFee', type: 'uint24', internalType: 'uint24'},\n {name: 'lpFee', type: 'uint24', internalType: 'uint24'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickBitmap',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int16', internalType: 'int16'},\n ],\n outputs: [{name: 'tickBitmap', type: 'uint256', internalType: 'uint256'}],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickFeeGrowthOutside',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickInfo',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n {\n name: 'feeGrowthOutside0X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n {\n name: 'feeGrowthOutside1X128',\n type: 'uint256',\n internalType: 'uint256',\n },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {\n name: 'key',\n type: 'tuple',\n internalType: 'struct PoolKey',\n components: [\n {\n name: 'currency0',\n type: 'address',\n internalType: 'Currency',\n },\n {\n name: 'currency1',\n type: 'address',\n internalType: 'Currency',\n },\n {name: 'fee', type: 'uint24', internalType: 'uint24'},\n {name: 'tickSpacing', type: 'int24', internalType: 'int24'},\n {\n name: 'hooks',\n type: 'address',\n internalType: 'contract IHooks',\n },\n ],\n },\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getTickLiquidity',\n inputs: [\n {\n name: 'poolManager',\n type: 'address',\n internalType: 'contract IPoolManager',\n },\n {name: 'poolId', type: 'bytes32', internalType: 'PoolId'},\n {name: 'tick', type: 'int24', internalType: 'int24'},\n ],\n outputs: [\n {\n name: 'liquidityGross',\n type: 'uint128',\n internalType: 'uint128',\n },\n {name: 'liquidityNet', type: 'int128', internalType: 'int128'},\n ],\n stateMutability: 'view',\n },\n] as const;\n","import type {Address, Client, PublicClient, GetContractReturnType} from 'viem';\nimport {getContract} from 'viem';\nimport {monadTestnet, unichainSepolia} from 'viem/chains';\n\nimport {erc20Abi} from '~/abis/erc20';\nimport {lensAbi} from '~/abis/lens';\nimport {uniswapMathLensAbi} from '~/abis/uniswapMathLens';\nimport {optionsMarketAbi} from '~/abis/optionsMarket';\nimport {statelessStateViewAbi} from '~/abis/statelessStateView';\n\nexport type TimelockMarket = GetContractReturnType<\n typeof optionsMarketAbi,\n Client,\n Address\n>;\nexport type TimelockLens = GetContractReturnType<\n typeof lensAbi,\n Client,\n Address\n>;\nexport type UniswapMathLens = GetContractReturnType<\n typeof uniswapMathLensAbi,\n Client,\n Address\n>;\n\nexport type TimelockMarketData = Awaited<\n ReturnType<TimelockLens['read']['getMarketData']>\n> & {address: Address};\n\nexport const getErc20 = (address: Address, client: Client) =>\n getContract({abi: erc20Abi, address, client});\n\nexport const getTimelockMarket = (\n address: Address,\n client: Client,\n): TimelockMarket => {\n return getContract({abi: optionsMarketAbi, address, client});\n};\n\nexport const getStateView = (client: Client | PublicClient) => {\n return getContract({\n abi: statelessStateViewAbi,\n address: stateViews[client.chain!.id],\n client,\n });\n};\n\nexport const getTimelockLens = (client: Client | PublicClient) =>\n getContract({\n abi: lensAbi,\n address: timelockLenses[client.chain!.id],\n client,\n });\n\nexport const swappers: Record<number, Address> = {\n [monadTestnet.id]: '0x877309663591ad974bE2c0C7fB453844c8D613D8',\n [unichainSepolia.id]: '0xa145eb0CAdB5F3c5e42931e60ee609DE74FDEA0b',\n};\nexport const timelockLenses: Record<number, Address> = {\n [monadTestnet.id]: '0x22745deD5F51A2F33D98c5682048f5d10baE3b92',\n [unichainSepolia.id]: '0x40deCbfB827d423B584d8Dd724d34e20f14a3da2',\n};\nexport const swapRouters: Record<number, Address> = {\n [monadTestnet.id]: '0xEd8a7Ca09c6Db6F4b9FAcB8De7e9A5449B1D21a4',\n [unichainSepolia.id]: '0x7C9fBd739cb0e09657B7c6aB4eFc37bEe80820B0',\n};\nexport const stateViews: Record<number, Address> = {\n [monadTestnet.id]: '0xB85e32Ff9b08Be61cD888e5D997E51951BCA1A69',\n [unichainSepolia.id]: '0xB5ABc500f54a798E20ae8f91e21DBa29B1CE3F5a',\n};\n","import type {Address} from 'viem';\n\nexport interface PriceData {\n currentPrice: number;\n percentChange: number;\n poolAddr: string;\n timestamp: number;\n}\n\nexport interface PriceDataPoint {\n timestamp: Date;\n price: number;\n}\n\nexport type PriceResolution = '1m' | '5m' | '15m' | '1h' | '4h' | '1d';\n\nconst getResolutionConfig = (resolution: PriceResolution) => {\n const resolutionMap = {\n '1m': {timeframe: 'minute', aggregate: '1', seconds: 60},\n '5m': {timeframe: 'minute', aggregate: '5', seconds: 300},\n '15m': {timeframe: 'minute', aggregate: '15', seconds: 900},\n '1h': {timeframe: 'hour', aggregate: '1', seconds: 3600},\n '4h': {timeframe: 'hour', aggregate: '4', seconds: 14400},\n '1d': {timeframe: 'day', aggregate: '1', seconds: 86400},\n };\n return resolutionMap[resolution];\n};\n\nconst fillGaps = (\n prices: PriceDataPoint[],\n start: Date,\n end: Date,\n intervalMs: number,\n): PriceDataPoint[] => {\n if (prices.length === 0) return [];\n\n const priceMap = new Map<number, PriceDataPoint>();\n\n for (const point of prices) {\n const alignedTime =\n Math.floor(point.timestamp.getTime() / intervalMs) * intervalMs;\n priceMap.set(alignedTime, point);\n }\n const filled: PriceDataPoint[] = [];\n\n const actualStart =\n Math.floor(prices[0].timestamp.getTime() / intervalMs) * intervalMs;\n\n let currentTime = actualStart;\n let lastKnownPrice: PriceDataPoint | null = null;\n\n while (currentTime <= end.getTime()) {\n const existing = priceMap.get(currentTime);\n\n if (existing) {\n filled.push(existing);\n lastKnownPrice = existing;\n } else if (lastKnownPrice) {\n filled.push({\n timestamp: new Date(currentTime),\n price: lastKnownPrice.price,\n });\n }\n currentTime += intervalMs;\n }\n return filled;\n};\n\nexport const getPriceHistory = async (\n pool: Address,\n token: 0 | 1,\n resolution: PriceResolution,\n start: Date,\n end: Date,\n): Promise<PriceDataPoint[]> => {\n const network = 'monad-testnet';\n const {timeframe, aggregate, seconds} = getResolutionConfig(resolution);\n\n if (end.getTime() > Date.now()) {\n end = new Date(Date.now());\n }\n const startSecs = Math.floor(start.getTime() / 1000);\n const endSecs = Math.floor(end.getTime() / 1000);\n const diffSeconds = endSecs - startSecs;\n\n const limit = Math.min(Math.ceil(diffSeconds / seconds), 1000);\n\n const url =\n `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${pool}/ohlcv/${timeframe}` +\n `?aggregate=${aggregate}` +\n `&limit=${limit}` +\n `&token=${token === 0 ? 'base' : 'quote'}` +\n '&currency=usd' +\n `&before_timestamp=${endSecs}`;\n\n const res = await fetch(url, {headers: {Accept: 'application/json'}});\n\n if (!res.ok) {\n throw new Error(`Failed to fetch price history: ${res.statusText}`);\n }\n const data = (await res.json()) as {\n data: {\n attributes: {\n ohlcv_list: [number, number, number, number, number, number][];\n };\n };\n };\n const prices: PriceDataPoint[] = data.data.attributes.ohlcv_list\n .map(([timestamp, , , , close]) => ({\n timestamp: new Date(timestamp * 1000),\n price: close,\n }))\n .sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());\n\n return fillGaps(prices, start, end, seconds * 1000).filter(\n point =>\n point.timestamp.getTime() / 1000 >= startSecs &&\n point.timestamp.getTime() / 1000 <= endSecs,\n );\n};\n\nexport const getCurrentPrice = async (\n poolAddr: Address,\n tokenAddr: Address,\n): Promise<PriceData> => {\n const network = 'monad-testnet';\n const geckoUrl = `https://api.geckoterminal.com/api/v2/networks/${network}/pools/${poolAddr.toLowerCase()}`;\n\n const response = await fetch(geckoUrl, {\n method: 'GET',\n headers: {Accept: 'application/json', 'User-Agent': 'TimelockTrade/1.0'},\n cache: 'no-store', // Keep no-store for real-time data\n });\n if (!response.ok) {\n throw new Error(`Failed to fetch price data for pool ${poolAddr}`);\n }\n const data = (await response.json()) as {\n data: {\n attributes: {\n base_token_price_quote_token: string;\n quote_token_price_base_token: string;\n price_change_percentage: {h24: string};\n };\n relationships: {\n base_token: {data: {id: string; type: string}};\n quote_token: {data: {id: string; type: string}};\n };\n };\n };\n const pool = data.data.attributes;\n const relationships = data.data.relationships;\n\n const baseTokenAddr = relationships.base_token.data.id\n .split('_')[1]\n .toLowerCase();\n const quoteTokenAddr = relationships.quote_token.data.id\n .split('_')[1]\n .toLowerCase();\n\n const isBaseToken = tokenAddr.toLowerCase() === baseTokenAddr.toLowerCase();\n const isQuoteToken = tokenAddr.toLowerCase() === quoteTokenAddr.toLowerCase();\n\n if (!isBaseToken && !isQuoteToken) {\n throw new Error(`Token ${tokenAddr} is not part of pool ${poolAddr}`);\n }\n const price = isBaseToken\n ? pool.base_token_price_quote_token\n : pool.quote_token_price_base_token;\n const priceChange = pool.price_change_percentage?.h24;\n\n return {\n currentPrice: parseFloat(price || '0'),\n percentChange: parseFloat(priceChange || '0'),\n poolAddr: poolAddr,\n timestamp: Date.now(),\n };\n};\n","import {SqrtPriceMath, TickMath} from '@uniswap/v3-sdk';\nimport Big from 'big.js';\nimport JSBI from 'jsbi';\nimport type {Amount} from './numberUtils';\n\nexport const PRICE_PRECISION = BigInt(1e18);\n\nexport const getPriceAtSqrtPriceX96 = (sqrtPriceX96: bigint) => {\n const priceX192 = sqrtPriceX96 * sqrtPriceX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getSqrtPriceX96AtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return sqrtPriceX96;\n};\n\nexport const getPriceAtTick = (tick: number) => {\n const sqrtRatioX96 = BigInt(TickMath.getSqrtRatioAtTick(tick).toString());\n\n const priceX192 = sqrtRatioX96 * sqrtRatioX96;\n const price = (priceX192 * PRICE_PRECISION) / BigInt(2 ** 192);\n\n return price;\n};\n\nexport const getTickAtPrice = (price: bigint) => {\n const priceX192 = (price * BigInt(2 ** 192)) / PRICE_PRECISION;\n const sqrtPriceX96 = JSBI.BigInt(\n new Big(priceX192.toString()).sqrt().toFixed(0),\n );\n return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n};\n\nexport const getNearestValidStrikeTick = (\n optionType: 'CALL' | 'PUT',\n optionAssetIsToken0: boolean,\n tickSpacing: number,\n currentTick: number,\n strikeTick?: number,\n) => {\n strikeTick = roundTick(strikeTick ?? currentTick, tickSpacing);\n\n if (\n (optionType === 'CALL' && optionAssetIsToken0) ||\n (optionType === 'PUT' && !optionAssetIsToken0)\n ) {\n strikeTick += tickSpacing;\n }\n return strikeTick;\n};\n\nexport const roundTick = (tick: number, spacing: number) => {\n const rem = tick % spacing;\n if (rem >= 0) return tick - rem;\n return tick - rem - spacing;\n};\n\nexport const token0ToToken1 = (amount0: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0 = (amount1: bigint, price: bigint | Amount) => {\n price = typeof price === 'bigint' ? price : price.scaled;\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const token0ToToken1AtTick = (amount0: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount0 * price) / PRICE_PRECISION;\n};\nexport const token1ToToken0AtTick = (amount1: bigint, tick: number) => {\n const price = getPriceAtTick(tick);\n return (amount1 * PRICE_PRECISION) / price;\n};\n\nexport const getAmountsFromLiquidity = (\n tickLower: number,\n tickUpper: number,\n liquidity: bigint,\n currentTick: number,\n): [bigint, bigint] => {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(currentTick);\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n let delta0 = JSBI.BigInt(0);\n let delta1 = JSBI.BigInt(0);\n\n if (currentTick < tickLower) {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else if (currentTick >= tickUpper) {\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n } else {\n delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n }\n return [BigInt(delta0.toString()), BigInt(delta1.toString())];\n};\n\nexport const liquiditiesToAmount0 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount0 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount0Delta = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(amount0Delta.toString());\n }\n return amount0;\n};\n\nexport const liquiditiesToAmount1 = (\n liquidities: bigint[],\n startTick: number,\n tickSpacing: number,\n) => {\n let amount1 = BigInt(0);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n const amount1Delta = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(amount1Delta.toString());\n }\n return amount1;\n};\n\nexport const liquiditiesToAmounts = (\n liquidities: bigint[],\n startTick: number,\n price: bigint,\n tickSpacing: number,\n) => {\n let amount0 = 0n;\n let amount1 = 0n;\n\n const sqrtRatioX96 = getSqrtPriceX96AtPrice(price);\n\n for (let i = 0; i < liquidities.length; i++) {\n const liquidity = liquidities[i];\n if (liquidity === BigInt(0)) continue;\n\n const tickLower = startTick + tickSpacing * i;\n const tickUpper = tickLower + tickSpacing;\n\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n const liquidityJSBI = JSBI.BigInt(liquidity.toString());\n\n if (JSBI.lessThanOrEqual(sqrtRatioX96, sqrtRatioAX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n } else if (JSBI.lessThan(sqrtRatioX96, sqrtRatioBX96)) {\n const delta0 = SqrtPriceMath.getAmount0Delta(\n sqrtRatioX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioX96,\n liquidityJSBI,\n false,\n );\n amount0 += BigInt(delta0.toString());\n amount1 += BigInt(delta1.toString());\n } else {\n const delta1 = SqrtPriceMath.getAmount1Delta(\n sqrtRatioAX96,\n sqrtRatioBX96,\n liquidityJSBI,\n false,\n );\n amount1 += BigInt(delta1.toString());\n }\n }\n return [amount0, amount1];\n};\n","import Big from 'big.js';\n\nexport const EMPTY_ARRAY: never[] = [];\n\nexport type Amount = {\n scaled: bigint;\n unscaled: Big;\n decimals: number;\n formatted: string;\n};\n\nexport const zero: Amount = {\n scaled: 0n,\n unscaled: Big(0),\n decimals: 18,\n formatted: '0',\n};\n\nexport const wrapAmount = (scaled: bigint, decimals: number): Amount => {\n const unscaled = unscaleAmount(scaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals, formatted};\n};\n\nexport const wrapAmountUnscaled = (\n unscaled: Big | number | string,\n decimals: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scaled = scaleAmount(unscaled, decimals);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals, formatted};\n};\n\nexport const wrapPrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n): Amount => {\n const unscaled = unscalePrice(scaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals: 36 + decimals1 - decimals0, formatted};\n};\n\nexport const wrapPriceUnscaled = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n): Amount => {\n unscaled = Big(unscaled);\n const scaled = scalePrice(unscaled, decimals0, decimals1);\n const formatted = formatAmount(unscaled);\n return {scaled, unscaled, decimals: 36 + decimals1 - decimals0, formatted};\n};\n\nexport const unscaleAmount = (scaled: bigint, decimals: number) => {\n return new Big(scaled.toString()).div(new Big(10).pow(decimals));\n};\n\nexport const scaleAmount = (\n unscaled: Big | number | string,\n decimals: number,\n) => {\n return BigInt(\n Big(unscaled).mul(new Big(10).pow(decimals)).round().toFixed(0),\n );\n};\n\nexport const unscalePrice = (\n scaled: bigint,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return new Big(scaled.toString())\n .mul(new Big(10).pow(decimals0))\n .div(new Big(10).pow(decimals1))\n .div(new Big(10).pow(precision));\n};\n\nexport const scalePrice = (\n unscaled: Big | number | string,\n decimals0: number,\n decimals1: number,\n precision = 18,\n) => {\n return BigInt(\n Big(unscaled)\n .mul(new Big(10).pow(precision))\n .mul(new Big(10).pow(decimals1))\n .div(new Big(10).pow(decimals0))\n .round()\n .toFixed(0),\n );\n};\n\nexport const formatAmount = (value?: Big | number | string) => {\n if (!value) return '-';\n value = new Big(value);\n\n if (value.gte(1e8)) return formatVagueAmount(value, 2);\n return formatCondensed(Big(value).toFixed(100));\n};\n\nexport const formatVagueAmount = (\n value: Big | number | bigint | string,\n fractionDigits = 2,\n) => {\n value = Number(value);\n if (value === 0) return '0';\n\n const formatted = value.toExponential(fractionDigits);\n return formatted.replace(/\\.?0+e/, 'e').replace(/e\\+/, 'e');\n};\n\nexport const formatCondensed = (\n input: string | number,\n decimals = 2,\n): string => {\n const str = (typeof input === 'number' ? input.toFixed(20) : input)\n .replace(/(\\.\\d*?)0+$/, '$1')\n .replace(/\\.$/, '');\n\n const [whole, decimal] = str.split('.');\n\n const formattedWhole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n if (!decimal) return formattedWhole;\n\n const leadingZeroMatch = decimal.match(/^(0{3,})/);\n\n if (leadingZeroMatch) {\n const zeroCount = leadingZeroMatch[1].length;\n const subscript = toSubscript(zeroCount.toString());\n const remaining = decimal.slice(zeroCount);\n\n const twoDigits = remaining.slice(0, decimals);\n return `${formattedWhole}.0${subscript}${twoDigits}`;\n } else {\n // No subscript needed, find first 2 significant digits\n const nonZeroStart = decimal.search(/[1-9]/); // Find first non-zero digit\n\n if (nonZeroStart === -1) {\n return formattedWhole; // All zeros\n }\n const significantPart = decimal.slice(nonZeroStart);\n const twoDigits = significantPart.slice(0, decimals);\n const leadingZeros = decimal.slice(0, nonZeroStart);\n\n return `${formattedWhole}.${leadingZeros}${twoDigits}`;\n }\n};\n\nconst toSubscript = (input: string) => {\n return input.replace(/[0-9]/g, m => '₀₁₂₃₄₅₆₇₈₉'[+m]);\n};\n\nexport const formatUSD = (value: Big | string | number): string => {\n return '$' + formatAmount(value);\n};\n","import type {OptionData} from '~/package/client';\nimport {\n getPriceAtTick,\n liquiditiesToAmounts,\n token0ToToken1,\n token1ToToken0,\n} from './liquidityUtils';\n\nexport const getPayoutAtTick = (\n option: OptionData,\n liquidities: bigint[],\n tick: number,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n return getPayoutAtPrice(\n option,\n liquidities,\n getPriceAtTick(tick),\n tickSpacing,\n optionAssetIsToken0,\n );\n};\n\nexport const getPayoutAtPrice = (\n option: OptionData,\n liquidities: bigint[],\n price: bigint,\n tickSpacing: number,\n optionAssetIsToken0: boolean,\n) => {\n const [borrowedAmount0, borrowedAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n option.entryPrice,\n tickSpacing,\n );\n const [repayAmount0, repayAmount1] = liquiditiesToAmounts(\n liquidities,\n option.startTick,\n price,\n tickSpacing,\n );\n const totalAmount = optionAssetIsToken0\n ? borrowedAmount1 + token0ToToken1(borrowedAmount0, price)\n : borrowedAmount0 + token1ToToken0(borrowedAmount1, price);\n\n const repayAmount = optionAssetIsToken0\n ? repayAmount1 + token0ToToken1(repayAmount0, price)\n : repayAmount0 + token1ToToken0(repayAmount1, price);\n\n const delta = totalAmount - repayAmount;\n const payout = delta < 0n ? 0n : delta;\n\n return payout;\n};\n"],"mappings":"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"}