123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /**
- * This code was GENERATED using the solita package.
- * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality.
- *
- * See: https://github.com/metaplex-foundation/solita
- */
- import * as beet from '@metaplex-foundation/beet';
- import * as beetSolana from '@metaplex-foundation/beet-solana';
- import * as web3 from '@solana/web3.js';
- /**
- * Arguments used to create {@link Car}
- * @category Accounts
- * @category generated
- */
- export type CarArgs = {
- year: number;
- make: string;
- model: string;
- };
- /**
- * Holds the data for the {@link Car} Account and provides de/serialization
- * functionality for that data
- *
- * @category Accounts
- * @category generated
- */
- export class Car implements CarArgs {
- private constructor(
- readonly year: number,
- readonly make: string,
- readonly model: string,
- ) {}
- /**
- * Creates a {@link Car} instance from the provided args.
- */
- static fromArgs(args: CarArgs) {
- return new Car(args.year, args.make, args.model);
- }
- /**
- * Deserializes the {@link Car} from the data of the provided {@link web3.AccountInfo}.
- * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
- */
- static fromAccountInfo(accountInfo: web3.AccountInfo<Buffer>, offset = 0): [Car, number] {
- return Car.deserialize(accountInfo.data, offset);
- }
- /**
- * Retrieves the account info from the provided address and deserializes
- * the {@link Car} from its data.
- *
- * @throws Error if no account info is found at the address or if deserialization fails
- */
- static async fromAccountAddress(
- connection: web3.Connection,
- address: web3.PublicKey,
- commitmentOrConfig?: web3.Commitment | web3.GetAccountInfoConfig,
- ): Promise<Car> {
- const accountInfo = await connection.getAccountInfo(address, commitmentOrConfig);
- if (accountInfo == null) {
- throw new Error(`Unable to find Car account at ${address}`);
- }
- return Car.fromAccountInfo(accountInfo, 0)[0];
- }
- /**
- * Provides a {@link web3.Connection.getProgramAccounts} config builder,
- * to fetch accounts matching filters that can be specified via that builder.
- *
- * @param programId - the program that owns the accounts we are filtering
- */
- static gpaBuilder(programId: web3.PublicKey = new web3.PublicKey('8avNGHVXDwsELJaWMSoUZ44CirQd4zyU9Ez4ZmP4jNjZ')) {
- return beetSolana.GpaBuilder.fromStruct(programId, carBeet);
- }
- /**
- * Deserializes the {@link Car} from the provided data Buffer.
- * @returns a tuple of the account data and the offset up to which the buffer was read to obtain it.
- */
- static deserialize(buf: Buffer, offset = 0): [Car, number] {
- return carBeet.deserialize(buf, offset);
- }
- /**
- * Serializes the {@link Car} into a Buffer.
- * @returns a tuple of the created Buffer and the offset up to which the buffer was written to store it.
- */
- serialize(): [Buffer, number] {
- return carBeet.serialize(this);
- }
- /**
- * Returns the byteSize of a {@link Buffer} holding the serialized data of
- * {@link Car} for the provided args.
- *
- * @param args need to be provided since the byte size for this account
- * depends on them
- */
- static byteSize(args: CarArgs) {
- const instance = Car.fromArgs(args);
- return carBeet.toFixedFromValue(instance).byteSize;
- }
- /**
- * Fetches the minimum balance needed to exempt an account holding
- * {@link Car} data from rent
- *
- * @param args need to be provided since the byte size for this account
- * depends on them
- * @param connection used to retrieve the rent exemption information
- */
- static async getMinimumBalanceForRentExemption(args: CarArgs, connection: web3.Connection, commitment?: web3.Commitment): Promise<number> {
- return connection.getMinimumBalanceForRentExemption(Car.byteSize(args), commitment);
- }
- /**
- * Returns a readable version of {@link Car} properties
- * and can be used to convert to JSON and/or logging
- */
- pretty() {
- return {
- year: this.year,
- make: this.make,
- model: this.model,
- };
- }
- }
- /**
- * @category Accounts
- * @category generated
- */
- export const carBeet = new beet.FixableBeetStruct<Car, CarArgs>(
- [
- ['year', beet.u16],
- ['make', beet.utf8String],
- ['model', beet.utf8String],
- ],
- Car.fromArgs,
- 'Car',
- );
|