-
Notifications
You must be signed in to change notification settings - Fork 0
/
air-script.d.ts
82 lines (69 loc) · 3.21 KB
/
air-script.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
declare module '@guildofweavers/air-script' {
// IMPORTS AND RE-EXPORTS
// --------------------------------------------------------------------------------------------
import { FiniteField } from '@guildofweavers/galois';
export { FiniteField } from '@guildofweavers/galois';
// INTERFACES
// --------------------------------------------------------------------------------------------
export interface StarkLimits {
maxSteps : number;
maxMutableRegisters : number;
maxReadonlyRegisters : number;
maxConstraintCount : number;
maxConstraintDegree : number;
maxExtensionFactor : number;
}
export interface AirObject {
readonly name : string;
readonly field : FiniteField;
readonly stateWidth : number;
readonly publicInputCount : number;
readonly secretInputCount : number;
readonly constraintCount : number;
readonly maxConstraintDegree : number;
readonly extensionFactor : number;
createContext(publicInputs: bigint[][]): VerificationContext;
createContext(publicInputs: bigint[][], secretInputs: bigint[][]): ProofContext;
generateExecutionTrace(initValues: bigint[], ctx: ProofContext): bigint[][];
evaluateExtendedTrace(extendedTrace: bigint[][], ctx: ProofContext): bigint[][];
evaluateConstraintsAt(x: bigint, rValues: bigint[], nValues: bigint[], sValues: bigint[], ctx: VerificationContext): bigint[];
}
export class AirScriptError {
readonly errors: any[];
constructor(errors: any[]);
}
// CONTEXTS
// --------------------------------------------------------------------------------------------
export interface EvaluationContext {
readonly field : FiniteField
readonly traceLength : number;
readonly extensionFactor : number;
readonly rootOfUnity : bigint;
readonly executionDomain? : bigint[];
readonly evaluationDomain? : bigint[];
}
export interface VerificationContext extends EvaluationContext {
readonly stateWidth : number;
readonly secretInputCount : number;
readonly publicInputCount : number;
readonly constraints : ConstraintSpecs[];
readonly kRegisters : ReadonlyRegister[];
readonly pRegisters : ReadonlyRegister[];
}
export interface ProofContext extends VerificationContext {
readonly sRegisters : ReadonlyRegister[];
readonly executionDomain : bigint[];
readonly evaluationDomain : bigint[];
}
export interface ReadonlyRegister {
getTraceValue(step: number): bigint;
getEvaluation(position: number): bigint;
getEvaluationAt(x: bigint): bigint;
}
export interface ConstraintSpecs {
degree : number;
}
// PUBLIC FUNCTIONS
// --------------------------------------------------------------------------------------------
export function parseScript(script: string, limits?: Partial<StarkLimits>, extensionFactor?: number): AirObject;
}