///
import { Address, GSNContractsDeployment, LoggerInterface } from '@opengsn/common';
import { HttpServer } from '@opengsn/relay/dist/HttpServer';
import { RelayProvider } from '@opengsn/provider/dist/RelayProvider';
import { ChildProcess } from 'child_process';
export interface TestEnvironment {
contractsDeployment: GSNContractsDeployment;
relayProvider: RelayProvider;
httpServer: HttpServer;
relayUrl: string;
hardhatNode?: ChildProcess;
}
declare class GsnTestEnvironmentClass {
private httpServer?;
/**
*
* @param host:
* @param logger
* @return
*/
deployGsn(host: string, logger?: LoggerInterface): Promise;
/**
*
* @param host - the Ethereum RPC node URL
* @param localRelayUrl - the local GSN RelayServer URL for RelayRegistrar
* @param port - the port for the RelayServer to listen to (optional)
* @param logger
* @return
*/
startGsn(host: string, localRelayUrl?: string, port?: number, logger?: LoggerInterface): Promise;
/**
* initialize a local relay
* @private
*/
private _resolveAvailablePort;
stopGsn(): Promise;
_runServer(host: string, deploymentResult: GSNContractsDeployment, from: Address, relayUrl: string, port: number, logger: LoggerInterface): Promise;
/**
* return deployment saved by "gsn start"
* @param workdir
* @param url - an Ethereum RPC API Node URL
*/
loadDeployment(url: string, workdir?: string): Promise;
}
export declare const GsnTestEnvironment: GsnTestEnvironmentClass;
export {};