@panoptic-eng/sdk 1.0.22 → 1.0.24

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.
Files changed (54) hide show
  1. package/dist/cow/index.d.ts +4 -4
  2. package/dist/cow/index.js +3 -3
  3. package/dist/cow/types.d.ts +2 -3
  4. package/dist/{cow-C_SGXoWr.js → cow-DW6LjXES.js} +2 -2
  5. package/dist/{cow-C_SGXoWr.js.map → cow-DW6LjXES.js.map} +1 -1
  6. package/dist/{index-BuJcj5aO.d.ts → index-CIlr4SNh.d.ts} +4 -3
  7. package/dist/index-CIlr4SNh.d.ts.map +1 -0
  8. package/dist/index.d.ts +75 -20
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +116 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/{irm-C7OUVANR.d.ts → irm-CSJX9BsU.d.ts} +56 -3
  13. package/dist/{irm-C7OUVANR.d.ts.map → irm-CSJX9BsU.d.ts.map} +1 -1
  14. package/dist/{irm-DNK3N7qk.js → irm-Dw6fa-DV.js} +34 -3
  15. package/dist/irm-Dw6fa-DV.js.map +1 -0
  16. package/dist/panoptic/v2/index.d.ts +569 -12
  17. package/dist/panoptic/v2/index.d.ts.map +1 -1
  18. package/dist/panoptic/v2/index.js +378 -21
  19. package/dist/panoptic/v2/index.js.map +1 -1
  20. package/dist/{position-BK4a-Yyu.js → position-GYsTTl71.js} +51 -2
  21. package/dist/position-GYsTTl71.js.map +1 -0
  22. package/dist/{router-BZvOeloX.js → router-_vB5ArjF.js} +2 -2
  23. package/dist/{router-BZvOeloX.js.map → router-_vB5ArjF.js.map} +1 -1
  24. package/dist/simulation-4SzTI-xf.d.ts +435 -0
  25. package/dist/simulation-4SzTI-xf.d.ts.map +1 -0
  26. package/dist/test/index.d.ts +2 -2
  27. package/dist/test/index.d.ts.map +1 -1
  28. package/dist/tx-Banz1S18.d.ts +367 -0
  29. package/dist/tx-Banz1S18.d.ts.map +1 -0
  30. package/dist/{types-CRvvn2ce.d.ts → types-Bzw_7NJv.d.ts} +2 -2
  31. package/dist/{types-CRvvn2ce.d.ts.map → types-Bzw_7NJv.d.ts.map} +1 -1
  32. package/dist/types-CspUPolV.d.ts +892 -0
  33. package/dist/types-CspUPolV.d.ts.map +1 -0
  34. package/dist/uniswap/index.d.ts +3 -3
  35. package/dist/uniswap/index.js +3 -3
  36. package/dist/{writes-DymnVbiE.js → writes-h-IX3XQq.js} +77 -12
  37. package/dist/writes-h-IX3XQq.js.map +1 -0
  38. package/dist/zodiac/index.d.ts +1 -6
  39. package/dist/zodiac/index.d.ts.map +1 -1
  40. package/dist/zodiac/index.js +1 -6
  41. package/dist/zodiac/index.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/index-BuJcj5aO.d.ts.map +0 -1
  44. package/dist/index-DVMjZi1E.d.ts +0 -1801
  45. package/dist/index-DVMjZi1E.d.ts.map +0 -1
  46. package/dist/irm-CGykVo3q.d.ts +0 -32
  47. package/dist/irm-CGykVo3q.d.ts.map +0 -1
  48. package/dist/irm-DNK3N7qk.js.map +0 -1
  49. package/dist/panoptic/v2/types/index.d.ts +0 -3
  50. package/dist/panoptic/v2/types/index.js +0 -0
  51. package/dist/position-BK4a-Yyu.js.map +0 -1
  52. package/dist/types-BQejAFnu.d.ts +0 -245
  53. package/dist/types-BQejAFnu.d.ts.map +0 -1
  54. package/dist/writes-DymnVbiE.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-CspUPolV.d.ts","names":["tickToSqrtPriceX96","tickToPrice","tickToPriceDecimalScaled","sqrtPriceX96ToPriceDecimalScaled","priceToTick","sqrtPriceX96ToTick","formatTick","getPricesAtTick","formatTickRange","formatPriceRange","getTickSpacing","roundToTickSpacing","TickLimitsResult","tickLimits","Address","PublicClient","tickToSqrtPriceX96","BlockMeta","OracleState","Pool","RiskParameters","Utilization","PoolMetadata","GetPoolMetadataParams","getPoolMetadata","Promise","GetPoolParams","getPool","GetUtilizationParams","getUtilization","GetOracleStateParams","getOracleState","GetRiskParametersParams","getRiskParameters","validateBuilderCode","FetchPoolIdParams","FetchPoolIdResult","fetchPoolId","Address","PoolMetadata","BlockMeta","PoolHealthStatus","CollateralTracker","RiskEngine","PoolKey","Pool","Utilization","BlockMeta","SafeMode","OracleState","SafeModeState","RiskParameters","CurrentRates","Address","UniswapV4Addresses","PERMIT2_ADDRESS","UNISWAP_V4_ADDRESSES","Record","getUniswapV4Addresses","Partial","Address","PublicClient","WalletClient","PoolKey","TxOverrides","UniswapV4Addresses","SwapExactInViaRouterParams","Partial","QuoteSwapExactInViaRouterParams","SwapExactInQuote","SwapExactOutViaRouterParams","QuoteSwapExactOutViaRouterParams","SwapExactOutQuote","CheckRouterApprovalParams","RouterApprovalStatus","ApproveErc20ForPermit2Params","ApproveRouterViaPermit2Params"],"sources":["../src/panoptic/v2/formatters/tick.d.ts","../src/panoptic/v2/reads/pool.d.ts","../src/panoptic/v2/types/pool.d.ts","../src/panoptic/v2/types/oracle.d.ts","../src/uniswap/v4/addresses.d.ts","../src/uniswap/v4/router/types.d.ts"],"sourcesContent":null,"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { PanopticError, PoolKey, SimulationResult, TxReceipt, TxResult } from "../index-DVMjZi1E.js";
2
- import "../irm-CGykVo3q.js";
3
- import { ApproveErc20ForPermit2Params, ApproveRouterViaPermit2Params, CheckRouterApprovalParams, PERMIT2_ADDRESS$1 as PERMIT2_ADDRESS, QuoteSwapExactInViaRouterParams, QuoteSwapExactOutViaRouterParams, RouterApprovalStatus, SwapExactInQuote, SwapExactInViaRouterParams, SwapExactOutQuote, SwapExactOutViaRouterParams, UNISWAP_V4_ADDRESSES$1 as UNISWAP_V4_ADDRESSES, UniswapV4Addresses, getUniswapV4Addresses$1 as getUniswapV4Addresses } from "../types-BQejAFnu.js";
1
+ import { PanopticError$1 as PanopticError, SimulationResult } from "../simulation-4SzTI-xf.js";
2
+ import { ApproveErc20ForPermit2Params, ApproveRouterViaPermit2Params, CheckRouterApprovalParams, PERMIT2_ADDRESS$1 as PERMIT2_ADDRESS, PoolKey, QuoteSwapExactInViaRouterParams, QuoteSwapExactOutViaRouterParams, RouterApprovalStatus, SwapExactInQuote, SwapExactInViaRouterParams, SwapExactOutQuote, SwapExactOutViaRouterParams, UNISWAP_V4_ADDRESSES$1 as UNISWAP_V4_ADDRESSES, UniswapV4Addresses, getUniswapV4Addresses$1 as getUniswapV4Addresses } from "../types-CspUPolV.js";
3
+ import { TxReceipt, TxResult } from "../tx-Banz1S18.js";
4
4
  import { Address, Hex, PublicClient } from "viem";
5
5
 
6
6
  //#region src/uniswap/v4/router/encodeSwap.d.ts
@@ -1,6 +1,6 @@
1
- import { PanopticError$1 as PanopticError } from "../position-BK4a-Yyu.js";
2
- import "../writes-DymnVbiE.js";
3
- import { AmountExceedsUint128Error, InvalidSwapTokenError, MissingSweepRecipientError, PERMIT2_ADDRESS, QuoterUnavailableError, SETTLE_ALL, SWAP_EXACT_IN_SINGLE, SWAP_EXACT_OUT_SINGLE, SWEEP, TAKE_ALL, UNISWAP_V4_ADDRESSES, UnsupportedChainError, V4_SWAP, approveErc20ForPermit2, approveErc20ForPermit2AndWait, approveRouterViaPermit2, approveRouterViaPermit2AndWait, buildV4ExactOutSwapExecuteArgs, buildV4ExactOutSwapExecuteCalldata, buildV4SwapExecuteArgs, buildV4SwapExecuteCalldata, checkRouterApproval, getUniswapV4Addresses, quoteSwapExactInViaRouter, quoteSwapExactOutViaRouter, quoteV4ExactInByPoolKey, resolveSwapRoute, swapExactInViaRouter, swapExactInViaRouterAndWait, swapExactOutViaRouter, swapExactOutViaRouterAndWait, universalRouterAbi } from "../router-BZvOeloX.js";
1
+ import { PanopticError } from "../position-GYsTTl71.js";
2
+ import "../writes-h-IX3XQq.js";
3
+ import { AmountExceedsUint128Error, InvalidSwapTokenError, MissingSweepRecipientError, PERMIT2_ADDRESS, QuoterUnavailableError, SETTLE_ALL, SWAP_EXACT_IN_SINGLE, SWAP_EXACT_OUT_SINGLE, SWEEP, TAKE_ALL, UNISWAP_V4_ADDRESSES, UnsupportedChainError, V4_SWAP, approveErc20ForPermit2, approveErc20ForPermit2AndWait, approveRouterViaPermit2, approveRouterViaPermit2AndWait, buildV4ExactOutSwapExecuteArgs, buildV4ExactOutSwapExecuteCalldata, buildV4SwapExecuteArgs, buildV4SwapExecuteCalldata, checkRouterApproval, getUniswapV4Addresses, quoteSwapExactInViaRouter, quoteSwapExactOutViaRouter, quoteV4ExactInByPoolKey, resolveSwapRoute, swapExactInViaRouter, swapExactInViaRouterAndWait, swapExactOutViaRouter, swapExactOutViaRouterAndWait, universalRouterAbi } from "../router-_vB5ArjF.js";
4
4
  import { BaseError, ContractFunctionRevertedError, encodeAbiParameters, encodeFunctionData, encodePacked, zeroAddress } from "viem";
5
5
 
6
6
  //#region src/uniswap/v3/addresses.ts
@@ -1,5 +1,5 @@
1
- import { BatchValidationError, DEFAULT_VEGOID, InputListFailError, InvalidTickLimitsError, InvalidTokenIdParameterError, LEG_BITS, LEG_LIMITS, LEG_MASKS, LoanSlotExhaustedError, MaxRetriesExceededError, MissingPositionIdsError, NoLoanPositionsError, OracleRateLimitedError, PanopticError$1 as PanopticError, ProviderLagError, REORG_DEPTH, SCHEMA_VERSION, STORAGE_PREFIX, STRIKE_CONVERSION_FACTOR, SafeModeError, StaleDataError, SwapTokenMismatchError, SyncTimeoutError, TOKEN_ID_BITS, UnhealthyPoolError, calculatePositionGreeks, collateralTrackerV2Abi, createTxResult, decodeLeftRightUnsigned, getBlockMeta, getPool$1 as getPool, getPoolMetadata$1 as getPoolMetadata, getPositions, panopticErrorsAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi, parsePanopticError, submitWrite, tickLimits$1 as tickLimits } from "./position-BK4a-Yyu.js";
2
- import { decodeFunctionData, decodeFunctionResult, encodeFunctionData, erc20Abi, toFunctionSelector } from "viem";
1
+ import { BatchValidationError, DEFAULT_VEGOID, InputListFailError, InvalidTickLimitsError, InvalidTokenIdParameterError, LEG_BITS, LEG_LIMITS, LEG_MASKS, LoanSlotExhaustedError, MaxRetriesExceededError, MissingPositionIdsError, NoLoanPositionsError, OracleRateLimitedError, PanopticError, ProviderLagError, REORG_DEPTH, SCHEMA_VERSION, STORAGE_PREFIX, STRIKE_CONVERSION_FACTOR, SafeModeError, StaleDataError, SwapTokenMismatchError, SyncTimeoutError, TOKEN_ID_BITS, UnhealthyPoolError, calculatePositionGreeks, collateralTrackerV2Abi, createTxResult, decodeLeftRightUnsigned, getBlockMeta, getPool, getPoolMetadata, getPositions, panopticErrorsAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticPoolV2Abi, parsePanopticError, submitWrite, tickLimits } from "./position-GYsTTl71.js";
2
+ import { decodeFunctionData, decodeFunctionResult, encodeFunctionData, erc20Abi, getAddress, parseAbi, toFunctionSelector } from "viem";
3
3
 
4
4
  //#region src/panoptic/v2/writes/broadcaster.ts
5
5
  /**
@@ -610,6 +610,7 @@ const jsonSerializer = {
610
610
  //#endregion
611
611
  //#region src/panoptic/v2/sync/snapshotRecovery.ts
612
612
  const LOG_SCAN_WINDOW = 10000n;
613
+ const rolesExecutionAbi = parseAbi(["function execTransactionWithRole(address to, uint256 value, bytes data, uint8 operation, bytes32 roleKey, bool shouldRevert)"]);
613
614
  /**
614
615
  * Recover position snapshot from the last dispatch transaction.
615
616
  * This is the primary recovery method - it finds the most recent dispatch()
@@ -841,6 +842,30 @@ async function recoverSnapshotFromEvents(params) {
841
842
  function isSnapshotCandidateEvent(event) {
842
843
  return event.transactionHash !== null && event.blockNumber !== null && event.logIndex !== null;
843
844
  }
845
+ function decodeSnapshotTransaction(params) {
846
+ const { account, pool, rolesContext } = params;
847
+ let dispatchInput = params.input;
848
+ let dispatchSender = params.from;
849
+ if (rolesContext) {
850
+ if (params.to === null || getAddress(params.to) !== getAddress(rolesContext.modifier) || getAddress(params.from) !== getAddress(rolesContext.member)) return null;
851
+ try {
852
+ const decodedRoleCall = decodeFunctionData({
853
+ abi: rolesExecutionAbi,
854
+ data: params.input
855
+ });
856
+ const [target, value, data, operation, roleKey, shouldRevert] = decodedRoleCall.args;
857
+ if (!pool || getAddress(target) !== getAddress(pool) || value !== 0n || operation !== 0 || roleKey.toLowerCase() !== rolesContext.roleKey.toLowerCase() || !shouldRevert) return null;
858
+ dispatchInput = data;
859
+ if (!account) return null;
860
+ dispatchSender = account;
861
+ } catch {
862
+ return null;
863
+ }
864
+ } else if (pool && (params.to === null || getAddress(params.to) !== getAddress(pool))) return null;
865
+ const candidates = decodeAllDispatchCalldata(dispatchInput);
866
+ if (candidates.length === 0) return null;
867
+ return account ? selectDispatchForAccount(candidates, account, dispatchSender) : candidates[candidates.length - 1];
868
+ }
844
869
  /**
845
870
  * Recover position snapshot from a specific dispatch transaction hash.
846
871
  *
@@ -864,13 +889,17 @@ function isSnapshotCandidateEvent(event) {
864
889
  * ```
865
890
  */
866
891
  async function recoverSnapshotFromTx(params) {
867
- const { client, transactionHash, account, pool } = params;
892
+ const { client, transactionHash, account, pool, rolesContext } = params;
868
893
  const tx = await client.getTransaction({ hash: transactionHash });
869
894
  if (tx.blockNumber == null) return null;
870
- if (pool && tx.to?.toLowerCase() !== pool.toLowerCase()) return null;
871
- const candidates = decodeAllDispatchCalldata(tx.input);
872
- if (candidates.length === 0) return null;
873
- const decoded = account ? selectDispatchForAccount(candidates, account, tx.from) : candidates[candidates.length - 1];
895
+ const decoded = decodeSnapshotTransaction({
896
+ input: tx.input,
897
+ from: tx.from,
898
+ to: tx.to,
899
+ account,
900
+ pool,
901
+ rolesContext
902
+ });
874
903
  if (!decoded) return null;
875
904
  const blockNumber = tx.blockNumber;
876
905
  const block = await client.getBlock({ blockNumber });
@@ -1006,6 +1035,33 @@ function decodeWrappedDispatch(input) {
1006
1035
  //#endregion
1007
1036
  //#region src/panoptic/v2/sync/getTrackedPositionIds.ts
1008
1037
  /**
1038
+ * Verify that a recovered position-id list still matches the account's current
1039
+ * on-chain state. `getFullPositionsData` reverts when the list contains a
1040
+ * tokenId the account no longer holds, so a successful call is proof the list
1041
+ * is live. Returns `false` on revert so the caller can fall back to an
1042
+ * authoritative event scan instead of trusting a stale checkpoint.
1043
+ */
1044
+ async function isPositionListLive(params) {
1045
+ const { client, poolAddress, account, positionIds, blockNumber } = params;
1046
+ if (positionIds.length === 0) return true;
1047
+ try {
1048
+ await client.readContract({
1049
+ address: poolAddress,
1050
+ abi: panopticPoolV2Abi,
1051
+ functionName: "getFullPositionsData",
1052
+ args: [
1053
+ account,
1054
+ false,
1055
+ positionIds
1056
+ ],
1057
+ blockNumber
1058
+ });
1059
+ return true;
1060
+ } catch {
1061
+ return false;
1062
+ }
1063
+ }
1064
+ /**
1009
1065
  * Get all tracked position IDs for an account from local cache.
1010
1066
  *
1011
1067
  * This function reads from the storage adapter without making RPC calls.
@@ -1065,15 +1121,23 @@ async function clearTrackedPositions(params) {
1065
1121
  * @returns Array of currently open position token IDs, or null if no snapshot was found
1066
1122
  */
1067
1123
  async function getOpenPositionIds(params) {
1068
- const { client, chainId, poolAddress, account, storage, lastDispatchTxHash, fromBlock } = params;
1124
+ const { client, chainId, poolAddress, account, storage, lastDispatchTxHash, fromBlock, toBlock, rolesContext } = params;
1069
1125
  let snapshot = null;
1070
1126
  if (lastDispatchTxHash) try {
1071
- snapshot = await recoverSnapshotFromTx({
1127
+ const candidate = await recoverSnapshotFromTx({
1072
1128
  client,
1073
1129
  transactionHash: lastDispatchTxHash,
1074
1130
  account,
1075
- pool: poolAddress
1131
+ pool: poolAddress,
1132
+ rolesContext
1076
1133
  });
1134
+ if (candidate && await isPositionListLive({
1135
+ client,
1136
+ poolAddress,
1137
+ account,
1138
+ positionIds: candidate.positionIds,
1139
+ blockNumber: toBlock
1140
+ })) snapshot = candidate;
1077
1141
  } catch {
1078
1142
  snapshot = null;
1079
1143
  }
@@ -1081,7 +1145,8 @@ async function getOpenPositionIds(params) {
1081
1145
  client,
1082
1146
  poolAddress,
1083
1147
  account,
1084
- fromBlock
1148
+ fromBlock,
1149
+ toBlock
1085
1150
  });
1086
1151
  if (!snapshot) return null;
1087
1152
  if (storage) {
@@ -4483,4 +4548,4 @@ async function smartRepayAndWait(params) {
4483
4548
 
4484
4549
  //#endregion
4485
4550
  export { addLegToTokenId, approve, approveAndWait, approvePool, assertCanBurn, assertCanForceExercise, assertCanLiquidate, assertCanMint, assertFresh, assertHealthy, assertTradeable, borrow, borrowAndWait, buildBatchDispatchArgs, buildOpenPositionCalldata, buildUniqueLoan, calculateResyncBlock, cancelTransaction, checkApproval, clearCheckpoint, clearTrackedPositions, closePosition, closePositionAndWait, countLegs, createFileStorage, createMemoryStorage, createNonceManager, createTokenIdBuilder, decodeAllDispatchCalldata, decodeAllLegs, decodeDispatchCalldata, decodeLeg, decodePoolId, decodeTickSpacing as decodeTickSpacing$1, decodeTokenId, decodeVegoid, deployNewPool, deployNewPoolAndWait, deposit, depositAndWait, detectReorg, dispatch, dispatchAndWait, encodeLeg, encodePoolId, encodeV4PoolId, executeBatchDispatch, executeBatchDispatchAndWait, forceExercise, forceExerciseAndWait, getAssetIndex, getClosedPositionsKey, getOpenPositionIds, getPendingPositionsKey, getPoolMetaKey, getPoolPrefix, getPositionMetaKey, getPositionsKey, getSchemaVersionKey, getSyncCheckpointKey, getTrackedChunksKey, getTrackedPositionIds, hasLoanOrCredit, hasLongLeg, isCredit, isCreditLeg, isGasError, isInputListFailError, isLoan, isLoanLeg, isNonceError, isPositionTracked, isRetryableRpcError, isShortOnly, isSpread, jsonSerializer, liquidate, liquidateAndWait, loadCheckpoint, mint, mintAndWait, openPosition, openPositionAndWait, pokeOracle, pokeOracleAndWait, previewBorrow, previewUnwrap, previewWrap, publicBroadcaster, recoverSnapshot, recoverSnapshotFromTx, redeem, redeemAndWait, repay, repayAndWait, resolveTokenIndex, rollPosition, rollPositionAndWait, saveCheckpoint, selectDispatchForAccount, 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 };
4486
- //# sourceMappingURL=writes-DymnVbiE.js.map
4551
+ //# sourceMappingURL=writes-h-IX3XQq.js.map