import { AccountMeta, PublicKey, Transaction } from '@solana/web3.js'; import { Address, Domain, LazyAsync } from '@hyperlane-xyz/utils'; import { BaseSealevelAdapter } from '../../app/MultiProtocolApp.js'; import { IgpPaymentKeys, SealevelIgpProgramAdapter } from '../../gas/adapters/SealevelIgpAdapter.js'; import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider.js'; import { ChainName } from '../../types.js'; import { TokenMetadata } from '../types.js'; import { IHypTokenAdapter, ITokenAdapter, InterchainGasQuote, QuoteTransferRemoteParams, TransferParams, TransferRemoteParams } from './ITokenAdapter.js'; import { SealevelHyperlaneTokenData } from './serialization.js'; export declare class SealevelNativeTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter { getBalance(address: Address): Promise; getMetadata(): Promise; getMinimumTransferAmount(recipient: Address): Promise; isApproveRequired(): Promise; isRevokeApprovalRequired(_owner: Address, _spender: Address): Promise; populateApproveTx(): Promise; populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, }: TransferParams): Promise; getTotalSupply(): Promise; } export declare class SealevelTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter { readonly chainName: ChainName; readonly multiProvider: MultiProtocolProvider; readonly addresses: { token: Address; }; readonly tokenMintPubKey: PublicKey; constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: { token: Address; }); getBalance(owner: Address): Promise; getMetadata(_isNft?: boolean): Promise; getMinimumTransferAmount(_recipient: Address): Promise; isApproveRequired(): Promise; isRevokeApprovalRequired(_owner: Address, _spender: Address): Promise; populateApproveTx(_params: TransferParams): Promise; populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, fromTokenAccount, }: TransferParams): Promise; getTokenProgramId(): Promise; isSpl2022(): Promise; deriveAssociatedTokenAccount(owner: PublicKey): Promise; getTotalSupply(): Promise; } interface HypTokenAddresses { token: Address; warpRouter: Address; mailbox: Address; } export declare abstract class SealevelHypTokenAdapter extends SealevelTokenAdapter implements IHypTokenAdapter { readonly chainName: ChainName; readonly multiProvider: MultiProtocolProvider; readonly warpProgramPubKey: PublicKey; readonly addresses: HypTokenAddresses; protected readonly tokenAccountData: LazyAsync; constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: HypTokenAddresses); getTokenAccountData(): Promise; private loadTokenAccountData; getMetadata(): Promise; getDomains(): Promise; getRouterAddress(domain: Domain): Promise; getAllRouters(): Promise>; getBridgedSupply(): Promise; quoteTransferRemoteGas({ destination, sender, }: QuoteTransferRemoteParams): Promise; populateTransferRemoteTx({ weiAmountOrId, destination, recipient, fromAccountOwner, extraSigners, }: TransferRemoteParams): Promise; getIgpKeys(): Promise; getTransferInstructionKeyList({ sender, mailbox, randomWallet, igp, }: KeyListParams): Promise>; deriveMailboxOutboxAccount(mailbox: PublicKey): PublicKey; deriveMessageDispatchAuthorityAccount(): PublicKey; deriveMsgStorageAccount(mailbox: PublicKey, randomWalletPubKey: PublicKey): PublicKey; deriveHypTokenAccount(): PublicKey; deriveAtaPayerAccount(): PublicKey; /** * Fetches the median prioritization fee for transfers of the collateralAddress token. * @returns The median prioritization fee in micro-lamports, defaults to `0` when chain is not solanamainnet */ getMedianPriorityFee(): Promise; protected getIgpAdapter(tokenData: SealevelHyperlaneTokenData): SealevelIgpProgramAdapter | undefined; } export declare class SealevelHypNativeAdapter extends SealevelHypTokenAdapter { readonly chainName: ChainName; readonly multiProvider: MultiProtocolProvider; readonly wrappedNative: SealevelNativeTokenAdapter; constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: { token?: Address; warpRouter: Address; mailbox: Address; }); getBalance(owner: Address): Promise; getBridgedSupply(): Promise; getMetadata(): Promise; getMinimumTransferAmount(recipient: Address): Promise; getMedianPriorityFee(): Promise; getTransferInstructionKeyList(params: KeyListParams): Promise>; deriveNativeTokenCollateralAccount(): PublicKey; deriveAtaPayerAccount(): PublicKey; } export declare class SealevelHypCollateralAdapter extends SealevelHypTokenAdapter { getBalance(owner: Address): Promise; getBridgedSupply(): Promise; getTransferInstructionKeyList(params: KeyListParams): Promise>; deriveEscrowAccount(): PublicKey; } export declare class SealevelHypSyntheticAdapter extends SealevelHypTokenAdapter { getTransferInstructionKeyList(params: KeyListParams): Promise>; getBalance(owner: Address): Promise; getBridgedSupply(): Promise; getTotalSupply(): Promise; deriveMintAuthorityAccount(): PublicKey; deriveAssociatedTokenAccount(owner: PublicKey): Promise; } interface KeyListParams { sender: PublicKey; mailbox: PublicKey; randomWallet: PublicKey; igp?: IgpPaymentKeys; } export {}; //# sourceMappingURL=SealevelTokenAdapter.d.ts.map