Skip to content

Withdrawals

How to Exit Your Position

All Vault withdrawals use WithdrawalNFT with a waiting period before asset release.

Withdrawal Timeline

VaultWaiting Period
mMITOc7 days
mMITOs7 days
gmMITO14 days

Step-by-Step Guide

Request Withdrawal

mMITOc
// By asset amount
function withdraw(uint256 assets, address receiver, address owner)
    returns (uint256 shares)
 
// By share amount
function redeem(uint256 shares, address receiver, address owner)
    returns (uint256 assets)
What happens:
  • Your tokens (mMITOc/mMITOs/gmMITO) are burned
  • Asset amount calculated at current exchange rate
  • WithdrawalNFT minted to your address

Receive WithdrawalNFT

You'll receive an ERC721 NFT containing:

struct WithdrawalRequest {
    address authority;     // Vault that minted this NFT
    uint48 maturity;       // When you can claim
    uint256 assetAmount;   // Assets to receive
    uint256 shareAmount;   // Shares that were burned
}

Wait for Maturity

  • mMITOc / mMITOs: 7 days
  • gmMITO: 14 days

Claim Assets

mMITOc / gmMITO
function claimWithdraw(uint256[] calldata tokenIds) external

Batch processing supported - claim multiple NFTs in one transaction (limited by maxClaimsPerTx).

WithdrawalNFT Contract

Permissions

bytes32 public constant VAULT_ROLE = keccak256("vault");
FunctionPermission
mintVAULT_ROLE only
burnMinting vault only (authority check)

Key Functions

// Mint NFT (called by Vault)
function mint(address to, uint256 assetAmount, uint256 shareAmount, uint48 maturity)
    external returns (uint256 tokenId)
 
// Burn NFT (called by Vault on claim)
function burn(uint256 tokenId) external
 
// Query withdrawal info
function getWithdrawalRequest(uint256 tokenId)
    external view returns (WithdrawalRequest memory)
 
// On-chain SVG metadata
function tokenURI(uint256 tokenId) external view returns (string memory)

FAQ

Can I cancel a withdrawal?

No. Share tokens are burned at request time. The process is irreversible.

What if I don't claim after maturity?

No penalty. Your NFT remains valid indefinitely. Claim whenever you want.

What if I sell the NFT?

The buyer receives the assets after maturity. This is useful for getting instant liquidity by selling at a discount on NFT marketplaces.

Can I make multiple withdrawal requests?

Yes. Each request mints a separate NFT. You can have multiple pending withdrawals.