@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
63 lines • 2.68 kB
TypeScript
/// <reference types="node" resolution-mode="require"/>
import { Address, Domain, Numberish } from '@hyperlane-xyz/utils';
import { TokenMetadata } from '../types.js';
export interface TransferParams {
weiAmountOrId: Numberish;
recipient: Address;
fromAccountOwner?: Address;
fromTokenAccount?: Address;
}
export interface TransferRemoteParams extends TransferParams {
destination: Domain;
interchainGas?: InterchainGasQuote;
}
export interface InterchainGasQuote {
addressOrDenom?: string;
amount: bigint;
}
export interface RateLimitMidPoint {
rateLimitPerSecond: bigint;
bufferCap: bigint;
lastBufferUsedTime: number;
bufferStored: bigint;
midPoint: bigint;
}
export interface ITokenAdapter<Tx> {
getBalance(address: Address): Promise<bigint>;
getTotalSupply(): Promise<bigint | undefined>;
getMetadata(isNft?: boolean): Promise<TokenMetadata>;
getMinimumTransferAmount(recipient: Address): Promise<bigint>;
isApproveRequired(owner: Address, spender: Address, weiAmountOrId: Numberish): Promise<boolean>;
populateApproveTx(params: TransferParams): Promise<Tx>;
populateTransferTx(params: TransferParams): Promise<Tx>;
}
export interface IHypTokenAdapter<Tx> extends ITokenAdapter<Tx> {
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(p: TransferRemoteParams): Promise<Tx>;
}
export interface IHypXERC20Adapter<Tx> extends IHypTokenAdapter<Tx> {
getMintLimit(): Promise<bigint>;
getMintMaxLimit(): Promise<bigint>;
getBurnLimit(): Promise<bigint>;
getBurnMaxLimit(): Promise<bigint>;
}
export interface IHypVSXERC20Adapter<Tx> {
getRateLimits(): Promise<RateLimitMidPoint>;
populateSetBufferCapTx(newBufferCap: bigint): Promise<Tx>;
populateSetRateLimitPerSecondTx(newRateLimitPerSecond: bigint): Promise<Tx>;
populateAddBridgeTx(bufferCap: bigint, rateLimitPerSecond: bigint): Promise<Tx>;
}
export interface IXERC20VSAdapter<Tx> extends ITokenAdapter<Tx> {
getRateLimits(bridge: Address): Promise<RateLimitMidPoint>;
populateSetBufferCapTx(bridge: Address, newBufferCap: bigint): Promise<Tx>;
populateSetRateLimitPerSecondTx(bridge: Address, newRateLimitPerSecond: bigint): Promise<Tx>;
populateAddBridgeTx(bufferCap: bigint, rateLimitPerSecond: bigint, bridge: Address): Promise<Tx>;
}
//# sourceMappingURL=ITokenAdapter.d.ts.map