event-scraper-v3/utils.ts

36 lines
1.0 KiB
TypeScript

import { PublicKey } from '@solana/web3.js';
import { MintInfo, MintLayout, AccountInfo, AccountLayout, u64 } from '@solana/spl-token';
import * as BufferLayout from 'buffer-layout';
import * as bs58 from 'bs58';
export const ACCOUNT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(32, 'mint'),
BufferLayout.blob(32, 'owner'),
BufferLayout.nu64('amount'),
BufferLayout.blob(93),
]);
export const MINT_LAYOUT = BufferLayout.struct([
BufferLayout.blob(44),
BufferLayout.u8('decimals'),
BufferLayout.blob(37),
]);
export function parseTokenAccountData(data: any) {
// @ts-ignore
let { mint, owner, amount } = ACCOUNT_LAYOUT.decode(data);
return {
mint: new PublicKey(mint),
owner: new PublicKey(owner),
amount,
};
}
export function parseTokenAccount(data: Buffer): AccountInfo {
const accountInfo = AccountLayout.decode(data);
accountInfo.mint = new PublicKey(accountInfo.mint);
accountInfo.owner = new PublicKey(accountInfo.owner);
accountInfo.amount = u64.fromBuffer(accountInfo.amount);
return accountInfo;
}