@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
51 lines • 2.29 kB
TypeScript
import { Address } from '@hyperlane-xyz/utils';
import { MultiProtocolProvider } from '../providers/MultiProtocolProvider.js';
import { MultiProvider } from '../providers/MultiProvider.js';
import { ChainNameOrId } from '../types.js';
import { HyperlaneReader } from '../utils/HyperlaneReader.js';
import { RateLimitMidPoint, xERC20Limits } from './adapters/ITokenAdapter.js';
import { XERC20Type } from './types.js';
export interface StandardXERC20Limits {
type: typeof XERC20Type.Standard;
mint: string;
burn: string;
}
export interface VeloXERC20Limits {
type: typeof XERC20Type.Velo;
bufferCap: string;
rateLimitPerSecond: string;
}
/**
* Unified XERC20 limits type
*/
export type XERC20Limits = StandardXERC20Limits | VeloXERC20Limits;
/**
* Map of bridge addresses to their limits
*/
export type XERC20LimitsMap = Record<Address, XERC20Limits>;
/**
* Reader for on-chain XERC20 state.
* Reads limits and bridge configurations from XERC20 contracts.
*/
export declare class EvmXERC20Reader extends HyperlaneReader {
protected readonly multiProvider: MultiProvider;
protected logger: import("pino").default.Logger<never>;
protected readonly multiProtocolProvider: MultiProtocolProvider;
constructor(multiProvider: MultiProvider, chain: ChainNameOrId);
deriveXERC20TokenType(xERC20Address: Address): Promise<XERC20Type>;
/**
* Read current limits for the specified bridges.
*/
readLimits(xERC20Address: Address, bridges: Address[], type: XERC20Type): Promise<XERC20LimitsMap>;
/**
* Read all bridges configured on-chain for a Velodrome XERC20 by parsing ConfigurationChanged events.
* Returns empty array for Standard XERC20 since it has no event-based bridge enumeration.
* Note: Queries from block 0 which may be slow on chains with long histories.
*/
readOnChainBridges(xERC20Address: Address, type: XERC20Type): Promise<Address[]>;
protected toStandardLimits(limits: xERC20Limits): StandardXERC20Limits;
protected toVeloLimits(rateLimits: RateLimitMidPoint): VeloXERC20Limits;
}
export declare function limitsAreZero(limits: XERC20Limits): boolean;
export declare function limitsMatch(a: XERC20Limits, b: XERC20Limits): boolean;
//# sourceMappingURL=EvmXERC20Reader.d.ts.map