@strobelabs/perpcity-sdk 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -10
- package/dist/index.d.mts +989 -13
- package/dist/index.d.ts +989 -13
- package/dist/index.js +1399 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1388 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/context.ts","../src/utils/constants.ts","../src/utils/conversions.ts","../src/entities/position.ts","../src/entities/perp.ts","../src/entities/perp-collection.ts","../src/entities/perp-manager.ts"],"sourcesContent":["export * from './context';\nexport * from './entities';\nexport * from './utils';","import type { PublicClient, WalletClient, Abi, Address} from \"viem\";\nimport { GraphQLClient } from 'graphql-request'\n\nexport type PerpCityContextConfig = {\n publicClient: PublicClient;\n walletClient: WalletClient;\n goldskyEndpoint: string;\n perpManagerAddress: Address;\n perpManagerAbi: Abi;\n beaconAbi: Abi;\n}\n\nexport class PerpCityContext {\n public readonly publicClient: PublicClient;\n public readonly walletClient: WalletClient;\n // below will be hard-coded in addresses.ts, abis.ts, and endpoints.ts once they are frozen\n // they are currently being rapidly redeployed so can be specified by the sdk consumer for now\n public readonly goldskyClient: GraphQLClient;\n public readonly perpManagerAddress: Address;\n public readonly perpManagerAbi: Abi;\n public readonly beaconAbi: Abi;\n\n constructor(config: PerpCityContextConfig) {\n this.publicClient = config.publicClient;\n this.walletClient = config.walletClient;\n this.goldskyClient = new GraphQLClient(config.goldskyEndpoint);\n this.perpManagerAddress = config.perpManagerAddress;\n this.perpManagerAbi = config.perpManagerAbi;\n this.beaconAbi = config.beaconAbi;\n }\n}","export const DECIMAL_PRECISION_6: number = 1000000; // 1e6\n\nexport const Q96: bigint = 79228162514264337593543950336n; // 2^96\n","import { DECIMAL_PRECISION_6, Q96 } from \"./constants\";\n\nexport function priceToSqrtPriceX96(price: number): bigint {\n if (price > Number.MAX_SAFE_INTEGER) {\n throw new Error('Price too large');\n }\n\n const scaledSqrtPrice: number = Math.sqrt(price) * DECIMAL_PRECISION_6;\n return BigInt(Math.floor(scaledSqrtPrice)) * Q96 / BigInt(DECIMAL_PRECISION_6);\n}\n\nexport function scale6Decimals(amount: number): bigint {\n if (amount > Number.MAX_SAFE_INTEGER / DECIMAL_PRECISION_6) {\n throw new Error('Amount too large');\n }\n\n return BigInt(Math.floor(amount * DECIMAL_PRECISION_6));\n}\n\nexport function scaleX96(amount: number): bigint {\n return BigInt(scale6Decimals(amount)) * Q96 / BigInt(DECIMAL_PRECISION_6);\n}","import type { Hex } from \"viem\";\nimport { PerpCityContext } from \"../context\";\nimport { scale6Decimals } from \"../utils\";\n\nexport type ClosePositionParams = {\n minAmt0Out: number;\n minAmt1Out: number;\n maxAmt1In: number;\n }\n\nexport class Position {\n private readonly context: PerpCityContext;\n private readonly perpId: Hex;\n public readonly positionId: bigint;\n\n constructor(context: PerpCityContext, perpId: Hex, positionId: bigint) {\n this.context = context;\n this.perpId = perpId;\n this.positionId = positionId;\n }\n\n async closePosition(params: ClosePositionParams): Promise<Position | null> {\n const contractParams = {\n positionId: this.positionId,\n minAmt0Out: scale6Decimals(params.minAmt0Out),\n minAmt1Out: scale6Decimals(params.minAmt1Out),\n maxAmt1In: scale6Decimals(params.maxAmt1In),\n };\n \n const { result, request } = await this.context.publicClient.simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'closePosition',\n args: [this.perpId, contractParams],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n const takerPositionId: bigint = result[0];\n\n if (takerPositionId === 0n) {\n return null;\n }\n \n return new Position(this.context, this.perpId, takerPositionId);\n }\n}","import type {Hex} from \"viem\";\nimport { PerpCityContext } from \"../context\";\nimport { Position } from \"./position\";\nimport { scale6Decimals, scaleX96 } from \"../utils\";\n\nexport type OpenMakerPositionParams = {\n margin: number;\n liquidity: number;\n tickLower: number;\n tickUpper: number;\n maxAmt0In: number;\n maxAmt1In: number;\n}\n\nexport type OpenTakerPositionParams = {\n isLong: boolean;\n margin: number;\n leverage: number;\n unspecifiedAmountLimit: number;\n \n}\n\nexport class Perp {\n private readonly context: PerpCityContext;\n public readonly id: Hex;\n\n constructor(context: PerpCityContext, id: Hex) {\n this.context = context;\n this.id = id;\n }\n\n // READS\n\n // WRITES\n\n // TODO: read tickspacing from perp to adjust tickLower and tickUpper\n async openMakerPosition(params: OpenMakerPositionParams): Promise<Position> {\n const contractParams = {\n margin: scale6Decimals(params.margin),\n liquidity: BigInt(params.liquidity),\n tickLower: BigInt(params.tickLower),\n tickUpper: BigInt(params.tickUpper),\n maxAmt0In: scale6Decimals(params.maxAmt0In),\n maxAmt1In: scale6Decimals(params.maxAmt1In),\n };\n\n const { result, request } = await this.context.publicClient.simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'openMakerPosition',\n args: [this.id, contractParams],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Position(this.context, this.id, result[0] as bigint);\n }\n\n async openTakerPosition(params: OpenTakerPositionParams): Promise<Position> {\n const contractParams = {\n isLong: params.isLong,\n margin: scale6Decimals(params.margin),\n leverage: scaleX96(params.leverage),\n unspecifiedAmountLimit: scale6Decimals(params.unspecifiedAmountLimit),\n };\n \n const { result, request } = await this.context.publicClient.simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'openTakerPosition',\n args: [this.id, contractParams],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Position(this.context, this.id, result[0] as bigint);\n }\n}","import { PerpCityContext } from \"../context\";\nimport { Perp } from \"./perp\";\n\n// In the future, this is where multicalls are used to fetch data across many perps\nexport class PerpCollection {\n private readonly context: PerpCityContext;\n public readonly perps: Perp[];\n\n constructor(context: PerpCityContext, perps: Perp[]) {\n this.context = context;\n this.perps = perps;\n }\n}","import { PerpCityContext } from \"../context\";\nimport { Perp } from \"./perp\";\nimport { priceToSqrtPriceX96 } from \"../utils\";\nimport { PerpCollection } from \"./perp-collection\";\nimport type { Address, Hex } from \"viem\";\nimport { gql } from \"graphql-request\";\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { parse } from 'graphql';\n\nexport type CreatePerpParams = {\n startingPrice: number;\n beacon: Address;\n}\n\nexport class PerpManager {\n private readonly context: PerpCityContext;\n \n constructor(context: PerpCityContext) {\n this.context = context;\n }\n\n // READS\n\n async getPerps(): Promise<PerpCollection> {\n const query: TypedDocumentNode<{ perps: { id: Hex }[] }, Record<any, never>> = parse(gql`\n {\n perps {\n id\n }\n }\n `)\n\n const response = await this.context.goldskyClient.request(query);\n \n const perps = response.perps.map((perpData: { id: Hex }) => \n new Perp(this.context, perpData.id as Hex)\n );\n\n return new PerpCollection(this.context, perps);\n }\n\n // WRITES\n\n async createPerp(params: CreatePerpParams): Promise<Perp> {\n const sqrtPriceX96: bigint = priceToSqrtPriceX96(params.startingPrice);\n\n // const contractParams = {\n // startingSqrtPriceX96: sqrtPriceX96,\n // beacon: params.beacon,\n // };\n\n const { result, request } = await this.context.publicClient.simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'createPerp',\n args: [sqrtPriceX96, params.beacon],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Perp(this.context, result[0] as Hex);\n }\n}"],"mappings":"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","names":["import_graphql_request"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/context.ts","../src/entities/perp.ts","../src/entities/position.ts","../src/utils/constants.ts","../src/utils/conversions.ts","../src/utils/approve.ts","../src/utils/liquidity.ts","../src/entities/perp-collection.ts","../src/entities/perp-manager.ts","../src/addresses.ts","../src/endpoints.ts","../src/abis/perp-manager.ts","../src/abis/beacon.ts"],"sourcesContent":["export * from './context';\nexport * from './entities';\nexport * from './utils';\nexport * from './addresses';\nexport * from './endpoints';\nexport * from './abis';","import type { WalletClient, Abi, Address} from \"viem\";\nimport { publicActions } from \"viem\";\nimport { GraphQLClient } from 'graphql-request'\n\nexport type PerpCityContextConfig = {\n walletClient: WalletClient;\n goldskyEndpoint: string;\n perpManagerAddress: Address;\n perpManagerAbi: Abi;\n beaconAbi: Abi;\n}\n\nexport class PerpCityContext {\n public readonly walletClient: WalletClient;\n // below will be hard-coded in addresses.ts, abis.ts, and endpoints.ts once they are frozen\n // they are currently being rapidly redeployed so can be specified by the sdk consumer for now\n public readonly goldskyClient: GraphQLClient;\n public readonly perpManagerAddress: Address;\n public readonly perpManagerAbi: Abi;\n public readonly beaconAbi: Abi;\n\n constructor(config: PerpCityContextConfig) {\n this.walletClient = config.walletClient.extend(publicActions);\n this.goldskyClient = new GraphQLClient(config.goldskyEndpoint);\n this.perpManagerAddress = config.perpManagerAddress;\n this.perpManagerAbi = config.perpManagerAbi;\n this.beaconAbi = config.beaconAbi;\n }\n}","import type {Hex} from \"viem\";\nimport { publicActions } from \"viem\";\nimport { PerpCityContext } from \"../context\";\nimport { Position } from \"./position\";\nimport { estimateLiquidity, priceToTick, scale6Decimals, scaleX96 } from \"../utils\";\nimport { nearestUsableTick } from \"@uniswap/v3-sdk\";\nimport { approveUsdc } from \"../utils/approve\";\n\nexport type OpenMakerPositionParams = {\n margin: number;\n priceLower: number;\n priceUpper: number;\n maxAmt0In: number;\n maxAmt1In: number;\n}\n\nexport type OpenTakerPositionParams = {\n isLong: boolean;\n margin: number;\n leverage: number;\n unspecifiedAmountLimit: number;\n}\n\nexport class Perp {\n public readonly context: PerpCityContext;\n public readonly id: Hex;\n\n constructor(context: PerpCityContext, id: Hex) {\n this.context = context;\n this.id = id;\n }\n\n // READS\n\n async getTickSpacing(): Promise<number> {\n const tickSpacing: bigint = await this.context.walletClient.extend(publicActions).readContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'tickSpacing',\n args: [this.id]\n }) as bigint;\n\n return Number(tickSpacing);\n }\n\n // WRITES\n\n async approveAndOpenMakerPosition(params: OpenMakerPositionParams): Promise<Position> {\n await approveUsdc(this.context, scale6Decimals(params.margin));\n return await this.openMakerPosition(params);\n }\n\n async approveAndOpenTakerPosition(params: OpenTakerPositionParams): Promise<Position> {\n await approveUsdc(this.context, scale6Decimals(params.margin));\n return await this.openTakerPosition(params);\n }\n\n async openMakerPosition(params: OpenMakerPositionParams): Promise<Position> {\n const tickSpacing = await this.getTickSpacing();\n\n const scaledUsd = scale6Decimals(params.margin);\n const tickLower = BigInt(nearestUsableTick(priceToTick(params.priceLower, true), tickSpacing));\n const tickUpper = BigInt(nearestUsableTick(priceToTick(params.priceUpper, false), tickSpacing));\n\n const contractParams = {\n margin: scaledUsd,\n liquidity: await estimateLiquidity(this.context, tickLower, tickUpper, scaledUsd),\n tickLower: tickLower,\n tickUpper: tickUpper,\n maxAmt0In: scale6Decimals(params.maxAmt0In),\n maxAmt1In: scale6Decimals(params.maxAmt1In),\n };\n\n const { result, request } = await this.context.walletClient.extend(publicActions).simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'openMakerPosition',\n args: [this.id, contractParams],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Position(this.context, this.id, result as bigint);\n }\n\n async openTakerPosition(params: OpenTakerPositionParams): Promise<Position> {\n const contractParams = {\n isLong: params.isLong,\n margin: scale6Decimals(params.margin),\n levX96: scaleX96(params.leverage),\n unspecifiedAmountLimit: scale6Decimals(params.unspecifiedAmountLimit),\n };\n \n const { result, request } = await this.context.walletClient.extend(publicActions).simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'openTakerPosition',\n args: [this.id, contractParams],\n account: this.context.walletClient.account,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Position(this.context, this.id, result as bigint);\n }\n}","import type { Hex } from \"viem\";\nimport { publicActions } from \"viem\";\nimport { PerpCityContext } from \"../context\";\nimport { scale6Decimals } from \"../utils\";\n\nexport type ClosePositionParams = {\n minAmt0Out: number;\n minAmt1Out: number;\n maxAmt1In: number;\n }\n\nexport class Position {\n public readonly context: PerpCityContext;\n public readonly perpId: Hex;\n public readonly positionId: bigint;\n\n constructor(context: PerpCityContext, perpId: Hex, positionId: bigint) {\n this.context = context;\n this.perpId = perpId;\n this.positionId = positionId;\n }\n\n// async closePosition(params: ClosePositionParams): Promise<Position | null> {\n// const contractParams = {\n// positionId: this.positionId,\n// minAmt0Out: scale6Decimals(params.minAmt0Out),\n// minAmt1Out: scale6Decimals(params.minAmt1Out),\n// maxAmt1In: scale6Decimals(params.maxAmt1In),\n// };\n \n// const { result, request } = await this.context.walletClient.extend(publicActions).simulateContract({\n// address: this.context.perpManagerAddress,\n// abi: this.context.perpManagerAbi,\n// functionName: 'closePosition',\n// args: [this.perpId, contractParams],\n// account: this.context.walletClient.account,\n// });\n\n// await this.context.walletClient.writeContract(request);\n\n// const takerPositionId = result[0];\n\n// if (takerPositionId === 0n) {\n// return null;\n// }\n \n// return new Position(this.context, this.perpId, takerPositionId);\n// }\n}","export const DECIMAL_PRECISION_6: number = 1000000; // 1e6\n\nexport const Q96: bigint = 79228162514264337593543950336n; // 2^96\n","import { DECIMAL_PRECISION_6, Q96 } from \"./constants\";\n\nexport function priceToSqrtPriceX96(price: number): bigint {\n if (price > Number.MAX_SAFE_INTEGER) {\n throw new Error('Price too large');\n }\n\n const scaledSqrtPrice: number = Math.sqrt(price) * DECIMAL_PRECISION_6;\n return BigInt(Math.floor(scaledSqrtPrice)) * Q96 / BigInt(DECIMAL_PRECISION_6);\n}\n\nexport function scale6Decimals(amount: number): bigint {\n if (amount > Number.MAX_SAFE_INTEGER / DECIMAL_PRECISION_6) {\n throw new Error('Amount too large');\n }\n\n return BigInt(Math.floor(amount * DECIMAL_PRECISION_6));\n}\n\nexport function scaleX96(amount: number): bigint {\n return BigInt(scale6Decimals(amount)) * Q96 / BigInt(DECIMAL_PRECISION_6);\n}\n\nexport function priceToTick(price: number, roundDown: boolean): number {\n const logSqrtPrice = Math.log(Math.sqrt(price)) / Math.log(1.0001);\n return roundDown ? Math.floor(logSqrtPrice) : Math.ceil(logSqrtPrice);\n}","import { PerpCityContext } from \"../context\";\nimport { erc20Abi, publicActions } from \"viem\";\nimport type { Address } from \"viem\";\n\nexport async function approveUsdc(context: PerpCityContext, amount: bigint) {\n const usdcAddress = await getUsdcAddress(context);\n\n const { request } = await context.walletClient.extend(publicActions).simulateContract({\n address: usdcAddress,\n abi: erc20Abi,\n functionName: 'approve',\n args: [context.perpManagerAddress, amount],\n account: context.walletClient.account,\n });\n\n const hash = await context.walletClient.writeContract(request);\n\n await context.walletClient.extend(publicActions).waitForTransactionReceipt({ \n confirmations: 2, \n hash \n });\n}\n\nexport async function getUsdcAddress(context: PerpCityContext): Promise<Address>{\n return await context.walletClient.extend(publicActions).readContract({\n address: context.perpManagerAddress,\n abi: context.perpManagerAbi,\n functionName: 'USDC',\n }) as Address;\n}","import { PerpCityContext } from \"../context\";\nimport { publicActions } from \"viem\";\n\nexport async function estimateLiquidity(context: PerpCityContext, tickLower: bigint, tickUpper: bigint, usdScaled: bigint): Promise<bigint> {\n return await context.walletClient.extend(publicActions).readContract({\n address: context.perpManagerAddress,\n abi: context.perpManagerAbi,\n functionName: 'estimateLiquidityForAount1',\n args: [tickLower, tickUpper, usdScaled],\n }) as bigint;\n}","import { PerpCityContext } from \"../context\";\nimport { Perp } from \"./perp\";\n\n// In the future, this is where multicalls are used to fetch data across many perps\nexport class PerpCollection {\n public readonly context: PerpCityContext;\n public readonly perps: Perp[];\n\n constructor(context: PerpCityContext, perps: Perp[]) {\n this.context = context;\n this.perps = perps;\n }\n}","import { PerpCityContext } from \"../context\";\nimport { Perp } from \"./perp\";\nimport { priceToSqrtPriceX96 } from \"../utils\";\nimport { PerpCollection } from \"./perp-collection\";\nimport type { Address, Hex } from \"viem\";\nimport { publicActions } from \"viem\";\nimport { gql } from \"graphql-request\";\nimport type { TypedDocumentNode } from '@graphql-typed-document-node/core';\nimport { parse } from 'graphql';\n\nexport type CreatePerpParams = {\n startingPrice: number;\n beacon: Address;\n}\n\nexport class PerpManager {\n public readonly context: PerpCityContext;\n \n constructor(context: PerpCityContext) {\n this.context = context;\n }\n\n // READS\n\n async getPerps(): Promise<PerpCollection> {\n const query: TypedDocumentNode<{ perps: { id: Hex }[] }, Record<any, never>> = parse(gql`\n {\n perps {\n id\n }\n }\n `)\n\n const response = await this.context.goldskyClient.request(query);\n \n const perps = response.perps.map((perpData: { id: Hex }) => \n new Perp(this.context, perpData.id as Hex)\n );\n\n return new PerpCollection(this.context, perps);\n }\n\n // WRITES\n\n async createPerp(params: CreatePerpParams): Promise<Perp> {\n const sqrtPriceX96 = priceToSqrtPriceX96(params.startingPrice);\n\n const contractParams = {\n startingSqrtPriceX96: sqrtPriceX96,\n beacon: params.beacon,\n };\n\n const { result, request } = await this.context.walletClient.extend(publicActions).simulateContract({\n address: this.context.perpManagerAddress,\n abi: this.context.perpManagerAbi,\n functionName: 'createPerp',\n args: [contractParams],\n account: this.context.walletClient.account,\n chain: this.context.walletClient.chain,\n });\n\n await this.context.walletClient.writeContract(request);\n\n return new Perp(this.context, result as Hex);\n }\n}","import { Address } from 'viem';\n\nexport const PERP_MANAGER_BASE_SEPOLIA_ADDRESS: Address = '0xA25aF834AA93Fe5Dca241955AF2383F04374c000';","export const GOLDSKY_BASE_SEPOLIA_URL: string = 'https://api.goldsky.com/api/public/project_cmbawn40q70fj01ws4jmsfj7f/subgraphs/perp-city/3fe61683-20250915_170731/gn';","export const PERP_MANAGER_ABI = [\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IPoolManager\",\n \"name\": \"poolManager\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"usdc\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"action\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"InvalidAction\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"expectedCaller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidCaller\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isLiquidated\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"InvalidClose\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"liquidity\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"InvalidLiquidity\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidMargin\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentTimestamp\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"lockupPeriodEnd\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MakerPositionLocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"maximumAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountRequested\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MaximumAmountExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"minimumAmount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountReceived\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MinimumAmountInsufficient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotPoolManager\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"reason\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"UnexpectedRevertBytes\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"posId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newMargin\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MarginAdded\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"beacon\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"startingSqrtPriceX96\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"PerpCreated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"posId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"wasLiquidated\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"sqrtPriceX96\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"PositionClosed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"posId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"isMaker\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"sqrtPriceX96\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"PositionOpened\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"POOL_MANAGER\",\n \"outputs\": [\n {\n \"internalType\": \"contract IPoolManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"USDC\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"posId\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct IPerpManager.AddMarginParams\",\n \"name\": \"params\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"addMargin\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"posId\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"minAmt0Out\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"minAmt1Out\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxAmt1In\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IPerpManager.ClosePositionParams\",\n \"name\": \"params\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"closePosition\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"posId\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint160\",\n \"name\": \"startingSqrtPriceX96\",\n \"type\": \"uint160\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"beacon\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct IPerpManager.CreatePerpParams\",\n \"name\": \"params\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"createPerp\",\n \"outputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"int24\",\n \"name\": \"tickA\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickB\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount1\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"estimateLiquidityForAount1\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"liquidity\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"posId\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"getPosition\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"holder\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"perpDelta\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"usdDelta\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"entryTwPremiumX96\",\n \"type\": \"int256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"entryTimestamp\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickLower\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickUpper\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"liquidity\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"entryTwPremiumGrowthInsideX96\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"entryTwPremiumDivBySqrtPriceGrowthInsideX96\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"entryTwPremiumGrowthBelowX96\",\n \"type\": \"int256\"\n }\n ],\n \"internalType\": \"struct IPerpManager.MakerDetails\",\n \"name\": \"makerDetails\",\n \"type\": \"tuple\"\n }\n ],\n \"internalType\": \"struct IPerpManager.Position\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"secondsAgo\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getTimeWeightedAvg\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNext\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"increaseCardinalityNext\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"posId\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"livePositionDetails\",\n \"outputs\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"pnl\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"fundingPayment\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"effectiveMargin\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isLiquidatable\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"newPriceX96\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"liquidity\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickLower\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickUpper\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxAmt0In\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxAmt1In\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IPerpManager.OpenMakerPositionParams\",\n \"name\": \"params\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"openMakerPosition\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"makerPosId\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isLong\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"margin\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"levX96\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"unspecifiedAmountLimit\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct IPerpManager.OpenTakerPositionParams\",\n \"name\": \"params\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"openTakerPosition\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"takerPosId\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"perps\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"vault\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"beacon\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"creationTimestamp\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"makerLockupPeriod\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"twapWindow\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"lastTwPremiumsUpdate\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"creatorFee\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"insuranceFee\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"liquidationFee\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"liquidatorFeeSplit\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"nextPosId\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"sqrtPriceLowerMultiX96\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"sqrtPriceUpperMultiX96\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"minOpeningMargin\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"minMakerOpeningMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"maxMakerOpeningMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"makerLiquidationMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"minTakerOpeningMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"maxTakerOpeningMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"takerLiquidationMarginRatio\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"twPremiumX96\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"twPremiumDivBySqrtPriceX96\",\n \"type\": \"int256\"\n },\n {\n \"internalType\": \"int256\",\n \"name\": \"premiumPerSecondX96\",\n \"type\": \"int256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"Currency\",\n \"name\": \"currency0\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"Currency\",\n \"name\": \"currency1\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint24\",\n \"name\": \"fee\",\n \"type\": \"uint24\"\n },\n {\n \"internalType\": \"int24\",\n \"name\": \"tickSpacing\",\n \"type\": \"int24\"\n },\n {\n \"internalType\": \"contract IHooks\",\n \"name\": \"hooks\",\n \"type\": \"address\"\n }\n ],\n \"internalType\": \"struct PoolKey\",\n \"name\": \"key\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"baseFeeX96\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"startFeeX96\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"targetFeeX96\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"decay\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"volatilityScalerX96\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxFeeMultiplierX96\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct TradingFee.Config\",\n \"name\": \"tradingFeeConfig\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"index\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinality\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNext\",\n \"type\": \"uint32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"blockTimestamp\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint216\",\n \"name\": \"cumulativeValue\",\n \"type\": \"uint216\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"initialized\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct TimeWeightedAvg.Observation[65535]\",\n \"name\": \"observations\",\n \"type\": \"tuple[65535]\"\n }\n ],\n \"internalType\": \"struct TimeWeightedAvg.State\",\n \"name\": \"twapState\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"PoolId\",\n \"name\": \"perpId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"tickSpacing\",\n \"outputs\": [\n {\n \"internalType\": \"int24\",\n \"name\": \"\",\n \"type\": \"int24\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"unlockCallback\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"encodedDelta\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n] as const;","export const BEACON_ABI = [\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IVerifierWrapper\",\n \"name\": \"verifierWrapper\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"initialData\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"initialCardinalityNext\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"proof\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"publicSignals\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"InvalidProof\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"proof\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"publicSignals\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ProofAlreadyUsed\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"data\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"DataUpdated\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_DATA\",\n \"outputs\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"\",\n \"type\": \"int256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MIN_DATA\",\n \"outputs\": [\n {\n \"internalType\": \"int256\",\n \"name\": \"\",\n \"type\": \"int256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VERIFIER_WRAPPER\",\n \"outputs\": [\n {\n \"internalType\": \"contract IVerifierWrapper\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"data\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getData\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"twapSecondsAgo\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"getTwap\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"twapPrice\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNext\",\n \"type\": \"uint32\"\n }\n ],\n \"name\": \"increaseCardinalityNext\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNextOld\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNextNew\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"timestamp\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"twapState\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"index\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinality\",\n \"type\": \"uint32\"\n },\n {\n \"internalType\": \"uint32\",\n \"name\": \"cardinalityNext\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"proof\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"publicSignals\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"updateData\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"usedProofs\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n] as const;"],"mappings":"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","names":["import_viem","import_viem","import_viem","import_viem","import_graphql_request"]}
|