{
  "title": "LendingPool: withdraw",
  "description": "withdraw function.",
  "stories": [
    {
      "description": "User 0 Deposits 1000 DAI in an empty reserve",
      "actions": [
        {
          "name": "mint",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "DAI",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws half of the deposited DAI",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "DAI",
            "amount": "500",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws remaining half of the deposited DAI",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "DAI",
            "amount": "-1",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 Deposits 1000 USDC in an empty reserve",
      "actions": [
        {
          "name": "mint",
          "args": {
            "reserve": "USDC",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "USDC",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "USDC",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws half of the deposited USDC",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "USDC",
            "amount": "500",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws remaining half of the deposited USDC",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "USDC",
            "amount": "-1",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 Deposits 1 WETH in an empty reserve",
      "actions": [
        {
          "name": "mint",
          "args": {
            "reserve": "WETH",
            "amount": "1",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "WETH",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "WETH",
            "amount": "1",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws half of the deposited WETH",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "WETH",
            "amount": "0.5",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "User 0 withdraws remaining half of the deposited WETH",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "WETH",
            "amount": "-1",
            "user": "0"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "Users 0 and 1 Deposit 1000 DAI, both withdraw",
      "actions": [
        {
          "name": "mint",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "DAI",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "withdraw",
          "args": {
            "reserve": "DAI",
            "amount": "-1",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "withdraw",
          "args": {
            "reserve": "DAI",
            "amount": "-1",
            "user": "1"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "Users 0 deposits 1000 DAI, user 1 Deposit 1000 USDC and 1 WETH, borrows 100 DAI. User 1 tries to withdraw all the USDC",
      "actions": [
        {
          "name": "deposit",
          "args": {
            "reserve": "DAI",
            "amount": "1000",
            "user": "0"
          },
          "expected": "success"
        },
        {
          "name": "mint",
          "args": {
            "reserve": "USDC",
            "amount": "1000",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "USDC",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "USDC",
            "amount": "1000",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "mint",
          "args": {
            "reserve": "WETH",
            "amount": "1",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "approve",
          "args": {
            "reserve": "WETH",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "deposit",
          "args": {
            "reserve": "WETH",
            "amount": "1",
            "user": "1"
          },
          "expected": "success"
        },
        {
          "name": "borrow",
          "args": {
            "reserve": "DAI",
            "amount": "100",
            "user": "1",
            "borrowRateMode": "stable"
          },
          "expected": "success"
        },
        {
          "name": "withdraw",
          "args": {
            "reserve": "USDC",
            "amount": "-1",
            "user": "1"
          },
          "expected": "success"
        }
      ]
    },
    {
      "description": "Users 1 tries to withdraw 0.05 WETH, which does not bring the HF below 1",
      "actions": [
        {
          "name": "withdraw",
          "args": {
            "reserve": "WETH",
            "amount": "0.05",
            "user": "1"
          },
          "expected": "success"
        }
      ]
    }
  ]
}