/**
 * @license
 * Copyright 2018 JBoss Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { ChangeDetectorRef, EventEmitter } from "@angular/core";
import { AaiDocument, Node, OasDocument, SimplifiedType } from "apicurio-data-models";
import { DropDownOption } from "../../../../../../../components/common/drop-down.component";
import { AbstractBaseComponent } from "../../common/base-component";
import { DocumentService } from "../../../_services/document.service";
import { CommandService } from "../../../_services/command.service";
import { SelectionService } from "../../../_services/selection.service";
/**
 * Component to select a "SimplifiedType" value
 */
export declare class SchemaTypeEditorComponent extends AbstractBaseComponent {
    private changeDetectorRef;
    private documentService;
    private commandService;
    private selectionService;
    document: OasDocument | AaiDocument;
    value: SimplifiedType;
    typeLabel: string;
    validationModel: Node;
    validationProperty: string;
    /**
     * Is the component being used in "data type" definition?
     * i.e. should the dropdown contain references to data type schemas?
     */
    isParameter: boolean;
    /**
     * Should the component list "data type" definition only?
     * i.e. should the primitive types and As/Of fields be masked?
     */
    dataTypesOnly: boolean;
    /**
     * Emit the value when it is updated
     */
    onChange: EventEmitter<SimplifiedType>;
    constructor(changeDetectorRef: ChangeDetectorRef, documentService: DocumentService, commandService: CommandService, selectionService: SelectionService);
    hasValidationModel(): boolean;
    type(): string;
    /**
     * Main options
     */
    typeOptions(): DropDownOption[];
    typeOf(): string;
    /**
     * Additional options when e.g. an array is selected,
     * to choose the type of the array elements
     */
    typeOfOptions(): DropDownOption[];
    /**
     * Get additional options, when reference to "schema definition data type"
     * can be used
     */
    private getSchemaDefinitionsOptions;
    typeAs(): string;
    /**
     * Specify a "sub-type" for some of the selected types,
     * e.g. int64 for an Integer
     */
    typeAsOptions(): DropDownOption[];
    shouldShowFormattedAs(): boolean;
    shouldShowEnumEditor(): boolean;
    changeType(type: string): void;
    changeTypeEnum(value: string[]): void;
    changeTypeOf(typeOf: string): void;
    changeTypeAs(typeAs: string): void;
    isArray(): boolean;
}
