@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
117 lines • 6.05 kB
TypeScript
/// <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