npm i @stsui-sdk
- Write a simple contract to create a coin that will also represent your liquid staking token, stSUI for example.
- Upon publishing the contract, you will receive your coin's treasury cap and get your coin's sui move type ({packageid}::{module name}::{coin struct name}).
- To turn your coin into a liquid staking token using our framework:
- You need to initialize LstParams first.
const lstParams: LstParams = { lstCointype: "0xabcd2358cebfdf4ee29534f906cbb36a78dfaaa256e7d9ddb7e789e2dd8abcd::demo::DEMO", // your LST's move type treasuryCap: "0xabcdc88f4ac2eeeb5ac13917c4d3ce147228b62295d51dff4950abd3bb4cabcd", // object id of your treasury cap };
- Instantiate Admin class
const admin = new Admin(lstParams);
- Call the createLst method in the Admin class.
refer to this for information on the arguments to createLst method.
const txb = await admin.createLst(0, 1, 600, 10000, address); await suiClient .signAndExecuteTransaction({ signer: keypair, transaction: txb, requestType: "WaitForLocalExecution", options: { showEffects: true, showBalanceChanges: true, showObjectChanges: true, }, }) .then((res) => { console.log(JSON.stringify(res, null, 2)); }) .catch((error) => { console.error(error); });
- LiquidStakingInfo shared object will be created and will be further used to call every other function corresponding to your LST.
- Admin cap and collection fee cap will be transferred to the address provided in the createLst method.
- These caps will be used to call other admin functions like setValidators, collectFee and updateFee.
- You need to initialize LstParams first.
Refer to Admin class for admin specific operations specific to your custom liquid staking token.
-
Create your own LST - createLst
-
Set validators for your LST - setValidators
-
Collect the fee collected by your LST - collectFee
-
Update the fee settings for your LST - updateFee
Refer to LST class for standard LST operations
Refer to utils class for common utility functions