import { PrimitiveStringP8N } from '@sage-js/core'; import { OSI, ClassDefinition } from '@sage-js/res-osi'; import { SymbolToIndex } from '../../types'; import { ASTNodeFile } from '../../ast/node/file'; import { ASTNodeStatementBlock } from '../../ast/node/statement/block'; import { AssemblyAssembler } from './class'; /** * AssemblyAssemblerStructured constructor. */ export declare class AssemblyAssemblerStructured extends AssemblyAssembler { constructor(); /** * Assemble AST to OSI. * * @param ast AST file. * @returns OSI instance. */ assemble(ast: ASTNodeFile): OSI; /** * Assemble AST to OSI. * * @param asts AST files. * @returns OSI instance. */ assembles(asts: ASTNodeFile[]): OSI; /** * Assemble structured function AST blocks into OSI. * * @param asts AST blocks. * @param osi OSI instance. */ assembleStructuredFunctions(asts: ASTNodeStatementBlock[], osi: OSI): void; /** * Assemble structured function AST block into table. * * @param ast AST block. * @param osi OSI instance. */ assembleStructuredFunction(ast: ASTNodeStatementBlock, osi: OSI): void; /** * Assemble structured class AST blocks into OSI. * * @param asts AST blocks. * @param osi OSI instance. */ assembleStructuredClasses(asts: ASTNodeStatementBlock[], osi: OSI): void; /** * Assemble structured class AST block into table. * * @param ast AST block. * @param osi OSI instance. * @param symbolToIndex Get symbol or add. * @returns The entend, name, and class structure. */ assembleStructuredClass(ast: ASTNodeStatementBlock, osi: OSI, symbolToIndex: SymbolToIndex): { extend: PrimitiveStringP8N | null; name: PrimitiveStringP8N; structure: ClassDefinition; }; /** * Assemble structured class method AST block into definition. * * @param ast AST block. * @param osi OSI instance. * @param classDefinition Definition instance. * @param symbolToIndex Get symbol or add. */ assembleStructuredClassMethod(ast: ASTNodeStatementBlock, osi: OSI, classDefinition: ClassDefinition, symbolToIndex: SymbolToIndex): void; /** * Assemble structured subroutine AST blocks into OSI. * * @param asts AST blocks. * @param osi OSI instance. */ assembleStructuredSubroutines(asts: ASTNodeStatementBlock[], osi: OSI): void; /** * Assemble structured subroutine AST block into table. * * @param ast AST block. * @param osi OSI instance. */ assembleStructuredSubroutine(ast: ASTNodeStatementBlock, osi: OSI): void; }