import { ethers } from 'ethers'; import { ChainId, OnChainTrade, Order, Trade } from '@dcl/schemas'; import { ChainData as SquidChainData, Token as SquidToken, RouteResponse as SquidRouteResponse, StatusResponse as SquidStatusResponse } from '@0xsquid/sdk/dist/types'; import { Provider } from 'decentraland-connect'; export type CrossChainData = { fromAddress: string; fromAmount: string; toAmount: string; fromToken: string; fromChain: ChainId; toChain: ChainId; enableExpress?: boolean; slippage?: number; }; export type BuyNFTCrossChainData = CrossChainData & { order: Order; fetchTradeData?: () => Promise<{ onChainTrade: OnChainTrade; marketplaceAddress: string; }>; }; export type AcceptTradeData = CrossChainData & { trade: Trade; onChainTrade: OnChainTrade; }; export type RegisterNameCrossChainData = CrossChainData & { name: string; }; export type MintNFTCrossChainData = CrossChainData & { item: { collectionAddress: string; itemId: string; price: string; tradeId?: string; }; fetchTradeData?: () => Promise<{ onChainTrade: OnChainTrade; marketplaceAddress: string; }>; }; export type FromAmountParams = { fromToken: Token; toAmount: string; toToken: Token; }; export declare const CROSS_CHAIN_SUPPORTED_CHAINS: ChainId[]; export type ChainData = SquidChainData; export type Token = SquidToken; export type RouteResponse = SquidRouteResponse; export type Route = RouteResponse; export type StatusResponse = SquidStatusResponse; export interface CrossChainProvider { init(): Promise; isLibInitialized(): boolean; getFromAmount(fromAmountParams: FromAmountParams): Promise; getSupportedTokens(): Token[]; getSupportedChains(): ChainData[]; buyNFT(provider: Provider, buyNFTCrossChainData: BuyNFTCrossChainData): Promise; mintNFT(provider: Provider, ChainCallData: MintNFTCrossChainData): Promise; getBuyNFTRoute(buyNFTCrossChainData: BuyNFTCrossChainData): Promise; getRegisterNameRoute(getRegisterNameCrossChainData: RegisterNameCrossChainData): Promise; getMintNFTRoute(buyNFTCrossChainData: MintNFTCrossChainData): Promise; executeRoute(route: RouteResponse, provider: Provider): Promise; getStatus(routeRequestId: string, originChainHash: string): Promise; }