CoreTeamDAO manage employees payments accordingly rules.
Company sets an employee salary in USD, and sets payouts rules: the percentage of salary that pays monthly, quarterly, yearly.
When an employee claim payment, the salary converts from USD to CLO by current CLO/BUSDT price on the Soy.Finance, then amount in CLO splits amount monthly, quarterly, and yearly parts.
For example, if salary is 1000 USD, and it splits by 20/40/40 for monthly/quarterly/yearly payments accordingly, and CLO price is 0.001 USD, then on claim an employee receives 200K CLO instantly, and 400K will be locked for quarterly payment, and 400K will be locked for yearly payment.
Transferring to CLO to contract address add it to payouts budget.
Allow to employee to claim unlocked CLO, and fix CLO/USD price on moment of claim.
Using function getUnlockedAmount an employee can see, how much CLO is unlocked and how much is reserved for quarterly and yearly payment (he should enter his address in the parameter field). This function shows estimated amount on moment of call. It uses current CLO price from SOY finance. After claim
the CLO price will be fixed.
The function employees returns info about specific employee.
Using function getAllocatedAmount is possible to see if contract has enough CLO for salaries. It returns positive or negative balance. The negative amount shows how many CLO is needed to add to contract.
allocatedToClaim
: contract balance - unlocked amount of all employees. If it's negative employees can't receive their CLO.totalAllocated
: contract balance - total amount of CLO reserved for salaries. If it's negative, then not enough CLO to cover all salaries (including pending parts).
The owner of CoreTeamDAO is a multisig contract and it can:
- Rescue all CLO or tokens from contract.
- Change employee's salary, start time, percentage for monthly/quarterly/yearly payments.
- Stop payment for specific employee.
- Pause entire contract (stop payments for all).
- Upgrade contract.
Salary Vasting contract allows to allocation specific amount of CLO for an employee and pays his salary and bonuses from this amount every specific period of time. Salary and bonuses are set in BUSTD, so payouts in CLO are calculated based on Soy.Finance CLO-BUSDT pool (fee and slippage isn't counted).
To allocate CLO for an employee it should be transferred to his Salary Vasting contract.
If the contract has less CLO than should be paid to the employee, then all available CLO will be transferred to the employee and the rest will be saved to the pending
variable.
On deployment should be set:
_employee
- address of employee wallet_salary
- salary in BUSDT without decimals (i.e. 1000 means 1000 BUSDT). Salary can be claimed eachsalaryPeriod
(30 days by default)._bonus
- bonus in BUSDT without decimals. Bonus can be claimed eachbonusPeriod
(91 days by default)._startTimestamp
- UNIX timestamp from which start each period._newOwner
- address of the owner, who can change parameters and withdraw tokens from the contract.
-
change employee address, salary and bonus amounts
SalaryVesting/SalaryVesting.sol
Lines 114 to 115 in bc363d0
-
change start timestamp, salary and bonus periods
SalaryVesting/SalaryVesting.sol
Lines 123 to 124 in bc363d0
-
pause/unpause employee payouts
SalaryVesting/SalaryVesting.sol
Line 134 in bc363d0
-
rescue any tokens / CLO from the contract (to rescue CLO, the
_token
should be0x0000000000000000000000000000000000000000
)SalaryVesting/SalaryVesting.sol
Line 187 in bc363d0
-
Claim CLO for completed periods.
SalaryVesting/SalaryVesting.sol
Lines 139 to 140 in bc363d0
-
View the unlocked amount of CLO (that he can claim). But if the contract has less CLO than the unlocked amount, he will claim all available CLO from the contract.
SalaryVesting/SalaryVesting.sol
Lines 159 to 160 in bc363d0
-
View the allocated amount of CLO (which is
contract balance - unlocked amount
).SalaryVesting/SalaryVesting.sol
Lines 179 to 180 in bc363d0