import type { Keypair } from '@solana/web3.js'; import { Address, Domain, Numberish } from '@hyperlane-xyz/utils'; import { EthJsonRpcBlockParameterTag } from '../../metadata/chainMetadataTypes.js'; import { TokenMetadata } from '../types.js'; export interface TransferParams { weiAmountOrId: Numberish; recipient: Address; fromAccountOwner?: Address; fromTokenAccount?: Address; interchainGas?: InterchainGasQuote; } export interface TransferRemoteParams extends TransferParams { destination: Domain; customHook?: Address; /** Optional extra signers for Sealevel transactions (e.g., randomWallet Keypair for dispatch PDA) */ extraSigners?: Keypair[]; } export interface TransferRemoteToParams { destination: Domain; recipient: Address; amount: Numberish; targetRouter: Address; interchainGas?: InterchainGasQuote; fromAccountOwner?: Address; extraSigners?: Keypair[]; } export interface QuoteTransferRemoteParams { destination: Domain; sender?: Address; customHook?: Address; recipient?: Address; amount?: bigint; } export interface Quote { addressOrDenom?: string; amount: bigint; } export interface InterchainGasQuote { igpQuote: Quote; tokenFeeQuote?: Quote; } export interface RateLimitMidPoint { rateLimitPerSecond: bigint; bufferCap: bigint; lastBufferUsedTime: number; bufferStored: bigint; midPoint: bigint; } export interface xERC20Limits { mint: bigint; burn: bigint; } export interface ITokenAdapter { getBalance(address: Address): Promise; getTotalSupply(): Promise; getMetadata(isNft?: boolean): Promise; getMinimumTransferAmount(recipient: Address): Promise; isApproveRequired(owner: Address, spender: Address, weiAmountOrId: Numberish): Promise; isRevokeApprovalRequired(owner: Address, spender: Address): Promise; populateApproveTx(params: TransferParams): Promise; populateTransferTx(params: TransferParams): Promise; } export interface IMovableCollateralRouterAdapter extends ITokenAdapter { isRebalancer(address: Address): Promise; isBridgeAllowed(domain: Domain, bridge: Address): Promise; getAllowedDestination(domain: Domain): Promise
; getRebalanceQuotes(bridge: Address, domain: Domain, recipient: Address, amount: Numberish): Promise; getWrappedTokenAddress(): Promise
; populateRebalanceTx(domain: Domain, amount: Numberish, bridge: Address, quotes: InterchainGasQuote[]): Promise; } export interface IHypTokenAdapter extends ITokenAdapter { getDomains(): Promise; getRouterAddress(domain: Domain): Promise; getAllRouters(): Promise>; getBridgedSupply(options?: { blockTag?: number | EthJsonRpcBlockParameterTag; }): Promise; quoteTransferRemoteGas(params: QuoteTransferRemoteParams): Promise; populateTransferRemoteTx(p: TransferRemoteParams): Promise; } export interface IHypXERC20Adapter extends IHypTokenAdapter { getMintLimit(): Promise; getMintMaxLimit(): Promise; getBurnLimit(): Promise; getBurnMaxLimit(): Promise; } export interface IHypVSXERC20Adapter { getRateLimits(): Promise; populateSetBufferCapTx(newBufferCap: bigint): Promise; populateSetRateLimitPerSecondTx(newRateLimitPerSecond: bigint): Promise; populateAddBridgeTx(bufferCap: bigint, rateLimitPerSecond: bigint): Promise; } export interface IXERC20VSAdapter extends ITokenAdapter { getRateLimits(bridge: Address): Promise; populateSetBufferCapTx(bridge: Address, newBufferCap: bigint): Promise; populateSetRateLimitPerSecondTx(bridge: Address, newRateLimitPerSecond: bigint): Promise; populateAddBridgeTx(bufferCap: bigint, rateLimitPerSecond: bigint, bridge: Address): Promise; } export interface IXERC20Adapter extends ITokenAdapter { getLimits(bridge: Address): Promise; } export interface IHypCrossCollateralAdapter extends IHypTokenAdapter { quoteTransferRemoteToGas(params: { destination: Domain; recipient: Address; amount: Numberish; targetRouter: Address; sender?: Address; }): Promise; populateTransferRemoteToTx(params: TransferRemoteToParams): Promise; } export declare function isHypCrossCollateralAdapter(adapter: IHypTokenAdapter): adapter is IHypCrossCollateralAdapter; export interface IHypCollateralFiatAdapter extends IHypTokenAdapter { getMintLimit(): Promise; } //# sourceMappingURL=ITokenAdapter.d.ts.map