UNPKG

@hyperlane-xyz/sdk

Version:

The official SDK for the Hyperlane Network

117 lines 6.05 kB
/// <reference types="node" resolution-mode="require"/> import { AccountMeta, PublicKey, Transaction } from '@solana/web3.js'; import { Address, Domain } 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, TransferParams, TransferRemoteParams } from './ITokenAdapter.js'; import { SealevelHyperlaneTokenData } from './serialization.js'; export declare class SealevelNativeTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter<Transaction> { getBalance(address: Address): Promise<bigint>; getMetadata(): Promise<TokenMetadata>; getMinimumTransferAmount(recipient: Address): Promise<bigint>; isApproveRequired(): Promise<boolean>; populateApproveTx(): Promise<Transaction>; populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, }: TransferParams): Promise<Transaction>; getTotalSupply(): Promise<bigint | undefined>; } export declare class SealevelTokenAdapter extends BaseSealevelAdapter implements ITokenAdapter<Transaction> { 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<bigint>; getMetadata(_isNft?: boolean): Promise<TokenMetadata>; getMinimumTransferAmount(_recipient: Address): Promise<bigint>; isApproveRequired(): Promise<boolean>; populateApproveTx(_params: TransferParams): Promise<Transaction>; populateTransferTx({ weiAmountOrId, recipient, fromAccountOwner, fromTokenAccount, }: TransferParams): Promise<Transaction>; getTokenProgramId(): Promise<PublicKey>; isSpl2022(): Promise<boolean>; deriveAssociatedTokenAccount(owner: PublicKey): Promise<PublicKey>; getTotalSupply(): Promise<bigint | undefined>; } interface HypTokenAddresses { token: Address; warpRouter: Address; mailbox: Address; } export declare abstract class SealevelHypTokenAdapter extends SealevelTokenAdapter implements IHypTokenAdapter<Transaction> { readonly chainName: ChainName; readonly multiProvider: MultiProtocolProvider; readonly warpProgramPubKey: PublicKey; readonly addresses: HypTokenAddresses; protected cachedTokenAccountData: SealevelHyperlaneTokenData | undefined; constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: HypTokenAddresses); getTokenAccountData(): Promise<SealevelHyperlaneTokenData>; getMetadata(): Promise<TokenMetadata>; getDomains(): Promise<Domain[]>; getRouterAddress(domain: Domain): Promise<Buffer>; getAllRouters(): Promise<Array<{ domain: Domain; address: Buffer; }>>; getBridgedSupply(): Promise<bigint | undefined>; quoteTransferRemoteGas(destination: Domain, sender?: Address): Promise<InterchainGasQuote>; populateTransferRemoteTx({ weiAmountOrId, destination, recipient, fromAccountOwner, }: TransferRemoteParams): Promise<Transaction>; getIgpKeys(): Promise<IgpPaymentKeys | undefined>; getTransferInstructionKeyList({ sender, mailbox, randomWallet, igp, }: KeyListParams): Promise<Array<AccountMeta>>; 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<number | undefined>; 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<bigint>; getBridgedSupply(): Promise<bigint>; getMetadata(): Promise<TokenMetadata>; getMinimumTransferAmount(recipient: Address): Promise<bigint>; getMedianPriorityFee(): Promise<number | undefined>; getTransferInstructionKeyList(params: KeyListParams): Promise<Array<AccountMeta>>; deriveNativeTokenCollateralAccount(): PublicKey; deriveAtaPayerAccount(): PublicKey; } export declare class SealevelHypCollateralAdapter extends SealevelHypTokenAdapter { getBalance(owner: Address): Promise<bigint>; getBridgedSupply(): Promise<bigint>; getTransferInstructionKeyList(params: KeyListParams): Promise<Array<AccountMeta>>; deriveEscrowAccount(): PublicKey; } export declare class SealevelHypSyntheticAdapter extends SealevelHypTokenAdapter { getTransferInstructionKeyList(params: KeyListParams): Promise<Array<AccountMeta>>; getBalance(owner: Address): Promise<bigint>; getBridgedSupply(): Promise<bigint>; getTotalSupply(): Promise<bigint>; deriveMintAuthorityAccount(): PublicKey; deriveAssociatedTokenAccount(owner: PublicKey): Promise<PublicKey>; } interface KeyListParams { sender: PublicKey; mailbox: PublicKey; randomWallet: PublicKey; igp?: IgpPaymentKeys; } export {}; //# sourceMappingURL=SealevelTokenAdapter.d.ts.map