import { Block } from '@polyaztec/barretenberg/block_source';
import { Pedersen } from '@polyaztec/barretenberg/crypto';
import { RollupProofData } from '@polyaztec/barretenberg/rollup_proof';
/**
 * Block Context is designed to wrap a block received from the rollup provider
 * and percolate through the sdk, existing for the duration that the block is 'processed'.
 * It provides an opportunity for 'once per block' caching/optimsation across all entities interested in the block
 * Requires mutex protection due to the concurrent nature of user states
 */
export declare class BlockContext {
    block: Block;
    rollup: RollupProofData;
    private pedersen;
    private mutex;
    private subtree?;
    private startIndex?;
    constructor(block: Block, rollup: RollupProofData, pedersen: Pedersen);
    static fromBlock(block: Block, pedersen: Pedersen): BlockContext;
    /**
     * Provides the hash path at the given index of the block's immutable sub-tree
     * Will validate that the index provided is within the range encapsulated by the sub-tree
     * Lazy initialises the sub-tree from the rollup's input notes so the tree is built
     * at most once
     */
    getBlockSubtreeHashPath(index: number): Promise<import("@polyaztec/barretenberg/merkle_tree").HashPath>;
}
//# sourceMappingURL=block_context.d.ts.map