123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- /**
- * 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 web3 from '@solana/web3.js'
- import * as beetSolana from '@metaplex-foundation/beet-solana'
- /**
- * 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'
- )
|