@symmetry-hq/agents-sdk
Version:
Symmetry Agents SDK
64 lines (55 loc) • 1.66 kB
text/typescript
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(),
};
}