{
  "_format": "hh-sol-artifact-1",
  "contractName": "INotionalV2",
  "sourceName": "wrapped-fcash/interfaces/notional/INotionalV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "enum DepositActionType",
              "name": "actionType",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "currencyId",
              "type": "uint16"
            },
            {
              "internalType": "uint256",
              "name": "depositActionAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "withdrawAmountInternalPrecision",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "withdrawEntireCashBalance",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "redeemToUnderlying",
              "type": "bool"
            },
            {
              "internalType": "bytes32[]",
              "name": "trades",
              "type": "bytes32[]"
            }
          ],
          "internalType": "struct BalanceActionWithTrades[]",
          "name": "actions",
          "type": "tuple[]"
        }
      ],
      "name": "batchBalanceAndTradeAction",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint16",
              "name": "currencyId",
              "type": "uint16"
            },
            {
              "internalType": "bool",
              "name": "depositUnderlying",
              "type": "bool"
            },
            {
              "internalType": "bytes32[]",
              "name": "trades",
              "type": "bytes32[]"
            }
          ],
          "internalType": "struct BatchLend[]",
          "name": "actions",
          "type": "tuple[]"
        }
      ],
      "name": "batchLend",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "int256",
          "name": "cashBalanceInternal",
          "type": "int256"
        },
        {
          "internalType": "bool",
          "name": "useUnderlying",
          "type": "bool"
        }
      ],
      "name": "convertCashBalanceToExternal",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountBalance",
      "outputs": [
        {
          "internalType": "int256",
          "name": "cashBalance",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "nTokenBalance",
          "type": "int256"
        },
        {
          "internalType": "uint256",
          "name": "lastClaimTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountContext",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint40",
              "name": "nextSettleTime",
              "type": "uint40"
            },
            {
              "internalType": "bytes1",
              "name": "hasDebt",
              "type": "bytes1"
            },
            {
              "internalType": "uint8",
              "name": "assetArrayLength",
              "type": "uint8"
            },
            {
              "internalType": "uint16",
              "name": "bitmapCurrencyId",
              "type": "uint16"
            },
            {
              "internalType": "bytes18",
              "name": "activeCurrencies",
              "type": "bytes18"
            }
          ],
          "internalType": "struct AccountContext",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountPortfolio",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "currencyId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maturity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "assetType",
              "type": "uint256"
            },
            {
              "internalType": "int256",
              "name": "notional",
              "type": "int256"
            },
            {
              "internalType": "uint256",
              "name": "storageSlot",
              "type": "uint256"
            },
            {
              "internalType": "enum AssetStorageState",
              "name": "storageState",
              "type": "uint8"
            }
          ],
          "internalType": "struct PortfolioAsset[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        }
      ],
      "name": "getCashGroup",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "maxMarketIndex",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "rateOracleTimeWindowMin",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "totalFeeBPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "reserveFeeShare",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "debtBuffer5BPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "fCashHaircut5BPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "settlementPenaltyRate5BPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "liquidationfCashHaircut5BPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8",
              "name": "liquidationDebtBuffer5BPS",
              "type": "uint8"
            },
            {
              "internalType": "uint8[]",
              "name": "liquidityTokenHaircuts",
              "type": "uint8[]"
            },
            {
              "internalType": "uint8[]",
              "name": "rateScalars",
              "type": "uint8[]"
            }
          ],
          "internalType": "struct CashGroupSettings",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        }
      ],
      "name": "getCurrency",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "hasTransferFee",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "decimals",
              "type": "int256"
            },
            {
              "internalType": "enum TokenType",
              "name": "tokenType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "maxCollateralBalance",
              "type": "uint256"
            }
          ],
          "internalType": "struct Token",
          "name": "assetToken",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenAddress",
              "type": "address"
            },
            {
              "internalType": "bool",
              "name": "hasTransferFee",
              "type": "bool"
            },
            {
              "internalType": "int256",
              "name": "decimals",
              "type": "int256"
            },
            {
              "internalType": "enum TokenType",
              "name": "tokenType",
              "type": "uint8"
            },
            {
              "internalType": "uint256",
              "name": "maxCollateralBalance",
              "type": "uint256"
            }
          ],
          "internalType": "struct Token",
          "name": "underlyingToken",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "fCashAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maturity",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "minLendRate",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "blockTime",
          "type": "uint256"
        }
      ],
      "name": "getDepositFromfCashLend",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "depositAmountUnderlying",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "depositAmountAsset",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "marketIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "encodedTrade",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "maturity",
          "type": "uint256"
        },
        {
          "internalType": "int256",
          "name": "notional",
          "type": "int256"
        },
        {
          "internalType": "uint256",
          "name": "blockTime",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "riskAdjusted",
          "type": "bool"
        }
      ],
      "name": "getPresentfCashValue",
      "outputs": [
        {
          "internalType": "int256",
          "name": "presentValue",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "fCashBorrow",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maturity",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "maxBorrowRate",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "blockTime",
          "type": "uint256"
        }
      ],
      "name": "getPrincipalFromfCashBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmountUnderlying",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowAmountAsset",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "marketIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "encodedTrade",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "borrowedAmountExternal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maturity",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "maxBorrowRate",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "blockTime",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "useUnderlying",
          "type": "bool"
        }
      ],
      "name": "getfCashBorrowFromPrincipal",
      "outputs": [
        {
          "internalType": "uint88",
          "name": "fCashDebt",
          "type": "uint88"
        },
        {
          "internalType": "uint8",
          "name": "marketIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "encodedTrade",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint256",
          "name": "depositAmountExternal",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maturity",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "minLendRate",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "blockTime",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "useUnderlying",
          "type": "bool"
        }
      ],
      "name": "getfCashLendFromDeposit",
      "outputs": [
        {
          "internalType": "uint88",
          "name": "fCashAmount",
          "type": "uint88"
        },
        {
          "internalType": "uint8",
          "name": "marketIndex",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "encodedTrade",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "settleAccount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "currencyId",
          "type": "uint16"
        },
        {
          "internalType": "uint88",
          "name": "amountInternalPrecision",
          "type": "uint88"
        },
        {
          "internalType": "bool",
          "name": "redeemToUnderlying",
          "type": "bool"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
