/// <reference types="node" />
/// <reference types="node" />
import FSLWeb3 from '.';
import { IFSLWeb3Params, ITransferSolanaToken, ITransferSolanaNativeToken, ICheckNFT } from '../../../type/web3';
import { Keypair, Connection, PublicKey, Transaction, VersionedTransactionResponse, VersionedTransaction, TransactionInstruction } from '@solana/web3.js';
import { Account } from '@solana/spl-token';
import { web3 } from '@project-serum/anchor';
import { Chains, TOKEN_NAME } from '../../constants/index';
export declare class FSLWeb3Sol extends FSLWeb3 {
    solanaKeypaire?: Keypair;
    constructor({ mnemonic, gasPriorityPolygon, gasPriorityExtraPolygon, gasPriorityExtraEvm, }: IFSLWeb3Params);
    static assignPublicKey(obj: Record<string, any> | string): any;
    static assignTransaction(obj: Record<string, any> | string): any;
    toBuffer(arr: Buffer | Uint8Array | Array<number>): Buffer;
    generateWallet(mnemonic: string): string;
    getSolanaAddress(): string;
    exportSolanaPrivatekey(): string;
    checkSolanaTransactionHashStatus(txHash: string, rpc: string): Promise<web3.RpcResponseAndContext<web3.SignatureStatus | null>>;
    static validateSolAddress(address: string): boolean;
    signSolanaMessage(message: string): Uint8Array;
    static verifySolanaMessage(message: string, signature: Uint8Array, publicKey: PublicKey): boolean;
    sendSolanaTransaction(encodedTransaction: string, rpc: string): Promise<string>;
    sendRawTransaction(transactionBase64: string, rpc: string): Promise<string>;
    signSolanaInstructions(instructions: TransactionInstruction[], keypairs: Keypair[], rpc: string, unitLimit?: number, unitPrice?: number): Promise<string>;
    signSolanaTransaction(bufferStrs: string[], versions: Array<'legacy' | 0>): (Transaction | VersionedTransaction)[];
    signSolanaTransactionWithBuffers(bufferStrs: string[], versions: Array<'legacy' | 0>): string[];
    getSolanaSplTokenBalance(walletAddress: string, rpc: string, contractAddress: string): Promise<number>;
    getSolanaNativeTokenBalance(walletAddress: string, rpc: string): Promise<number>;
    transferSolanaNativeToken({ to, amount, rpc, unitLimit, unitPrice, }: ITransferSolanaNativeToken): Promise<string>;
    checkSolanaNFTValid({ rpc, contractAddress }: ICheckNFT): Promise<boolean>;
    transferSolanaSplToken({ to, amount, rpc, contractAddress, unitLimit, unitPrice, }: ITransferSolanaToken): Promise<string>;
    getSolanaTokenTransactions(rpc: string, from: string, limit: number): Promise<VersionedTransactionResponse[]>;
    getOrCreateAssociatedAccount(symbol: TOKEN_NAME, owner: Keypair, rpc: string): Promise<void>;
    batchGetOrCreateAssociatedAccount({ fromToken, toToken, rpc, }: {
        fromToken: TOKEN_NAME;
        toToken: TOKEN_NAME;
        rpc: string;
    }): Promise<void>;
    getSolanaTokenUnit({ fromToken, toToken, rpc, amountIn, slipNum, }: {
        fromToken: TOKEN_NAME;
        toToken: TOKEN_NAME;
        rpc: string;
        amountIn?: string;
        slipNum?: number;
    }): Promise<string>;
    waitForConfirmation(connection: Connection, signature: string, maxRetries?: number): Promise<void>;
    sendSolSwapTransition(connection: Connection, swapPayload: any, swapPayload2?: any): Promise<string>;
    swapSolanaToken({ fromToken, toToken, tokenAmount, rpc, slipNum, }: {
        fromToken: TOKEN_NAME;
        toToken: TOKEN_NAME;
        tokenAmount: number;
        rpc: string;
        slipNum?: number;
    }): Promise<string>;
    static getUNSOwner(domain: string): Promise<string | null>;
    static getUnstoppableDomains(domain: string, ticker: string, chain?: string): Promise<string | undefined>;
    static reverseUnstoppableDomains(address: string): Promise<string | null>;
    getSolAccount(userAddress: string, tokenAddress: string): Promise<Account>;
    depositGUsdToOtherChain(params: {
        amount: string;
        chains: Chains.binance | Chains.polygon;
        toChain: Chains;
        rpc?: string;
    }): Promise<string>;
    depositSolGUsdToOther(amount: string, toChain: Chains.polygon | Chains.binance, retry?: number): Promise<string>;
    getDepositQuote(amount: string, toChain: Chains.polygon | Chains.binance): Promise<bigint | undefined>;
    cliamSolGGusd({ owner, source, contractAddress, tokenAddress, orderId, timeStamp, amount, signature, stateAccount, rpc, }: {
        owner: string;
        source: string;
        contractAddress: string;
        tokenAddress: string;
        orderId: number;
        timeStamp: number;
        amount: number | string;
        signature: string;
        stateAccount: string;
        rpc: string;
    }): Promise<string>;
}
