
import { IgcExpressionTree } from './igc-expression-tree';
import { IgcEntityType } from './igc-entity-type';
import { IgcQueryBuilderResourceStrings } from './igc-query-builder-resource-strings';
import { IgcQueryBuilderSearchValueContext } from './igc-query-builder-search-value-context';
import { IgcRenderFunction } from './common';
import { IgcQueryBuilderHeaderComponent } from './igc-query-builder-header-component';
import { EventEmitterMixin, LitElement, Constructor, AbstractConstructor } from './common';




/* wcElementTag: igc-query-builder */
/* blazorIndirectRender */
/**
 * A component used for operating with complex filters by creating or editing conditions
 * and grouping them using AND/OR logic.
 * It is used internally in the Advanced Filtering of the Grid.
 *
 * @example
 * ```html
 * <igx-query-builder [entities]="this.entities">
 * </igx-query-builder>
 * ```
 */

    export declare class IgcQueryBuilderComponent extends EventEmitterMixin<IgcQueryBuilderComponentEventMap, Constructor<LitElement>>(LitElement)

    {

    /* blazorSuppress */
    static readonly tagName: string;
    /* blazorSuppress */
    static register(): void;

          

    /**
     * Gets/sets whether the confirmation dialog should be shown when changing entity.
     * Default value is `true`.
     */
    public set showEntityChangeDialog(value: boolean);
          public get showEntityChangeDialog(): boolean;
  
          

    /**
     * Gets the list of entities available for the IgxQueryBuilderComponent.
     *
     * Each entity describes a logical group of fields that can be used in queries.
     * An entity can optionally have child entities, allowing nested sub-queries.
     *
     * @returns An array of {@link EntityType} objects.
     */
    public set entities(value: IgcEntityType[]);
          public get entities(): IgcEntityType[];
  
          

    /**
    * Returns the expression tree.
    */
    public set expressionTree(value: IgcExpressionTree);
          public get expressionTree(): IgcExpressionTree;
  
          

    /**
     * Gets the `locale` of the query builder.
     * If not set, defaults to application's locale.
     */
    public set locale(value: string);
          public get locale(): string;
  
          

    /**
     * Sets the resource strings.
     * By default it uses EN resources.
     */
    public set resourceStrings(value: IgcQueryBuilderResourceStrings);
          public get resourceStrings(): IgcQueryBuilderResourceStrings;
  
          

    /**
     * Disables subsequent entity changes at the root level after the initial selection.
     */
    public set disableEntityChange(value: boolean);
          public get disableEntityChange(): boolean;
  
          

    /**
     * Sets/gets the search value template.
     */
    public set searchValueTemplate(value: IgcRenderFunction<IgcQueryBuilderSearchValueContext>);
          public get searchValueTemplate(): IgcRenderFunction<IgcQueryBuilderSearchValueContext>;
  
          

    /**
     * Disables return fields changes at the root level.
     */
    public set disableReturnFieldsChange(value: boolean);
          public get disableReturnFieldsChange(): boolean;
  
          



    /* contentChildren */
    /* blazorInclude */
    /* blazorTreatAsCollection */
    /* blazorCollectionName: QueryBuilderHeaderCollection */
    /* blazorCollectionItemName: QueryBuilderHeader */
    /* ngQueryListName: queryBuilderHeaderCollection */
    /** @hidden @internal */
    public set queryBuilderHeaderCollection(value: IgcQueryBuilderHeaderComponent[]);
          public get queryBuilderHeaderCollection(): IgcQueryBuilderHeaderComponent[];
  
            

    /**
     * Returns whether the expression tree can be committed in the current state.
     */
    public canCommit(): boolean;

            

    /**
     * Commits the expression tree in the current state if it is valid. If not throws an exception.
     */
    public commit(): void;

            

    /**
     * Discards all unsaved changes to the expression tree.
     */
    public discard(): void;

    }

export declare interface IgcQueryBuilderComponentEventMap {
            
        		    /**
		     * Event fired as the expression tree is changed.
		     *
		     * ```html
		     *  <igx-query-builder (expressionTreeChange)='onExpressionTreeChange()'></igx-query-builder>
		     * ```
		     */
expressionTreeChange: CustomEvent<IgcExpressionTree>;

}
        