@evergonlabs/tmi-protocol-staking-sdk
v0.2.1
Published
Core-level SDK for staking platform of TMI Protocol. It wraps the low-level sdk of contracts and provides ready-to-be-used beautiful typescript interfaces with the accent on type-safety and developer experience.
Readme
Overview
Core-level SDK for staking platform of TMI Protocol. It wraps the low-level sdk of contracts and provides ready-to-be-used beautiful typescript interfaces with the accent on type-safety and developer experience.
Note: This package is currently in the "alpha stage". Breaking changes are introduced without following semantic versioning.
Installation
You can install this package using any package manager: pnpm, npm or yarn but we would recommend to use pnpm
pnpm add @evergonlabs/tmi-protocol-staking-sdkUsage
This package has 1 class support for viem so let's see how it can be used in such combination:
import { createClient, http } from "viem";
import { sepolia } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
import {
createMiddlewares,
viemClientAsMiddleware,
parseDeployDiamondEvent,
createPlatform,
getTemplate,
TemplateEnum,
FacetSlot,
FacetOptionEnum,
} from "@evergonlabs/tmi-protocol-staking-sdk";
// 1. Define viem client
// @see https://viem.sh/docs/clients/intro to read more about clients
const viemClient = createClient({
account: privateKeyToAccount("0xYourPrivateKey"),
chain: sepolia,
transport: http(),
});
// 2. Define SDK-compatible sender
const sender = createMiddlewares(viemClientAsMiddleware(viemClient));
async function deployPlatform() {
// 3. Select your staking template
const template = getTemplate(TemplateEnum.RWA);
// 4. Send create platform transaction
const platform = await sender.run(
createPlatform(template, {
chainId: `${sepolia.id}`,
admin: viemClient.account.address,
data: {
[FacetSlot.Erc721]: {
type: FacetOptionEnum.Erc721Default,
erc721: {
symbol: "TT",
name: "Test",
baseUri: "ipfs://",
},
isSoulbound: true,
},
},
}),
);
// 5. Parse and return transaction logs
return parseDeployDiamondEvent(platform.logs);
}
deployPlatform()
.then((details) => {
// 6. Voila! Here's your result:
console.log("Platform is deployed with details:", details);
process.exit(0);
})
.catch((err) => {
// Don't forget to catch error in case of any
console.error(err);
process.exit(1);
});