import { ASTNode, ASTNodeConstructor } from "./ast_node"; import { ASTContext, ASTPostprocessor } from "./ast_reader"; import { ContractDefinition } from "./implementation/declaration/contract_definition"; import { EnumDefinition } from "./implementation/declaration/enum_definition"; import { EnumValue } from "./implementation/declaration/enum_value"; import { ErrorDefinition } from "./implementation/declaration/error_definition"; import { EventDefinition } from "./implementation/declaration/event_definition"; import { FunctionDefinition } from "./implementation/declaration/function_definition"; import { ModifierDefinition } from "./implementation/declaration/modifier_definition"; import { StructDefinition } from "./implementation/declaration/struct_definition"; import { UserDefinedValueTypeDefinition } from "./implementation/declaration/user_defined_value_type_definition"; import { VariableDeclaration } from "./implementation/declaration/variable_declaration"; import { Assignment } from "./implementation/expression/assignment"; import { BinaryOperation } from "./implementation/expression/binary_operation"; import { Conditional } from "./implementation/expression/conditional"; import { ElementaryTypeNameExpression } from "./implementation/expression/elementary_type_name_expression"; import { FunctionCall } from "./implementation/expression/function_call"; import { FunctionCallOptions } from "./implementation/expression/function_call_options"; import { Identifier } from "./implementation/expression/identifier"; import { IndexAccess } from "./implementation/expression/index_access"; import { IndexRangeAccess } from "./implementation/expression/index_range_access"; import { Literal } from "./implementation/expression/literal"; import { MemberAccess } from "./implementation/expression/member_access"; import { NewExpression } from "./implementation/expression/new_expression"; import { PrimaryExpression } from "./implementation/expression/primary_expression"; import { TupleExpression } from "./implementation/expression/tuple_expression"; import { UnaryOperation } from "./implementation/expression/unary_operation"; import { IdentifierPath } from "./implementation/meta/identifier_path"; import { ImportDirective } from "./implementation/meta/import_directive"; import { InheritanceSpecifier } from "./implementation/meta/inheritance_specifier"; import { ModifierInvocation } from "./implementation/meta/modifier_invocation"; import { OverrideSpecifier } from "./implementation/meta/override_specifier"; import { ParameterList } from "./implementation/meta/parameter_list"; import { PragmaDirective } from "./implementation/meta/pragma_directive"; import { SourceUnit } from "./implementation/meta/source_unit"; import { StructuredDocumentation } from "./implementation/meta/structured_documentation"; import { UsingForDirective } from "./implementation/meta/using_for_directive"; import { Block } from "./implementation/statement/block"; import { Break } from "./implementation/statement/break"; import { Continue } from "./implementation/statement/continue"; import { DoWhileStatement } from "./implementation/statement/do_while_statement"; import { EmitStatement } from "./implementation/statement/emit_statement"; import { ExpressionStatement } from "./implementation/statement/expression_statement"; import { ForStatement } from "./implementation/statement/for_statement"; import { IfStatement } from "./implementation/statement/if_statement"; import { InlineAssembly } from "./implementation/statement/inline_assembly"; import { PlaceholderStatement } from "./implementation/statement/placeholder_statement"; import { Return } from "./implementation/statement/return"; import { RevertStatement } from "./implementation/statement/revert_statement"; import { Throw } from "./implementation/statement/throw"; import { TryCatchClause } from "./implementation/statement/try_catch_clause"; import { TryStatement } from "./implementation/statement/try_statement"; import { UncheckedBlock } from "./implementation/statement/unchecked_block"; import { VariableDeclarationStatement } from "./implementation/statement/variable_declaration_statement"; import { WhileStatement } from "./implementation/statement/while_statement"; import { ArrayTypeName } from "./implementation/type/array_type_name"; import { ElementaryTypeName } from "./implementation/type/elementary_type_name"; import { FunctionTypeName } from "./implementation/type/function_type_name"; import { Mapping } from "./implementation/type/mapping"; import { UserDefinedTypeName } from "./implementation/type/user_defined_type_name"; /** * When applied to following tuple type: * ``` * [id: number, src: string, type: string, rest: any] * ``` * Skips first three arguments (`id`, `src` and `type`) and infers only `rest`. * * This will further be applied to constructor argument tuple types, like * `ConstructorParameters` (for example) * to infer only `VariableDeclaration`-specific arguments as the necessary. * The leading `id`, `src` and `type` will be generated by `ASTNodeFactory`. */ type Specific = Args["length"] extends 0 ? undefined : ((...args: Args) => void) extends (id: number, src: string, ...rest: infer Rest) => void ? Rest : []; export type IDMap = Map; export declare class ASTNodeFactory { context: ASTContext; postprocessor: ASTPostprocessor; private lastId; constructor(context?: ASTContext, postprocessor?: ASTPostprocessor); makeContractDefinition(...args: Specific>): ContractDefinition; makeEnumDefinition(...args: Specific>): EnumDefinition; makeEnumValue(...args: Specific>): EnumValue; makeErrorDefinition(...args: Specific>): ErrorDefinition; makeEventDefinition(...args: Specific>): EventDefinition; makeFunctionDefinition(...args: Specific>): FunctionDefinition; makeModifierDefinition(...args: Specific>): ModifierDefinition; makeStructDefinition(...args: Specific>): StructDefinition; makeUserDefinedValueTypeDefinition(...args: Specific>): UserDefinedValueTypeDefinition; makeVariableDeclaration(...args: Specific>): VariableDeclaration; makeAssignment(...args: Specific>): Assignment; makeBinaryOperation(...args: Specific>): BinaryOperation; makeConditional(...args: Specific>): Conditional; makeElementaryTypeNameExpression(...args: Specific>): ElementaryTypeNameExpression; makeFunctionCallOptions(...args: Specific>): FunctionCallOptions; makeFunctionCall(...args: Specific>): FunctionCall; makeIdentifier(...args: Specific>): Identifier; makeIdentifierPath(...args: Specific>): IdentifierPath; makeIndexAccess(...args: Specific>): IndexAccess; makeIndexRangeAccess(...args: Specific>): IndexRangeAccess; makeLiteral(...args: Specific>): Literal; makeMemberAccess(...args: Specific>): MemberAccess; makeNewExpression(...args: Specific>): NewExpression; makePrimaryExpression(...args: Specific>): PrimaryExpression; makeTupleExpression(...args: Specific>): TupleExpression; makeUnaryOperation(...args: Specific>): UnaryOperation; makeImportDirective(...args: Specific>): ImportDirective; makeInheritanceSpecifier(...args: Specific>): InheritanceSpecifier; makeModifierInvocation(...args: Specific>): ModifierInvocation; makeOverrideSpecifier(...args: Specific>): OverrideSpecifier; makeParameterList(...args: Specific>): ParameterList; makePragmaDirective(...args: Specific>): PragmaDirective; makeSourceUnit(...args: Specific>): SourceUnit; makeStructuredDocumentation(...args: Specific>): StructuredDocumentation; makeUsingForDirective(...args: Specific>): UsingForDirective; makeBlock(...args: Specific>): Block; makeUncheckedBlock(...args: Specific>): UncheckedBlock; makeBreak(...args: Specific>): Break; makeContinue(...args: Specific>): Continue; makeDoWhileStatement(...args: Specific>): DoWhileStatement; makeEmitStatement(...args: Specific>): EmitStatement; makeExpressionStatement(...args: Specific>): ExpressionStatement; makeForStatement(...args: Specific>): ForStatement; makeIfStatement(...args: Specific>): IfStatement; makeInlineAssembly(...args: Specific>): InlineAssembly; makePlaceholderStatement(...args: Specific>): PlaceholderStatement; makeReturn(...args: Specific>): Return; makeRevertStatement(...args: Specific>): RevertStatement; makeThrow(...args: Specific>): Throw; makeTryCatchClause(...args: Specific>): TryCatchClause; makeTryStatement(...args: Specific>): TryStatement; makeVariableDeclarationStatement(...args: Specific>): VariableDeclarationStatement; makeWhileStatement(...args: Specific>): WhileStatement; makeArrayTypeName(...args: Specific>): ArrayTypeName; makeElementaryTypeName(...args: Specific>): ElementaryTypeName; makeFunctionTypeName(...args: Specific>): FunctionTypeName; makeMapping(...args: Specific>): Mapping; makeUserDefinedTypeName(...args: Specific>): UserDefinedTypeName; makeIdentifierFor(target: VariableDeclaration | ContractDefinition | FunctionDefinition | StructDefinition | ErrorDefinition | EventDefinition | EnumDefinition | UserDefinedValueTypeDefinition | ImportDirective): Identifier; makeUnfinalized(type: ASTNodeConstructor, ...args: Specific>): T; make(type: ASTNodeConstructor, ...args: Specific>): T; /** * Return a copy of the given `node`, along with all its children. * Optionally pass in a `remapping` from ids in the old context, to ids of * the old context of any sibling nodes that may be referred in node (e.g. * by `referencedDeclaration` fields). */ copy(node: T, remappings?: IDMap): T; /** * Return a tuple containing a copy of the given `node` and all its * children, and a mapping of ids between the old nodes and the new nodes. * * Optionally pass in a `remapping` from ids in the old context, to ids of * the old context of any sibling nodes that may be referred in node (e.g. * by `referencedDeclaration` fields). */ copyWithMapping(node: T, remappings?: IDMap): [T, IDMap]; private patchIds; private copyHelper; /** * Return the list of arguments (after `id` and `src`) that need to be * passed to `node`'s constructor to recreate `node`. */ getNodeConstructorArgs(node: T): any[]; private copyValue; private typeExtractor; } export {}; //# sourceMappingURL=ast_node_factory.d.ts.map