@kodex-data/multicall
Version:
`@kodex-data/multicall` is a JavaScript library that allows you to batch multiple Ethereum read-only calls into a single request, reducing the number of RPC calls and improving performance. It supports the `eth_call` method and the `multicall` contract, w
257 lines (256 loc) • 14.7 kB
TypeScript
import { Signer, ContractFactory, Overrides } from "ethers";
import type { Provider, TransactionRequest } from "@ethersproject/providers";
import type { PromiseOrValue } from "./common";
import type { Multicall2, Multicall2Interface } from "./Multicall2";
type Multicall2ConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
export declare class Multicall2__factory extends ContractFactory {
constructor(...args: Multicall2ConstructorParams);
deploy(overrides?: Overrides & {
from?: PromiseOrValue<string>;
}): Promise<Multicall2>;
getDeployTransaction(overrides?: Overrides & {
from?: PromiseOrValue<string>;
}): TransactionRequest;
attach(address: string): Multicall2;
connect(signer: Signer): Multicall2__factory;
static readonly bytecode = "0x608060405234801561001057600080fd5b50610a3a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013a57806386d516e814610140578063a8b0574e14610146578063bce38bd714610154578063c3077fa914610174578063ee82ac5e1461018757600080fd5b80630f28c97d146100b9578063252dba42146100ce57806327e86d6e146100ef578063399542e9146100f757806342cbb15c146101195780634d2301cc1461011f575b600080fd5b425b6040519081526020015b60405180910390f35b6100e16100dc36600461071e565b610199565b6040516100c592919061088b565b6100bb610359565b61010a610105366004610759565b61036c565b6040516100c5939291906108f4565b436100bb565b6100bb61012d3660046106fd565b6001600160a01b03163190565b446100bb565b456100bb565b6040514181526020016100c5565b610167610162366004610759565b610384565b6040516100c59190610878565b61010a61018236600461071e565b610576565b6100bb6101953660046107ab565b4090565b8051439060609067ffffffffffffffff8111156101c657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156101f957816020015b60608152602001906001900390816101e45790505b50905060005b83518110156103535760008085838151811061022b57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031686848151811061026057634e487b7160e01b600052603260045260246000fd5b602002602001015160200151604051610279919061085c565b6000604051808303816000865af19150503d80600081146102b6576040519150601f19603f3d011682016040523d82523d6000602084013e6102bb565b606091505b5091509150816103125760405162461bcd60e51b815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061033357634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061034b906109bd565b9150506101ff565b50915091565b6000610366600143610976565b40905090565b438040606061037b8585610384565b90509250925092565b6060815167ffffffffffffffff8111156103ae57634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156103f457816020015b6040805180820190915260008152606060208201528152602001906001900390816103cc5790505b50905060005b825181101561056f5760008084838151811061042657634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031685848151811061045b57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151604051610474919061085c565b6000604051808303816000865af19150503d80600081146104b1576040519150601f19603f3d011682016040523d82523d6000602084013e6104b6565b606091505b5091509150851561051857816105185760405162461bcd60e51b815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656044820152601960fa1b6064820152608401610309565b604051806040016040528083151581526020018281525084848151811061054f57634e487b7160e01b600052603260045260246000fd5b602002602001018190525050508080610567906109bd565b9150506103fa565b5092915050565b600080606061058660018561036c565b9196909550909350915050565b80356001600160a01b03811681146105aa57600080fd5b919050565b600082601f8301126105bf578081fd5b8135602067ffffffffffffffff808311156105dc576105dc6109ee565b8260051b6105eb838201610945565b8481528381019087850183890186018a1015610605578788fd5b8793505b868410156106425780358581111561061f578889fd5b61062d8b88838d010161064f565b84525060019390930192918501918501610609565b5098975050505050505050565b600060408284031215610660578081fd5b61066861091c565b905061067382610593565b815260208083013567ffffffffffffffff8082111561069157600080fd5b818501915085601f8301126106a557600080fd5b8135818111156106b7576106b76109ee565b6106c9601f8201601f19168501610945565b915080825286848285010111156106df57600080fd5b80848401858401376000908201840152918301919091525092915050565b60006020828403121561070e578081fd5b61071782610593565b9392505050565b60006020828403121561072f578081fd5b813567ffffffffffffffff811115610745578182fd5b610751848285016105af565b949350505050565b6000806040838503121561076b578081fd5b8235801515811461077a578182fd5b9150602083013567ffffffffffffffff811115610795578182fd5b6107a1858286016105af565b9150509250929050565b6000602082840312156107bc578081fd5b5035919050565b600082825180855260208086019550808260051b840101818601855b8481101561082357858303601f190189528151805115158452840151604085850181905261080f81860183610830565b9a86019a94505050908301906001016107df565b5090979650505050505050565b6000815180845261084881602086016020860161098d565b601f01601f19169290920160200192915050565b6000825161086e81846020870161098d565b9190910192915050565b60208152600061071760208301846107c3565b600060408201848352602060408185015281855180845260608601915060608160051b8701019350828701855b828110156108e657605f198887030184526108d4868351610830565b955092840192908401906001016108b8565b509398975050505050505050565b83815282602082015260606040820152600061091360608301846107c3565b95945050505050565b6040805190810167ffffffffffffffff8111828210171561093f5761093f6109ee565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561096e5761096e6109ee565b604052919050565b600082821015610988576109886109d8565b500390565b60005b838110156109a8578181015183820152602001610990565b838111156109b7576000848401525b50505050565b60006000198214156109d1576109d16109d8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212208ce27062f90c79ed7f27c8144012cde5be3698e7a027a31b606eed6da200ac5564736f6c63430008040033";
static readonly abi: readonly [{
readonly inputs: readonly [{
readonly components: readonly [{
readonly internalType: "address";
readonly name: "target";
readonly type: "address";
}, {
readonly internalType: "bytes";
readonly name: "callData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Call[]";
readonly name: "calls";
readonly type: "tuple[]";
}];
readonly name: "aggregate";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "blockNumber";
readonly type: "uint256";
}, {
readonly internalType: "bytes[]";
readonly name: "returnData";
readonly type: "bytes[]";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly components: readonly [{
readonly internalType: "address";
readonly name: "target";
readonly type: "address";
}, {
readonly internalType: "bytes";
readonly name: "callData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Call[]";
readonly name: "calls";
readonly type: "tuple[]";
}];
readonly name: "blockAndAggregate";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "blockNumber";
readonly type: "uint256";
}, {
readonly internalType: "bytes32";
readonly name: "blockHash";
readonly type: "bytes32";
}, {
readonly components: readonly [{
readonly internalType: "bool";
readonly name: "success";
readonly type: "bool";
}, {
readonly internalType: "bytes";
readonly name: "returnData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Result[]";
readonly name: "returnData";
readonly type: "tuple[]";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "uint256";
readonly name: "blockNumber";
readonly type: "uint256";
}];
readonly name: "getBlockHash";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "blockHash";
readonly type: "bytes32";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getBlockNumber";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "blockNumber";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getCurrentBlockCoinbase";
readonly outputs: readonly [{
readonly internalType: "address";
readonly name: "coinbase";
readonly type: "address";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getCurrentBlockDifficulty";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "difficulty";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getCurrentBlockGasLimit";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "gaslimit";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getCurrentBlockTimestamp";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "timestamp";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "address";
readonly name: "addr";
readonly type: "address";
}];
readonly name: "getEthBalance";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "balance";
readonly type: "uint256";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [];
readonly name: "getLastBlockHash";
readonly outputs: readonly [{
readonly internalType: "bytes32";
readonly name: "blockHash";
readonly type: "bytes32";
}];
readonly stateMutability: "view";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "bool";
readonly name: "requireSuccess";
readonly type: "bool";
}, {
readonly components: readonly [{
readonly internalType: "address";
readonly name: "target";
readonly type: "address";
}, {
readonly internalType: "bytes";
readonly name: "callData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Call[]";
readonly name: "calls";
readonly type: "tuple[]";
}];
readonly name: "tryAggregate";
readonly outputs: readonly [{
readonly components: readonly [{
readonly internalType: "bool";
readonly name: "success";
readonly type: "bool";
}, {
readonly internalType: "bytes";
readonly name: "returnData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Result[]";
readonly name: "returnData";
readonly type: "tuple[]";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}, {
readonly inputs: readonly [{
readonly internalType: "bool";
readonly name: "requireSuccess";
readonly type: "bool";
}, {
readonly components: readonly [{
readonly internalType: "address";
readonly name: "target";
readonly type: "address";
}, {
readonly internalType: "bytes";
readonly name: "callData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Call[]";
readonly name: "calls";
readonly type: "tuple[]";
}];
readonly name: "tryBlockAndAggregate";
readonly outputs: readonly [{
readonly internalType: "uint256";
readonly name: "blockNumber";
readonly type: "uint256";
}, {
readonly internalType: "bytes32";
readonly name: "blockHash";
readonly type: "bytes32";
}, {
readonly components: readonly [{
readonly internalType: "bool";
readonly name: "success";
readonly type: "bool";
}, {
readonly internalType: "bytes";
readonly name: "returnData";
readonly type: "bytes";
}];
readonly internalType: "struct Multicall2.Result[]";
readonly name: "returnData";
readonly type: "tuple[]";
}];
readonly stateMutability: "nonpayable";
readonly type: "function";
}];
static createInterface(): Multicall2Interface;
static connect(address: string, signerOrProvider: Signer | Provider): Multicall2;
}
export {};