export declare namespace $ast {
    type SourceFile = {
        readonly $: "SourceFile";
        readonly include: IncludeDirective | undefined;
        readonly program: Program;
    };
    type IncludeDirective = {
        readonly $: "IncludeDirective";
        readonly path: string;
    };
    type Program = {
        readonly $: "Program";
        readonly declarations: readonly Declaration[];
        readonly definitions: readonly Definition[];
    };
    type Declaration = {
        readonly $: "Declaration";
        readonly decl: ProcDeclaration | MethodDeclaration | GlobalVar;
    };
    type ProcDeclaration = {
        readonly $: "ProcDeclaration";
        readonly name: Identifier;
    };
    type MethodDeclaration = {
        readonly $: "MethodDeclaration";
        readonly method_id: Integer;
        readonly name: Identifier;
    };
    type GlobalVar = {
        readonly $: "GlobalVar";
        readonly name: Identifier;
    };
    type Definition = {
        readonly $: "Definition";
        readonly def: ProcDefinition | ProcInlineDefinition | ProcRefDefinition | MethodDefinition;
    };
    type ProcDefinition = {
        readonly $: "ProcDefinition";
        readonly name: Identifier;
        readonly instructions: readonly Instruction[];
    };
    type ProcInlineDefinition = {
        readonly $: "ProcInlineDefinition";
        readonly name: Identifier;
        readonly instructions: readonly Instruction[];
    };
    type ProcRefDefinition = {
        readonly $: "ProcRefDefinition";
        readonly name: Identifier;
        readonly instructions: readonly Instruction[];
    };
    type MethodDefinition = {
        readonly $: "MethodDefinition";
        readonly name: Identifier;
        readonly instructions: readonly Instruction[];
    };
    type Instruction = {
        readonly $: "Instruction";
        readonly instr: IfStatement | IfjmpStatement | WhileStatement | RepeatStatement | UntilStatement | AsmExpression;
    };
    type AsmExpression = {
        readonly $: "AsmExpression";
        readonly arguments: AsmArgumentList | undefined;
        readonly name: TvmInstruction;
    };
    type AsmArgumentList = {
        readonly $: "AsmArgumentList";
        readonly primitives: readonly AsmPrimitive[];
    };
    type AsmPrimitive = {
        readonly $: "AsmPrimitive";
        readonly prim: InstructionBlock | String | HexBitString | BinBitString | BocHex | StackRegister | ControlRegister | Integer | ArgIdentifier | FiftAddressNone;
    };
    type IfStatement = {
        readonly $: "IfStatement";
        readonly kind: "IF:<{" | "IFNOT:<{";
        readonly instructions: readonly Instruction[];
        readonly else_block: {
            readonly instructions: readonly Instruction[];
        } | undefined;
    };
    type IfjmpStatement = {
        readonly $: "IfjmpStatement";
        readonly kind: "IFJMP:<{" | "IFNOTJMP:<{";
        readonly instructions: readonly Instruction[];
    };
    type WhileStatement = {
        readonly $: "WhileStatement";
        readonly condition: readonly Instruction[];
        readonly body: readonly Instruction[];
    };
    type RepeatStatement = {
        readonly $: "RepeatStatement";
        readonly instructions: readonly Instruction[];
    };
    type UntilStatement = {
        readonly $: "UntilStatement";
        readonly instructions: readonly Instruction[];
    };
    type InstructionBlock = {
        readonly $: "InstructionBlock";
        readonly instructions: readonly Instruction[];
    };
    type HexBitString = {
        readonly $: "HexBitString";
        readonly content: string;
    };
    type BinBitString = {
        readonly $: "BinBitString";
        readonly content: string;
    };
    type FiftAddressNone = {
        readonly $: "FiftAddressNone";
    };
    type BocHex = {
        readonly $: "BocHex";
        readonly content: string;
    };
    type Identifier = {
        readonly $: "Identifier";
        readonly name: string;
    };
    type ArgIdentifier = {
        readonly $: "ArgIdentifier";
        readonly name: string;
    };
    type TvmInstruction = {
        readonly $: "TvmInstruction";
        readonly value: string;
    };
    type Integer = {
        readonly $: "Integer";
        readonly value: string;
    };
    type StackRegister = {
        readonly $: "StackRegister";
        readonly value: string;
    };
    type ControlRegister = {
        readonly $: "ControlRegister";
        readonly value: string;
    };
    type String = {
        readonly $: "String";
        readonly content: string;
    };
}
//# sourceMappingURL=grammar.d.ts.map