///
///
import { EventData } from 'web3-eth-contract';
import { EventEmitter } from 'events';
import { PrefixedHexString } from 'ethereumjs-tx';
import { IRelayHubInstance } from '../../types/truffle-contracts';
import ContractInteractor from '../common/ContractInteractor';
import { GasPriceFetcher } from '../relayclient/GasPriceFetcher';
import { Address, IntString } from '../common/types/Aliases';
import { RelayTransactionRequest } from '../common/types/RelayTransactionRequest';
import PingResponse from '../common/PingResponse';
import { AmountRequired } from '../common/AmountRequired';
import { LoggerInterface } from '../common/LoggerInterface';
import { PaymasterGasLimits } from '../common/Utils';
import { RegistrationManager } from './RegistrationManager';
import { ReputationManager } from './ReputationManager';
import { SignedTransactionDetails, TransactionManager } from './TransactionManager';
import { TxStoreManager } from './TxStoreManager';
import { ServerConfigParams, ServerDependencies } from './ServerConfigParams';
export declare class RelayServer extends EventEmitter {
readonly logger: LoggerInterface;
lastScannedBlock: number;
lastRefreshBlock: number;
ready: boolean;
lastSuccessfulRounds: number;
readonly managerAddress: PrefixedHexString;
readonly workerAddress: PrefixedHexString;
gasPrice: number;
_workerSemaphoreOn: boolean;
alerted: boolean;
alertedBlock: number;
private initialized;
readonly contractInteractor: ContractInteractor;
readonly gasPriceFetcher: GasPriceFetcher;
private readonly versionManager;
private workerTask?;
config: ServerConfigParams;
transactionManager: TransactionManager;
txStoreManager: TxStoreManager;
lastMinedActiveTransaction?: EventData;
reputationManager: ReputationManager;
registrationManager: RegistrationManager;
chainId: number;
networkId: number;
relayHubContract: IRelayHubInstance;
trustedPaymastersGasLimits: Map;
workerBalanceRequired: AmountRequired;
constructor(config: Partial, transactionManager: TransactionManager, dependencies: ServerDependencies);
printServerAddresses(): void;
getMinGasPrice(): number;
pingHandler(paymaster?: string): Promise;
validateInput(req: RelayTransactionRequest): void;
validateFees(req: RelayTransactionRequest): void;
validateMaxNonce(relayMaxNonce: number): Promise;
validatePaymasterReputation(paymaster: Address, currentBlockNumber: number): Promise;
validatePaymasterGasLimits(req: RelayTransactionRequest): Promise<{
maxPossibleGas: number;
acceptanceBudget: number;
}>;
validateViewCallSucceeds(req: RelayTransactionRequest, acceptanceBudget: number, maxPossibleGas: number): Promise;
createRelayTransaction(req: RelayTransactionRequest): Promise;
intervalHandler(): Promise;
start(): void;
stop(): void;
_workerSemaphore(blockNumber: number): Promise;
fatal(message: string): void;
/***
* initialize data from trusted paymasters.
* "Trusted" paymasters means that:
* - we trust their code not to alter the gas limits (getGasLimits returns constants)
* - we trust preRelayedCall to be consistent: off-chain call and on-chain calls should either both succeed
* or both revert.
* - given that, we agree to give the requested acceptanceBudget (since breaking one of the above two "invariants"
* is the only cases where the relayer will have to pay for this budget)
*
* @param paymasters list of trusted paymaster addresses
*/
_initTrustedPaymasters(paymasters?: string[]): Promise;
_getPaymasterMaxAcceptanceBudget(paymaster?: string): IntString;
init(): Promise;
replenishServer(workerIndex: number, currentBlock: number): Promise;
_worker(blockNumber: number): Promise;
_refreshGasPrice(): Promise;
_handleChanges(currentBlockNumber: number): Promise;
getManagerBalance(): Promise;
getWorkerBalance(workerIndex: number): Promise;
_shouldRegisterAgain(currentBlock: number, hubEventsSinceLastScan: EventData[]): Promise;
_shouldRefreshState(currentBlock: number): boolean;
handlePastHubEvents(currentBlockNumber: number, hubEventsSinceLastScan: EventData[]): Promise;
getAllHubEventsSinceLastScan(): Promise;
_handleTransactionRelayedEvent(paymaster: Address, eventBlockNumber: number): Promise;
_handleTransactionRejectedByPaymasterEvent(paymaster: Address, currentBlockNumber: number, eventBlockNumber: number): Promise;
_getLatestTxBlockNumber(): number;
_updateLatestTxBlockNumber(eventsSinceLastScan: EventData[]): Promise;
_queryLatestActiveEvent(): Promise;
/**
* Resend all outgoing pending transactions with insufficient gas price by all signers (manager, workers)
* @return the mapping of the previous transaction hash to details of a new boosted transaction
*/
_boostStuckPendingTransactions(blockNumber: number): Promise