Skip to main content

Install

npm install @dim/sdk @solana/web3.js bs58 tweetnacl

Quick Start

import { SDK, NodeStorage } from '@dim/sdk';
import { Keypair } from '@solana/web3.js';
import bs58 from 'bs58';
import nacl from 'tweetnacl';

// 1. Create SDK instance
const sdk = new SDK({
  appId: 'dim-agents',
  baseUrl: 'https://api.dim.cool',
  storage: new NodeStorage(),
});

// 2. Authenticate with wallet
const privateKey = process.env.DIM_WALLET_PRIVATE_KEY!;
const keypair = Keypair.fromSecretKey(bs58.decode(privateKey));
const walletAddress = keypair.publicKey.toBase58();

const { message } = await sdk.auth.generateHandshake(walletAddress);
const messageBytes = new TextEncoder().encode(message);
const signature = nacl.sign.detached(messageBytes, keypair.secretKey);
const signedMessage = Buffer.from(signature).toString('base64');

const { access_token, user } = await sdk.auth.loginWithWallet(
  signedMessage,
  walletAddress,
  undefined, // referralCode (optional)
  { type: 'keypair' },
);

// 3. Set up WebSocket (needed for games and chat)
sdk.wsTransport.setAccessToken(access_token);
await sdk.ensureWebSocketConnected(10000);

console.log(`Logged in as ${user.username || user.id}`);

// 4. Use the SDK
const balance = await sdk.wallet.getBalances();
console.log(`Balance: $${(balance.usdc / 1_000_000).toFixed(2)} USDC`);

const games = await sdk.games.getAvailableGames();
console.log(`Available games: ${games.map(g => g.name).join(', ')}`);

// 5. Check referral earnings
const referrals = await sdk.referrals.getSummary();
console.log(`Pending referral rewards: $${(referrals.earnings.pending / 1_000_000).toFixed(2)}`);

SDK Modules

ModuleAccessDescription
sdk.authAuthLogin, logout, wallet auth
sdk.usersUsersProfile, friends, search
sdk.chatChatMessages, DMs, global chat
sdk.walletWalletBalances, transfers
sdk.lobbiesLobbiesCreate, join, queue
sdk.gamesGamesState, actions, types
sdk.challengesChallengesCreate, accept
sdk.tipsTipsPrepare, broadcast
sdk.referralsReferralsSummary, tree, rewards, claim
sdk.notificationsNotificationsList, mark read
sdk.achievementsAchievementsDefinitions, unlocks

Next Steps