import { BigNumber, ContractReceipt, ContractTransaction } from 'ethers';
export type TxResponse = ContractTransaction;
export type TxReceipt = ContractReceipt;
export interface WalletBalanceCheckResponse {
    success: boolean;
    balance: BigNumber | null;
}
/**
 * See explanation of the error codes in the comments at the end of this file
 * or at https://docs.ethers.org/v5/troubleshooting/errors
 */
export declare enum TxErrorCode {
    UNKNOWN_ERROR = "UNKNOWN_ERROR",
    NOT_IMPLEMENTED = "NOT_IMPLEMENTED",
    UNSUPPORTED_OPERATION = "UNSUPPORTED_OPERATION",
    NETWORK_ERROR = "NETWORK_ERROR",
    SERVER_ERROR = "SERVER_ERROR",
    TIMEOUT = "TIMEOUT",
    BUFFER_OVERRUN = "BUFFER_OVERRUN",
    NUMERIC_FAULT = "NUMERIC_FAULT",
    MISSING_NEW = "MISSING_NEW",
    INVALID_ARGUMENT = "INVALID_ARGUMENT",
    MISSING_ARGUMENT = "MISSING_ARGUMENT",
    UNEXPECTED_ARGUMENT = "UNEXPECTED_ARGUMENT",
    CALL_EXCEPTION = "CALL_EXCEPTION",
    INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
    NONCE_EXPIRED = "NONCE_EXPIRED",
    UNPREDICTABLE_GAS_LIMIT = "UNPREDICTABLE_GAS_LIMIT",
    TRANSACTION_REPLACED = "TRANSACTION_REPLACED",
    ACTION_REJECTED = "ACTION_REJECTED",
    REPLACEMENT_UNDERPRICED = "REPLACEMENT_UNDERPRICED"
}
export interface TxError {
    message: string;
    reason: string;
    code: TxErrorCode;
    method: string;
    transaction: {
        from: string;
        maxPriorityFeePerGas: BigNumber;
        maxFeePerGas: BigNumber;
        to: string;
        value: BigNumber;
        data: string;
        type: number;
    };
    error: {
        reason: string;
        code: TxErrorCode;
        body: string;
    };
}
interface BaseTxParams {
    value?: BigNumber | null;
    gasLimit?: BigNumber;
}
export interface EIP1559TxParams extends BaseTxParams {
    type: 2;
    maxPriorityFeePerGas: BigNumber;
    maxFeePerGas: BigNumber;
    lastBaseFeePerGas?: BigNumber;
    nonce?: number;
}
interface LegacyTxParams extends BaseTxParams {
    type: 0;
    gasPrice: BigNumber;
    nonce?: number;
}
export type TxParams = EIP1559TxParams | LegacyTxParams;
export declare enum JSONRPCErrorCode {
    PARSE_ERROR = -32700,
    INTERNAL_ERROR = -32603,
    INVALID_PARAMS = -32602,
    METHOD_NOT_FOUND = -32601,
    INVALID_REQUEST = -32600,
    RATE_LIMITING = -32005,// AFAIK, this is just the code for moralis rate limiting?
    SERVER_ERROR = -32000
}
export type ABI = ABIElement[];
export type ABIElement = ABIFunction | ABIEvent | ABIConstructor | ABIFallback | ABIReceive;
export interface ABIFunction {
    type: 'function';
    name: string;
    inputs: ABIParameter[];
    outputs: ABIParameter[];
    stateMutability: 'pure' | 'view' | 'nonpayable' | 'payable';
    constant?: boolean;
    payable?: boolean;
}
export interface ABIEvent {
    type: 'event';
    name: string;
    inputs: ABIEventParameter[];
    anonymous: boolean;
}
export interface ABIConstructor {
    type: 'constructor';
    inputs: ABIParameter[];
    stateMutability: 'payable' | 'nonpayable';
}
export interface ABIFallback {
    type: 'fallback';
    stateMutability: 'payable' | 'nonpayable';
}
export interface ABIReceive {
    type: 'receive';
    stateMutability: 'payable';
}
export interface ABIParameter {
    name: string;
    type: string;
    components?: ABIParameter[];
    internalType?: string;
}
export interface ABIEventParameter extends ABIParameter {
    indexed: boolean;
}
export {};
//# sourceMappingURL=types.d.ts.map