/// <reference types="node" />
import { AddressLike, BNLike, BufferLike, PrefixedHexString } from '../ethereumjs-util';
import { default as Transaction } from './legacyTransaction';
import { default as AccessListEIP2930Transaction } from './eip2930Transaction';
import { default as FeeMarketEIP1559Transaction } from './eip1559Transaction';
import { EOACodeEIP7702Transaction } from "./index";
export type AccessListItem = {
    address: PrefixedHexString;
    storageKeys: PrefixedHexString[];
};
export type AccessListBufferItem = [Buffer, Buffer[]];
export type AccessListBuffer = AccessListBufferItem[];
export type AccessList = AccessListItem[];
export type AccessListBytesItem = [Uint8Array, Uint8Array[]];
export type AccessListBytes = AccessListBytesItem[];
export declare function isAccessListBuffer(input: AccessListBuffer | AccessList): input is AccessListBuffer;
export declare function isAccessList(input: AccessListBuffer | AccessList): input is AccessList;
export declare function isAuthorizationListBytes(input: AuthorizationListBytes | AuthorizationList): input is AuthorizationListBytes;
export declare function isAuthorizationList(input: AuthorizationListBytes | AuthorizationList): input is AuthorizationList;
export type TypedTransaction = Transaction | AccessListEIP2930Transaction | FeeMarketEIP1559Transaction | EOACodeEIP7702Transaction;
export type TxData = {
    nonce?: BNLike;
    gasPrice?: BNLike;
    gasLimit?: BNLike;
    to?: AddressLike;
    value?: BNLike;
    data?: BufferLike;
    v?: BNLike;
    r?: BNLike;
    s?: BNLike;
    type?: BNLike;
    chainId?: BNLike;
};
export interface AccessListEIP2930TxData extends TxData {
    chainId?: BNLike;
    accessList?: AccessListBuffer | AccessList;
}
export interface FeeMarketEIP1559TxData extends AccessListEIP2930TxData {
    gasPrice?: never;
    maxPriorityFeePerGas?: BNLike;
    maxFeePerGas?: BNLike;
}
export type TxValuesArray = Buffer[];
export type AccessListEIP2930ValuesArray = [
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    AccessListBuffer,
    Buffer?,
    Buffer?,
    Buffer?
];
export type FeeMarketEIP1559ValuesArray = [
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    AccessListBuffer,
    Buffer?,
    Buffer?,
    Buffer?
];
export type EOACode7702TxValuesArray = [
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    Buffer,
    AccessListBuffer,
    AuthorizationListBytes,
    Buffer?,
    Buffer?,
    Buffer?
];
type JsonAccessListItem = {
    address: string;
    storageKeys: string[];
};
export interface JsonTx {
    nonce?: string;
    gasPrice?: string;
    gasLimit?: string;
    to?: string;
    data?: string;
    v?: string;
    r?: string;
    s?: string;
    value?: string;
    chainId?: string;
    accessList?: JsonAccessListItem[];
    authorizationList?: AuthorizationList;
    type?: string;
    maxPriorityFeePerGas?: string;
    maxFeePerGas?: string;
}
export interface EOACodeEIP7702TxData extends FeeMarketEIP1559TxData {
    authorizationList?: AuthorizationListBytes | AuthorizationList | never;
}
export type AuthorizationListItem = {
    chainId: PrefixedHexString;
    address: PrefixedHexString;
    nonce: PrefixedHexString;
    yParity: PrefixedHexString;
    r: PrefixedHexString;
    s: PrefixedHexString;
};
export type AuthorizationListBytesItem = [
    Uint8Array,
    Uint8Array,
    Uint8Array,
    Uint8Array,
    Uint8Array,
    Uint8Array
];
export type AuthorizationListBytes = AuthorizationListBytesItem[];
export type AuthorizationList = AuthorizationListItem[];
export {};
