The WalletKit SDK streamlines the integration process, making it easier for cross wallet developers to include the authentication and transaction signing features necessary for their users to connect and interact with all sorts of apps — now and in the future.
npm install @to-nexus/walletkit
- Initialization
import { Core } from "@to-nexus/core";
import { WalletKit } from "@to-nexus/walletkit";
const core = new Core({
projectId: process.env.PROJECT_ID,
});
const walletkit = await WalletKit.init({
core, // <- pass the shared `core` instance
metadata: {
name: "Demo app",
description: "Demo Client as Wallet/Peer",
url: "www.github.com",
icons: [],
},
});
- Sign Session Approval
walletkit.on("session_proposal", async (proposal) => {
const session = await walletkit.approveSession({
id: proposal.id,
namespaces,
});
});
await walletkit.pair({ uri });
- Sign Session Rejection
walletkit.on("session_proposal", async (proposal) => {
const session = await walletkit.rejectSession({
id: proposal.id,
reason: getSdkError("USER_REJECTED_METHODS"),
});
});
- Sign Session Disconnect
await walletkit.disconnectSession({
topic,
reason: getSdkError("USER_DISCONNECTED"),
});
- Responding to Sign Session Requests
walletkit.on("session_request", async (event) => {
const { id, method, params } = event.request;
await walletkit.respondSessionRequest({ id, result: response });
});
- Updating a Sign Session
await walletkit.updateSession({ topic, namespaces: newNs });
- Updating a Sign Session
await walletkit.extendSession({ topic });
- Emit Sign Session Events
await walletkit.emitSessionEvent({
topic,
event: {
name: "accountsChanged",
data: ["0xab16a96D359eC26a11e2C2b3d8f8B8942d5Bfcdb"],
},
chainId: "eip155:1",
});
- Handle Sign Events
walletkit.on("session_proposal", handler);
walletkit.on("session_request", handler);
walletkit.on("session_delete", handler);