import { Proof } from '../../../proof-system/proof.js'; import { MerkleList, MerkleListIterator } from '../../../provable/merkle-list.js'; import { IndexedMerkleMapBase } from '../../../provable/merkle-tree-indexed.js'; import { SelfProof } from '../../../proof-system/zkprogram.js'; import { Provable } from '../../../provable/provable.js'; import { MerkleLeaf } from './offchain-state-serialization.js'; import { Cache } from '../../../../lib/proof-system/cache.js'; export { OffchainStateRollup, OffchainStateCommitments }; declare const ActionIterator_base: { new (value: import("../../../provable/merkle-list.js").MerkleListIteratorBase; }>>): MerkleListIterator; }>>; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): typeof MerkleListIterator & { from: (array: T[]) => MerkleListIterator; startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; empty: () => MerkleListIterator; provable: import("../../../../index.js").ProvableHashable>; }; createFromList(merkleList: { new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase): MerkleList; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): { new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase): MerkleList; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): any & { empty: () => MerkleList; from: (array: T_2[]) => MerkleList; fromReverse: (array: T_2[]) => MerkleList; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, t: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; } & { empty: () => MerkleList; from: (array: T_2[]) => MerkleList; fromReverse: (array: T_2[]) => MerkleList; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, t: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; }): { new (value: import("../../../provable/merkle-list.js").MerkleListIteratorBase): MerkleListIterator; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): typeof MerkleListIterator & { from: (array: T[]) => MerkleListIterator; startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; empty: () => MerkleListIterator; provable: import("../../../../index.js").ProvableHashable>; }; createFromList(merkleList: { new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase): MerkleList; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): { new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase): MerkleList; create(type: import("../../../provable/types/provable-intf.js").WithProvable>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): any & { empty: () => MerkleList; from: (array: T_2[]) => MerkleList; fromReverse: (array: T_2[]) => MerkleList; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, t: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; } & { empty: () => MerkleList; from: (array: T_2[]) => MerkleList; fromReverse: (array: T_2[]) => MerkleList; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, t: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; }): any & { from: (array: T_1[]) => MerkleListIterator; startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; empty: () => MerkleListIterator; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, value: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; } & { from: (array: T_1[]) => MerkleListIterator; startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase) => MerkleListIterator; empty: () => MerkleListIterator; provable: import("../../../../index.js").ProvableHashable>; }; _nextHash: ((hash: import("../../../provable/field.js").Field, value: any) => import("../../../provable/field.js").Field) | undefined; _emptyHash: import("../../../provable/field.js").Field | undefined; _provable: import("../../../../index.js").ProvableHashable> | undefined; _innerProvable: import("../../../../index.js").ProvableHashable | undefined; readonly emptyHash: import("../../../provable/field.js").Field; } & { from: (array: MerkleList<{ key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; usesPreviousValue: import("../../../provable/bool.js").Bool; previousValue: import("../../../provable/field.js").Field; prefix: import("../../../../index.js").Unconstrained; }>[]) => MerkleListIterator; }>>; startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase; }>>) => MerkleListIterator; }>>; startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase; }>>) => MerkleListIterator; }>>; empty: () => MerkleListIterator; }>>; provable: import("../../../../index.js").ProvableHashable; }>>>; }; declare class ActionIterator extends ActionIterator_base { } declare const OffchainStateCommitments_base: (new (value: { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }) => { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }) & { _isStruct: true; } & Omit, "fromFields"> & { fromFields: (fields: import("../../../provable/field.js").Field[]) => { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }; } & { fromValue: (value: { root: string | number | bigint | import("../../../provable/field.js").Field; length: string | number | bigint | import("../../../provable/field.js").Field; actionState: string | number | bigint | import("../../../provable/field.js").Field; }) => { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }; toInput: (x: { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }) => { fields?: import("../../../provable/field.js").Field[] | undefined; packed?: [import("../../../provable/field.js").Field, number][] | undefined; }; toJSON: (x: { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }) => { root: string; length: string; actionState: string; }; fromJSON: (x: { root: string; length: string; actionState: string; }) => { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }; empty: () => { root: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; actionState: import("../../../provable/field.js").Field; }; }; /** * Commitments that keep track of the current state of an offchain Merkle tree constructed from actions. * Intended to be stored on-chain. * * Fields: * - `root`: The root of the current Merkle tree * - `length`: The number of elements in the current Merkle tree * - `actionState`: The hash pointing to the list of actions that have been applied to form the current Merkle tree */ declare class OffchainStateCommitments extends OffchainStateCommitments_base { static emptyFromHeight(height: number): OffchainStateCommitments; } /** * This program represents a proof that we can go from OffchainStateCommitments A -> B */ declare function OffchainStateRollup({ /** * the constraints used in one batch proof with a height-31 tree are: * * 1967*A + 87*A*U + 2 * * where A = maxActionsPerProof and U = maxActionsPerUpdate. * * To determine defaults, we set U=4 which should cover most use cases while ensuring * that the main loop which is independent of U dominates. * * Targeting ~50k constraints, to leave room for recursive verification, yields A=22. */ maxActionsPerProof, maxActionsPerUpdate, logTotalCapacity, }?: { maxActionsPerProof?: number | undefined; maxActionsPerUpdate?: number | undefined; logTotalCapacity?: number | undefined; }): { Proof: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: unknown; publicInput: OffchainStateCommitments; publicOutput: OffchainStateCommitments; maxProofsVerified: 0 | 2 | 1; }): Proof; fromJSON>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("../../../proof-system/zkprogram.js").JsonProof): Promise, import("../../../provable/types/provable-derivers.js").InferProvable>>; dummy(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise>; readonly provable: { toFields: (value: Proof) => import("../../../provable/field.js").Field[]; toAuxiliary: (value?: Proof | undefined) => any[]; fromFields: (fields: import("../../../provable/field.js").Field[], aux: any[]) => Proof; sizeInFields(): number; check: (value: Proof) => void; toValue: (x: Proof) => import("../../../proof-system/proof.js").ProofValue; fromValue: (x: Proof | import("../../../proof-system/proof.js").ProofValue) => Proof; toCanonical?: ((x: Proof) => Proof) | undefined; }; publicInputType: import("../../../provable/types/struct.js").FlexibleProvable; publicOutputType: import("../../../provable/types/struct.js").FlexibleProvable; tag: () => { name: string; }; publicFields(value: import("../../../proof-system/proof.js").ProofBase): { input: import("../../../provable/field.js").Field[]; output: import("../../../provable/field.js").Field[]; }; _proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown; _proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string; }; program: { name: string; maxProofsVerified(): Promise<0 | 2 | 1>; compile: (options?: { cache?: Cache | undefined; forceRecompile?: boolean | undefined; proofsEnabled?: boolean | undefined; withRuntimeTables?: boolean | undefined; numChunks?: number | undefined; lazyMode?: boolean | undefined; } | undefined) => Promise<{ verificationKey: { data: string; hash: import("../../../provable/field.js").Field; }; }>; verify: (proof: Proof) => Promise; digest: () => Promise; analyzeMethods: () => Promise<{ firstBatch: import("../../../provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("../../../proof-system/proof.js").ProofClass[]; }; nextBatch: import("../../../provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("../../../proof-system/proof.js").ProofClass[]; }; }>; analyzeSingleMethod(methodName: K): Promise; publicInputType: typeof OffchainStateCommitments; publicOutputType: typeof OffchainStateCommitments; privateInputTypes: { firstBatch: [typeof ActionIterator, { new (): { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }; provable: Provable B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }>; _firstLeaf: { key: bigint; value: bigint; nextKey: bigint; index: number; }; }]; nextBatch: [typeof ActionIterator, { new (): { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }; provable: Provable B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }>; _firstLeaf: { key: bigint; value: bigint; nextKey: bigint; index: number; }; }, typeof SelfProof]; }; auxiliaryOutputTypes: { firstBatch: { new (): { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }; provable: Provable B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }>; _firstLeaf: { key: bigint; value: bigint; nextKey: bigint; index: number; }; }; nextBatch: { new (): { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }; provable: Provable B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }>; _firstLeaf: { key: bigint; value: bigint; nextKey: bigint; index: number; }; }; }; rawMethods: { firstBatch: (publicInput: OffchainStateCommitments, args_0: MerkleListIterator; }>>, args_1: IndexedMerkleMapBase) => Promise<{ publicOutput: OffchainStateCommitments; auxiliaryOutput: IndexedMerkleMapBase; }>; nextBatch: (publicInput: OffchainStateCommitments, args_0: MerkleListIterator; }>>, args_1: IndexedMerkleMapBase, args_2: SelfProof) => Promise<{ publicOutput: OffchainStateCommitments; auxiliaryOutput: IndexedMerkleMapBase; }>; }; Proof: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: unknown; publicInput: OffchainStateCommitments; publicOutput: OffchainStateCommitments; maxProofsVerified: 0 | 2 | 1; }): Proof; fromJSON>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("../../../proof-system/zkprogram.js").JsonProof): Promise, import("../../../provable/types/provable-derivers.js").InferProvable>>; dummy(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise>; readonly provable: { toFields: (value: Proof) => import("../../../provable/field.js").Field[]; toAuxiliary: (value?: Proof | undefined) => any[]; fromFields: (fields: import("../../../provable/field.js").Field[], aux: any[]) => Proof; sizeInFields(): number; check: (value: Proof) => void; toValue: (x: Proof) => import("../../../proof-system/proof.js").ProofValue; fromValue: (x: Proof | import("../../../proof-system/proof.js").ProofValue) => Proof; toCanonical?: ((x: Proof) => Proof) | undefined; }; publicInputType: import("../../../provable/types/struct.js").FlexibleProvable; publicOutputType: import("../../../provable/types/struct.js").FlexibleProvable; tag: () => { name: string; }; publicFields(value: import("../../../proof-system/proof.js").ProofBase): { input: import("../../../provable/field.js").Field[]; output: import("../../../provable/field.js").Field[]; }; _proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown; _proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string; }; proofsEnabled: boolean; setProofsEnabled(proofsEnabled: boolean): void; } & { firstBatch: (publicInput: OffchainStateCommitments | { root: string | number | bigint | import("../../../provable/field.js").Field; length: string | number | bigint | import("../../../provable/field.js").Field; actionState: string | number | bigint | import("../../../provable/field.js").Field; }, args_0: any, args_1: IndexedMerkleMapBase | { _internalRoot: bigint; length: bigint; data: { nodes: (bigint | undefined)[][]; /** * Common logic for the proof that we can go from OffchainStateCommitments A -> B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }) => Promise<{ proof: Proof; auxiliaryOutput: IndexedMerkleMapBase; }>; nextBatch: (publicInput: OffchainStateCommitments | { root: string | number | bigint | import("../../../provable/field.js").Field; length: string | number | bigint | import("../../../provable/field.js").Field; actionState: string | number | bigint | import("../../../provable/field.js").Field; }, args_0: any, args_1: IndexedMerkleMapBase | { _internalRoot: bigint; length: bigint; data: { nodes: (bigint | undefined)[][]; /** * Common logic for the proof that we can go from OffchainStateCommitments A -> B */ sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }; }, args_2: Proof | import("../../../proof-system/proof.js").ProofValue) => Promise<{ proof: Proof; auxiliaryOutput: IndexedMerkleMapBase; }>; }; compile(options?: { cache?: Cache; forceRecompile?: boolean; proofsEnabled?: boolean; }): Promise<{ verificationKey: { data: string; hash: import("../../../provable/field.js").Field; }; } | undefined>; prove(tree: { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }, actions: MerkleList>): Promise<{ proof: Proof; tree: { _internalRoot: import("../../../provable/field.js").Field; length: import("../../../provable/field.js").Field; readonly height: number; readonly data: import("../../../../index.js").Unconstrained<{ readonly nodes: (bigint | undefined)[][]; readonly sortedLeaves: { readonly value: bigint; readonly key: bigint; readonly nextKey: bigint; readonly index: number; }[]; }>; readonly root: import("../../../provable/field.js").Field; clone(): IndexedMerkleMapBase; overwrite(other: IndexedMerkleMapBase): void; overwriteIf(condition: boolean | import("../../../provable/bool.js").Bool, other: IndexedMerkleMapBase): void; insert(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): void; update(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; set(key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; setIf(condition: boolean | import("../../../provable/bool.js").Bool, key: bigint | import("../../../provable/field.js").Field, value: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; get(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/field.js").Field; getOption(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/option.js").Option; assertIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; assertNotIncluded(key: bigint | import("../../../provable/field.js").Field, message?: string | undefined): void; isIncluded(key: bigint | import("../../../provable/field.js").Field): import("../../../provable/bool.js").Bool; _proveInclusion(leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionIf(condition: import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf, message?: string | undefined): void; _proveEmpty(index: import("../../../provable/bool.js").Bool[]): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveInclusionOrEmpty(condition: import("../../../provable/bool.js").Bool, index: import("../../../provable/bool.js").Bool[], leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, message?: string | undefined): { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; _proveUpdate(leaf: { key: import("../../../provable/field.js").Field; value: import("../../../provable/field.js").Field; nextKey: import("../../../provable/field.js").Field; }, path: { index: import("../../../provable/bool.js").Bool[]; witness: import("../../../provable/field.js").Field[]; }): import("../../../provable/field.js").Field; _computeRoot(node: import("../../../provable/field.js").Field, index: import("../../../provable/bool.js").Bool[] | import("../../../../index.js").Unconstrained, witness?: import("../../../provable/field.js").Field[] | undefined): { root: import("../../../provable/field.js").Field; path: { witness: import("../../../provable/field.js").Field[]; index: import("../../../provable/bool.js").Bool[]; }; }; _findLeaf(key_: bigint | import("../../../provable/field.js").Field): { low: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; self: { value: bigint; key: bigint; nextKey: bigint; index: number; sortedIndex: number; }; }; _setLeafUnconstrained(leafExists: boolean | import("../../../provable/bool.js").Bool, leaf: import("../../../provable/merkle-tree-indexed.js").Leaf): void; }; nProofs: number; }>; };