OpenClaw · Skill
TypeScript
A TypeScript SDK for interacting with the Stable Layer protocol on the Sui blockchain. It supports minting and burning stablecoins, and claiming yield farming rewards.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install k66inthesky/stable-layer-sdkClawHub installer
npx clawhub@latest install k66inthesky/stable-layer-sdkOpenClaw CLI
openclaw skills install k66inthesky/stable-layer-sdkDirect OpenClaw install
openclaw install k66inthesky/stable-layer-sdkWhat this skill does
A TypeScript SDK for interacting with the Stable Layer protocol on the Sui blockchain. It supports minting and burning stablecoins, and claiming yield farming rewards.
Why it matters
Wraps raw Sui transaction construction into typed methods, removing the need to manually compose Move calls for minting, burning, and reward claiming.
Typical use cases
- Minting BtcUSDC by depositing USDC on Sui mainnet
- Burning stablecoins to redeem USDC
- Claiming accumulated yield farming rewards
- Querying total stablecoin supply across coin types
- Integrating Stable Layer transactions into a dApp
Source instructions
Stable Layer SDK
A TypeScript SDK for interacting with the Stable Layer protocol on the Sui blockchain. It supports minting and burning stablecoins, and claiming yield farming rewards.
Installation
npm install stable-layer-sdk @mysten/sui @mysten/bcs
API Reference
StableLayerClient
import { StableLayerClient } from "stable-layer-sdk";
const client = new StableLayerClient({
network: "mainnet" | "testnet",
sender: "0xYOUR_SUI_ADDRESS",
});
Transaction Methods
buildMintTx(options)
Mint stablecoins by depositing USDC. Automatically deposits into vault farm.
| Parameter | Type | Description |
|---|---|---|
tx | Transaction | Sui transaction object |
stableCoinType | string | Target stablecoin type (e.g. 0x...::btc_usdc::BtcUSDC) |
usdcCoin | Coin | Input USDC coin reference |
amount | bigint | Amount to mint |
autoTransfer | boolean? | If false, returns the resulting Coin object |
buildBurnTx(options)
Burn stablecoins to redeem USDC.
| Parameter | Type | Description |
|---|---|---|
tx | Transaction | Sui transaction object |
stableCoinType | string | Stablecoin type to burn |
amount | bigint? | Specific amount to burn |
all | boolean? | If true, burn entire balance |
buildClaimTx(options)
Claim accumulated yield farming rewards.
| Parameter | Type | Description |
|---|---|---|
tx | Transaction | Sui transaction object |
stableCoinType | string | Stablecoin type to claim rewards for |
Query Methods
getTotalSupply()
Returns the total stablecoin supply across all coin types.
getTotalSupplyByCoinType(type: string)
Returns the supply for a specific stablecoin type.
Usage Examples
Mint Stablecoins
import { Transaction, coinWithBalance } from "@mysten/sui/transactions";
import { SuiClient, getFullnodeUrl } from "@mysten/sui/client";
import { Ed25519Keypair } from "@mysten/sui/keypairs/ed25519";
import { StableLayerClient } from "stable-layer-sdk";
const client = new StableLayerClient({
network: "mainnet",
sender: "0xYOUR_ADDRESS",
});
const suiClient = new SuiClient({ url: getFullnodeUrl("mainnet") });
const keypair = Ed25519Keypair.fromSecretKey(YOUR_PRIVATE_KEY);
const tx = new Transaction();
await client.buildMintTx({
tx,
stableCoinType: "0x6d9fc...::btc_usdc::BtcUSDC",
usdcCoin: coinWithBalance({
balance: BigInt(1_000_000),
type: "0xdba34...::usdc::USDC",
})(tx),
amount: BigInt(1_000_000),
});
const result = await suiClient.signAndExecuteTransaction({
transaction: tx,
signer: keypair,
});
Burn Stablecoins
const tx = new Transaction();
await client.buildBurnTx({
tx,
stableCoinType: "0x6d9fc...::btc_usdc::BtcUSDC",
amount: BigInt(500_000),
});
await suiClient.signAndExecuteTransaction({ transaction: tx, signer: keypair });
Claim Rewards
const tx = new Transaction();
await client.buildClaimTx({
tx,
stableCoinType: "0x6d9fc...::btc_usdc::BtcUSDC",
});
await suiClient.signAndExecuteTransaction({ transaction: tx, signer: keypair });
Query Supply
const totalSupply = await client.getTotalSupply();
const btcUsdcSupply = await client.getTotalSupplyByCoinType("0x6d9fc...::btc_usdc::BtcUSDC");