///
import { Account, TransactionConfig } from 'web3-core';
import { EnvelopingConfig, EnvelopingTransactionDetails, Web3Provider } from '@rsksmart/rif-relay-common';
export interface SmartWallet {
index: number;
address: string;
deployed?: boolean;
deployment?: SmartWalletDeployment;
}
export interface SmartWalletDeployment {
deployTransaction: string;
tokenAddress: string;
}
export interface SmartWalletDeploymentOptions {
tokenAddress?: string;
tokenAmount?: string;
recovererAddress?: string;
onlyPreferredRelays?: boolean;
callVerifier?: string;
callForwarder?: string;
transactionDetails?: Partial;
}
export interface RelayingServicesConfiguration {
rskHost: string;
envelopingConfig: Partial;
web3Instance?: Web3;
web3Provider?: Web3Provider;
account?: Account;
contractAddresses?: RelayingServicesAddresses;
}
export interface RelayingServicesAddresses {
penalizer: string;
relayHub: string;
smartWallet: string;
smartWalletFactory: string;
smartWalletDeployVerifier: string;
smartWalletRelayVerifier: string;
customSmartWallet: string;
customSmartWalletFactory: string;
customSmartWalletDeployVerifier: string;
customSmartWalletRelayVerifier: string;
sampleRecipient: string;
}
export interface RelayingTransactionOptions {
unsignedTx: TransactionConfig;
smartWallet: SmartWallet;
tokenAmount?: string;
transactionDetails?: Partial;
value?: number;
onlyPreferredRelays?: boolean;
tokenAddress: string;
}
export interface RelayGasEstimationOptions {
destinationContract?: string;
smartWalletAddress: string;
tokenFees: string;
abiEncodedTx: string;
tokenAddress: string;
onlyPreferredRelays?: boolean;
callVerifier?: string;
callForwarder?: string;
isSmartWalletDeploy?: boolean;
index?: string;
recoverer?: string;
isLinearEstimation?: boolean;
}