{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExampleVestingWallet",
  "sourceName": "contracts/ExampleVestingWallet.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiaryAddress",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "startTimestamp",
          "type": "uint64"
        },
        {
          "internalType": "uint64",
          "name": "durationSeconds",
          "type": "uint64"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OwnableInvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "OwnableUnauthorizedAccount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "ERC20Released",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EtherReleased",
      "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"
    },
    {
      "inputs": [],
      "name": "duration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "end",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "releasable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "releasable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "released",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "start",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "vestedAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "timestamp",
          "type": "uint64"
        }
      ],
      "name": "vestedAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c03461010c57601f61095a38819003918201601f19168301916001600160401b038311848410176101105780849260609460405283398101031261010c5780516001600160a01b038116919082900361010c5761006b604061006460208401610124565b9201610124565b9082156100f9575f80546001600160a01b031981168517825560405194916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a360805260a052610821908161013982396080518181816101c0015281816106ec0152610720015260a051818181610535015281816106c201526107860152f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160401b038216820361010c5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630a17b06b146105595780630fb5a6b414610516578063191655871461042c578063715018a6146103d5578063810ec23b1461039c57806386d1a69f146102835780638da5cb5b1461025c578063961325211461023f5780639852595c14610207578063a3f8eace146101e4578063be9a6555146101a1578063efbe1c1c14610187578063f2fde38b146101025763fbccedae0361000e57346100fe575f3660031901126100fe5760206100f66100ed476100e86001600160401b03421691600154906105a6565b610711565b60015490610672565b604051908152f35b5f80fd5b346100fe5760203660031901126100fe5761011b610590565b6101236107c5565b6001600160a01b03168015610174575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346100fe575f3660031901126100fe5760206100f66106b5565b346100fe575f3660031901126100fe5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100fe5760203660031901126100fe5760206100f6610202610590565b61067f565b346100fe5760203660031901126100fe576001600160a01b03610228610590565b165f526002602052602060405f2054604051908152f35b346100fe575f3660031901126100fe576020600154604051908152f35b346100fe575f3660031901126100fe575f546040516001600160a01b039091168152602090f35b346100fe575f3660031901126100fe576102ae476100e86001600160401b03421691600154906105a6565b6102c56102be6001548093610672565b80926105a6565b6001557fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b6020604051838152a15f546001600160a01b0316478211610385575f80809381935af13d1561037d573d906001600160401b038211610369576040519161033a601f8201601f1916602001846105c7565b82523d5f602084013e5b1561034b57005b80511561035a57602081519101fd5b63d6bda27560e01b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b606090610344565b504763cf47918160e01b5f5260045260245260445ffd5b346100fe5760403660031901126100fe576103b5610590565b602435906001600160401b03821682036100fe576020916100f6916105e8565b346100fe575f3660031901126100fe576103ed6107c5565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100fe5760203660031901126100fe57610445610590565b60205f6104518361067f565b9260018060a01b03169283825260028352604082206104718282546105a6565b9055837fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b84604051848152a260018060a01b0382541690604051908482019263a9059cbb60e01b845260248301526044820152604481526104d36064826105c7565b519082855af11561050b575f513d6105025750803b155b6104f057005b635274afe760e01b5f5260045260245ffd5b600114156104ea565b6040513d5f823e3d90fd5b346100fe575f3660031901126100fe5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100fe5760203660031901126100fe576004356001600160401b03811681036100fe576100f66020916100e847600154906105a6565b600435906001600160a01b03821682036100fe57565b919082018092116105b357565b634e487b7160e01b5f52601160045260245ffd5b90601f801991011681019081106001600160401b0382111761036957604052565b6040516370a0823160e01b81523060048201526001600160a01b03919091169190602081602481865afa90811561050b575f9161063e575b506100e89061063b935f52600260205260405f2054906105a6565b90565b90506020813d60201161066a575b81610659602093836105c7565b810103126100fe575161063b610620565b3d915061064c565b919082039182116105b357565b61063b906106966001600160401b034216826105e8565b6001600160a01b039091165f9081526002602052604090205490610672565b61063b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166105a6565b906001600160401b03908116907f0000000000000000000000000000000000000000000000000000000000000000168082101561074f575050505f90565b6107576106b5565b821061076257505090565b61076b91610672565b908181029181830414901517156105b3576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000169081156107b1570490565b634e487b7160e01b5f52601260045260245ffd5b5f546001600160a01b031633036107d857565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212205ee8340248e8eb217c94b39636fb209cc3790d07e8deba299b9f3469c47b323f64736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c80630a17b06b146105595780630fb5a6b414610516578063191655871461042c578063715018a6146103d5578063810ec23b1461039c57806386d1a69f146102835780638da5cb5b1461025c578063961325211461023f5780639852595c14610207578063a3f8eace146101e4578063be9a6555146101a1578063efbe1c1c14610187578063f2fde38b146101025763fbccedae0361000e57346100fe575f3660031901126100fe5760206100f66100ed476100e86001600160401b03421691600154906105a6565b610711565b60015490610672565b604051908152f35b5f80fd5b346100fe5760203660031901126100fe5761011b610590565b6101236107c5565b6001600160a01b03168015610174575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b346100fe575f3660031901126100fe5760206100f66106b5565b346100fe575f3660031901126100fe5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100fe5760203660031901126100fe5760206100f6610202610590565b61067f565b346100fe5760203660031901126100fe576001600160a01b03610228610590565b165f526002602052602060405f2054604051908152f35b346100fe575f3660031901126100fe576020600154604051908152f35b346100fe575f3660031901126100fe575f546040516001600160a01b039091168152602090f35b346100fe575f3660031901126100fe576102ae476100e86001600160401b03421691600154906105a6565b6102c56102be6001548093610672565b80926105a6565b6001557fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b6020604051838152a15f546001600160a01b0316478211610385575f80809381935af13d1561037d573d906001600160401b038211610369576040519161033a601f8201601f1916602001846105c7565b82523d5f602084013e5b1561034b57005b80511561035a57602081519101fd5b63d6bda27560e01b5f5260045ffd5b634e487b7160e01b5f52604160045260245ffd5b606090610344565b504763cf47918160e01b5f5260045260245260445ffd5b346100fe5760403660031901126100fe576103b5610590565b602435906001600160401b03821682036100fe576020916100f6916105e8565b346100fe575f3660031901126100fe576103ed6107c5565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346100fe5760203660031901126100fe57610445610590565b60205f6104518361067f565b9260018060a01b03169283825260028352604082206104718282546105a6565b9055837fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b84604051848152a260018060a01b0382541690604051908482019263a9059cbb60e01b845260248301526044820152604481526104d36064826105c7565b519082855af11561050b575f513d6105025750803b155b6104f057005b635274afe760e01b5f5260045260245ffd5b600114156104ea565b6040513d5f823e3d90fd5b346100fe575f3660031901126100fe5760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346100fe5760203660031901126100fe576004356001600160401b03811681036100fe576100f66020916100e847600154906105a6565b600435906001600160a01b03821682036100fe57565b919082018092116105b357565b634e487b7160e01b5f52601160045260245ffd5b90601f801991011681019081106001600160401b0382111761036957604052565b6040516370a0823160e01b81523060048201526001600160a01b03919091169190602081602481865afa90811561050b575f9161063e575b506100e89061063b935f52600260205260405f2054906105a6565b90565b90506020813d60201161066a575b81610659602093836105c7565b810103126100fe575161063b610620565b3d915061064c565b919082039182116105b357565b61063b906106966001600160401b034216826105e8565b6001600160a01b039091165f9081526002602052604090205490610672565b61063b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166001600160401b037f0000000000000000000000000000000000000000000000000000000000000000166105a6565b906001600160401b03908116907f0000000000000000000000000000000000000000000000000000000000000000168082101561074f575050505f90565b6107576106b5565b821061076257505090565b61076b91610672565b908181029181830414901517156105b3576001600160401b037f0000000000000000000000000000000000000000000000000000000000000000169081156107b1570490565b634e487b7160e01b5f52601260045260245ffd5b5f546001600160a01b031633036107d857565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212205ee8340248e8eb217c94b39636fb209cc3790d07e8deba299b9f3469c47b323f64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
