UNPKG

@velas/account-agent

Version:

sdk

120 lines (105 loc) 2.75 kB
import BN from 'bn.js'; import { Enum, Assignable, SCHEMA } from './solana-borsh'; export class Vaccount extends Assignable {} export class State extends Assignable {} export class Initialized extends Assignable {} export class Frozen extends Assignable {} export class TokenAccount extends Assignable { static tokenAccount(pubkey, dailyLimit) { return new TokenAccount({ pubkey, dailyLimit }); } } export class VPublicKey extends Assignable { toPublicKey() { return new PublicKey(this.bytes); }; static fromBuffer(publicKey) { return new VPublicKey({ bytes: Uint8Array.from(publicKey.toBuffer()) }); }; }; export class OperationalStruct extends Assignable { static len() { return 134; } } export class ExternalProgram extends Assignable { static len() { return 33; } } export class ExternalToken extends Assignable { static len() { return 57; } static default() { return new ExternalToken({ account: TokenAccount.tokenAccount(VPublicKey.fromPublicKey(SystemProgram.programId), new BN(0)), lastTransfer: new BN(0), remainderLimit: new BN(0), referenceCount: new BN(0), }); } } SCHEMA.set(Vaccount, { kind: 'struct', field: 'struct', fields: [ ['version', 'u8'], ['owners', [32 * 3, VPublicKey]], ['genesis_seed_key', VPublicKey], ['operational_storage_nonce', 'u16'], ['token_storage_nonce', 'u16'], ['programs_storage_nonce', 'u16'], ], }); SCHEMA.set(VPublicKey, { kind: 'struct', fields: [['bytes', [32]]], }); SCHEMA.set(ExternalProgram, { kind: 'struct', field: 'struct', fields: [ ['programId', VPublicKey], ['referenceCount', 'u8'], ], }); SCHEMA.set(ExternalToken, { kind: 'struct', field: 'struct', fields: [ ['account', TokenAccount], ['lastTransfer', 'u64'], ['remainderLimit', 'u64'], ['referenceCount', 'u8'], ], }); SCHEMA.set(OperationalStruct, { kind: 'struct', field: 'struct', fields: [ ['pubkey', VPublicKey], ['state', State], ['agent_type', [32]], ['scopes', [4]], ['tokens_indices', [32]], ['external_programs_indices', [32]], ['is_master_key', 'u8'], ], }); SCHEMA.set(TokenAccount, { kind: 'struct', fields: [ ['pubkey', VPublicKey], ['dailyLimit', 'u64'], ], }); SCHEMA.set(Initialized, { kind: 'struct', fields: [] }); SCHEMA.set(Frozen, { kind: 'struct', fields: [] }); SCHEMA.set(State, { kind: 'enum', values: [ ['initialize', Initialized], ['frozen', Frozen], ], });