UNPKG

@symmetry-hq/agents-sdk

Version:

Symmetry Agents SDK

64 lines (55 loc) 1.66 kB
import { PublicKey } from "@solana/web3.js"; import { BN, Program } from "@coral-xyz/anchor"; import { AgentsProgram } from "../idl/types"; import { stringify } from "uuid"; export const AGENTS_STATE_SIZE = 1216; export interface AgentState { ownAddress: PublicKey, uuid: number[], creator: PublicKey, hasToken: number, metadata: PublicKey, mint: PublicKey, agentPda: PublicKey, balance: BN, usdcBalance: BN, wsolBalance: BN, authority: PublicKey, extraBytes: PublicKey[], } export interface ParsedAgentState { agent: string, state: string, uuid: string, creator: string, hasToken: number, metadata: string, mint: string, balance: number, usdcBalance: number, wsolBalance: number, authority: string, } export async function fetchAgentState( program: Program<AgentsProgram>, agent: PublicKey ): Promise<AgentState> { return await program.account.agent.fetch(agent); } export function parseAgentState( agentState: AgentState ): ParsedAgentState { return { agent: agentState.agentPda.toBase58(), state: agentState.ownAddress.toBase58(), uuid: stringify(Uint8Array.from(agentState.uuid)), creator: agentState.creator.toBase58(), hasToken: agentState.hasToken, metadata: agentState.metadata.toBase58(), mint: agentState.mint.toBase58(), balance: parseInt(agentState.balance.toString()), usdcBalance: parseInt(agentState.usdcBalance.toString()), wsolBalance: parseInt(agentState.wsolBalance.toString()), authority: agentState.authority.toBase58(), }; }