{ "contractName": "Vesting", "abi": [ { "constant": true, "inputs": [], "name": "colonyMultiSig", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "tokenGrants", "outputs": [ { "name": "startTime", "type": "uint256" }, { "name": "amount", "type": "uint128" }, { "name": "vestingDuration", "type": "uint16" }, { "name": "vestingCliff", "type": "uint16" }, { "name": "monthsClaimed", "type": "uint16" }, { "name": "totalClaimed", "type": "uint128" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_token", "type": "address" }, { "name": "_colonyMultiSig", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "recipient", "type": "address" }, { "indexed": false, "name": "startTime", "type": "uint256" }, { "indexed": false, "name": "amount", "type": "uint128" }, { "indexed": false, "name": "vestingDuration", "type": "uint16" }, { "indexed": false, "name": "vestingCliff", "type": "uint16" } ], "name": "GrantAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "recipient", "type": "address" }, { "indexed": false, "name": "amountVested", "type": "uint128" }, { "indexed": false, "name": "amountNotVested", "type": "uint128" } ], "name": "GrantRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "name": "recipient", "type": "address" }, { "indexed": false, "name": "amountClaimed", "type": "uint128" } ], "name": "GrantTokensClaimed", "type": "event" }, { "constant": false, "inputs": [ { "name": "_recipient", "type": "address" }, { "name": "_startTime", "type": "uint256" }, { "name": "_amount", "type": "uint128" }, { "name": "_vestingDuration", "type": "uint16" }, { "name": "_vestingCliff", "type": "uint16" } ], "name": "addTokenGrant", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "name": "_recipient", "type": "address" } ], "name": "removeTokenGrant", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [], "name": "claimVestedTokens", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "name": "_recipient", "type": "address" } ], "name": "calculateGrantClaim", "outputs": [ { "name": "", "type": "uint16" }, { "name": "", "type": "uint128" } ], "payable": false, "stateMutability": "view", "type": "function" } ], "devdoc": { "methods": { "addTokenGrant(address,uint256,uint128,uint16,uint16)": { "params": { "_amount": "Total number of tokens in grant", "_recipient": "Address of the token grant recipient entitled to claim the grant funds", "_startTime": "Grant start time as seconds since unix epoch Allows backdating grants by passing time in the past. If `0` is passed here current blocktime is used. ", "_vestingCliff": "Number of months of the grant's vesting cliff", "_vestingDuration": "Number of months of the grant's duration" } }, "removeTokenGrant(address)": { "params": { "_recipient": "Address of the token grant recipient" } } } }, "userdoc": { "methods": { "addTokenGrant(address,uint256,uint128,uint16,uint16)": { "notice": "Add a new token grant for user `_recipient`. Only one grant per user is allowed The amount of CLNY tokens here need to be preapproved for transfer by this `Vesting` contract before this call Secured to the Colony MultiSig only" }, "calculateGrantClaim(address)": { "notice": "Calculate the vested and unclaimed months and tokens available for `_recepient` to claim Due to rounding errors once grant duration is reached, returns the entire left grant amount Returns (0, 0) if cliff has not been reached" }, "claimVestedTokens()": { "notice": "Allows a grant recipient to claim their vested tokens. Errors if no tokens have vested It is advised recipients check they are entitled to claim via `calculateGrantClaim` before calling this" }, "removeTokenGrant(address)": { "notice": "Terminate token grant transferring all vested tokens to the `_recipient` and returning all non-vested tokens to the Colony MultiSig Secured to the Colony MultiSig only" } } } }