@alphafi/stsui-sdk - v2.0.3

stSUI SDK

npm i @stsui-sdk

@mysten/sui is now a v2 peer dependency (^2.17.0), and the package ships ESM only — the CommonJS build (dist/cjs) and the require export have been dropped. CommonJS consumers doing require('@alphafi/stsui-sdk') will break; import it from an ESM context (or via a bundler) instead, and ensure your app provides @mysten/sui v2. The 2.0.0 major bump signals these breaking changes.

Internal Sui reads have moved from JSON-RPC to GraphQL. The public class/function APIs (LST, Admin, Utils, Events, mint, redeem, refresh, etc.) are unchanged. The only breaking type-shape change affects direct consumers of LiquidStakingInfo / Meta, which are now flat (no content.fields.* wrapping). The legacy JSON-RPC helpers (getMultiObjects, getSuiClient, etc.) keep their original shapes and are marked @deprecated; a new GraphQL-native multiGetObjectsGraphql(ids) helper is available for new code. See STSUI_GRAPHQL_MIGRATION.md for the field-by-field mapping. Override the GraphQL endpoint via the new setGraphQLUrl(url) helper. By default, GraphQL follows the active SDK config network (production -> mainnet GraphQL, testing -> testnet GraphQL).

  • 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.

Refer to Admin class for admin specific operations specific to your custom liquid staking token.

Refer to LST class for standard LST operations

Refer to utils class for common utility functions