///
///
import { BufferOrParsedAccount, IMap, SolanaConnection } from '../../types';
import { LazySolanaKey, SolanaKey } from '../../utils';
import { BaseLoggerService } from '../base-logger.service';
import { SolanaApiService } from './solana-api.service';
import { AccountInfo, ParsedAccountData, Signer, TokenAccountBalancePair, TokenAmount, TransactionInstruction } from '@solana/web3.js';
import { IMintInfo, ITokenAccountInfo, ITokenAccountMini } from '../../interfaces';
import { SolanaUpdateService } from './solana-update.service';
import { Observable } from 'rxjs';
import { BN } from '@coral-xyz/anchor';
export declare class SplTokenService {
protected readonly logger: BaseLoggerService;
protected readonly solanaApi: SolanaApiService;
protected readonly solanaUpdate: SolanaUpdateService;
readonly logPrefix = "[SplToken]";
readonly cachedMints: IMap;
readonly tokenProgramId: LazySolanaKey;
readonly associatedTokenProgramId: LazySolanaKey;
constructor(logger: BaseLoggerService, solanaApi: SolanaApiService, solanaUpdate: SolanaUpdateService);
getTokenBalance$(accountId: SolanaKey, getInitial?: boolean, skipEmpty?: boolean): Observable;
getTokenBalanceRawStream(accountId: SolanaKey, getInitial?: boolean, skipEmpty?: boolean): Observable;
getTokenBalanceStream(accountId: SolanaKey, mintId: SolanaKey, getInitial?: boolean): Observable;
getTokenMintStream(mintId: SolanaKey): Observable;
getTokenSupplyStream(mintId: SolanaKey): Observable;
getMint(mint: SolanaKey, force?: boolean, cacheOnly?: boolean): Promise;
getMultipleMintAccounts(keys: SolanaKey[], force?: boolean, connection?: SolanaConnection): Promise>;
getMultipleTokenAccounts(keys: SolanaKey[], connection?: SolanaConnection): Promise;
getOwnerTokenMap(ownerKey: SolanaKey, connection?: SolanaConnection): Promise>;
getOwnerTokens(ownerKey: SolanaKey, connection?: SolanaConnection): Promise>>;
getTokenBalances(ownerKey: SolanaKey, connection?: SolanaConnection): Promise>;
getUserTokensByMints(ownerKey: SolanaKey, mintKeys: SolanaKey[], connection?: SolanaConnection): Promise | null>;
fetchTokenBalance(tokenKey: SolanaKey, connection?: SolanaConnection): Promise;
fetchTokenSupply(mintKey: SolanaKey, connection?: SolanaConnection): Promise;
toMintInfo(info: AccountInfo, mintKey?: SolanaKey): IMintInfo | null;
toMintInfoFromBuffer(buf: Buffer, owner: SolanaKey, mintKey?: SolanaKey): IMintInfo | null;
toAccountInfo(info: AccountInfo, tokenKey?: SolanaKey): ITokenAccountInfo | null;
toAccountInfoFromBuffer(buf: Buffer, id?: SolanaKey, decimals?: number): ITokenAccountInfo | null;
toAccountInfoMini(buf: Buffer, id?: SolanaKey): ITokenAccountMini | null;
createTransferIx(sender: SolanaKey, mint: SolanaKey, receiver: SolanaKey, decimals: number, amount: number | bigint): TransactionInstruction | null;
createBurnIx(account: SolanaKey, mint: SolanaKey, owner: SolanaKey, amount: number | bigint): Promise;
createInitMintIxs(mint: SolanaKey, decimals: number, mintAuthority: SolanaKey, freezeAuthority?: SolanaKey, signer?: Signer): Promise;
createMintToIxs(mint: SolanaKey, destination: SolanaKey, mintAuthority: SolanaKey, amount: number | bigint): TransactionInstruction[];
createApproveIx(account: SolanaKey, delegate: SolanaKey, owner: SolanaKey, amount: number | bigint): TransactionInstruction;
createRevokeIx(account: SolanaKey, owner: SolanaKey): TransactionInstruction;
createCloseIx(account: SolanaKey, authority: SolanaKey, destination?: SolanaKey): TransactionInstruction;
createATAIx(owner: SolanaKey, mint: SolanaKey, payer?: SolanaKey): TransactionInstruction | null;
ensureAtaIxs(owner: SolanaKey, mints: SolanaKey[], payer?: SolanaKey, connection?: SolanaConnection): Promise;
getTokenLargestAccounts(mintKey: SolanaKey, connection?: SolanaConnection): Promise;
getATA(owner: SolanaKey, mint: SolanaKey): SolanaKey | null;
getAssociatedTokenAddress(owner: SolanaKey, mint: SolanaKey): [SolanaKey, number] | null;
getUserTokenAddressesByMints(ownerKey: SolanaKey, mintKeys: SolanaKey[]): IMap | null;
}
//# sourceMappingURL=spl-token.service.d.ts.map