import { Protocol, type EthereumBridgeProtocol, type SolanaBridgeProtocol } from "../../types/bridge/protocol.js";
import { ExternalChain } from "../../types/bridge/external-chain.js";
import type { Address, EthereumAddress, ExternalAddress, SolanaAddress, Token } from "../../types/index.js";
export interface BridgeTokenParams {
id: string;
name: string;
symbol: string;
decimals: number;
coingeckoId?: string;
protocol: Protocol;
address: A;
l1Bridge: A;
starknetAddress: Address;
starknetBridge: Address;
}
export declare abstract class BridgeToken {
readonly id: string;
readonly name: string;
readonly symbol: string;
readonly coingeckoId?: string;
readonly decimals: number;
readonly address: A;
readonly bridgeAddress: A;
readonly starknetAddress: Address;
readonly starknetBridge: Address;
abstract readonly protocol: Protocol;
abstract readonly chain: ExternalChain;
protected constructor(params: BridgeTokenParams);
intoStarknetToken(): Token;
}
export interface EthereumBridgeTokenParams extends BridgeTokenParams {
protocol: EthereumBridgeProtocol;
supportsAutoWithdraw: boolean;
}
export declare class EthereumBridgeToken extends BridgeToken {
readonly chain: ExternalChain;
readonly protocol: EthereumBridgeProtocol;
readonly supportsAutoWithdraw: boolean;
constructor(params: EthereumBridgeTokenParams);
}
export interface SolanaBridgeTokenParams extends BridgeTokenParams {
protocol: Protocol.HYPERLANE;
}
export declare class SolanaBridgeToken extends BridgeToken {
readonly chain: ExternalChain;
readonly protocol: SolanaBridgeProtocol;
constructor(params: SolanaBridgeTokenParams);
}
//# sourceMappingURL=bridge-token.d.ts.map