///
import { Address as EJS_Address } from "@ethereumjs/util";
import { ForkCache } from "./cache";
import { ForkTrie } from "./trie";
import { GanacheStateManager } from "../state-manager";
/**
* Options for constructing a [[GanacheStateManager]].
*/
export interface ForkStateManagerOpts {
/**
* An [`@ethereumjs/trie`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/trie) instance
*/
trie: ForkTrie;
/**
* Enables code hash prefixing, which is used by `ethereumjs/statemanager` to
* [distinguish between a contract deployed with code `0x80` and
* `RLP([])`](https://github.com/ethereumjs/ethereumjs-monorepo/blob/master/packages/statemanager/src/stateManager.ts#L40)
*/
prefixCodeHashes?: boolean;
}
/**
* Interface for getting and setting data from an underlying
* state trie.
*/
export declare class ForkStateManager extends GanacheStateManager {
_cache: ForkCache;
readonly prefixCodeHashes: boolean;
/**
* Instantiate the StateManager interface.
*/
constructor(opts: ForkStateManagerOpts);
/**
* Copies the current instance of the `StateManager`
* at the last fully committed point, i.e. as if all current
* checkpoints were reverted.
*/
copy(): ForkStateManager;
/**
* Creates a storage trie from the primary storage trie
* for an account and saves this in the storage cache.
* @private
*/
_lookupStorageTrie(address: EJS_Address): Promise;
/**
* Gets the storage value associated with the provided `address` and `key`.
* This method returns the shortest representation of the stored value.
* @param address - Address of the account to get the storage for
* @param key - Key in the account's storage to get the value for. Must be 32
* bytes long.
* @returns {Promise} - The storage value for the account
* corresponding to the provided address at the provided key. If this does not
* exist an empty `Buffer` is returned.
*/
getContractStorage(address: EJS_Address, key: Buffer): Promise;
}
//# sourceMappingURL=state-manager.d.ts.map