import { ITypeDeclarationService } from "./i-type-declaration-service"; import { InterfaceDeclaration, TypeLiteralNode } from "typescript"; import { ITypescriptASTUtil } from "@wessberg/typescript-ast-util"; import { NodeService } from "../node/node-service"; import { IDecoratorService } from "../decorator/i-decorator-service"; import { IRemover } from "../../remover/i-remover-base"; import { ITypescriptLanguageService } from "@wessberg/typescript-language-service"; import { ITypeElementService } from "../type-element/i-type-element-service"; import { IJoiner } from "../../joiner/i-joiner-getter"; import { IUpdater } from "../../updater/i-updater-getter"; /** * An abstract service for working with TypeDeclarations */ export declare abstract class TypeDeclarationService extends NodeService implements ITypeDeclarationService { private readonly typeElementService; constructor(typeElementService: ITypeElementService, joiner: IJoiner, updater: IUpdater, decoratorService: IDecoratorService, languageService: ITypescriptLanguageService, remover: IRemover, astUtil: ITypescriptASTUtil); /** * Gets the names of all properties of a TypeDeclaration * @param {InterfaceDeclaration | TypeLiteralNode} type * @returns {string[]} */ getPropertyNamesOfTypeDeclaration(type: T): string[]; /** * Gets the names of all required properties of a TypeDeclaration * @param {InterfaceDeclaration | TypeLiteralNode} type * @returns {string[]} */ getRequiredPropertyNamesOfTypeDeclaration(type: T): string[]; /** * Gets the names of all optional properties of a TypeDeclaration * @param {InterfaceDeclaration | TypeLiteralNode} type * @returns {string[]} */ getOptionalPropertyNamesOfTypeDeclaration(type: T): string[]; }