import { ChildProperty } from '@syncfusion/ej2-base';
import { FontFamily, TextAlign, VerticalAlign, FontWeight, FontStyle, TextDecoration, HighlightCell, ChartType, ChartTheme, AutoFillType } from './enum';
import { ValidationType, ValidationOperator, TopBottom, DataBar, ColorScale, IconSet, CFColor } from './enum';
import { CellStyleModel, FormatModel, LegendSettingsModel, AxisModel, DataLabelSettingsModel, ChartModel, MarkerSettingsModel, BorderModel, ThreadedCommentModel } from './class-model';
import { CellModel } from '../base';
import { LabelPosition, LegendPosition, ChartShape } from './enum';
import { MajorGridLinesModel, MinorGridLinesModel, CommentReplyModel } from './class-model';
/**
 * Represents the cell style.
 */
export declare class CellStyle extends ChildProperty<CellStyle> {
    /**
     * Specifies font family to the cell.
     *
     * @default 'Calibri'
     * @hidden
     */
    fontFamily: FontFamily;
    /**
     * Specifies vertical align to the cell.
     *
     * @default 'bottom'
     */
    verticalAlign: VerticalAlign;
    /**
     * Specifies text align style to the cell.
     *
     * @default 'left'
     */
    textAlign: TextAlign;
    /**
     * Specifies text indent style to the cell.
     *
     * @default '0pt'
     */
    textIndent: string;
    /**
     * Specifies font color to the cell.
     *
     * @default '#000000'
     */
    color: string;
    /**
     * Specifies background color to the cell.
     *
     * @default '#ffffff'
     */
    backgroundColor: string;
    /**
     * Specifies font weight to the cell.
     *
     * @default 'normal'
     */
    fontWeight: FontWeight;
    /**
     * Specifies font style to the cell.
     *
     * @default 'normal'
     */
    fontStyle: FontStyle;
    /**
     * Specifies font size to the cell.
     *
     * @default '11pt'
     */
    fontSize: string;
    /**
     * Specifies text decoration to the cell.
     *
     * @default 'none'
     * @aspIgnore
     */
    textDecoration: TextDecoration;
    /**
     * Specifies border of the cell.
     *
     * @default ''
     */
    border: string;
    /**
     * Specifies top border of the cell.
     *
     * @default ''
     */
    borderTop: string;
    /**
     * Specifies bottom border of the cell.
     *
     * @default ''
     */
    borderBottom: string;
    /**
     * Specifies left border of the cell.
     *
     * @default ''
     */
    borderLeft: string;
    /**
     * Specifies right border of the cell.
     *
     * @default ''
     */
    borderRight: string;
    /** @hidden */
    bottomPriority: boolean;
}
/**
 * Represents the Filter Collection.
 *
 */
export declare class FilterCollection extends ChildProperty<FilterCollection> {
    /**
     * Specifies the sheet index of the filter collection.
     *
     * @default null
     */
    sheetIndex: number;
    /**
     * Specifies the range of the filter collection.
     *
     * @default []
     */
    filterRange: string;
    /**
     * Specifies the sheet has filter or not.
     *
     * @default false
     */
    hasFilter: boolean;
    /**
     * Specifies the filtered column collection.
     *
     * @default []
     */
    column: number[];
    /**
     * Specifies the condition for column filtering.
     *
     * @default []
     */
    criteria: string[];
    /**
     * Specifies the value for column filtering.
     *
     * @default []
     */
    value: (string | number | boolean | Date)[];
    /**
     * Specifies the data type of column filtering.
     *
     * @default []
     */
    dataType: string[];
    /**
     * Specifies the predicate type of column filtering.
     *
     * @default []
     */
    predicates: string[];
}
/**
 * Represents the sort Collection.
 *
 */
export declare class SortCollection extends ChildProperty<SortCollection> {
    /**
     * Specifies the range of the sort collection.
     *
     */
    sortRange: string;
    /**
     * Specifies the sorted column collection.
     *
     */
    columnIndex: number;
    /**
     * Specifies the order for sorting.
     *
     */
    order: string;
    /**
     * Specifies the order for sorting.
     *
     */
    sheetIndex: number;
}
/**
 * Represents a defined name in the spreadsheet.
 * A defined name is a meaningful identifier that refers to a specific cell or range, and can be used in formulas.
 */
export declare class DefineName extends ChildProperty<DefineName> {
    /**
     * Specifies a unique name for the defined name, which can be used in formulas.
     *
     * @default ''
     */
    name: string;
    /**
     * Defines the scope of the name.
     * If not specified, the name is scoped to the entire workbook.
     * If a sheet name is provided, the name will be available only within that specific sheet.
     *
     * @default ''
     */
    scope: string;
    /**
     * Provides a comment or description for the defined name.
     *
     * @default ''
     */
    comment: string;
    /**
     * Specifies the cell or range reference associated with the defined name.
     * The reference can be provided with or without the `=` prefix.
     *
     * @default ''
     */
    refersTo: string;
}
/**
 * Configures the Protect behavior for the spreadsheet.
 *
 */
export declare class ProtectSettings extends ChildProperty<ProtectSettings> {
    /**
     * Specifies to allow selection in spreadsheet.
     *
     * @default false
     */
    selectCells: boolean;
    /**
     * Specifies to allow selection only for unlocked cells in spreadsheet.
     *
     * @default false
     */
    selectUnLockedCells: boolean;
    /**
     * specifies to allow formating in cells.
     *
     * @default false
     */
    formatCells: boolean;
    /**
     * Specifies to allow format rows in spreadsheet.
     *
     * @default false
     */
    formatRows: boolean;
    /**
     * Specifies to allow format columns in spreadsheet.
     *
     * @default false
     */
    formatColumns: boolean;
    /**
     * Specifies to allow insert Hyperlink in Spreadsheet.
     *
     * @default false
     */
    insertLink: boolean;
}
/**
 * Represents the Hyperlink.
 *
 */
export declare class Hyperlink extends ChildProperty<Hyperlink> {
    /**
     * Specifies Hyperlink Address.
     *
     * @default ''
     */
    address: string;
}
/**
 * Represents the DataValidation.
 */
export declare class Validation extends ChildProperty<Validation> {
    /**
     * Specifies Validation Type.
     *
     * @default 'WholeNumber'
     */
    type: ValidationType;
    /**
     * Specifies Validation Operator.
     *
     * @default 'Between'
     */
    operator: ValidationOperator;
    /**
     * Specifies Validation Minimum Value.
     *
     * @default ''
     */
    value1: string;
    /**
     * Specifies Validation Maximum Value.
     *
     * @default ''
     */
    value2: string;
    /**
     * Specifies IgnoreBlank option in Data Validation.
     *
     * @default true
     */
    ignoreBlank: boolean;
    /**
     * Specifies InCellDropDown option in Data Validation.
     *
     * @default true
     */
    inCellDropDown: boolean;
    /**
     * specifies to allow Highlight Invalid Data.
     *
     * @default false
     */
    isHighlighted: boolean;
    /**
     * Specifies address for validation within the same column.
     *
     * @default ''
     * @hidden
     */
    address: string;
}
/**
 * Represents the Format.
 */
export declare class Format extends ChildProperty<FormatModel> {
    /**
     * Specifies the number format code to display value in specified number format.
     *
     * @default 'General'
     */
    format: string;
    /**
     * Specifies the cell style options.
     *
     * @default {}
     */
    style: CellStyleModel;
    /**
     * Specifies the range is locked or not, for allow edit range in spreadsheet protect option.
     *
     * @default true
     */
    isLocked: boolean;
}
/**
 * Represents the Conditional Formatting.
 *
 */
export declare class ConditionalFormat extends ChildProperty<ConditionalFormat> {
    /**
     * Specifies Conditional formatting Type.
     *
     * @default 'GreaterThan'
     * @aspIgnore
     */
    type: HighlightCell | TopBottom | DataBar | ColorScale | IconSet;
    /**
     * Specifies format.
     *
     * @default {}
     */
    format: FormatModel;
    /**
     * Specifies Conditional formatting Highlight Color.
     *
     * @default 'RedFT'
     */
    cFColor: CFColor;
    /**
     * Specifies Conditional formatting Value.
     *
     * @default ''
     */
    value: string;
    /**
     * Specifies Conditional formatting range.
     *
     * @default ''
     */
    range: string;
    /**
     * Specifies Conditional formatting action.
     *
     * @hidden
     * @default ''
     */
    action: string;
    /** @hidden */
    result: string[] | number[];
}
/**
 * Represents the Legend.
 *
 */
export declare class LegendSettings extends ChildProperty<ChartModel> {
    /**
     * If set to true, legend will be visible.
     *
     * @default true
     */
    visible: boolean;
    /**
     * Position of the legend in the chart are,
     * * Auto: Places the legend based on area type.
     * * Top: Displays the legend at the top of the chart.
     * * Left: Displays the legend at the left of the chart.
     * * Bottom: Displays the legend at the bottom of the chart.
     * * Right: Displays the legend at the right of the chart.
     *
     * @default 'Auto'
     */
    position: LegendPosition;
}
/**
 * Represents the DataLabelSettings.
 *
 */
export declare class DataLabelSettings extends ChildProperty<ChartModel> {
    /**
     * If set true, data label for series renders.
     *
     * @default false
     */
    visible: boolean;
    /**
     * Specifies the position of the data label. They are,
     * * Outer: Positions the label outside the point.
     * * top: Positions the label on top of the point.
     * * Bottom: Positions the label at the bottom of the point.
     * * Middle: Positions the label to the middle of the point.
     * * Auto: Positions the label based on series.
     *
     * @default 'Auto'
     */
    position: LabelPosition;
}
/**
 * Represents the Border.
 *
 */
export declare class Border extends ChildProperty<ChartModel> {
    /**
     * The color of the border that accepts value in hex and rgba as a valid CSS color string.
     *
     * @default ''
     */
    color: string;
    /**
     * The width of the border in pixels.
     *
     * @default 1
     */
    width: number;
}
/**
 * Represents the MarkerSettings.
 *
 */
export declare class MarkerSettings extends ChildProperty<ChartModel> {
    /**
     * If set to true the marker for series is rendered. This is applicable only for line and area type series.
     *
     * @default false
     */
    visible: boolean;
    /**
     * The different shape of a marker:
     * * Circle
     * * Triangle
     * * Diamond
     * * Plus
     * * None
     *
     * @default 'Circle'
     */
    shape: ChartShape;
    /**
     * The size of the marker in pixels.
     *
     * @default 5
     */
    size: number;
    /**
     * The fill color of the marker that accepts value in hex and rgba as a valid CSS color string. By default, it will take series color.
     * This property will work only if the `isFilled` property is set to true.
     *
     * @default null
     */
    fill: string;
    /**
     * By default, the marker gets filled with the fill color. If set to false, the marker background will be transparent.
     *
     * @default true
     */
    isFilled: boolean;
    /**
     * Options for customizing the border of a marker.
     *
     * @default {}
     */
    border: BorderModel;
}
/**
 * Specifies the major grid lines in the `axis`.
 *
 */
export declare class MajorGridLines extends ChildProperty<AxisModel> {
    /**
     * The width of the line in pixels.
     *
     * @default 0
     */
    width: number;
}
/**
 * Specifies the minor grid lines in the `axis`.
 *
 */
export declare class MinorGridLines extends ChildProperty<AxisModel> {
    /**
     * The width of the line in pixels.
     *
     * @default 0
     */
    width: number;
}
/**
 * Represents the axis.
 *
 */
export declare class Axis extends ChildProperty<ChartModel> {
    /**
     * Specifies the title of an axis.
     *
     * @default ''
     */
    title: string;
    /**
     * Options for customizing major grid lines.
     *
     * @default {}
     */
    majorGridLines: MajorGridLinesModel;
    /**
     * Options for customizing minor grid lines.
     *
     * @default {}
     */
    minorGridLines: MinorGridLinesModel;
    /**
     * If set to true, axis label will be visible.
     *
     * @default true
     */
    visible: boolean;
}
/**
 * Represents the Chart.
 */
export declare class Chart extends ChildProperty<CellModel> {
    /**
     * Specifies the type of a chart.
     *
     * @default 'Line'
     */
    type: ChartType;
    /**
     * Specifies the theme of a chart.
     *
     * @default 'Material'
     */
    theme: ChartTheme;
    /**
     * Specifies to switch the row or a column.
     *
     * @default false
     */
    isSeriesInRows: boolean;
    /**
     * Options to configure the marker
     *
     * @default {}
     */
    markerSettings: MarkerSettingsModel;
    /**
     * Specifies the selected range or specified range.
     *
     * @default ''
     */
    range: string;
    /**
     * Specifies chart element id.
     *
     * @default ''
     */
    id: string;
    /**
     * Title of the chart
     *
     * @default ''
     */
    title: string;
    /**
     * Specifies the height of the chart.
     *
     * @default 290
     */
    height: number;
    /**
     * Specifies the width of the chart.
     *
     * @default 480
     */
    width: number;
    /**
     * Specifies the top position of the chart.
     *
     * @default 0
     * @hidden
     */
    protected top: number;
    /**
     * Specifies the left side of the chart.
     *
     * @default 0
     * @hidden
     */
    protected left: number;
    /**
     * Options for customizing the legend of the chart.
     *
     * @default {}
     */
    legendSettings: LegendSettingsModel;
    /**
     * Options to configure the horizontal axis.
     *
     * @default {}
     */
    primaryXAxis: AxisModel;
    /**
     * Options to configure the vertical axis.
     *
     * @default {}
     */
    primaryYAxis: AxisModel;
    /**
     * The data label for the series.
     *
     * @default {}
     */
    dataLabelSettings: DataLabelSettingsModel;
    /**
     * The data label for the series.
     *
     * @default null
     * @hidden
     */
    series?: {
        range: string;
        name?: string;
        category?: string;
    }[];
}
/**
 * Represents the Image.
 */
export declare class Image extends ChildProperty<CellModel> {
    /**
     * Specifies the image source.
     *
     * @default ''
     */
    src: string;
    /**
     * Specifies image element id.
     *
     * @default ''
     */
    id: string;
    /**
     * Specifies the height of the image.
     *
     * @default 300
     * @asptype double
     */
    height: number;
    /**
     * Specifies the width of the image.
     *
     * @default 400
     * @asptype double
     */
    width: number;
    /**
     * Specifies the height of the image.
     *
     * @default 0
     * @asptype double
     */
    top: number;
    /**
     * Specifies the width of the image.
     *
     * @default 0
     * @asptype double
     */
    left: number;
}
/**
 * Represents a reply in a cell comment.
 */
export declare class CommentReply extends ChildProperty<ThreadedCommentModel> {
    /**
     * Specifies the author of the reply.
     * If not set, the reply will not display an author name.
     *
     * @default ''
     */
    author: string;
    /**
     * Defines the text content of the reply.
     *
     * @default ''
     */
    text: string;
    /**
     * Indicates the date and time when the reply was created.
     * If not set, the reply will not show a time-stamp.
     *
     * @default null
     */
    createdTime: string | Date;
}
/**
 * Represents a threaded comment in a cell.
 * A threaded comment includes the main comment and its associated replies.
 */
export declare class ThreadedComment extends ChildProperty<ThreadedComment> {
    /**
     * Specifies the author of the comment.
     * If not set, the comment will not display an author name.
     *
     * @default ''
     */
    author: string;
    /**
     * Defines the text content of the comment.
     * If not set, the comment will appear blank until content is added.
     *
     * @default ''
     */
    text: string;
    /**
     * Indicates the date and time when the comment was created.
     * If not set, the comment will not show a time-stamp.
     *
     * @default null
     */
    createdTime: string | Date;
    /**
     * Indicates whether the comment thread is marked as resolved.
     * If not set, the thread remains active and unresolved.
     * Set this to `true` when the discussion in the thread is complete and no further replies are expected.
     *
     * @default false
     */
    isResolved: boolean;
    /**
     * Contains the collection of replies associated with the comment.
     * If not set, the comment has no replies.
     *
     * @default []
     */
    replies: CommentReplyModel[];
}
/**
 * Represents the AutoFillSettings.
 */
export declare class AutoFillSettings extends ChildProperty<AutoFillSettings> {
    /**
     * Specifies the auto fill settings. The possible values are
     *
     * * CopyCells: To update the copied cells of the selected range.
     * * FillSeries: To update the filled series of the selected range.
     * * FillFormattingOnly: To fill the formats only for the selected range.
     * * FillWithoutFormatting: To fill without the format of the selected range.
     *
     * @default 'FillSeries'
     */
    fillType: AutoFillType;
    /**
     * Specifies whether fill options need to shown or not.
     *
     * @default true
     */
    showFillOptions: boolean;
}
