[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "addressValue",
        "type": "address"
      }
    ],
    "name": "AddressAlreadyExists",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AddressCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIAccessControlManagerInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportICollateralManagerInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIContractProviderInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIFloatIndexOracleInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIFloatRateIndexStorageInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIFutureInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIFutureStorageInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIIdentifiableInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIIssuerInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIMarketConfiguratorInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIMarketInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIMarketStorageInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIRateMathInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIRouterInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportITradeLimiterStorageInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIVAMMInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "contractAddress",
        "type": "address"
      }
    ],
    "name": "AddressNotSupportIVAMMStorageInterface",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "currentRate",
        "type": "int256"
      },
      {
        "internalType": "SD59x18",
        "name": "tradeRateLimit",
        "type": "int256"
      }
    ],
    "name": "CurrentRateIsExceededLimit",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CurrentRateMustBeGreatOrEqualLowerBound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CurrentRateMustBeLessOrEqualUpperBound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DepositIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DestinationAddressCannotBeEqualCollateralManager",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "value",
        "type": "uint32"
      }
    ],
    "name": "ExpirationSecondsParamTooBig",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "value",
        "type": "uint32"
      }
    ],
    "name": "ExpirationSecondsParamTooSmall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "indexTimestamp",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "currentTime",
        "type": "uint256"
      }
    ],
    "name": "ExpiredIndexValue",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "indexValue",
        "type": "int256"
      }
    ],
    "name": "FloatIndexCannotBeNegative",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "UD60x18",
        "name": "minValue",
        "type": "uint256"
      }
    ],
    "name": "FloatTokenAmountIsTooSmall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      }
    ],
    "name": "FutureIsNotPaused",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "IdAlreadyExists",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "IdNotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "IndexByMaturityDoesNotExist",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "size",
        "type": "uint256"
      }
    ],
    "name": "IndexOutOfBounds",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InsufficientLiquidity",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "balance",
        "type": "uint256"
      }
    ],
    "name": "InsufficientProtocolFeeBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "totalCollateral",
        "type": "uint256"
      },
      {
        "internalType": "UD60x18",
        "name": "withdrawAmount",
        "type": "uint256"
      }
    ],
    "name": "InsufficientTotalCollateral",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "IntervalLengthCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD1x18",
        "name": "value",
        "type": "int64"
      }
    ],
    "name": "InvalidHedgeMarginFactor",
    "type": "error"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage",
        "name": "oraclePackage",
        "type": "tuple"
      },
      {
        "internalType": "MarketId",
        "name": "targetMarketId",
        "type": "bytes32"
      }
    ],
    "name": "InvalidMarketId",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "value",
        "type": "uint64"
      }
    ],
    "name": "InvalidPositionLiquidationRewardPercentage",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "InvalidPositionPercentage",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "value",
        "type": "uint64"
      }
    ],
    "name": "InvalidProvisionCancellationRewardPercentage",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "lowerBound",
        "type": "int256"
      },
      {
        "internalType": "SD59x18",
        "name": "upperBound",
        "type": "int256"
      }
    ],
    "name": "InvalidRateBounds",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "",
        "type": "int256"
      }
    ],
    "name": "InvalidRatePoint",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "value",
        "type": "uint64"
      }
    ],
    "name": "InvalidTransferOwnershipRewardPercentage",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidUnwindDirection",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LiquidationIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LiquidationThresholdDeltaCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "liquidationThresholdDelta",
        "type": "uint64"
      },
      {
        "internalType": "UD2x18",
        "name": "marginThresholdDelta",
        "type": "uint64"
      }
    ],
    "name": "LiquidationThresholdDeltaMustBeLessMarginThresholdDelta",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LiquidityProvisionIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LiquidityRemovalIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MarginThresholdDeltaCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "value",
        "type": "uint64"
      }
    ],
    "name": "MarginThresholdToleranceTooBig",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      }
    ],
    "name": "MarketIsNotActive",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MarketIsNotPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaturityLockoutSecondsCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MaxRateImpactPerTradeCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD2x18",
        "name": "minLpFee",
        "type": "uint64"
      },
      {
        "internalType": "UD2x18",
        "name": "minProtocolFee",
        "type": "uint64"
      }
    ],
    "name": "MinFeeSumCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MinNotionalCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaFuture",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaFutureVAMM",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaMarket",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaMarketConfigurator",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaMarketConfiguratorOrIssuer",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaMarketOracle",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaRouter",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeCalledViaTradeLimiter",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeEmergencyManager",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeIssuerContractOrOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeIssuerRole",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeLiquidator",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeMaturityCourier",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeProtocolUser",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeRewardManager",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MustBeRiskManager",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEnoughIntervalsCount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "margin",
        "type": "int256"
      },
      {
        "internalType": "SD59x18",
        "name": "threshold",
        "type": "int256"
      }
    ],
    "name": "NotEnoughMargin",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotEnoughProvision",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "UD60x18",
        "name": "minValue",
        "type": "uint256"
      }
    ],
    "name": "NotionalAmountIsTooSmall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "targetMarketId",
        "type": "bytes32"
      }
    ],
    "name": "OraclePackagesNotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnershipTransferIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ParticipantIsNotLiquidatable",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "UD60x18",
        "name": "requested",
        "type": "uint256"
      }
    ],
    "name": "ProtocolFeeBalanceIsZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "signer",
        "type": "address"
      }
    ],
    "name": "SignerNotAuthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TermLengthCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TermStartTimestampCannotBeZero",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TimeIsOutOfTerm",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TradeIsPaused",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "UD60x18",
        "name": "tradeRateImpact",
        "type": "uint256"
      },
      {
        "internalType": "UD60x18",
        "name": "tradeRateImpactLimit",
        "type": "uint256"
      },
      {
        "internalType": "SD59x18",
        "name": "tradeRate",
        "type": "int256"
      }
    ],
    "name": "TradeRateImpactLimitExceeded",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "SD59x18",
        "name": "tradeRate",
        "type": "int256"
      },
      {
        "internalType": "SD59x18",
        "name": "tradeRateLimit",
        "type": "int256"
      }
    ],
    "name": "TradeRateLimitIsExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "WithdrawIsPaused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroFixedTokenAmount",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroNotional",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "previousAdmin",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newAdmin",
        "type": "address"
      }
    ],
    "name": "AdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "beacon",
        "type": "address"
      }
    ],
    "name": "BeaconUpgraded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MarketActivation",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "MarketDeactivation",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "implementation",
        "type": "address"
      }
    ],
    "name": "Upgraded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "contractProvider",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "initialOwner",
        "type": "address"
      }
    ],
    "name": "ViewDataProviderInitialization",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "activateMarket",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "timestamp",
                "type": "uint64"
              },
              {
                "internalType": "bytes",
                "name": "signature",
                "type": "bytes"
              },
              {
                "internalType": "SD59x18",
                "name": "indexValue",
                "type": "int256"
              }
            ],
            "internalType": "struct OraclePackage[]",
            "name": "packages",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct ViewFloatIndexLogic.MarketOraclePackages[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "name": "activeMarketsInfo",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "sourceName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "instrumentName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "tag",
                "type": "string"
              },
              {
                "internalType": "uint16",
                "name": "version",
                "type": "uint16"
              },
              {
                "internalType": "address",
                "name": "underlying",
                "type": "address"
              },
              {
                "internalType": "string",
                "name": "underlyingName",
                "type": "string"
              },
              {
                "internalType": "uint8",
                "name": "underlyingDecimals",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "underlyingIsWrappedNativeToken",
                "type": "bool"
              },
              {
                "internalType": "enum IRateMath.MathType",
                "name": "rateMathType",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.MarketDescriptor",
            "name": "descriptor",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "termStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "termLength",
                "type": "uint64"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "lowerBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "currentFutureRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "upperBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "intervalLength",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "intervalsCount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.VAMMParams",
                "name": "vAMMParams",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "totalLiquidityNotional",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "openInterest",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "trade",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityProvision",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityRemoval",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidation",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "positionsOwnershipTransfer",
                    "type": "bool"
                  }
                ],
                "internalType": "struct IFutureStorage.PauseConfiguration",
                "name": "pauseConfiguration",
                "type": "tuple"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureInfo[]",
            "name": "futures",
            "type": "tuple[]"
          },
          {
            "internalType": "UD60x18",
            "name": "openInterest",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "totalLiquidityNotional",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "minNotional",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "liquidationThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdTolerance",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "maxRateImpactPerTrade",
                "type": "uint64"
              },
              {
                "internalType": "SD1x18",
                "name": "hedgeMarginFactor",
                "type": "int64"
              },
              {
                "internalType": "uint32",
                "name": "marginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "liquidationMarginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "maturityLockoutSeconds",
                "type": "uint32"
              }
            ],
            "internalType": "struct IMarketStorage.RiskParameters",
            "name": "riskParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "transferOwnershipReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "positionLiquidationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "provisionCancellationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minLpFee",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minProtocolFee",
                "type": "uint64"
              }
            ],
            "internalType": "struct IMarketStorage.RewardParameters",
            "name": "rewardParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "bool",
                "name": "withdraw",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "deposit",
                "type": "bool"
              }
            ],
            "internalType": "struct IMarketStorage.PauseConfiguration",
            "name": "pauseConfiguration",
            "type": "tuple"
          }
        ],
        "internalType": "struct IViewDataProvider.MarketInfo[]",
        "name": "result",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "allActiveMarketsAddresses",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "result",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "allActiveMarketsIds",
    "outputs": [
      {
        "internalType": "MarketId[]",
        "name": "result",
        "type": "bytes32[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      }
    ],
    "name": "checkForUnsettledMaturedFutures",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      }
    ],
    "name": "deactivateMarket",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "maturityBufferSeconds",
        "type": "uint256"
      }
    ],
    "name": "futureIdsCloseToMaturityWithoutIndex",
    "outputs": [
      {
        "internalType": "FutureId[]",
        "name": "",
        "type": "bytes32[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "id",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "name": "futureInfo",
    "outputs": [
      {
        "components": [
          {
            "internalType": "FutureId",
            "name": "id",
            "type": "bytes32"
          },
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "termStart",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "termLength",
            "type": "uint64"
          },
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "lowerBoundRate",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "currentFutureRate",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "upperBoundRate",
                "type": "int256"
              },
              {
                "internalType": "UD60x18",
                "name": "intervalLength",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "intervalsCount",
                "type": "uint256"
              }
            ],
            "internalType": "struct IViewDataProvider.VAMMParams",
            "name": "vAMMParams",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "totalLiquidityNotional",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "openInterest",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "bool",
                "name": "trade",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "liquidityProvision",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "liquidityRemoval",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "liquidation",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "positionsOwnershipTransfer",
                "type": "bool"
              }
            ],
            "internalType": "struct IFutureStorage.PauseConfiguration",
            "name": "pauseConfiguration",
            "type": "tuple"
          }
        ],
        "internalType": "struct IViewDataProvider.FutureInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "uint256",
        "name": "maturityBufferSeconds",
        "type": "uint256"
      }
    ],
    "name": "futuresInfoCloseToMaturityWithoutIndex",
    "outputs": [
      {
        "components": [
          {
            "internalType": "FutureId",
            "name": "id",
            "type": "bytes32"
          },
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "termStart",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "termLength",
            "type": "uint64"
          },
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "lowerBoundRate",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "currentFutureRate",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "upperBoundRate",
                "type": "int256"
              },
              {
                "internalType": "UD60x18",
                "name": "intervalLength",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "intervalsCount",
                "type": "uint256"
              }
            ],
            "internalType": "struct IViewDataProvider.VAMMParams",
            "name": "vAMMParams",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "totalLiquidityNotional",
            "type": "uint256"
          }
        ],
        "internalType": "struct IViewDataProvider.FutureInfoWithoutIndex[]",
        "name": "result",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getContractProvider",
    "outputs": [
      {
        "internalType": "contract IContractProvider",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      }
    ],
    "name": "getFuturePauseConfiguration",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "trade",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "liquidityProvision",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "liquidityRemoval",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "liquidation",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "positionsOwnershipTransfer",
            "type": "bool"
          }
        ],
        "internalType": "struct IFutureStorage.PauseConfiguration",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      }
    ],
    "name": "getMarketPauseConfiguration",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "withdraw",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "deposit",
            "type": "bool"
          }
        ],
        "internalType": "struct IMarketStorage.PauseConfiguration",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      }
    ],
    "name": "getMarketRewardParameters",
    "outputs": [
      {
        "components": [
          {
            "internalType": "UD2x18",
            "name": "transferOwnershipReward",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "positionLiquidationReward",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "provisionCancellationReward",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "lpPriceImpactFeeFactor",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "lpNotionalFeeFactor",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "minLpFee",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "protocolPriceImpactFeeFactor",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "protocolNotionalFeeFactor",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "minProtocolFee",
            "type": "uint64"
          }
        ],
        "internalType": "struct IMarketStorage.RewardParameters",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      }
    ],
    "name": "getMarketRiskParameters",
    "outputs": [
      {
        "components": [
          {
            "internalType": "UD2x18",
            "name": "minNotional",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "liquidationThresholdDelta",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "marginThresholdDelta",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "marginThresholdTolerance",
            "type": "uint64"
          },
          {
            "internalType": "UD2x18",
            "name": "maxRateImpactPerTrade",
            "type": "uint64"
          },
          {
            "internalType": "SD1x18",
            "name": "hedgeMarginFactor",
            "type": "int64"
          },
          {
            "internalType": "uint32",
            "name": "marginRequirementSecondsFloor",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "liquidationMarginRequirementSecondsFloor",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "maturityLockoutSeconds",
            "type": "uint32"
          }
        ],
        "internalType": "struct IMarketStorage.RiskParameters",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      }
    ],
    "name": "getProtocolFee",
    "outputs": [
      {
        "internalType": "UD60x18",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract IContractProvider",
        "name": "contractProvider",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "initialOwner",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "maker",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "makerLiquidityDistribution",
    "outputs": [
      {
        "internalType": "SD59x18",
        "name": "currentFutureRate",
        "type": "int256"
      },
      {
        "components": [
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "lower",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "upper",
                "type": "int256"
              }
            ],
            "internalType": "struct RateBounds",
            "name": "bounds",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "notional",
            "type": "uint256"
          }
        ],
        "internalType": "struct IntervalLiquidity[]",
        "name": "intervals",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "marginDetails",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "netFutureValue",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "accruedLPFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "incurredFee",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct ProfitAndLoss.Value",
                "name": "profitAndLoss",
                "type": "tuple"
              },
              {
                "internalType": "SD59x18",
                "name": "collateral",
                "type": "int256"
              }
            ],
            "internalType": "struct Margin.Value",
            "name": "margin",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "initialMarginThreshold",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "liquidationMarginThreshold",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "lpMarginThreshold",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "dv01",
            "type": "uint256"
          },
          {
            "internalType": "enum RiskDirection.Value",
            "name": "riskDirection",
            "type": "uint8"
          }
        ],
        "internalType": "struct ViewDataProviderLogic.MarginState",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "marginRequirement",
    "outputs": [
      {
        "internalType": "UD60x18",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "name": "marketInfo",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "sourceName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "instrumentName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "tag",
                "type": "string"
              },
              {
                "internalType": "uint16",
                "name": "version",
                "type": "uint16"
              },
              {
                "internalType": "address",
                "name": "underlying",
                "type": "address"
              },
              {
                "internalType": "string",
                "name": "underlyingName",
                "type": "string"
              },
              {
                "internalType": "uint8",
                "name": "underlyingDecimals",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "underlyingIsWrappedNativeToken",
                "type": "bool"
              },
              {
                "internalType": "enum IRateMath.MathType",
                "name": "rateMathType",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.MarketDescriptor",
            "name": "descriptor",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "termStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "termLength",
                "type": "uint64"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "lowerBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "currentFutureRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "upperBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "intervalLength",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "intervalsCount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.VAMMParams",
                "name": "vAMMParams",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "totalLiquidityNotional",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "openInterest",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "trade",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityProvision",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityRemoval",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidation",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "positionsOwnershipTransfer",
                    "type": "bool"
                  }
                ],
                "internalType": "struct IFutureStorage.PauseConfiguration",
                "name": "pauseConfiguration",
                "type": "tuple"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureInfo[]",
            "name": "futures",
            "type": "tuple[]"
          },
          {
            "internalType": "UD60x18",
            "name": "openInterest",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "totalLiquidityNotional",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "minNotional",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "liquidationThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdTolerance",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "maxRateImpactPerTrade",
                "type": "uint64"
              },
              {
                "internalType": "SD1x18",
                "name": "hedgeMarginFactor",
                "type": "int64"
              },
              {
                "internalType": "uint32",
                "name": "marginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "liquidationMarginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "maturityLockoutSeconds",
                "type": "uint32"
              }
            ],
            "internalType": "struct IMarketStorage.RiskParameters",
            "name": "riskParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "transferOwnershipReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "positionLiquidationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "provisionCancellationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minLpFee",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minProtocolFee",
                "type": "uint64"
              }
            ],
            "internalType": "struct IMarketStorage.RewardParameters",
            "name": "rewardParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "bool",
                "name": "withdraw",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "deposit",
                "type": "bool"
              }
            ],
            "internalType": "struct IMarketStorage.PauseConfiguration",
            "name": "pauseConfiguration",
            "type": "tuple"
          }
        ],
        "internalType": "struct IViewDataProvider.MarketInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "id",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "onlyActiveFutures",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "offset",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "limit",
            "type": "uint256"
          }
        ],
        "internalType": "struct ViewDataProviderLogic.FuturesFilter",
        "name": "filter",
        "type": "tuple"
      }
    ],
    "name": "marketInfoWithFilter",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "sourceName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "instrumentName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "tag",
                "type": "string"
              },
              {
                "internalType": "uint16",
                "name": "version",
                "type": "uint16"
              },
              {
                "internalType": "address",
                "name": "underlying",
                "type": "address"
              },
              {
                "internalType": "string",
                "name": "underlyingName",
                "type": "string"
              },
              {
                "internalType": "uint8",
                "name": "underlyingDecimals",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "underlyingIsWrappedNativeToken",
                "type": "bool"
              },
              {
                "internalType": "enum IRateMath.MathType",
                "name": "rateMathType",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.MarketDescriptor",
            "name": "descriptor",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "termStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "termLength",
                "type": "uint64"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "lowerBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "currentFutureRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "upperBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "intervalLength",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "intervalsCount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.VAMMParams",
                "name": "vAMMParams",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "totalLiquidityNotional",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "openInterest",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "trade",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityProvision",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityRemoval",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidation",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "positionsOwnershipTransfer",
                    "type": "bool"
                  }
                ],
                "internalType": "struct IFutureStorage.PauseConfiguration",
                "name": "pauseConfiguration",
                "type": "tuple"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureInfo[]",
            "name": "futures",
            "type": "tuple[]"
          },
          {
            "internalType": "UD60x18",
            "name": "openInterest",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "totalLiquidityNotional",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "minNotional",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "liquidationThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdDelta",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "marginThresholdTolerance",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "maxRateImpactPerTrade",
                "type": "uint64"
              },
              {
                "internalType": "SD1x18",
                "name": "hedgeMarginFactor",
                "type": "int64"
              },
              {
                "internalType": "uint32",
                "name": "marginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "liquidationMarginRequirementSecondsFloor",
                "type": "uint32"
              },
              {
                "internalType": "uint32",
                "name": "maturityLockoutSeconds",
                "type": "uint32"
              }
            ],
            "internalType": "struct IMarketStorage.RiskParameters",
            "name": "riskParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "UD2x18",
                "name": "transferOwnershipReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "positionLiquidationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "provisionCancellationReward",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "lpNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minLpFee",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolPriceImpactFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "protocolNotionalFeeFactor",
                "type": "uint64"
              },
              {
                "internalType": "UD2x18",
                "name": "minProtocolFee",
                "type": "uint64"
              }
            ],
            "internalType": "struct IMarketStorage.RewardParameters",
            "name": "rewardParameters",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "bool",
                "name": "withdraw",
                "type": "bool"
              },
              {
                "internalType": "bool",
                "name": "deposit",
                "type": "bool"
              }
            ],
            "internalType": "struct IMarketStorage.PauseConfiguration",
            "name": "pauseConfiguration",
            "type": "tuple"
          }
        ],
        "internalType": "struct IViewDataProvider.MarketInfo",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "marketPortfolio",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "sourceName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "instrumentName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "tag",
                "type": "string"
              },
              {
                "internalType": "uint16",
                "name": "version",
                "type": "uint16"
              },
              {
                "internalType": "address",
                "name": "underlying",
                "type": "address"
              },
              {
                "internalType": "string",
                "name": "underlyingName",
                "type": "string"
              },
              {
                "internalType": "uint8",
                "name": "underlyingDecimals",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "underlyingIsWrappedNativeToken",
                "type": "bool"
              },
              {
                "internalType": "enum IRateMath.MathType",
                "name": "rateMathType",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.MarketDescriptor",
            "name": "descriptor",
            "type": "tuple"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "components": [
                      {
                        "internalType": "SD59x18",
                        "name": "netFutureValue",
                        "type": "int256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "accruedLPFee",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "incurredFee",
                        "type": "uint256"
                      }
                    ],
                    "internalType": "struct ProfitAndLoss.Value",
                    "name": "profitAndLoss",
                    "type": "tuple"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "collateral",
                    "type": "int256"
                  }
                ],
                "internalType": "struct Margin.Value",
                "name": "margin",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "initialMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "liquidationMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "lpMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "dv01",
                "type": "uint256"
              },
              {
                "internalType": "enum RiskDirection.Value",
                "name": "riskDirection",
                "type": "uint8"
              }
            ],
            "internalType": "struct ViewDataProviderLogic.MarginState",
            "name": "marginState",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "termStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "termLength",
                "type": "uint64"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "lowerBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "currentFutureRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "upperBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "intervalLength",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "intervalsCount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.VAMMParams",
                "name": "vAMMParams",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "totalLiquidityNotional",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "openInterest",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "trade",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityProvision",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityRemoval",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidation",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "positionsOwnershipTransfer",
                    "type": "bool"
                  }
                ],
                "internalType": "struct IFutureStorage.PauseConfiguration",
                "name": "pauseConfiguration",
                "type": "tuple"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureInfo[]",
            "name": "futures",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "futureId",
                "type": "bytes32"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "fixedTokenAmount",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "floatTokenAmount",
                    "type": "int256"
                  }
                ],
                "internalType": "struct FixedAndFloatTokensPair.Value",
                "name": "tokensPair",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "notional",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "netFutureValue",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "accruedLPFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "incurredFee",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct ProfitAndLoss.Value",
                "name": "profitAndLoss",
                "type": "tuple"
              },
              {
                "internalType": "SD59x18",
                "name": "requiredMargin",
                "type": "int256"
              },
              {
                "internalType": "UD60x18",
                "name": "dv01",
                "type": "uint256"
              },
              {
                "internalType": "enum RiskDirection.Value",
                "name": "riskDirection",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureOpenPosition[]",
            "name": "futureOpenPositions",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "futureId",
                "type": "bytes32"
              },
              {
                "components": [
                  {
                    "components": [
                      {
                        "internalType": "SD59x18",
                        "name": "lower",
                        "type": "int256"
                      },
                      {
                        "internalType": "SD59x18",
                        "name": "upper",
                        "type": "int256"
                      }
                    ],
                    "internalType": "struct RateBounds",
                    "name": "bounds",
                    "type": "tuple"
                  },
                  {
                    "components": [
                      {
                        "internalType": "UD60x18",
                        "name": "total",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "payer",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "receiver",
                        "type": "uint256"
                      }
                    ],
                    "internalType": "struct ProvisionDistribution",
                    "name": "notional",
                    "type": "tuple"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "requiredMargin",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "payerDv01",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "receiverDv01",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.ProvisionInfo[]",
                "name": "provisions",
                "type": "tuple[]"
              },
              {
                "internalType": "SD59x18",
                "name": "requiredMargin",
                "type": "int256"
              }
            ],
            "internalType": "struct IViewDataProvider.MakerFutureProvisions[]",
            "name": "futureMakerProvisions",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct IViewDataProvider.MarketPortfolio",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      },
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "poolLiquidityDistribution",
    "outputs": [
      {
        "components": [
          {
            "internalType": "UD60x18",
            "name": "total",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "payer",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "receiver",
            "type": "uint256"
          }
        ],
        "internalType": "struct ProvisionDistribution",
        "name": "provisionDistribution",
        "type": "tuple"
      },
      {
        "internalType": "SD59x18",
        "name": "currentFutureRate",
        "type": "int256"
      },
      {
        "components": [
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "lower",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "upper",
                "type": "int256"
              }
            ],
            "internalType": "struct RateBounds",
            "name": "bounds",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "notional",
            "type": "uint256"
          }
        ],
        "internalType": "struct IntervalLiquidity[]",
        "name": "intervals",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "timestamp",
                "type": "uint64"
              },
              {
                "internalType": "bytes",
                "name": "signature",
                "type": "bytes"
              },
              {
                "internalType": "SD59x18",
                "name": "indexValue",
                "type": "int256"
              }
            ],
            "internalType": "struct OraclePackage[]",
            "name": "packages",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct ViewFloatIndexLogic.MarketOraclePackages[]",
        "name": "marketsOraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "portfolio",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "MarketId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "string",
                "name": "sourceName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "instrumentName",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "tag",
                "type": "string"
              },
              {
                "internalType": "uint16",
                "name": "version",
                "type": "uint16"
              },
              {
                "internalType": "address",
                "name": "underlying",
                "type": "address"
              },
              {
                "internalType": "string",
                "name": "underlyingName",
                "type": "string"
              },
              {
                "internalType": "uint8",
                "name": "underlyingDecimals",
                "type": "uint8"
              },
              {
                "internalType": "bool",
                "name": "underlyingIsWrappedNativeToken",
                "type": "bool"
              },
              {
                "internalType": "enum IRateMath.MathType",
                "name": "rateMathType",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.MarketDescriptor",
            "name": "descriptor",
            "type": "tuple"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "components": [
                      {
                        "internalType": "SD59x18",
                        "name": "netFutureValue",
                        "type": "int256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "accruedLPFee",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "incurredFee",
                        "type": "uint256"
                      }
                    ],
                    "internalType": "struct ProfitAndLoss.Value",
                    "name": "profitAndLoss",
                    "type": "tuple"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "collateral",
                    "type": "int256"
                  }
                ],
                "internalType": "struct Margin.Value",
                "name": "margin",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "initialMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "liquidationMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "lpMarginThreshold",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "dv01",
                "type": "uint256"
              },
              {
                "internalType": "enum RiskDirection.Value",
                "name": "riskDirection",
                "type": "uint8"
              }
            ],
            "internalType": "struct ViewDataProviderLogic.MarginState",
            "name": "marginState",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "id",
                "type": "bytes32"
              },
              {
                "internalType": "MarketId",
                "name": "marketId",
                "type": "bytes32"
              },
              {
                "internalType": "uint64",
                "name": "termStart",
                "type": "uint64"
              },
              {
                "internalType": "uint64",
                "name": "termLength",
                "type": "uint64"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "lowerBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "currentFutureRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "upperBoundRate",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "intervalLength",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "intervalsCount",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.VAMMParams",
                "name": "vAMMParams",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "totalLiquidityNotional",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "openInterest",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "bool",
                    "name": "trade",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityProvision",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidityRemoval",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "liquidation",
                    "type": "bool"
                  },
                  {
                    "internalType": "bool",
                    "name": "positionsOwnershipTransfer",
                    "type": "bool"
                  }
                ],
                "internalType": "struct IFutureStorage.PauseConfiguration",
                "name": "pauseConfiguration",
                "type": "tuple"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureInfo[]",
            "name": "futures",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "futureId",
                "type": "bytes32"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "fixedTokenAmount",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "floatTokenAmount",
                    "type": "int256"
                  }
                ],
                "internalType": "struct FixedAndFloatTokensPair.Value",
                "name": "tokensPair",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "notional",
                "type": "uint256"
              },
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "netFutureValue",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "accruedLPFee",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "incurredFee",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct ProfitAndLoss.Value",
                "name": "profitAndLoss",
                "type": "tuple"
              },
              {
                "internalType": "SD59x18",
                "name": "requiredMargin",
                "type": "int256"
              },
              {
                "internalType": "UD60x18",
                "name": "dv01",
                "type": "uint256"
              },
              {
                "internalType": "enum RiskDirection.Value",
                "name": "riskDirection",
                "type": "uint8"
              }
            ],
            "internalType": "struct IViewDataProvider.FutureOpenPosition[]",
            "name": "futureOpenPositions",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "FutureId",
                "name": "futureId",
                "type": "bytes32"
              },
              {
                "components": [
                  {
                    "components": [
                      {
                        "internalType": "SD59x18",
                        "name": "lower",
                        "type": "int256"
                      },
                      {
                        "internalType": "SD59x18",
                        "name": "upper",
                        "type": "int256"
                      }
                    ],
                    "internalType": "struct RateBounds",
                    "name": "bounds",
                    "type": "tuple"
                  },
                  {
                    "components": [
                      {
                        "internalType": "UD60x18",
                        "name": "total",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "payer",
                        "type": "uint256"
                      },
                      {
                        "internalType": "UD60x18",
                        "name": "receiver",
                        "type": "uint256"
                      }
                    ],
                    "internalType": "struct ProvisionDistribution",
                    "name": "notional",
                    "type": "tuple"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "requiredMargin",
                    "type": "int256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "payerDv01",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "receiverDv01",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct IViewDataProvider.ProvisionInfo[]",
                "name": "provisions",
                "type": "tuple[]"
              },
              {
                "internalType": "SD59x18",
                "name": "requiredMargin",
                "type": "int256"
              }
            ],
            "internalType": "struct IViewDataProvider.MakerFutureProvisions[]",
            "name": "futureMakerProvisions",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct IViewDataProvider.MarketPortfolio[]",
        "name": "result",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "offset",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "portfolioMarketIds",
    "outputs": [
      {
        "internalType": "MarketId[]",
        "name": "result",
        "type": "bytes32[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "proxiableUUID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "FutureId",
        "name": "futureId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "totalPosition",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "fixedTokenAmount",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "floatTokenAmount",
                "type": "int256"
              }
            ],
            "internalType": "struct FixedAndFloatTokensPair.Value",
            "name": "openPositionTokensPair",
            "type": "tuple"
          },
          {
            "internalType": "SD59x18",
            "name": "openPositionNotional",
            "type": "int256"
          },
          {
            "internalType": "SD59x18",
            "name": "openPositionFloatTradeValue",
            "type": "int256"
          },
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "fixedTokenAmount",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "floatTokenAmount",
                "type": "int256"
              }
            ],
            "internalType": "struct FixedAndFloatTokensPair.Value",
            "name": "takerOpenPositionTokensPair",
            "type": "tuple"
          },
          {
            "internalType": "SD59x18",
            "name": "takerOpenPositionNotional",
            "type": "int256"
          },
          {
            "internalType": "SD59x18",
            "name": "takerOpenPositionFloatTradeValue",
            "type": "int256"
          },
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "fixedTokenAmount",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "floatTokenAmount",
                "type": "int256"
              }
            ],
            "internalType": "struct FixedAndFloatTokensPair.Value",
            "name": "makerOpenPositionTokensPair",
            "type": "tuple"
          },
          {
            "internalType": "SD59x18",
            "name": "makerOpenPositionNotional",
            "type": "int256"
          },
          {
            "internalType": "SD59x18",
            "name": "makerOpenPositionFloatTradeValue",
            "type": "int256"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "SD59x18",
                    "name": "fixedTokenAmount",
                    "type": "int256"
                  },
                  {
                    "internalType": "SD59x18",
                    "name": "floatTokenAmount",
                    "type": "int256"
                  }
                ],
                "internalType": "struct FixedAndFloatTokensPair.Value",
                "name": "tokensPair",
                "type": "tuple"
              },
              {
                "internalType": "UD60x18",
                "name": "accruedLPFee",
                "type": "uint256"
              },
              {
                "internalType": "SD59x18",
                "name": "floatTradeValue",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "positionNotional",
                "type": "int256"
              },
              {
                "components": [
                  {
                    "internalType": "UD60x18",
                    "name": "total",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "payer",
                    "type": "uint256"
                  },
                  {
                    "internalType": "UD60x18",
                    "name": "receiver",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct ProvisionDistribution",
                "name": "provisionNotional",
                "type": "tuple"
              }
            ],
            "internalType": "struct BoundedProvisionInfo[]",
            "name": "makerProvisions",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "SD59x18",
                "name": "lower",
                "type": "int256"
              },
              {
                "internalType": "SD59x18",
                "name": "upper",
                "type": "int256"
              }
            ],
            "internalType": "struct RateBounds[]",
            "name": "provisionsBounds",
            "type": "tuple[]"
          },
          {
            "components": [
              {
                "internalType": "UD60x18",
                "name": "total",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "payer",
                "type": "uint256"
              },
              {
                "internalType": "UD60x18",
                "name": "receiver",
                "type": "uint256"
              }
            ],
            "internalType": "struct ProvisionDistribution",
            "name": "overallProvisionsNotional",
            "type": "tuple"
          },
          {
            "internalType": "UD60x18",
            "name": "accruedLPFee",
            "type": "uint256"
          },
          {
            "internalType": "UD60x18",
            "name": "incurredFee",
            "type": "uint256"
          },
          {
            "internalType": "SD59x18",
            "name": "fee",
            "type": "int256"
          }
        ],
        "internalType": "struct TotalPosition",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation",
        "type": "address"
      }
    ],
    "name": "upgradeTo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "upgradeToAndCall",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "MarketId",
        "name": "marketId",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "participant",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "MarketId",
            "name": "marketId",
            "type": "bytes32"
          },
          {
            "internalType": "uint64",
            "name": "timestamp",
            "type": "uint64"
          },
          {
            "internalType": "bytes",
            "name": "signature",
            "type": "bytes"
          },
          {
            "internalType": "SD59x18",
            "name": "indexValue",
            "type": "int256"
          }
        ],
        "internalType": "struct OraclePackage[]",
        "name": "oraclePackages",
        "type": "tuple[]"
      }
    ],
    "name": "withdrawableMargin",
    "outputs": [
      {
        "internalType": "UD60x18",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]
