@panoptic-eng/sdk 1.0.39 → 1.0.41

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 +1 @@
1
- {"version":3,"file":"vault-transaction-fees.js","names":["value: bigint","numerator: bigint","denominator: bigint","values: readonly bigint[]","priorityFee: bigint","quote: VaultTransactionFeeQuote","gasLimit: bigint","gasEstimate: bigint","feeCaps: VaultSignedTransactionFeeCaps","quote?: VaultTransactionFeeQuote","feeHistoryError: unknown","client: Client<Transport, chain>"],"sources":["../src/hypoVault/transactionFees.ts"],"sourcesContent":["import type { Chain, Client, Transport } from 'viem'\nimport { estimateFeesPerGas, getFeeHistory } from 'viem/actions'\n\nexport const MIN_VAULT_PRIORITY_FEE_PER_GAS = 100_000_000n // 0.1 gwei\nexport const MAX_VAULT_PRIORITY_FEE_PER_GAS = 3_000_000_000n // 3 gwei\nexport const MAX_VAULT_TRANSACTION_GAS_COST = 15_000_000_000_000_000n // 0.015 ETH\n\nconst FEE_HISTORY_BLOCK_COUNT = 20\nconst FEE_HISTORY_REWARD_PERCENTILES = [90]\nconst BASE_FEE_BUFFER_NUMERATOR = 1_125n\nconst BASE_FEE_BUFFER_DENOMINATOR = 1_000n\nconst GAS_ESTIMATE_BUFFER_NUMERATOR = 3n\nconst GAS_ESTIMATE_BUFFER_DENOMINATOR = 2n\n\nexport type VaultTransactionFeeQuote = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n minimumMaxFeePerGas: bigint\n source: 'fee_history' | 'viem_fallback'\n}\n\nexport type VaultSignedTransactionFeeCaps = {\n gasLimit?: bigint | null\n maxFeePerGas: bigint | null\n maxPriorityFeePerGas: bigint | null\n}\n\nexport type VaultSignedTransactionFeeValidationResult =\n | { valid: true }\n | {\n valid: false\n code:\n | 'MissingEip1559Fees'\n | 'InvalidFeeCaps'\n | 'PriorityFeeTooLow'\n | 'PriorityFeeTooHigh'\n | 'MaxFeeTooLow'\n | 'GasCostTooHigh'\n reason: string\n }\n\nexport class VaultTransactionFeeEstimationError extends Error {\n readonly feeHistoryError: unknown\n readonly fallbackError: unknown\n\n constructor({\n feeHistoryError,\n fallbackError,\n }: {\n feeHistoryError: unknown\n fallbackError: unknown\n }) {\n super('Unable to estimate EIP-1559 fees for vault transaction')\n this.name = 'VaultTransactionFeeEstimationError'\n this.feeHistoryError = feeHistoryError\n this.fallbackError = fallbackError\n }\n}\n\nexport class VaultTransactionGasCostLimitError extends Error {\n readonly gasLimit: bigint\n readonly maximumAffordableFeePerGas: bigint\n readonly minimumRequiredFeePerGas: bigint\n\n constructor({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas,\n }: {\n gasLimit: bigint\n maximumAffordableFeePerGas: bigint\n minimumRequiredFeePerGas: bigint\n }) {\n super(\n `Vault transaction cannot fit the ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei gas-cost limit: ` +\n `gasLimit=${gasLimit.toString()}, maximumAffordableFeePerGas=${maximumAffordableFeePerGas.toString()}, ` +\n `minimumRequiredFeePerGas=${minimumRequiredFeePerGas.toString()}`,\n )\n this.name = 'VaultTransactionGasCostLimitError'\n this.gasLimit = gasLimit\n this.maximumAffordableFeePerGas = maximumAffordableFeePerGas\n this.minimumRequiredFeePerGas = minimumRequiredFeePerGas\n }\n}\n\ntype FeeHistorySnapshot = {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}\n\ntype FallbackFeeEstimate = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}\n\nfunction ceilMultiplyFraction(value: bigint, numerator: bigint, denominator: bigint): bigint {\n return (value * numerator + denominator - 1n) / denominator\n}\n\nfunction medianBigInt(values: readonly bigint[]): bigint | undefined {\n if (values.length === 0) return undefined\n const sorted = [...values].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0))\n const upperMiddleIndex = Math.floor(sorted.length / 2)\n const upperMiddle = sorted[upperMiddleIndex]\n if (upperMiddle === undefined) return undefined\n if (sorted.length % 2 === 1) return upperMiddle\n const lowerMiddle = sorted[upperMiddleIndex - 1]\n return lowerMiddle === undefined ? undefined : (lowerMiddle + upperMiddle) / 2n\n}\n\nfunction clampPriorityFee(priorityFee: bigint): bigint {\n if (priorityFee < MIN_VAULT_PRIORITY_FEE_PER_GAS) return MIN_VAULT_PRIORITY_FEE_PER_GAS\n if (priorityFee > MAX_VAULT_PRIORITY_FEE_PER_GAS) return MAX_VAULT_PRIORITY_FEE_PER_GAS\n return priorityFee\n}\n\nfunction resolveFeeHistoryQuote({\n baseFeePerGas,\n reward,\n}: {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}): VaultTransactionFeeQuote | null {\n // feeHistory includes one additional base fee for the next block. The\n // second-to-last entry is therefore the latest mined block's base fee.\n const latestBaseFeeIndex = baseFeePerGas.length - 2\n if (latestBaseFeeIndex < 0 || reward === undefined || reward.length === 0) return null\n\n const p90Rewards = reward.flatMap((blockRewards) => {\n const p90 = blockRewards[0]\n return p90 === undefined ? [] : [p90]\n })\n const sampledPriorityFee = medianBigInt(p90Rewards)\n if (sampledPriorityFee === undefined) return null\n\n const maxPriorityFeePerGas = clampPriorityFee(sampledPriorityFee)\n const bufferedBaseFee = ceilMultiplyFraction(\n baseFeePerGas[latestBaseFeeIndex],\n BASE_FEE_BUFFER_NUMERATOR,\n BASE_FEE_BUFFER_DENOMINATOR,\n )\n\n return {\n maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: bufferedBaseFee + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'fee_history',\n }\n}\n\nfunction resolveFallbackQuote({\n maxFeePerGas: estimatedMaxFeePerGas,\n maxPriorityFeePerGas: estimatedPriorityFeePerGas,\n}: {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}): VaultTransactionFeeQuote {\n const maxPriorityFeePerGas = clampPriorityFee(estimatedPriorityFeePerGas)\n const estimatedBaseFeeAllowance =\n estimatedMaxFeePerGas > estimatedPriorityFeePerGas\n ? estimatedMaxFeePerGas - estimatedPriorityFeePerGas\n : 0n\n\n return {\n maxFeePerGas: estimatedBaseFeeAllowance + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: estimatedBaseFeeAllowance + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'viem_fallback',\n }\n}\n\nexport function applyVaultTransactionGasCostLimit(\n quote: VaultTransactionFeeQuote,\n gasLimit: bigint,\n): VaultTransactionFeeQuote {\n if (gasLimit <= 0n) {\n throw new Error(`Vault transaction gas limit must be positive, received ${gasLimit.toString()}`)\n }\n\n const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit\n if (maximumAffordableFeePerGas < quote.minimumMaxFeePerGas) {\n throw new VaultTransactionGasCostLimitError({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas: quote.minimumMaxFeePerGas,\n })\n }\n\n if (quote.maxFeePerGas <= maximumAffordableFeePerGas) return quote\n\n const bufferedBaseFee = quote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS\n const affordablePriorityFee = maximumAffordableFeePerGas - bufferedBaseFee\n return {\n ...quote,\n maxFeePerGas: maximumAffordableFeePerGas,\n maxPriorityFeePerGas:\n quote.maxPriorityFeePerGas < affordablePriorityFee\n ? quote.maxPriorityFeePerGas\n : affordablePriorityFee,\n }\n}\n\nexport function bufferVaultTransactionGasEstimate(gasEstimate: bigint): bigint {\n if (gasEstimate <= 0n) {\n throw new Error(\n `Vault transaction gas estimate must be positive, received ${gasEstimate.toString()}`,\n )\n }\n return ceilMultiplyFraction(\n gasEstimate,\n GAS_ESTIMATE_BUFFER_NUMERATOR,\n GAS_ESTIMATE_BUFFER_DENOMINATOR,\n )\n}\n\nexport function validateVaultSignedTransactionFeeCaps(\n feeCaps: VaultSignedTransactionFeeCaps,\n quote?: VaultTransactionFeeQuote,\n): VaultSignedTransactionFeeValidationResult {\n const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps\n if (maxFeePerGas === null || maxPriorityFeePerGas === null) {\n return {\n valid: false,\n code: 'MissingEip1559Fees',\n reason: 'Signed transaction must include EIP-1559 max fee and priority fee caps.',\n }\n }\n if (maxPriorityFeePerGas > maxFeePerGas) {\n return {\n valid: false,\n code: 'InvalidFeeCaps',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `cannot exceed maxFeePerGas (${maxFeePerGas.toString()} wei).`,\n }\n }\n if (maxPriorityFeePerGas < MIN_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooLow',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must be at least ${MIN_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (0.1 gwei).`,\n }\n }\n if (maxPriorityFeePerGas > MAX_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooHigh',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must not exceed ${MAX_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (3 gwei).`,\n }\n }\n if (\n gasLimit !== undefined &&\n gasLimit !== null &&\n gasLimit * maxFeePerGas > MAX_VAULT_TRANSACTION_GAS_COST\n ) {\n return {\n valid: false,\n code: 'GasCostTooHigh',\n reason:\n `Signed transaction maximum gas cost (${(gasLimit * maxFeePerGas).toString()} wei) ` +\n `must not exceed ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei (0.015 ETH).`,\n }\n }\n if (quote !== undefined && maxFeePerGas < quote.minimumMaxFeePerGas) {\n return {\n valid: false,\n code: 'MaxFeeTooLow',\n reason:\n `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ` +\n `${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee ` +\n 'and 0.1 gwei minimum priority fee.',\n }\n }\n return { valid: true }\n}\n\nasync function resolveVaultTransactionFeeQuote({\n readFeeHistory,\n readFallbackEstimate,\n}: {\n readFeeHistory: () => Promise<FeeHistorySnapshot>\n readFallbackEstimate: () => Promise<FallbackFeeEstimate>\n}): Promise<VaultTransactionFeeQuote> {\n let feeHistoryError: unknown\n try {\n const quote = resolveFeeHistoryQuote(await readFeeHistory())\n if (quote !== null) return quote\n feeHistoryError = new Error('eth_feeHistory returned incomplete base fee or reward data')\n } catch (error) {\n feeHistoryError = error\n }\n\n try {\n return resolveFallbackQuote(await readFallbackEstimate())\n } catch (fallbackError) {\n throw new VaultTransactionFeeEstimationError({ feeHistoryError, fallbackError })\n }\n}\n\n/**\n * Resolve explicit EIP-1559 fees for operator-controlled vault transactions.\n *\n * The normal path follows the median p90 priority fee from the last 20 blocks,\n * with a 0.1 gwei floor and 3 gwei ceiling. If fee history is unavailable,\n * Viem's estimate is used while preserving those bounds and its original\n * base-fee allowance.\n */\nexport async function getVaultTransactionFeeQuote<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<VaultTransactionFeeQuote> {\n return resolveVaultTransactionFeeQuote({\n readFeeHistory: () =>\n getFeeHistory(client, {\n blockCount: FEE_HISTORY_BLOCK_COUNT,\n blockTag: 'latest',\n rewardPercentiles: FEE_HISTORY_REWARD_PERCENTILES,\n }),\n readFallbackEstimate: () => estimateFeesPerGas(client),\n })\n}\n\nexport const __transactionFeeTestUtils = {\n resolveFallbackQuote,\n resolveFeeHistoryQuote,\n resolveVaultTransactionFeeQuote,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"vault-transaction-fees.js","names":["value: bigint","numerator: bigint","denominator: bigint","values: readonly bigint[]","priorityFee: bigint","quote: VaultTransactionFeeQuote","gasLimit: bigint","gasEstimate: bigint","feeCaps: VaultSignedTransactionFeeCaps","quote?: VaultTransactionFeeQuote","feeHistoryError: unknown","client: Client<Transport, chain>"],"sources":["../src/hypoVault/transactionFees.ts"],"sourcesContent":["import type { Chain, Client, Transport } from 'viem'\nimport { hexToBigInt } from 'viem'\nimport { estimateFeesPerGas, getBlock, getFeeHistory } from 'viem/actions'\n\nexport const MIN_VAULT_PRIORITY_FEE_PER_GAS = 100_000_000n // 0.1 gwei\nexport const MAX_VAULT_PRIORITY_FEE_PER_GAS = 3_000_000_000n // 3 gwei\nexport const MAX_VAULT_TRANSACTION_GAS_COST = 15_000_000_000_000_000n // 0.015 ETH\n\nconst FEE_HISTORY_BLOCK_COUNT = 20\nconst FEE_HISTORY_REWARD_PERCENTILES = [90]\nconst DELTA_HEDGE_FEE_HISTORY_REWARD_PERCENTILES = [25]\nconst BASE_FEE_BUFFER_NUMERATOR = 1_125n\nconst BASE_FEE_BUFFER_DENOMINATOR = 1_000n\nconst REPLACEMENT_FEE_BUMP_NUMERATOR = 1_125n\nconst REPLACEMENT_FEE_BUMP_DENOMINATOR = 1_000n\nconst GAS_ESTIMATE_BUFFER_NUMERATOR = 3n\nconst GAS_ESTIMATE_BUFFER_DENOMINATOR = 2n\n\nexport type VaultTransactionFeeQuote = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n minimumMaxFeePerGas: bigint\n source: 'fee_history' | 'viem_fallback' | 'rpc_priority_fee' | 'fee_history_p25'\n}\n\nexport type VaultDeltaHedgeFeeQuote = VaultTransactionFeeQuote & {\n rawPriorityFeePerGas: bigint\n}\n\nexport type VaultSignedTransactionFeeCaps = {\n gasLimit?: bigint | null\n maxFeePerGas: bigint | null\n maxPriorityFeePerGas: bigint | null\n}\n\nexport type VaultSignedTransactionFeeValidationResult =\n | { valid: true }\n | {\n valid: false\n code:\n | 'MissingEip1559Fees'\n | 'InvalidFeeCaps'\n | 'PriorityFeeTooLow'\n | 'PriorityFeeTooHigh'\n | 'MaxFeeTooLow'\n | 'GasCostTooHigh'\n reason: string\n }\n\nexport class VaultTransactionFeeEstimationError extends Error {\n readonly feeHistoryError: unknown\n readonly fallbackError: unknown\n\n constructor({\n feeHistoryError,\n fallbackError,\n }: {\n feeHistoryError: unknown\n fallbackError: unknown\n }) {\n super('Unable to estimate EIP-1559 fees for vault transaction')\n this.name = 'VaultTransactionFeeEstimationError'\n this.feeHistoryError = feeHistoryError\n this.fallbackError = fallbackError\n }\n}\n\nexport class VaultTransactionGasCostLimitError extends Error {\n readonly gasLimit: bigint\n readonly maximumAffordableFeePerGas: bigint\n readonly minimumRequiredFeePerGas: bigint\n\n constructor({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas,\n }: {\n gasLimit: bigint\n maximumAffordableFeePerGas: bigint\n minimumRequiredFeePerGas: bigint\n }) {\n super(\n `Vault transaction cannot fit the ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei gas-cost limit: ` +\n `gasLimit=${gasLimit.toString()}, maximumAffordableFeePerGas=${maximumAffordableFeePerGas.toString()}, ` +\n `minimumRequiredFeePerGas=${minimumRequiredFeePerGas.toString()}`,\n )\n this.name = 'VaultTransactionGasCostLimitError'\n this.gasLimit = gasLimit\n this.maximumAffordableFeePerGas = maximumAffordableFeePerGas\n this.minimumRequiredFeePerGas = minimumRequiredFeePerGas\n }\n}\n\nexport class VaultTransactionReplacementLimitError extends Error {\n readonly code: 'GasCostCapExceeded'\n readonly requiredMaxFeePerGas: bigint\n readonly requiredMaxPriorityFeePerGas: bigint\n readonly maximumAffordableFeePerGas: bigint\n\n constructor({\n code,\n gasLimit,\n requiredMaxFeePerGas,\n requiredMaxPriorityFeePerGas,\n maximumAffordableFeePerGas,\n }: {\n code: 'GasCostCapExceeded'\n gasLimit: bigint\n requiredMaxFeePerGas: bigint\n requiredMaxPriorityFeePerGas: bigint\n maximumAffordableFeePerGas: bigint\n }) {\n super(\n `Vault transaction replacement blocked by ${code}: gasLimit=${gasLimit.toString()}, ` +\n `requiredMaxFeePerGas=${requiredMaxFeePerGas.toString()}, ` +\n `requiredMaxPriorityFeePerGas=${requiredMaxPriorityFeePerGas.toString()}, ` +\n `maximumAffordableFeePerGas=${maximumAffordableFeePerGas.toString()}`,\n )\n this.name = 'VaultTransactionReplacementLimitError'\n this.code = code\n this.requiredMaxFeePerGas = requiredMaxFeePerGas\n this.requiredMaxPriorityFeePerGas = requiredMaxPriorityFeePerGas\n this.maximumAffordableFeePerGas = maximumAffordableFeePerGas\n }\n}\n\ntype FeeHistorySnapshot = {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}\n\ntype FallbackFeeEstimate = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}\n\nfunction ceilMultiplyFraction(value: bigint, numerator: bigint, denominator: bigint): bigint {\n return (value * numerator + denominator - 1n) / denominator\n}\n\nfunction medianBigInt(values: readonly bigint[]): bigint | undefined {\n if (values.length === 0) return undefined\n const sorted = [...values].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0))\n const upperMiddleIndex = Math.floor(sorted.length / 2)\n const upperMiddle = sorted[upperMiddleIndex]\n if (upperMiddle === undefined) return undefined\n if (sorted.length % 2 === 1) return upperMiddle\n const lowerMiddle = sorted[upperMiddleIndex - 1]\n return lowerMiddle === undefined ? undefined : (lowerMiddle + upperMiddle) / 2n\n}\n\nfunction clampPriorityFee(priorityFee: bigint): bigint {\n if (priorityFee < MIN_VAULT_PRIORITY_FEE_PER_GAS) return MIN_VAULT_PRIORITY_FEE_PER_GAS\n if (priorityFee > MAX_VAULT_PRIORITY_FEE_PER_GAS) return MAX_VAULT_PRIORITY_FEE_PER_GAS\n return priorityFee\n}\n\nfunction resolveFeeHistoryQuote({\n baseFeePerGas,\n reward,\n}: {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}): VaultTransactionFeeQuote | null {\n // feeHistory includes one additional base fee for the next block. The\n // second-to-last entry is therefore the latest mined block's base fee.\n const latestBaseFeeIndex = baseFeePerGas.length - 2\n if (latestBaseFeeIndex < 0 || reward === undefined || reward.length === 0) return null\n\n const p90Rewards = reward.flatMap((blockRewards) => {\n const p90 = blockRewards[0]\n return p90 === undefined ? [] : [p90]\n })\n const sampledPriorityFee = medianBigInt(p90Rewards)\n if (sampledPriorityFee === undefined) return null\n\n const maxPriorityFeePerGas = clampPriorityFee(sampledPriorityFee)\n const bufferedBaseFee = ceilMultiplyFraction(\n baseFeePerGas[latestBaseFeeIndex],\n BASE_FEE_BUFFER_NUMERATOR,\n BASE_FEE_BUFFER_DENOMINATOR,\n )\n\n return {\n maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: bufferedBaseFee + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'fee_history',\n }\n}\n\nfunction resolveDeltaHedgeFeeHistoryQuote({\n baseFeePerGas,\n reward,\n}: FeeHistorySnapshot): VaultDeltaHedgeFeeQuote | null {\n const latestBaseFeeIndex = baseFeePerGas.length - 2\n if (latestBaseFeeIndex < 0 || reward === undefined || reward.length === 0) return null\n\n const p25Rewards = reward.flatMap((blockRewards) => {\n const p25 = blockRewards[0]\n return p25 === undefined ? [] : [p25]\n })\n const rawPriorityFeePerGas = medianBigInt(p25Rewards)\n if (rawPriorityFeePerGas === undefined) return null\n\n const maxPriorityFeePerGas = clampPriorityFee(rawPriorityFeePerGas)\n const bufferedBaseFee = ceilMultiplyFraction(\n baseFeePerGas[latestBaseFeeIndex],\n BASE_FEE_BUFFER_NUMERATOR,\n BASE_FEE_BUFFER_DENOMINATOR,\n )\n return {\n maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: bufferedBaseFee + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n rawPriorityFeePerGas,\n source: 'fee_history_p25',\n }\n}\n\nfunction resolveRpcPriorityFeeQuote({\n baseFeePerGas,\n rawPriorityFeePerGas,\n}: {\n baseFeePerGas: bigint\n rawPriorityFeePerGas: bigint\n}): VaultDeltaHedgeFeeQuote {\n const bufferedBaseFee = ceilMultiplyFraction(\n baseFeePerGas,\n BASE_FEE_BUFFER_NUMERATOR,\n BASE_FEE_BUFFER_DENOMINATOR,\n )\n return {\n maxFeePerGas: bufferedBaseFee + rawPriorityFeePerGas,\n maxPriorityFeePerGas: rawPriorityFeePerGas,\n minimumMaxFeePerGas: bufferedBaseFee + rawPriorityFeePerGas,\n rawPriorityFeePerGas,\n source: 'rpc_priority_fee',\n }\n}\n\nexport function getVaultTransactionReplacementFeeQuote({\n originalQuote,\n historicalQuote,\n gasLimit,\n}: {\n originalQuote: Pick<VaultTransactionFeeQuote, 'maxFeePerGas' | 'maxPriorityFeePerGas'>\n historicalQuote: VaultDeltaHedgeFeeQuote\n gasLimit: bigint\n}): VaultDeltaHedgeFeeQuote {\n if (gasLimit <= 0n) {\n throw new Error(`Vault transaction gas limit must be positive, received ${gasLimit.toString()}`)\n }\n\n const bumpedPriorityFee = ceilMultiplyFraction(\n originalQuote.maxPriorityFeePerGas,\n REPLACEMENT_FEE_BUMP_NUMERATOR,\n REPLACEMENT_FEE_BUMP_DENOMINATOR,\n )\n const bumpedMaxFee = ceilMultiplyFraction(\n originalQuote.maxFeePerGas,\n REPLACEMENT_FEE_BUMP_NUMERATOR,\n REPLACEMENT_FEE_BUMP_DENOMINATOR,\n )\n // The historical p25 quote is already clamped to 3 gwei. A same-nonce\n // replacement may exceed that estimate cap when the required bump does.\n const requiredMaxPriorityFeePerGas =\n historicalQuote.maxPriorityFeePerGas > bumpedPriorityFee\n ? historicalQuote.maxPriorityFeePerGas\n : bumpedPriorityFee\n const bufferedBaseFee = historicalQuote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS\n const currentMarketMaxFee = bufferedBaseFee + requiredMaxPriorityFeePerGas\n const requiredMaxFeePerGas =\n currentMarketMaxFee > bumpedMaxFee ? currentMarketMaxFee : bumpedMaxFee\n const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit\n\n if (requiredMaxFeePerGas > maximumAffordableFeePerGas) {\n throw new VaultTransactionReplacementLimitError({\n code: 'GasCostCapExceeded',\n gasLimit,\n requiredMaxFeePerGas,\n requiredMaxPriorityFeePerGas,\n maximumAffordableFeePerGas,\n })\n }\n\n return {\n ...historicalQuote,\n maxFeePerGas: requiredMaxFeePerGas,\n maxPriorityFeePerGas: requiredMaxPriorityFeePerGas,\n }\n}\n\nfunction resolveFallbackQuote({\n maxFeePerGas: estimatedMaxFeePerGas,\n maxPriorityFeePerGas: estimatedPriorityFeePerGas,\n}: {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}): VaultTransactionFeeQuote {\n const maxPriorityFeePerGas = clampPriorityFee(estimatedPriorityFeePerGas)\n const estimatedBaseFeeAllowance =\n estimatedMaxFeePerGas > estimatedPriorityFeePerGas\n ? estimatedMaxFeePerGas - estimatedPriorityFeePerGas\n : 0n\n\n return {\n maxFeePerGas: estimatedBaseFeeAllowance + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: estimatedBaseFeeAllowance + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'viem_fallback',\n }\n}\n\nexport function applyVaultTransactionGasCostLimit(\n quote: VaultTransactionFeeQuote,\n gasLimit: bigint,\n): VaultTransactionFeeQuote {\n if (gasLimit <= 0n) {\n throw new Error(`Vault transaction gas limit must be positive, received ${gasLimit.toString()}`)\n }\n\n const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit\n if (maximumAffordableFeePerGas < quote.minimumMaxFeePerGas) {\n throw new VaultTransactionGasCostLimitError({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas: quote.minimumMaxFeePerGas,\n })\n }\n\n if (quote.maxFeePerGas <= maximumAffordableFeePerGas) return quote\n\n const bufferedBaseFee = quote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS\n const affordablePriorityFee = maximumAffordableFeePerGas - bufferedBaseFee\n return {\n ...quote,\n maxFeePerGas: maximumAffordableFeePerGas,\n maxPriorityFeePerGas:\n quote.maxPriorityFeePerGas < affordablePriorityFee\n ? quote.maxPriorityFeePerGas\n : affordablePriorityFee,\n }\n}\n\nexport function bufferVaultTransactionGasEstimate(gasEstimate: bigint): bigint {\n if (gasEstimate <= 0n) {\n throw new Error(\n `Vault transaction gas estimate must be positive, received ${gasEstimate.toString()}`,\n )\n }\n return ceilMultiplyFraction(\n gasEstimate,\n GAS_ESTIMATE_BUFFER_NUMERATOR,\n GAS_ESTIMATE_BUFFER_DENOMINATOR,\n )\n}\n\nexport function validateVaultSignedTransactionFeeCaps(\n feeCaps: VaultSignedTransactionFeeCaps,\n quote?: VaultTransactionFeeQuote,\n): VaultSignedTransactionFeeValidationResult {\n const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps\n if (maxFeePerGas === null || maxPriorityFeePerGas === null) {\n return {\n valid: false,\n code: 'MissingEip1559Fees',\n reason: 'Signed transaction must include EIP-1559 max fee and priority fee caps.',\n }\n }\n if (maxPriorityFeePerGas > maxFeePerGas) {\n return {\n valid: false,\n code: 'InvalidFeeCaps',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `cannot exceed maxFeePerGas (${maxFeePerGas.toString()} wei).`,\n }\n }\n if (maxPriorityFeePerGas < MIN_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooLow',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must be at least ${MIN_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (0.1 gwei).`,\n }\n }\n if (maxPriorityFeePerGas > MAX_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooHigh',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must not exceed ${MAX_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (3 gwei).`,\n }\n }\n if (\n gasLimit !== undefined &&\n gasLimit !== null &&\n gasLimit * maxFeePerGas > MAX_VAULT_TRANSACTION_GAS_COST\n ) {\n return {\n valid: false,\n code: 'GasCostTooHigh',\n reason:\n `Signed transaction maximum gas cost (${(gasLimit * maxFeePerGas).toString()} wei) ` +\n `must not exceed ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei (0.015 ETH).`,\n }\n }\n if (quote !== undefined && maxFeePerGas < quote.minimumMaxFeePerGas) {\n return {\n valid: false,\n code: 'MaxFeeTooLow',\n reason:\n `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ` +\n `${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee ` +\n 'and 0.1 gwei minimum priority fee.',\n }\n }\n return { valid: true }\n}\n\nasync function resolveVaultTransactionFeeQuote({\n readFeeHistory,\n readFallbackEstimate,\n}: {\n readFeeHistory: () => Promise<FeeHistorySnapshot>\n readFallbackEstimate: () => Promise<FallbackFeeEstimate>\n}): Promise<VaultTransactionFeeQuote> {\n let feeHistoryError: unknown\n try {\n const quote = resolveFeeHistoryQuote(await readFeeHistory())\n if (quote !== null) return quote\n feeHistoryError = new Error('eth_feeHistory returned incomplete base fee or reward data')\n } catch (error) {\n feeHistoryError = error\n }\n\n try {\n return resolveFallbackQuote(await readFallbackEstimate())\n } catch (fallbackError) {\n throw new VaultTransactionFeeEstimationError({ feeHistoryError, fallbackError })\n }\n}\n\n/**\n * Resolve explicit EIP-1559 fees for operator-controlled vault transactions.\n *\n * The normal path follows the median p90 priority fee from the last 20 blocks,\n * with a 0.1 gwei floor and 3 gwei ceiling. If fee history is unavailable,\n * Viem's estimate is used while preserving those bounds and its original\n * base-fee allowance.\n */\nexport async function getVaultTransactionFeeQuote<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<VaultTransactionFeeQuote> {\n return resolveVaultTransactionFeeQuote({\n readFeeHistory: () =>\n getFeeHistory(client, {\n blockCount: FEE_HISTORY_BLOCK_COUNT,\n blockTag: 'latest',\n rewardPercentiles: FEE_HISTORY_REWARD_PERCENTILES,\n }),\n readFallbackEstimate: () => estimateFeesPerGas(client),\n })\n}\n\nexport async function getVaultDeltaHedgeHistoricalFeeQuote<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<VaultDeltaHedgeFeeQuote> {\n const feeHistory = await getFeeHistory(client, {\n blockCount: FEE_HISTORY_BLOCK_COUNT,\n blockTag: 'latest',\n rewardPercentiles: DELTA_HEDGE_FEE_HISTORY_REWARD_PERCENTILES,\n })\n const quote = resolveDeltaHedgeFeeHistoryQuote(feeHistory)\n if (quote === null) {\n throw new Error('eth_feeHistory returned incomplete p25 base fee or reward data')\n }\n return quote\n}\n\nasync function resolveVaultDeltaHedgeInitialFeeQuote({\n readRpcQuote,\n readHistoricalQuote,\n}: {\n readRpcQuote: () => Promise<{ baseFeePerGas: bigint; rawPriorityFeePerGas: bigint }>\n readHistoricalQuote: () => Promise<VaultDeltaHedgeFeeQuote>\n}): Promise<VaultDeltaHedgeFeeQuote> {\n try {\n return resolveRpcPriorityFeeQuote(await readRpcQuote())\n } catch {\n return readHistoricalQuote()\n }\n}\n\n/**\n * Resolve the first fee quote for a delta hedge from the connected RPC's\n * eth_maxPriorityFeePerGas recommendation. A failed RPC recommendation falls\n * back immediately to the rolling historical p25 quote.\n */\nexport async function getVaultDeltaHedgeInitialFeeQuote<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<VaultDeltaHedgeFeeQuote> {\n return resolveVaultDeltaHedgeInitialFeeQuote({\n readRpcQuote: async () => {\n const [rawPriorityFee, latestBlock] = await Promise.all([\n client.request({ method: 'eth_maxPriorityFeePerGas' }),\n getBlock(client, { blockTag: 'latest' }),\n ])\n if (latestBlock.baseFeePerGas === null) {\n throw new Error('Latest block does not include an EIP-1559 base fee')\n }\n return {\n baseFeePerGas: latestBlock.baseFeePerGas,\n rawPriorityFeePerGas: hexToBigInt(rawPriorityFee),\n }\n },\n readHistoricalQuote: () => getVaultDeltaHedgeHistoricalFeeQuote(client),\n })\n}\n\nexport const __transactionFeeTestUtils = {\n clampPriorityFee,\n resolveDeltaHedgeFeeHistoryQuote,\n resolveFallbackQuote,\n resolveFeeHistoryQuote,\n resolveRpcPriorityFeeQuote,\n resolveVaultDeltaHedgeInitialFeeQuote,\n resolveVaultTransactionFeeQuote,\n}\n"],"mappings":"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"}
@@ -1379,6 +1379,31 @@ async function forceExerciseAndWait(params) {
1379
1379
  return receipt;
1380
1380
  }
1381
1381
 
1382
+ //#endregion
1383
+ //#region src/panoptic/v2/reads/positionSizes.ts
1384
+ const BIT_MASK_128 = (1n << 128n) - 1n;
1385
+ /**
1386
+ * Returns the current stored positionSize for each tokenId, in the same order
1387
+ * as the input `positionIdList`. Reverts (via the contract) if any tokenId is
1388
+ * not held by `account`.
1389
+ */
1390
+ async function getCurrentPositionSizes(params) {
1391
+ const { client, poolAddress, account, positionIdList, blockNumber } = params;
1392
+ if (positionIdList.length === 0) return [];
1393
+ const [, , positionBalances] = await client.readContract({
1394
+ address: poolAddress,
1395
+ abi: panopticPoolV2Abi,
1396
+ functionName: "getFullPositionsData",
1397
+ args: [
1398
+ account,
1399
+ false,
1400
+ positionIdList
1401
+ ],
1402
+ blockNumber
1403
+ });
1404
+ return positionBalances.map((packed) => packed & BIT_MASK_128);
1405
+ }
1406
+
1382
1407
  //#endregion
1383
1408
  //#region src/panoptic/v2/writes/settle.ts
1384
1409
  /**
@@ -1403,8 +1428,14 @@ async function forceExerciseAndWait(params) {
1403
1428
  * ```
1404
1429
  */
1405
1430
  async function settleAccumulatedPremia(params) {
1406
- const { client, walletClient, account, poolAddress, positionIdList, usePremiaAsCollateral = false, builderCode = 0n, txOverrides } = params;
1407
- const positionSizes = positionIdList.map(() => 0n);
1431
+ const { client, walletClient, account, poolAddress, positionIdList, finalPositionIdList, positionSizes: providedSizes, usePremiaAsCollateral = false, builderCode = 0n, txOverrides } = params;
1432
+ if (providedSizes && providedSizes.length !== positionIdList.length) throw new PanopticError("settleAccumulatedPremia: positionSizes length must match positionIdList");
1433
+ const positionSizes = providedSizes ?? await getCurrentPositionSizes({
1434
+ client,
1435
+ poolAddress,
1436
+ account,
1437
+ positionIdList
1438
+ });
1408
1439
  const tickAndSpreadLimits = positionIdList.map(() => [
1409
1440
  -887272n,
1410
1441
  887272n,
@@ -1419,7 +1450,7 @@ async function settleAccumulatedPremia(params) {
1419
1450
  functionName: "dispatch",
1420
1451
  args: [
1421
1452
  positionIdList,
1422
- positionIdList,
1453
+ finalPositionIdList ?? positionIdList,
1423
1454
  positionSizes.map((s) => BigInt(s)),
1424
1455
  tickAndSpreadLimits.map((t) => [
1425
1456
  Number(t[0]),
@@ -3606,4 +3637,4 @@ async function smartRepayAndWait(params) {
3606
3637
  }
3607
3638
 
3608
3639
  //#endregion
3609
- export { addLegToTokenId, approve, approveAndWait, approvePool, borrow, borrowAndWait, buildBatchDispatchArgs, buildCreditSwapCall, buildOpenPositionCalldata, buildUniqueCredit, buildUniqueLoan, buildUniqueWidthZeroLeg, calculateResyncBlock, cancelTransaction, checkApproval, clearCheckpoint, closePosition, closePositionAndWait, countLegs, createNonceManager, createTokenIdBuilder, decodeAllLegs, decodeLeg, decodePoolId, decodeTickSpacing as decodeTickSpacing$1, decodeTokenId, decodeVegoid, deployNewPool, deployNewPoolAndWait, deposit, depositAndWait, detectReorg, dispatch, dispatchAndWait, encodeLeg, encodePoolId, encodeV4PoolId, executeBatchDispatch, executeBatchDispatchAndWait, forceExercise, forceExerciseAndWait, getAssetIndex, getPoolDeploymentBlock, getPoolTokensForSimulation, hasLoanOrCredit, hasLongLeg, isCredit, isCreditLeg, isInputListFailError, isLoan, isLoanLeg, isShortOnly, isSpread, liquidate, liquidateAndWait, loadCheckpoint, mint, mintAndWait, openPosition, openPositionAndWait, pokeOracle, pokeOracleAndWait, previewBorrow, previewUnwrap, previewWrap, publicBroadcaster, reconstructFromEvents, redeem, redeemAndWait, repay, repayAndWait, resolveTokenIndex, rollPosition, rollPositionAndWait, saveCheckpoint, settleAccumulatedPremia, settleAccumulatedPremiaAndWait, simulateOpenPosition, simulateWithTokenFlow, smartRepay, smartRepayAndWait, speedUpTransaction, supply, supplyAndWait, swapExactIn, swapExactInAndWait, swapExactOut, swapExactOutAndWait, syncPositions, unsupply, unsupplyAndWait, unwrapWeth, unwrapWethAndWait, unwrapXstock, unwrapXstockAndWait, validateBatch, validatePoolId, verifyBlockContinuity, wethWrapAbi, withdraw, withdrawAndWait, withdrawWithPositions, withdrawWithPositionsAndWait, wrapEth, wrapEthAndWait, wrapXstock, wrapXstockAndWait, xstockWrapperAbi };
3640
+ export { addLegToTokenId, approve, approveAndWait, approvePool, borrow, borrowAndWait, buildBatchDispatchArgs, buildCreditSwapCall, buildOpenPositionCalldata, buildUniqueCredit, buildUniqueLoan, buildUniqueWidthZeroLeg, calculateResyncBlock, cancelTransaction, checkApproval, clearCheckpoint, closePosition, closePositionAndWait, countLegs, createNonceManager, createTokenIdBuilder, decodeAllLegs, decodeLeg, decodePoolId, decodeTickSpacing as decodeTickSpacing$1, decodeTokenId, decodeVegoid, deployNewPool, deployNewPoolAndWait, deposit, depositAndWait, detectReorg, dispatch, dispatchAndWait, encodeLeg, encodePoolId, encodeV4PoolId, executeBatchDispatch, executeBatchDispatchAndWait, forceExercise, forceExerciseAndWait, getAssetIndex, getCurrentPositionSizes, getPoolDeploymentBlock, getPoolTokensForSimulation, hasLoanOrCredit, hasLongLeg, isCredit, isCreditLeg, isInputListFailError, isLoan, isLoanLeg, isShortOnly, isSpread, liquidate, liquidateAndWait, loadCheckpoint, mint, mintAndWait, openPosition, openPositionAndWait, pokeOracle, pokeOracleAndWait, previewBorrow, previewUnwrap, previewWrap, publicBroadcaster, reconstructFromEvents, redeem, redeemAndWait, repay, repayAndWait, resolveTokenIndex, rollPosition, rollPositionAndWait, saveCheckpoint, settleAccumulatedPremia, settleAccumulatedPremiaAndWait, simulateOpenPosition, simulateWithTokenFlow, smartRepay, smartRepayAndWait, speedUpTransaction, supply, supplyAndWait, swapExactIn, swapExactInAndWait, swapExactOut, swapExactOutAndWait, syncPositions, unsupply, unsupplyAndWait, unwrapWeth, unwrapWethAndWait, unwrapXstock, unwrapXstockAndWait, validateBatch, validatePoolId, verifyBlockContinuity, wethWrapAbi, withdraw, withdrawAndWait, withdrawWithPositions, withdrawWithPositionsAndWait, wrapEth, wrapEthAndWait, wrapXstock, wrapXstockAndWait, xstockWrapperAbi };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["rolesV2Abi","rolesV2Abi","ScopeStep","ScopeStepsPublicClient","Promise","ScopeStepsWalletClient","applyScopeSteps","Hex","ConditionFlat","addressEqualCompValue","customCompValue","sizeCapExtra","ParameterType","Operator","CANONICAL_ADAPTERS","ExecutionOptions","Hex","ScopeStep","ConditionFlat","DELEVERAGER_ROLE_KEY","buildDeleveragerDispatchConditions","buildDeleveragerRoleSteps","Hex","ScopeStep","ConditionFlat","DISPATCH_SELECTOR","roleKey","buildDispatchCustomConditions","buildDispatchCustomRoleSteps","Hex","ConditionFlat","LOAN_BITMASK_WINDOW_SHIFTS","loanBitmaskCompValueAt","buildLoanOnlyDispatchConditions","WITHDRAW_SELECTOR","DEPOSIT_SELECTOR","EXECUTE_SELECTOR","buildWithdrawConditions","buildDepositConditions","Hex","ScopeStep","ConditionFlat","MAINTENANCE_ROLE_KEY","DISPATCH_FROM_SELECTOR","buildDispatchFromConditions","buildMaintenanceRoleSteps","Hex","ScopeStep","ROLLER_ROLE_KEY","buildRollerRoleSteps","Hex","ScopeStep","ConditionFlat","MULTICALL_SELECTOR","MULTISEND_SELECTOR","WETH_DEPOSIT_SELECTOR","WETH_WITHDRAW_SELECTOR","WITHDRAW_WITH_POSITIONS_SELECTOR","buildWithdrawWithPositionsConditions","sfpmPoolIdPinExtra","buildSfpmSwapConditions","buildSfpmSwapVenueSteps","Hex","ScopeStep","SIZE_ADJUSTER_ROLE_KEY","buildSizeAdjusterRoleSteps","legFieldMask","loanWidthFieldsMask","strikeFieldsMask","optionRatioFieldsMask","isPureLoanTokenId","loanBitmaskCondition"],"sources":["../../src/zodiac/rolesAbi.d.ts","../../src/zodiac/applySteps.d.ts","../../src/zodiac/conditions.d.ts","../../src/zodiac/constants.d.ts","../../src/zodiac/roles/deleverager.d.ts","../../src/zodiac/roles/dispatchCustomRole.d.ts","../../src/zodiac/roles/loanHedger.d.ts","../../src/zodiac/roles/maintenance.d.ts","../../src/zodiac/roles/roller.d.ts","../../src/zodiac/roles/sfpmSwap.d.ts","../../src/zodiac/roles/sizeAdjuster.d.ts","../../src/zodiac/tokenIdMask.d.ts"],"sourcesContent":null,"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["rolesV2Abi","rolesV2Abi","ScopeStep","ScopeStepsPublicClient","Promise","ScopeStepsWalletClient","applyScopeSteps","Hex","ConditionFlat","addressEqualCompValue","customCompValue","sizeCapExtra","ParameterType","Operator","CANONICAL_ADAPTERS","ExecutionOptions","Hex","ScopeStep","ConditionFlat","DELEVERAGER_ROLE_KEY","buildDeleveragerDispatchConditions","buildDeleveragerRoleSteps","Hex","ScopeStep","ConditionFlat","DISPATCH_SELECTOR","roleKey","buildDispatchCustomConditions","buildDispatchCustomRoleSteps","Hex","ConditionFlat","LOAN_BITMASK_WINDOW_SHIFTS","loanBitmaskCompValueAt","buildLoanOnlyDispatchConditions","WITHDRAW_SELECTOR","DEPOSIT_SELECTOR","EXECUTE_SELECTOR","buildWithdrawConditions","buildDepositConditions","Hex","ScopeStep","ConditionFlat","MAINTENANCE_ROLE_KEY","DISPATCH_FROM_SELECTOR","buildDispatchFromConditions","buildMaintenanceRoleSteps","Hex","ScopeStep","ROLLER_ROLE_KEY","buildRollerRoleSteps","Hex","ScopeStep","ConditionFlat","MULTICALL_SELECTOR","MULTISEND_SELECTOR","WETH_DEPOSIT_SELECTOR","WETH_WITHDRAW_SELECTOR","WITHDRAW_WITH_POSITIONS_SELECTOR","buildWithdrawWithPositionsConditions","sfpmPoolIdPinExtra","buildSfpmSwapConditions","buildSfpmSwapVenueSteps","Hex","ScopeStep","SIZE_ADJUSTER_ROLE_KEY","buildSizeAdjusterRoleSteps","legFieldMask","loanWidthFieldsMask","strikeFieldsMask","optionRatioFieldsMask","isPureLoanTokenId","loanBitmaskCondition"],"sources":["../../src/zodiac/rolesAbi.d.ts","../../src/zodiac/applySteps.d.ts","../../src/zodiac/conditions.d.ts","../../src/zodiac/constants.d.ts","../../src/zodiac/roles/deleverager.d.ts","../../src/zodiac/roles/dispatchCustomRole.d.ts","../../src/zodiac/roles/loanHedger.d.ts","../../src/zodiac/roles/maintenance.d.ts","../../src/zodiac/roles/roller.d.ts","../../src/zodiac/roles/sfpmSwap.d.ts","../../src/zodiac/roles/sizeAdjuster.d.ts","../../src/zodiac/tokenIdMask.d.ts"],"sourcesContent":null,"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panoptic-eng/sdk",
3
- "version": "1.0.39",
3
+ "version": "1.0.41",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/panoptic-labs/panoptic-sdk.git"