import { providers, Signer, ethers, BytesLike } from 'ethers'; import { TokenRequest } from './tokenCreator'; import { GnosisSafeL2 } from '../typechain-types'; import SimpleSyncher from './SimpleSyncher'; import { SafeSigner } from './SafeSigner'; export declare class MemoryLocalStorage { private store; getItem(key: string): string; setItem(key: string, value: string): void; } type Address = string; interface LocalStorage { getItem(key: string): string | null; setItem(key: string, value: string): void; } export interface ProofOfRelayer { owner: Address; relayer: { address: Address; chainId: number; exp: number; }; signature: string; safeDeployed: boolean; tokenRequest?: TokenRequest; tokenRequestSignature?: BytesLike; } export interface UserRelayerProps { signer: Signer; ethers: typeof ethers; provider: providers.Provider; faucet: (address: Address, signer?: Signer) => Promise; localStorage?: LocalStorage; walletDeployerAddress?: Address; EnglishOwnerAdderAddress?: Address; setupHandlerAddress?: Address; } export declare class SafeRelayer { private config; private walletDeployer; private englishAdder; private _wrappedSigner?; private localStorage; private authorization?; private faucetCalled; localRelayer: Signer; singleton: SimpleSyncher; originalSigner?: Signer; safe: Promise; constructor(config: UserRelayerProps); get provider(): providers.Provider; get ready(): Promise; proofOfRelayer(): Promise; wrappedSigner(): SafeSigner; private findDefaultLocalStorage; private findOrCreateLocalRelayer; predictedSafeAddress(): Promise; private createSafe; private addDevice; private findOrCreateAuthorization; private callFaucetOnce; private findOrCreateAuthorizationAndCallFaucet; private isDeployed; private setupSignerAndFindOrCreateSafe; } export {};