{
  "schemaVersion": 3,
  "chainId": 143,
  "address": "0xB483252De6c4CD540Bb964b6D5Ec9aE61F033a8d",
  "blockNumber": "111187420",
  "standard": "erc4626",
  "vaultKind": "erc7575",
  "skipReason": "separate-share-token",
  "upstream": {
    "repo": "https://github.com/a16z/erc4626-tests",
    "commit": "ac485460e014f22807c1ff687e0b4dc3af96ee40"
  },
  "harnessSha256": "0x5b48d421f2ac4cdaf2ddee727b2f51348aa00f899b40dcd3323c7d6a3aa08890",
  "sfPropertiesSha256": "0x612e004770694c26092ccd557d619fcfff6605b538b463a070a4d4668a26991e",
  "runs": 16,
  "delta": "0",
  "seed": null,
  "sender": null,
  "toolchain": {
    "forgeVersion": null,
    "forgeStd": {
      "repo": "https://github.com/foundry-rs/forge-std",
      "commit": "bf647bd6046f2f7da30d0c2bf435e5c76a780c1b"
    },
    "foundryTomlSha256": "0xee1cdf6abd473ff042b6385bd46833ed08053d608d0a5645ad159fc2cca1b9b3",
    "maxTestRejects": 4096
  },
  "identity": {
    "codeHash": "0x32cd74ae6c7afe95ad6df70f76f99fdd6958e15ea0a267cf0218a00c650e314b",
    "metadataHash": "0x1220d0615fc355a64fda78960c3144e6c2a1ba2ec8f0b0040525cdbd02d7afbe0135",
    "maskedCodeHash": "0xf3203dae4d02cd8e9b1ede2d6d9d3d28305e30622dd74b6b4bf256485d816e45",
    "codeSize": 793,
    "proxy": {
      "kind": "eip1967",
      "implementation": "0x4d0e75d31586b0A46e251FFEacbd4d8da4ac2111"
    },
    "implementation": {
      "address": "0x4d0e75d31586b0A46e251FFEacbd4d8da4ac2111",
      "codeHash": "0x68c79a99241d5a6d2cdff248953d968bccd9b540bf6f06a56d9395c1c4bf26e9",
      "metadataHash": "0x12208754f48389ca3a0b5caab1be14913cc5c15a37b7855c82d5375433d54964083f",
      "maskedCodeHash": "0xc708cdb26c59c85d02c1677d3fd304df27af1c9be0937da456d0841c1990539d"
    },
    "implementationKey": "0x9b34d95faa6ae865e93bb2622fcf7348c6434b3b5d31344ca2b7c82421c1da6c",
    "implementationKeyKind": {
      "of": "implementation",
      "hash": "metadataHash+maskedCodeHash"
    }
  },
  "results": [
    {
      "id": "asset",
      "test": "test_asset",
      "description": "asset() does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "totalAssets",
      "test": "test_totalAssets",
      "description": "totalAssets() does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "convertToShares",
      "test": "test_convertToShares",
      "description": "convertToShares gives the same result for any caller",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "convertToAssets",
      "test": "test_convertToAssets",
      "description": "convertToAssets gives the same result for any caller",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "maxDeposit",
      "test": "test_maxDeposit",
      "description": "maxDeposit does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "previewDeposit",
      "test": "test_previewDeposit",
      "description": "deposit mints at least the shares previewDeposit quoted",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "deposit",
      "test": "test_deposit",
      "description": "deposit moves assets from the caller, credits shares to the receiver and spends allowance",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "maxMint",
      "test": "test_maxMint",
      "description": "maxMint does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "previewMint",
      "test": "test_previewMint",
      "description": "mint pulls at most the assets previewMint quoted",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "mint",
      "test": "test_mint",
      "description": "mint moves assets from the caller, credits shares to the receiver and spends allowance",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "maxWithdraw",
      "test": "test_maxWithdraw",
      "description": "maxWithdraw does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "previewWithdraw",
      "test": "test_previewWithdraw",
      "description": "withdraw burns at most the shares previewWithdraw quoted",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "withdraw",
      "test": "test_withdraw",
      "description": "withdraw burns owner shares, pays the receiver and spends share allowance",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "withdraw-zero-allowance",
      "test": "test_withdraw_zero_allowance",
      "description": "withdraw on behalf of an owner without allowance reverts",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "maxRedeem",
      "test": "test_maxRedeem",
      "description": "maxRedeem does not revert",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "previewRedeem",
      "test": "test_previewRedeem",
      "description": "redeem pays at least the assets previewRedeem quoted",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "redeem",
      "test": "test_redeem",
      "description": "redeem burns owner shares, pays the receiver and spends share allowance",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "redeem-zero-allowance",
      "test": "test_redeem_zero_allowance",
      "description": "redeem on behalf of an owner without allowance reverts",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-deposit-redeem",
      "test": "test_RT_deposit_redeem",
      "description": "redeem(deposit(a)) returns no more than a",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-deposit-withdraw",
      "test": "test_RT_deposit_withdraw",
      "description": "withdraw(a) burns at least the shares deposit(a) minted",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-redeem-deposit",
      "test": "test_RT_redeem_deposit",
      "description": "deposit(redeem(s)) mints no more than s",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-redeem-mint",
      "test": "test_RT_redeem_mint",
      "description": "mint(s) costs at least the assets redeem(s) paid",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-mint-withdraw",
      "test": "test_RT_mint_withdraw",
      "description": "withdraw(mint(s)) burns at least s shares",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-mint-redeem",
      "test": "test_RT_mint_redeem",
      "description": "redeem(s) pays no more than mint(s) cost",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-withdraw-mint",
      "test": "test_RT_withdraw_mint",
      "description": "mint(withdraw(a)) costs at least a",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "RT-withdraw-deposit",
      "test": "test_RT_withdraw_deposit",
      "description": "deposit(a) mints no more than the shares withdraw(a) burned",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "sf-maxDeposit-honored",
      "test": "test_sf_maxDeposit_honored",
      "description": "deposit does not revert for amounts up to maxDeposit (EIP-4626: maxDeposit is the most deposit accepts without reverting)",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "sf-maxMint-honored",
      "test": "test_sf_maxMint_honored",
      "description": "mint does not revert for shares up to maxMint (EIP-4626: maxMint is the most mint accepts without reverting)",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "sf-maxWithdraw-honored",
      "test": "test_sf_maxWithdraw_honored",
      "description": "withdraw does not revert for assets up to maxWithdraw (EIP-4626: maxWithdraw MUST return 0 when withdrawals are disabled)",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    },
    {
      "id": "sf-maxRedeem-honored",
      "test": "test_sf_maxRedeem_honored",
      "description": "redeem does not revert for shares up to maxRedeem (EIP-4626: maxRedeem MUST return 0 when redemptions are disabled)",
      "status": "not_applicable",
      "reason": "ERC-7575 vault: shares are a separate token (share() = 0x1939531162B2780e2fb5E01D68c6f545467a786D); both suites assume the vault is its own share token and call balanceOf, allowance and approve on it"
    }
  ],
  "summary": {
    "pass": 0,
    "fail": 0,
    "inconclusive": 0,
    "notApplicable": 30
  },
  "startedAt": "2026-10-07T01:01:36.499Z",
  "durationMs": 1647
}
