import { Currency } from "@arcana/ca-common";
import { Account, Address, PublicClient, WalletClient, WebSocketTransport } from "viem";
import { ChainList } from "../chains";
import { Chain, EVMTransaction, NetworkConfig } from "../typings";
declare const isEVMTx: (tx: unknown) => tx is EVMTransaction;
declare const getAllowance: (chain: Chain, address: `0x${string}`, tokenContract: `0x${string}`, chainList: ChainList) => Promise<bigint>;
declare const getAllowances: (input: {
    chainID: number;
    tokenContract: `0x${string}`;
}[], address: `0x${string}`, chainList: ChainList) => Promise<{
    [k: number]: bigint;
}>;
declare const waitForIntentFulfilment: (publicClient: PublicClient<WebSocketTransport>, vaultContractAddr: `0x${string}`, requestHash: `0x${string}`, ac: AbortController) => Promise<unknown>;
declare const requestTimeout: (timeout: number, ac: AbortController) => Promise<unknown>;
declare const getTokenTxFunction: (data: `0x${string}`) => {
    args: readonly [] | readonly [`0x${string}`] | readonly [`0x${string}`, bigint] | readonly [`0x${string}`, `0x${string}`] | readonly [`0x${string}`, `0x${string}`, bigint];
    functionName: "symbol" | "name" | "decimals" | "transfer" | "allowance" | "approve" | "totalSupply" | "transferFrom" | "balanceOf";
} | {
    args: never[];
    functionName: string;
};
declare const setAllowances: (tokenContractAddresses: Array<`0x${string}`>, client: WalletClient, networkConfig: NetworkConfig, chainList: ChainList, chain: Chain, amount: bigint) => Promise<void>;
declare const getL1Fee: (chain: Chain, input?: `0x${string}`) => Promise<bigint>;
declare const waitForTxReceipt: (hash: `0x${string}`, publicClient: PublicClient) => Promise<void>;
declare const switchChain: (client: WalletClient, chain: Chain) => Promise<void>;
declare function signPermitForAddressAndValue(cur: Currency, client: WalletClient, publicClient: PublicClient, account: Account, spender: Address, value: bigint, deadline?: bigint): Promise<`0x${string}`>;
declare const createPublicClientWithFallback: (chain: Chain) => PublicClient;
export { createPublicClientWithFallback, getAllowance, getAllowances, getL1Fee, getTokenTxFunction, isEVMTx, requestTimeout, setAllowances, signPermitForAddressAndValue, switchChain, waitForIntentFulfilment, waitForTxReceipt, };
