UNPKG

dp-contract-proxy-kit

Version:

Enable batched transactions and contract account interactions using a unique deterministic Gnosis Safe.

144 lines (143 loc) 4.74 kB
import BigNumber from 'bignumber.js'; import { Abi, Address } from '../../utils/basicTypes'; import { EthCallTx, EthersTransactionResult, EthSendTx } from '../../utils/transactions'; import EthLibAdapter, { Contract } from '../EthLibAdapter'; export interface EthersAdapterConfig { ethers: any; signer: any; } declare class EthersAdapter extends EthLibAdapter { ethers: any; signer: any; /** * Creates an instance of EthersAdapter * * @param options - EthersAdapter configuration * @returns The EthersAdapter instance */ constructor({ ethers, signer }: EthersAdapterConfig); /** * Returns the current provider * * @returns The current provider */ getProvider(): any; /** * Sends a network request via JSON-RPC. * * @param method - JSON-RPC method * @param params - Params * @returns The request response */ providerSend(method: string, params: any[]): Promise<any>; /** * Signs data using a specific account. * * @param message - Data to sign * @param ownerAccount - Address to sign the data with * @returns The signature */ signMessage(message: string): Promise<string>; /** * Returns the current network ID. * * @returns The network ID */ getNetworkId(): Promise<number>; /** * Returns the default account used as the default "from" property. * * @returns The default account address */ getAccount(): Promise<Address>; /** * Returns the balance of an address. * * @param address - The desired address * @returns The balance of the address */ getBalance(address: Address): Promise<BigNumber>; /** * Returns the keccak256 hash of the data. * * @param data - Desired data * @returns The keccak256 of the data */ keccak256(data: string): string; /** * Encodes a function parameters based on its JSON interface object. * * @param types - An array with the types or a JSON interface of a function * @param values - The parameters to encode * @returns The ABI encoded parameters */ abiEncode(types: string[], values: any[]): string; /** * Decodes ABI encoded parameters to is JavaScript types. * * @param types - An array with the types or a JSON interface outputs array * @param data - The ABI byte code to decode * @returns The ABI encoded parameters */ abiDecode(types: string[], data: string): any[]; /** * Returns an instance of a contract. * * @param abi - ABI of the desired contract * @param address - Contract address * @returns The contract instance */ getContract(abi: Abi, address?: Address): Contract; /** * Deterministically returns the address where a contract will be deployed. * * @param deployer - Account that deploys the contract * @param salt - Salt * @param initCode - Code to be deployed * @returns The address where the contract will be deployed */ calcCreate2Address(deployer: Address, salt: string, initCode: string): string; /** * Returns the code at a specific address. * * @param address - The desired address * @returns The code of the contract */ getCode(address: Address): Promise<string>; /** * Returns a block matching the block number or block hash. * * @param blockHashOrBlockNumber - The block number or block hash * @returns The block object */ getBlock(blockHashOrBlockNumber: string | number): Promise<{ [property: string]: any; }>; /** * Returns the revert reason when a call fails. * * @param tx - Transaction to execute * @param block - Block number * @returns The revert data when the call fails */ getCallRevertData(tx: EthCallTx, block: string | number): Promise<string>; ethCall(tx: EthCallTx, block: number | string): Promise<string>; checkFromAddress(from: Address): Promise<void>; /** * Sends a transaction to the network. * * @param tx - Transaction to send * @returns The transaction response */ ethSendTransaction(tx: EthSendTx): Promise<EthersTransactionResult>; /** * Formats transaction result depending on the current provider. * * @param txHash - Transaction hash * @param tx - Transaction response * @returns The formatted transaction response */ toSafeRelayTxResult(txHash: string, tx: Record<string, any>): Promise<EthersTransactionResult>; toRocksideRelayTxResult(tx: Record<string, any>): Promise<EthersTransactionResult>; } export default EthersAdapter;