Class: Solace::Composers::SplTokenProgramInitializeMintComposer

Inherits:
Base
  • Object
show all
Defined in:
lib/solace/composers/spl_token_program_initialize_mint_composer.rb

Overview

Composer for initializing a mint via the SPL Token Program.

This composer resolves and orders the required accounts for an ‘InitializeMint` instruction, sets up their access permissions, and delegates construction to the appropriate instruction builder (`Instructions::SplToken::InitializeMintInstruction`).

It is used for initializing a new SPL Token mint.

Required accounts:

  • **Mint Account**: the mint account to initialize (writable, non-signer)

Examples:

Compose and build an initialize_mint instruction

composer = SplTokenProgramInitializeMintComposer.new(
  decimals: 6,
  mint_authority: mint_authority_pubkey,
  freeze_authority: freeze_authority_pubkey,
  mint_account: mint_address,
)

See Also:

Since:

  • 0.1.0

Instance Attribute Summary

Attributes inherited from Base

#account_context, #params

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from Solace::Composers::Base

Instance Method Details

#build_instruction(account_context) ⇒ Solace::Instruction

Build instruction with resolved account indices

Parameters:

Returns:

Since:

  • 0.1.0



83
84
85
86
87
88
89
90
91
92
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 83

def build_instruction()
  Instructions::SplToken::InitializeMintInstruction.build(
    mint_account_index: .index_of(),
    rent_sysvar_index: .index_of(rent_sysvar),
    program_index: .index_of(spl_token_program),
    decimals: decimals,
    mint_authority: mint_authority,
    freeze_authority: freeze_authority
  )
end

#decimalsInteger

Returns the decimals for the mint

Returns:

  • (Integer)

    The decimals for the mint

Since:

  • 0.1.0



65
66
67
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 65

def decimals
  params[:decimals]
end

#freeze_authorityString

Extracts the freeze authority address from the params

Returns:

  • (String)

    The freeze authority address

Since:

  • 0.1.0



58
59
60
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 58

def freeze_authority
  params[:freeze_authority]&.to_s
end

#mint_accountString

Extracts the mint account address from the params

Returns:

  • (String)

    The mint account address

Since:

  • 0.1.0



30
31
32
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 30

def 
  params[:mint_account].to_s
end

#mint_authorityString

Extracts the mint authority address from the params

Returns:

  • (String)

    The mint authority address

Since:

  • 0.1.0



51
52
53
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 51

def mint_authority
  params[:mint_authority].to_s
end

#rent_sysvarString

Returns the rent sysvar address

Returns:

  • (String)

    The rent sysvar address

Since:

  • 0.1.0



37
38
39
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 37

def rent_sysvar
  Constants::SYSVAR_RENT_PROGRAM_ID.to_s
end

#setup_accountsvoid

This method returns an undefined value.

Setup accounts required for transfer instruction Called automatically during initialization

Since:

  • 0.1.0



73
74
75
76
77
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 73

def setup_accounts
  .add_writable_nonsigner()
  .add_readonly_nonsigner(rent_sysvar)
  .add_readonly_nonsigner(spl_token_program)
end

#spl_token_programString

Returns the spl token program id

Returns:

  • (String)

    The spl token program id

Since:

  • 0.1.0



44
45
46
# File 'lib/solace/composers/spl_token_program_initialize_mint_composer.rb', line 44

def spl_token_program
  Constants::TOKEN_PROGRAM_ID.to_s
end