o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
750 lines • 64.7 kB
TypeScript
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<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<import("../../../provable/field.js").Field[]>;
}>>): MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>;
create<T>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T>>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): typeof MerkleListIterator<T> & {
from: (array: T[]) => MerkleListIterator<T>;
startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase<T>) => MerkleListIterator<T>;
startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase<T>) => MerkleListIterator<T>;
empty: () => MerkleListIterator<T>;
provable: import("../../../../index.js").ProvableHashable<MerkleListIterator<T>>;
};
createFromList<T_1>(merkleList: {
new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase<T_1>): MerkleList<T_1>;
create<T_2>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T_2>>, 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<T_2>): MerkleList<T_2>;
create<T_2>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T_2>>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): any & {
empty: () => MerkleList<T_2>;
from: (array: T_2[]) => MerkleList<T_2>;
fromReverse: (array: T_2[]) => MerkleList<T_2>;
provable: import("../../../../index.js").ProvableHashable<MerkleList<T_2>>;
};
_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<MerkleList<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | undefined;
readonly emptyHash: import("../../../provable/field.js").Field;
} & {
empty: () => MerkleList<T_2>;
from: (array: T_2[]) => MerkleList<T_2>;
fromReverse: (array: T_2[]) => MerkleList<T_2>;
provable: import("../../../../index.js").ProvableHashable<MerkleList<T_2>>;
};
_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<MerkleList<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | undefined;
readonly emptyHash: import("../../../provable/field.js").Field;
}): {
new (value: import("../../../provable/merkle-list.js").MerkleListIteratorBase<T_1>): MerkleListIterator<T_1>;
create<T>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T>>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): typeof MerkleListIterator<T> & {
from: (array: T[]) => MerkleListIterator<T>;
startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase<T>) => MerkleListIterator<T>;
startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase<T>) => MerkleListIterator<T>;
empty: () => MerkleListIterator<T>;
provable: import("../../../../index.js").ProvableHashable<MerkleListIterator<T>>;
};
createFromList<T_1>(merkleList: {
new ({ hash, data }: import("../../../provable/merkle-list.js").MerkleListBase<T_1>): MerkleList<T_1>;
create<T_2>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T_2>>, 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<T_2>): MerkleList<T_2>;
create<T_2>(type: import("../../../provable/types/provable-intf.js").WithProvable<import("../../../../index.js").ProvableHashable<T_2>>, nextHash?: (hash: import("../../../provable/field.js").Field, value: T_2) => import("../../../provable/field.js").Field, emptyHash_?: import("../../../provable/field.js").Field): any & {
empty: () => MerkleList<T_2>;
from: (array: T_2[]) => MerkleList<T_2>;
fromReverse: (array: T_2[]) => MerkleList<T_2>;
provable: import("../../../../index.js").ProvableHashable<MerkleList<T_2>>;
};
_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<MerkleList<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | undefined;
readonly emptyHash: import("../../../provable/field.js").Field;
} & {
empty: () => MerkleList<T_2>;
from: (array: T_2[]) => MerkleList<T_2>;
fromReverse: (array: T_2[]) => MerkleList<T_2>;
provable: import("../../../../index.js").ProvableHashable<MerkleList<T_2>>;
};
_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<MerkleList<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | undefined;
readonly emptyHash: import("../../../provable/field.js").Field;
}): any & {
from: (array: T_1[]) => MerkleListIterator<T_1>;
startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase<T_1>) => MerkleListIterator<T_1>;
startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase<T_1>) => MerkleListIterator<T_1>;
empty: () => MerkleListIterator<T_1>;
provable: import("../../../../index.js").ProvableHashable<MerkleListIterator<T_1>>;
};
_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<MerkleListIterator<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | undefined;
readonly emptyHash: import("../../../provable/field.js").Field;
} & {
from: (array: T_1[]) => MerkleListIterator<T_1>;
startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase<T_1>) => MerkleListIterator<T_1>;
startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase<T_1>) => MerkleListIterator<T_1>;
empty: () => MerkleListIterator<T_1>;
provable: import("../../../../index.js").ProvableHashable<MerkleListIterator<T_1>>;
};
_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<MerkleListIterator<any>> | undefined;
_innerProvable: import("../../../../index.js").ProvableHashable<any> | 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<import("../../../provable/field.js").Field[]>;
}>[]) => MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>;
startIterating: (list: import("../../../provable/merkle-list.js").MerkleListBase<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<import("../../../provable/field.js").Field[]>;
}>>) => MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>;
startIteratingFromLast: (list: import("../../../provable/merkle-list.js").MerkleListBase<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<import("../../../provable/field.js").Field[]>;
}>>) => MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>;
empty: () => MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>;
provable: import("../../../../index.js").ProvableHashable<MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>>;
};
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<import("../../../provable/types/provable-intf.js").Provable<{
root: import("../../../provable/field.js").Field;
length: import("../../../provable/field.js").Field;
actionState: import("../../../provable/field.js").Field;
}, {
root: bigint;
length: bigint;
actionState: bigint;
}>, "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<OffchainStateCommitments, OffchainStateCommitments>;
fromJSON<S extends import("../../../util/types.js").Subclass<typeof Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("../../../proof-system/zkprogram.js").JsonProof): Promise<Proof<import("../../../provable/types/provable-derivers.js").InferProvable<S["publicInputType"]>, import("../../../provable/types/provable-derivers.js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: Proof<any, any>) => import("../../../provable/field.js").Field[];
toAuxiliary: (value?: Proof<any, any> | undefined) => any[];
fromFields: (fields: import("../../../provable/field.js").Field[], aux: any[]) => Proof<any, any>;
sizeInFields(): number;
check: (value: Proof<any, any>) => void;
toValue: (x: Proof<any, any>) => import("../../../proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: Proof<any, any> | import("../../../proof-system/proof.js").ProofValue<any, any>) => Proof<any, any>;
toCanonical?: ((x: Proof<any, any>) => Proof<any, any>) | undefined;
};
publicInputType: import("../../../provable/types/struct.js").FlexibleProvable<any>;
publicOutputType: import("../../../provable/types/struct.js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("../../../proof-system/proof.js").ProofBase<any, any>): {
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<OffchainStateCommitments, OffchainStateCommitments>) => Promise<boolean>;
digest: () => Promise<string>;
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<K extends "firstBatch" | "nextBatch">(methodName: K): Promise<import("../../../provable/core/provable-context.js").ConstraintSystemSummary & {
proofs: import("../../../proof-system/proof.js").ProofClass[];
}>;
publicInputType: typeof OffchainStateCommitments;
publicOutputType: typeof OffchainStateCommitments;
privateInputTypes: {
firstBatch: [typeof ActionIterator, {
new (): {
root: 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;
}[];
}>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<number>, 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<IndexedMerkleMapBase, {
root: bigint;
length: bigint;
data: {
nodes: (bigint | undefined)[][];
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 (): {
root: 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;
}[];
}>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<number>, 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<IndexedMerkleMapBase, {
root: bigint;
length: bigint;
data: {
nodes: (bigint | undefined)[][];
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 (): {
root: 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;
}[];
}>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<number>, 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<IndexedMerkleMapBase, {
root: bigint;
length: bigint;
data: {
nodes: (bigint | undefined)[][];
sortedLeaves: {
readonly value: bigint;
readonly key: bigint;
readonly nextKey: bigint;
readonly index: number;
}[];
};
}>;
_firstLeaf: {
key: bigint;
value: bigint;
nextKey: bigint;
index: number;
};
};
nextBatch: {
new (): {
root: 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;
}[];
}>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<import("../../../provable/field.js").Field, bigint>;
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<number>, 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<IndexedMerkleMapBase, {
root: bigint;
length: bigint;
data: {
nodes: (bigint | undefined)[][];
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<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<import("../../../provable/field.js").Field[]>;
}>>, args_1: IndexedMerkleMapBase) => Promise<{
publicOutput: OffchainStateCommitments;
auxiliaryOutput: IndexedMerkleMapBase;
}>;
nextBatch: (publicInput: OffchainStateCommitments, args_0: MerkleListIterator<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<import("../../../provable/field.js").Field[]>;
}>>, args_1: IndexedMerkleMapBase, args_2: SelfProof<unknown, unknown>) => Promise<{
publicOutput: OffchainStateCommitments;
auxiliaryOutput: IndexedMerkleMapBase;
}>;
};
Proof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: OffchainStateCommitments;
publicOutput: OffchainStateCommitments;
maxProofsVerified: 0 | 2 | 1;
}): Proof<OffchainStateCommitments, OffchainStateCommitments>;
fromJSON<S extends import("../../../util/types.js").Subclass<typeof Proof>>(this: S, { maxProofsVerifie