Liquid Staking

Stake SUI and receive afSUI to earn a reliable yield, and hold the most decentralized staking derivative on Sui.

afSUI SDK

const staking = new Aftermath("TESTNET").Staking();

Transactions

Staking Positions

const stakingPositions = await staking.getStakingPositions({
    walletAddress: "0x..",
});

Stake

const tx = await staking.getStakeTransaction({
    walletAddress: "0x..",
    suiStakeAmount: 1_000_000_000n, // 1 Sui
    validatorAddress: "0x..",
});

Unstake

const tx = await staking.getUnstakeTransaction({
    walletAddress: "0x..",
    afSuiUnstakeAmount: 1_000_000_000n, // 1 AfSui
    isAtomic: true,
});

Inspections

Staked SUI TVL

const suiTvl = await staking.getSuiTvl();

console.log(suiTvl);
// 9_540_200_000n

afSUI Exchange Rate

// (1 SUI = x afSUI)
const afSuiExchangeRate = await staking.getAfSuiExchangeRate();
console.log(afSuiExchangeRate);
// 1.000149000231

afSUI API

const testnetStakingAddresses = {
    staking: {
        packages: {
            events:
"0x58e6bdd081ae6035141871a1c7cdf82895e944a8b7673f78d22e370a07cbf99b",
            lsd:
"0x58e6bdd081ae6035141871a1c7cdf82895e944a8b7673f78d22e370a07cbf99b",
            afsui:
"0x5783fa2298e7301a1c7f99ce45d4a207478fbf3003eca9482ae823d6f6c7cd60",
        },
        objects: {
            stakedSuiVault:
"0x690f36f9c5249b0c4c9b3efdf8a2864c750a8021037360e3b7bedc9ceafb277f",
            safe:
"0x091686a693e86929f91ef539d867fae334a33d124bc2c204dcb3b53dd9016501",
            treasury:
"0xf3d41534e43ecf36da8657b48350a09a3e50eeb2ce61f8ceb80e6d2f85828bc0",
            referralVault: 
"0x8d357115058f22976cd01c5415116d9aca806d1ded37eecd75d87978f404e927",
            validatorConfigsTable:
"0xc9b9c0f1115793a24e0551609e51daa5ffe2b11429d12b46fdf8a3b0bfc0e908",
         },
     },
 },
 
 const afApi = new AftermathApi(
     new SuiClient({
         transport: new SuiHTTPTransport({
             url: "https://testnet.mainnet.sui.io",
         }),
     }),
     testnetStakingAddresses,
     new IndexerCaller("TESTNET"),
 );
 
 const stakingApi = afApi.Staking();

Transaction Command Examples

const stakingApi = afApi.Staking();

const suiCoin = await afApi.Coin().fetchCoinWithAmountTx({
    walletAddress: "0x...",
    coinType: "0x02::sui::SUI",
    coinAmount: BigInt(1_423_837_387), // ~1.4 SUI
});

const afSuiCoin = stakingApi.stakeTx({
    tx,
    suiCoin,
    validatorAddress: "0x...",
});

stakingApi.atomicUnstakeTx({
    tx,
    afSuiCoin,
    withTransfer: true
});

Last updated