package client

import (
	"errors"
)

// Predefined package errors
var (
	ErrCreateBip39Entropy                  = errors.New("failed to create bip39 entropy")
	ErrCreateBip39Mnemonic                 = errors.New("failed to create bip39 mnemonic")
	ErrCreateBip39SeedFromMnemonic         = errors.New("failed to create bip39 seed from mnemonic")
	ErrCreateAccountFromSeed               = errors.New("failed to create account from seed")
	ErrDecodeBase58ToAccount               = errors.New("failed to decode base58 to account")
	ErrDeriveKeyFromSeed                   = errors.New("failed to derive key from seed")
	ErrInvalidPublicKey                    = errors.New("invalid base58 public key")
	ErrInvalidPublicKeyLength              = errors.New("invalid public key length")
	ErrDeserializeTransaction              = errors.New("failed to deserialize transaction")
	ErrGetTransactionFee                   = errors.New("failed to get transaction fee")
	ErrSendTransaction                     = errors.New("failed to send transaction")
	ErrSerializeMessage                    = errors.New("failed to serialize message")
	ErrAddSignature                        = errors.New("failed to add signature")
	ErrSerializeTransaction                = errors.New("failed to serialize transaction")
	ErrInvalidAirdropAmount                = errors.New("invalid airdrop amount; must be greater than 0 and less or equal 2000000000")
	ErrRequestAirdrop                      = errors.New("failed to request airdrop")
	ErrGetSolBalance                       = errors.New("failed to get SOL balance")
	ErrFindAssociatedTokenAddress          = errors.New("failed to find associated token address")
	ErrGetSplTokenBalance                  = errors.New("failed to get SPL token balance")
	ErrGetLatestBlockhash                  = errors.New("failed to get latest blockhash")
	ErrNewTransaction                      = errors.New("failed to create new transaction")
	ErrGetNonceFromNonceAccount            = errors.New("failed to get nonce from nonce account")
	ErrGetMinimumBalanceForRentExemption   = errors.New("failed to get minimum balance for rent exemption")
	ErrGetTransactionStatus                = errors.New("failed to get transaction status")
	ErrSignTransaction                     = errors.New("failed to sign transaction")
	ErrNewMnemonic                         = errors.New("failed to create new mnemonic")
	ErrDeriveAccountFromMnemonicBip44      = errors.New("failed to derive account from mnemonic bip44")
	ErrDeriveAccountsListFromMnemonicBip44 = errors.New("failed to derive accounts list from mnemonic bip44")
	ErrDeriveAccountFromMnemonicBip39      = errors.New("failed to derive account from mnemonic bip39")
	ErrGetAtaBalance                       = errors.New("failed to get associated token account balance")
	ErrWithoutInsufficientFound            = errors.New("you need to send enough SOL to make the account rent-exempt")
	ErrWaitForTransaction                  = errors.New("failed to wait for transaction status")
	ErrContextDone                         = errors.New("context done")
	ErrGetTokenAccount                     = errors.New("failed to get token account")
	ErrDeriveTokenAccount                  = errors.New("failed to derive associated token account")
	ErrGetMintInfo                         = errors.New("failed to get mint info")
	ErrGetTokenSupply                      = errors.New("failed to get token supply")
	ErrGetTokenMetadata                    = errors.New("failed to get token metadata")
	ErrGetMasterEditionInfo                = errors.New("failed to get master edition info")
	ErrGetEditionInfo                      = errors.New("failed to get token edition info")
	ErrMaxSupplyReached                    = errors.New("max edition supply is already printed")
	ErrTokenIsNotMasterEdition             = errors.New("token is not master edition")
	ErrGetMasterEditionCurrentSupply       = errors.New("failed to get master edition current supply")
	ErrNewDurableTransaction               = errors.New("failed to create new durable transaction")
	ErrNoTransactionsFound                 = errors.New("no transactions found")
	ErrTransactionNotFound                 = errors.New("transaction not found")
	ErrTransactionNotConfirmed             = errors.New("transaction not confirmed yet")
)
