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