UNPKG

mina-attestations

Version:
705 lines 704 kB
import { Bytes, Field, Provable, UInt32, UInt64, UInt8 } from 'o1js'; import { DynamicArray } from './dynamic-array.ts'; import { StaticArray } from './static-array.ts'; import { ProvableType } from '../o1js-missing.ts'; import type { Constructor } from '../types.ts'; export { DynamicSHA2, Sha2IterationState, Sha2Iteration, Sha2FinalIteration, State32, State64, Block32, Block64, Bytes28, Bytes32, Bytes48, Bytes64, }; declare const DynamicSHA2: { /** * Hash a dynamic-length byte array using different variants of SHA2. * * The first argument is the output length in bits (224, 256, 384, or 512). * * The input type `DynamicArray<UInt8>` is compatible with both `DynamicString` and `DynamicBytes`: * * ```ts * // using DynamicString * const String = DynamicString({ maxLength: 120 }); * let string = String.from('hello'); * let hash = DynamicSHA2.hash(256, string); * * // using DynamicBytes * const Bytes = DynamicBytes({ maxLength: 120 }); * let bytes = Bytes.fromHex('010203'); * let hash = DynamicSHA2.hash(256, bytes); * ``` */ hash: typeof sha2; /** * `DynamicSHA2.split()` is the first part of a more flexible API which allows to split proving a SHA2 hash over multiple proofs. * * Input arguments: * - `len`: the output length in bits (224, 256, 384, or 512) * - `blocksPerIteration`: how many SHA2 blocks (64-128 bytes) to process in each proof/iteration. Reasonable values are 2-8. * - `bytes`: the input bytes to hash * * `split()` is called **outside provable code** and prepares the inputs to the different proofs: * - `initial`: the initial "state" of the iteration (which is independent of the string to be hashed, and also returned by `Sha2IterationState.initial()`) * - `iterations`: a sequence of chunks (several blocks each) of the input string, to be passed to `update()` * - `final`: the last chunk of the input string, to be passed to `finalize()` * * Gist of how to use `split()`, `update()`, and `finalize()`: * ```ts * // outside the circuit: * const BLOCKS_PER_ITERATION = 6; * let { initial, iterations, final } = DynamicSHA2.split(256, BLOCKS_PER_ITERATION, bytes); * * // inside "update" circuit, for every iteration: * state = DynamicSHA2.update(initial, iterations[0]); * // OR * state = DynamicSHA2.update(state, iterations[i]); * * // inside "finalize" circuit: * let hash = DynamicSHA2.finalize(state, final, bytes); * ``` */ split: typeof split; /** * `update()` is the second part of the API for splitting a SHA2 hash proof. * * It takes the current `Sha2IterationState` and a `Sha2Iteration` (a chunk of blocks to be hashed) and returns the updated state. * * See `split()` for additional details. */ update: typeof update; /** * `finalize()` is the last part of the API for splitting a SHA2 hash proof. * * It takes the current `Sha2IterationState`, a `Sha2FinalIteration`, and the original input bytes, and returns the hash. * Since the `Sha2IterationState` contains a commitment to the previous blocks that were hashed, calling `finalize()` is able * to prove that the same input bytes were hashed across multiple iterations. Thus, after calling it you are able to use * the same input bytes in further statements. * * See `split()` for additional details. */ finalize: typeof finalize; padding256: typeof padding256; padding512: typeof padding512; commitBlock256: typeof commitBlock256; commitBlock512: typeof commitBlock512; hashBlock256: typeof hashBlock256; hashBlock512: typeof hashBlock512; initialState256: (l: 224 | 256) => { array: UInt32[]; readonly innerType: Provable<UInt32, bigint>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): UInt32; getOption(i: UInt32 | number): import("o1js").Option<UInt32>; getOrUnconstrained(i: Field): UInt32; set(i: UInt32 | number, value: UInt32): void; setOrDoNothing(i: Field, value: UInt32): void; map<S>(type: ProvableType<S>, f: (t: UInt32, i: number) => S): StaticArray<S, any>; forEach(f: (t: UInt32, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: UInt32) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): /*elided*/ any; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[]; [Symbol.iterator](): Generator<UInt32, void, unknown>; }; initialState512: (l: 384 | 512) => { array: UInt64[]; readonly innerType: Provable<UInt64, bigint>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): UInt64; getOption(i: UInt32 | number): import("o1js").Option<UInt64>; getOrUnconstrained(i: Field): UInt64; set(i: UInt32 | number, value: UInt64): void; setOrDoNothing(i: Field, value: UInt64): void; map<S>(type: ProvableType<S>, f: (t: UInt64, i: number) => S): StaticArray<S, any>; forEach(f: (t: UInt64, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: UInt64) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): /*elided*/ any; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[][]; [Symbol.iterator](): Generator</*elided*/ any, void, unknown>; }; toReversed(): /*elided*/ any; slice(start: number, end: number): /*elided*/ any; _indexMasks: Map<Field, import("o1js").Bool[]>; _indicesInRange: Set<Field>; _indexMask(i: Field): import("node_modules/o1js/dist/node/lib/provable/bool.js").Bool[]; toValue(): bigint[]; [Symbol.iterator](): Generator<UInt64, void, unknown>; }; }; declare function sha2(len: 224 | 256 | 384 | 512, bytes: DynamicArray<UInt8>): Bytes; type Length = 224 | 256 | 384 | 512; declare const Block32_base: { new (array: UInt32[]): { array: UInt32[]; readonly innerType: Provable<UInt32, bigint>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): UInt32; getOption(i: UInt32 | number): import("o1js").Option<UInt32>; getOrUnconstrained(i: Field): UInt32; set(i: UInt32 | number, value: UInt32): void; setOrDoNothing(i: Field, value: UInt32): void; map<S>(type: ProvableType<S>, f: (t: UInt32, i: number) => S): StaticArray<S, any>; forEach(f: (t: UInt32, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: UInt32) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import("o1js").Option</*elided*/ any>; getOrUnconstrained(i: Field): /*elided*/ any; set(i: UInt32 | number, value: /*elided*/ any): void; setOrDoNothing(i: Field, value: /*elided*/ any): void; map<S>(type: ProvableType<S>, f: (t: /*elided*/ any, i: number) => S): StaticArray<S, any>; forEach(f: (t: /*elided*/ any, i: number) => void): void; reduce<S>(state: S, f: (state: S, t: /*elided*/ any) => S): S; chunk(chunkSize: number): { array: /*elided*/ any[]; readonly innerType: Provable</*elided*/ any, bigint[][][][][][][][][]>; readonly length: number; readonly maxLength: number; assertIndexInRange(i: UInt32 | number): void; get(i: UInt32 | number): /*elided*/ any; getOption(i: UInt32 | number): import