from typing import Any, Dict, Iterator, List, Optional, Union

from dev.coatl.helper.types import AnyStr as AnyStr
from java.awt import Dimension
from java.io import Closeable, OutputStream
from java.lang import Enum, Object
from java.time import LocalDate, LocalDateTime
from java.util import Calendar, Date, TimeZone
from org.apache.poi.common.usermodel import Hyperlink as IHyperlink
from org.apache.poi.common.usermodel import HyperlinkType
from org.apache.poi.poifs.filesystem import DirectoryEntry
from org.apache.poi.ss import SpreadsheetVersion
from org.apache.poi.ss.formula import ConditionalFormattingEvaluator
from org.apache.poi.ss.formula.udf import UDFFinder
from org.apache.poi.ss.util import (
    AreaReference,
    CellAddress,
    CellRangeAddress,
    CellRangeAddressList,
    PaneInformation,
)

class AutoFilter: ...

class BorderFormatting:
    def getBorderBottom(self) -> BorderStyle: ...
    def getBorderDiagonal(self) -> BorderStyle: ...
    def getBorderHorizontal(self) -> BorderStyle: ...
    def getBorderLeft(self) -> BorderStyle: ...
    def getBorderRight(self) -> BorderStyle: ...
    def getBorderTop(self) -> BorderStyle: ...
    def getBorderVertical(self) -> BorderStyle: ...
    def getBottomBorderColor(self) -> int: ...
    def getBottomBorderColorColor(self) -> Color: ...
    def getDiagonalBorderColor(self) -> int: ...
    def getDiagonalBorderColorColor(self) -> Color: ...
    def getHorizontalBorderColor(self) -> int: ...
    def getHorizontalBorderColorColor(self) -> Color: ...
    def getLeftBorderColor(self) -> int: ...
    def getLeftBorderColorColor(self) -> Color: ...
    def getRightBorderColor(self) -> int: ...
    def getRightBorderColorColor(self) -> Color: ...
    def getTopBorderColor(self) -> int: ...
    def getTopBorderColorColor(self) -> Color: ...
    def getVerticalBorderColor(self) -> int: ...
    def getVerticalBorderColorColor(self) -> Color: ...
    def setBorderBottom(self, border: BorderStyle) -> None: ...
    def setBorderDiagonal(self, border: BorderStyle) -> None: ...
    def setBorderHorizontal(self, border: BorderStyle) -> None: ...
    def setBorderLeft(self, border: BorderStyle) -> None: ...
    def setBorderRight(self, border: BorderStyle) -> None: ...
    def setBorderTop(self, border: BorderStyle) -> None: ...
    def setBorderVertical(self, border: BorderStyle) -> None: ...
    def setBottomBorderColor(self, color: Union[int, Color]) -> None: ...
    def setDiagonalBorderColor(self, color: Union[int, Color]) -> None: ...
    def setHorizontalBorderColor(self, color: Union[int, Color]) -> None: ...
    def setLeftBorderColor(self, color: Union[int, Color]) -> None: ...
    def setRightBorderColor(self, color: Union[int, Color]) -> None: ...
    def setTopBorderColor(self, color: Union[int, Color]) -> None: ...
    def setVerticalBorderColor(self, color: Union[int, Color]) -> None: ...

class Cell:
    def getAddress(self) -> CellAddress: ...
    def getArrayFormulaRange(self) -> CellRangeAddress: ...
    def getBooleanCellValue(self) -> bool: ...
    def getCachedFormulaResultType(self) -> CellType: ...
    def getCellComment(self) -> Comment: ...
    def getCellFormula(self) -> AnyStr: ...
    def getCellStyle(self) -> CellStyle: ...
    def getCellType(self) -> CellType: ...
    def getColumnIndex(self) -> int: ...
    def getDateCellValue(self) -> Date: ...
    def getErrorCellValue(self) -> int: ...
    def getHyperlink(self) -> Hyperlink: ...
    def getLocalDateTimeCellValue(self) -> LocalDateTime: ...
    def getNumericCellValue(self) -> float: ...
    def getRichStringCellValue(self) -> RichTextString: ...
    def getRow(self) -> Row: ...
    def getRowIndex(self) -> int: ...
    def getSheet(self) -> Sheet: ...
    def getStringCellValue(self) -> AnyStr: ...
    def isPartOfArrayFormulaGroup(self) -> bool: ...
    def removeCellComment(self) -> None: ...
    def removeFormula(self) -> None: ...
    def removeHyperlink(self) -> None: ...
    def setAsActiveCell(self) -> None: ...
    def setBlank(self) -> None: ...
    def setCellComment(self, comment: Comment) -> None: ...
    def setCellErrorValue(self, value: int) -> None: ...
    def setCellFormula(self, formula: AnyStr) -> None: ...
    def setCellStyle(self, style: CellStyle) -> None: ...
    def setCellValue(self, value: Any) -> None: ...
    def setHyperlink(self, link: Hyperlink) -> None: ...

class CellRange:
    def getCell(self, relativeRowIndex: int, relativeColumnIndex: int) -> Cell: ...
    def getCells(self) -> List[List[Cell]]: ...
    def getFlattenedCells(self) -> List[Cell]: ...
    def getHeight(self) -> int: ...
    def getReferenceText(self) -> AnyStr: ...
    def getTopLeftCell(self) -> Cell: ...
    def getWidth(self) -> int: ...
    def size(self) -> int: ...
    def __iter__(self) -> Iterator[Cell]: ...

class CellStyle:
    def cloneStyleFrom(self, source: CellStyle) -> None: ...
    def getAlignment(self) -> HorizontalAlignment: ...
    def getBorderBottom(self) -> BorderStyle: ...
    def getBorderLeft(self) -> BorderStyle: ...
    def getBorderRight(self) -> BorderStyle: ...
    def getBorderTop(self) -> BorderStyle: ...
    def getBottomBorderColor(self) -> int: ...
    def getDataFormat(self) -> int: ...
    def getDataFormatString(self) -> AnyStr: ...
    def getFillBackgroundColor(self) -> int: ...
    def getFillBackgroundColorColor(self) -> Color: ...
    def getFillForegroundColor(self) -> int: ...
    def getFillForegroundColorColor(self) -> Color: ...
    def getFillPattern(self) -> FillPatternType: ...
    def getFontIndexAsInt(self) -> int: ...
    def getHidden(self) -> bool: ...
    def getIndention(self) -> int: ...
    def getIndex(self) -> int: ...
    def getLeftBorderColor(self) -> int: ...
    def getLocked(self) -> bool: ...
    def getQuotePrefixed(self) -> bool: ...
    def getRightBorderColor(self) -> int: ...
    def getRotation(self) -> int: ...
    def getShrinkToFit(self) -> bool: ...
    def getTopBorderColor(self) -> int: ...
    def getVerticalAlignment(self) -> VerticalAlignment: ...
    def getWrapText(self) -> bool: ...
    def setAlignment(self, align: HorizontalAlignment) -> None: ...
    def setDataFormat(self, formatIndex: int) -> None: ...
    def setFillBackgroundColor(self, colorIndex: int) -> None: ...
    def setFillForegroundColor(self, colorIndex: int) -> None: ...

class ChildAnchor:
    def getDx1(self) -> int: ...
    def getDx2(self) -> int: ...
    def getDy1(self) -> int: ...
    def getDy2(self) -> int: ...
    def getCol1(self) -> int: ...
    def getCol2(self) -> int: ...
    def getRow1(self) -> int: ...
    def getRow2(self) -> int: ...

class ClientAnchor:
    class AnchorType(Enum):
        DONT_MOVE_AND_RESIZE: int
        DONT_MOVE_DO_RESIZE: int
        MOVE_AND_RESIZE: int
        MOVE_DONT_RESIZE: int
        value: int
        @staticmethod
        def byId(value: int) -> ClientAnchor.AnchorType: ...
        @staticmethod
        def values() -> List[ClientAnchor.AnchorType]: ...

    def getAnchorType(self) -> ClientAnchor.AnchorType: ...
    def getCol1(self) -> int: ...
    def getCol2(self) -> int: ...
    def getDx1(self) -> int: ...
    def getDx2(self) -> int: ...
    def getDy1(self) -> int: ...
    def getDy2(self) -> int: ...
    def getRow1(self) -> int: ...
    def getRow2(self) -> int: ...
    def setAnchorType(self, anchorType: ClientAnchor.AnchorType) -> None: ...
    def setCol1(self, col1: int) -> None: ...
    def setCol2(self, col2: int) -> None: ...
    def setDx1(self, dx1: int) -> None: ...
    def setDx2(self, dx2: int) -> None: ...
    def setDy1(self, dy1: int) -> None: ...
    def setDy2(self, dy2: int) -> None: ...
    def setRow1(self, row1: int) -> None: ...
    def setRow2(self, row2: int) -> None: ...

class Color: ...

class ColorScaleFormatting:
    def createThreshold(self) -> ConditionalFormattingThreshold: ...
    def getColors(self) -> List[Color]: ...
    def getNumControlPoints(self) -> int: ...
    def getThresholds(self) -> List[ConditionalFormattingThreshold]: ...
    def setColors(self, colors: List[Color]) -> None: ...
    def setNumControlPoints(self, num: int) -> None: ...
    def setThresholds(
        self, thresholds: List[ConditionalFormattingThreshold]
    ) -> None: ...

class Comment:
    def getAddress(self) -> CellAddress: ...
    def getAuthor(self) -> AnyStr: ...
    def getClientAnchor(self) -> ClientAnchor: ...
    def getColumn(self) -> int: ...
    def getRow(self) -> int: ...
    def getString(self) -> RichTextString: ...
    def isVisible(self) -> bool: ...
    def setAddress(self, *args: Any) -> None: ...
    def setAuthor(self, author: AnyStr) -> None: ...
    def setColumn(self, column: int) -> None: ...
    def setRow(self, row: int) -> None: ...
    def setString(self, string: RichTextString) -> None: ...
    def setVisible(self, visible: bool) -> None: ...

class ConditionFilterData:
    def getAboveAverage(self) -> bool: ...
    def getBottom(self) -> int: ...
    def getEqualAverage(self) -> bool: ...
    def getPercent(self) -> bool: ...
    def getRank(self) -> long: ...
    def getStdDev(self) -> int: ...

class ConditionalFormatting:
    def addRule(self, cfRule: ConditionalFormattingRule) -> None: ...
    def getFormattingRanges(self) -> List[CellRangeAddress]: ...
    def getNumberOfRules(self) -> int: ...
    def getRule(self, idx: int) -> ConditionalFormattingRule: ...
    def setFormattingRanges(self, ranges: List[CellRangeAddress]) -> None: ...
    def setRule(self, idx: int, cfRule: ConditionalFormattingRule) -> None: ...

class ConditionalFormattingRule:
    def createBorderFormatting(self) -> BorderFormatting: ...
    def createFontFormatting(self) -> FontFormatting: ...
    def createPatternFormatting(self) -> PatternFormatting: ...
    def getBorderFormatting(self) -> BorderFormatting: ...
    def getColorScaleFormatting(self) -> ColorScaleFormatting: ...
    def getComparisonOperation(self) -> int: ...
    def getConditionFilterType(self) -> ConditionFilterType: ...
    def getConditionType(self) -> ConditionType: ...
    def getDataBarFormatting(self) -> DataBarFormatting: ...
    def getFilterConfiguration(self) -> ConditionFilterData: ...
    def getFontFormatting(self) -> FontFormatting: ...
    def getFormula1(self) -> AnyStr: ...
    def getFormula2(self) -> AnyStr: ...
    def getMultiStateFormatting(self) -> IconMultiStateFormatting: ...
    def getNumberFormatting(self) -> ExcelNumberFormat: ...
    def getPatternFormatting(self) -> PatternFormatting: ...
    def getPriority(self) -> int: ...
    def getStopIfTrue(self) -> bool: ...
    def getText(self) -> AnyStr: ...

class ConditionalFormattingThreshold:
    class RangeType(Enum):
        FORMULA: ConditionalFormattingThreshold.RangeType
        MAX: ConditionalFormattingThreshold.RangeType
        MIN: ConditionalFormattingThreshold.RangeType
        NUMBER: ConditionalFormattingThreshold.RangeType
        PERCENT: ConditionalFormattingThreshold.RangeType
        PERCENTILE: ConditionalFormattingThreshold.RangeType
        UNALLOCATED: ConditionalFormattingThreshold.RangeType
        @staticmethod
        def byId(id_: int) -> ConditionalFormattingThreshold.RangeType: ...
        @staticmethod
        def byName(name: AnyStr) -> ConditionalFormattingThreshold.RangeType: ...
        @staticmethod
        def values() -> List[ConditionalFormattingThreshold.RangeType]: ...

    def getFormula(self) -> AnyStr: ...
    def getRangeType(self) -> ConditionalFormattingThreshold.RangeType: ...
    def getValue(self) -> float: ...
    def setFormula(self, formula: AnyStr) -> None: ...
    def setRangeType(
        self, rangeType: ConditionalFormattingThreshold.RangeType
    ) -> None: ...
    def setValue(self, value: float) -> None: ...

class CreationHelper:
    def createAreaReference(self, *args: Any) -> AreaReference: ...
    def createClientAnchor(self) -> ClientAnchor: ...
    def createDataFormat(self) -> DataFormat: ...
    def createExtendedColor(self) -> ExtendedColor: ...
    def createFormulaEvaluator(self) -> FormulaEvaluator: ...
    def createHyperlink(self, type: HyperlinkType) -> Hyperlink: ...
    def createRichTextString(self, text: AnyStr) -> RichTextString: ...

class DataBarFormatting:
    def getColor(self) -> Color: ...
    def getMaxThreshold(self) -> ConditionalFormattingThreshold: ...
    def getMinThreshold(self) -> ConditionalFormattingThreshold: ...
    def getWidthMax(self) -> int: ...
    def getWidthMin(self) -> int: ...
    def isIconOnly(self) -> bool: ...
    def isLeftToRight(self) -> bool: ...
    def setColor(self, color: Color) -> None: ...
    def setIconOnly(self, only: bool) -> None: ...
    def setLeftToRight(self, ltr: bool) -> None: ...
    def setWidthMax(self, width: int) -> None: ...
    def setWidthMin(self, width: int) -> None: ...

class DataFormat:
    def getFormat(self, arg: Union[int, AnyStr]) -> int: ...

class DataValidation:
    class ErrorStyle:
        STOP: int
        WARNING: int
        INFO: int

    def createErrorBox(self, title: AnyStr, text: AnyStr) -> None: ...
    def createPromptBox(self, title: AnyStr, text: AnyStr) -> None: ...
    def getEmptyCellAllowed(self) -> bool: ...
    def getErrorBoxText(self) -> AnyStr: ...
    def getErrorBoxTitle(self) -> AnyStr: ...
    def getErrorStyle(self) -> int: ...
    def getPromptBoxText(self) -> AnyStr: ...
    def getPromptBoxTitle(self) -> AnyStr: ...
    def getRegions(self) -> CellRangeAddressList: ...
    def showShowErrorBox(self) -> bool: ...
    def showShowPromptBox(self) -> bool: ...
    def getSuppressDropDownArrow(self) -> bool: ...
    def getValidationConstraint(self) -> DataValidationConstraint: ...
    def setEmptyCellAllowed(self, allowed: bool) -> None: ...
    def setErrorStyle(self, error_style: int) -> None: ...
    def setShowErrorBox(self, show: bool) -> None: ...
    def setShowPromptBox(self, show: bool) -> None: ...
    def setSuppressDropDownArrow(self, suppress: bool) -> None: ...

class DataValidationConstraint:
    class OperatorType(Object):
        BETWEEN: int
        NOT_BETWEEN: int
        EQUAL: int
        NOT_EQUAL: int
        GREATER_THAN: int
        LESS_THAN: int
        GREATER_OR_EQUAL: int
        LESS_OR_EQUAL: int
        IGNORED: int
        def validateSecondArg(
            self, comparisonOperator: int, paramValue: AnyStr
        ) -> None: ...

    class ValidationType(Object):
        ANY: int
        INTEGER: int
        DECIMAL: int
        LIST: int
        DATE: int
        TIME: int
        TEXT_LENGTH: int
        FORMULA: int

    def getExplicitListValues(self) -> List[AnyStr]: ...
    def getFormula1(self) -> AnyStr: ...
    def getFormula2(self) -> AnyStr: ...
    def getOperator(self) -> int: ...
    def getValidationType(self) -> int: ...
    def setExplicitListValues(self, explicitListValues: List[AnyStr]) -> None: ...
    def setFormula1(self, formula: AnyStr) -> None: ...
    def setFormula2(self, formula: AnyStr) -> None: ...
    def setOperator(self, operator: int) -> None: ...

class DataValidationHelper:
    def createCustomConstraint(self, formula: AnyStr) -> DataValidationConstraint: ...
    def createDateConstraint(
        self, operatorType: int, formula1: AnyStr, formula2: AnyStr, dateFormat: AnyStr
    ) -> DataValidationConstraint: ...
    def createDecimalConstraint(
        self, operatorType: int, formula1: AnyStr, formula2: AnyStr
    ) -> DataValidationConstraint: ...
    def createExplicitListConstraint(
        self, listOfValues: List[AnyStr]
    ) -> DataValidationConstraint: ...
    def createFormulaListConstraint(
        self, listFormula: AnyStr
    ) -> DataValidationConstraint: ...
    def createIntegerConstraint(
        self, operatorType: int, formula1: AnyStr, formula2: AnyStr
    ) -> DataValidationConstraint: ...
    def createNumericConstraint(
        self, validationType: int, operatorType: int, formula1: AnyStr, formula2: AnyStr
    ) -> DataValidationConstraint: ...
    def createTextLengthConstraint(
        self, operatorType: int, formula1: AnyStr, formula2: AnyStr
    ) -> DataValidationConstraint: ...
    def createTimeConstraint(
        self, operatorType: int, formula1: AnyStr, formula2: AnyStr
    ) -> DataValidationConstraint: ...
    def createValidation(
        self,
        constraint: DataValidationConstraint,
        cellRangeAddressList: CellRangeAddressList,
    ) -> DataValidation: ...

class DateUtil(Object):
    DAY_MILLISECONDS: long
    HOURS_PER_DAY: int
    MINUTES_PER_HOUR: int
    SECONDS_PER_DAY: int
    SECONDS_PER_SECOND: int
    @staticmethod
    def convertTime(timeStr: AnyStr) -> float: ...
    @staticmethod
    def getExcelDate(
        date: Union[Calendar, Date, LocalDate, LocalDateTime],
        use1904windowing: bool = ...,
    ) -> float: ...
    @staticmethod
    def getJavaCalendar(
        date: float,
        use1904windowing: bool = ...,
        timezone: Optional[TimeZone] = ...,
        roundSeconds: bool = ...,
    ) -> Calendar: ...
    @staticmethod
    def getJavCalendarUTC(date: float, use1904windowing: bool = ...) -> Calendar: ...
    @staticmethod
    def getJavaDate(
        date: float,
        use1904windowing: bool = ...,
        timezone: Optional[TimeZone] = ...,
        roundSeconds: bool = ...,
    ) -> Date: ...
    @staticmethod
    def getLocalDateTime(
        date: float, use1904windowing: bool = ..., roundSeconds: bool = ...
    ) -> LocalDateTime: ...
    @staticmethod
    def isADateFormat(numFmt: ExcelNumberFormat) -> bool: ...
    @staticmethod
    def isCellDateFormatted(
        cell: Cell, cfEvaluator: Optional[ConditionalFormattingEvaluator] = ...
    ) -> bool: ...
    @staticmethod
    def isCellInternalDateFormatted(cell: Cell) -> bool: ...
    @staticmethod
    def isInternalDateFormat(format: int) -> bool: ...
    @staticmethod
    def isValidExcelDate(date: float) -> bool: ...
    @staticmethod
    def parseDateTime(str_: AnyStr) -> float: ...
    @staticmethod
    def parseYYYYMMDDDate(dateStr: AnyStr) -> float: ...
    @staticmethod
    def setCalendar(
        calendar: Calendar,
        wholeDays: int,
        millisecondsInDay: int,
        use1904windowing: bool,
        roundSeconds: bool,
    ) -> None: ...
    @staticmethod
    def toLocalDateTime(date: Union[Calendar, Date]) -> LocalDateTime: ...

class Font:
    COLOR_NORMAL: int
    COLOR_RED: int
    SS_NONE: int
    SS_SUPER: int
    SS_SUB: int
    U_NONE: int
    U_SINGLE: int
    U_DOUBLE: int
    U_SINGLE_ACCOUNTING: int
    U_DOUBLE_ACCOUNTING: int
    ANSI_CHARSET: int
    DEFAULT_CHARSET: int
    SYMBOL_CHARSET: int
    def getBold(self) -> bool: ...
    def getCharSet(self) -> int: ...
    def getColor(self) -> Color: ...
    def getFontHeight(self) -> int: ...
    def getFontHeightInPoints(self) -> int: ...
    def getFontName(self) -> AnyStr: ...
    def getIndexAsInt(self) -> int: ...
    def getItalic(self) -> bool: ...
    def getStrikeout(self) -> bool: ...
    def getTypeOffset(self) -> int: ...
    def getUnderline(self) -> int: ...
    def setBold(self, bold: bool) -> None: ...
    def setCharSet(self, charset: int) -> None: ...
    def setColor(self, color: Color) -> None: ...
    def setFontHeight(self, height: int) -> None: ...
    def setFontHeightInPoints(self, height: int) -> None: ...
    def setFontName(self, name: AnyStr) -> None: ...
    def setItalic(self, italic: bool) -> None: ...
    def setStrikeout(self, strikeout: bool) -> None: ...
    def setTypeOffset(self, offset: int) -> None: ...
    def setUnderline(self, underline: int) -> None: ...

class FontFormatting:
    SS_NONE: int
    SS_SUPER: int
    SS_SUB: int
    U_NONE: int
    U_SINGLE: int
    U_DOUBLE: int
    U_SINGLE_ACCOUNTING: int
    U_DOUBLE_ACCOUNTING: int
    def getEscapementType(self) -> int: ...
    def getFontColor(self) -> Color: ...
    def getFontColorIndex(self) -> int: ...
    def getFontHeight(self) -> int: ...
    def getUnderlineType(self) -> int: ...
    def isBold(self) -> bool: ...
    def isItalic(self) -> bool: ...
    def isStruckout(self) -> bool: ...
    def resetFontStyle(self) -> None: ...
    def setEscapementType(self, escapementType: int) -> None: ...
    def setFontColor(self, color: Color) -> None: ...
    def setFontColorIndex(self, color: int) -> None: ...
    def setFontHeight(self, height: int) -> None: ...
    def setFontStyle(self, italic: bool, bold: bool) -> None: ...
    def setUnderlineType(self, underlineType: int) -> None: ...

class HeaderFooter:
    def getCenter(self) -> AnyStr: ...
    def getLeft(self) -> AnyStr: ...
    def getRight(self) -> AnyStr: ...
    def setCenter(self, newCenter: AnyStr) -> None: ...
    def setLeft(self, newLeft: AnyStr) -> None: ...
    def setRight(self, newRight: AnyStr) -> None: ...

class Footer(HeaderFooter):
    def getCenter(self) -> AnyStr: ...
    def getLeft(self) -> AnyStr: ...
    def getRight(self) -> AnyStr: ...
    def setCenter(self, newCenter: AnyStr) -> None: ...
    def setLeft(self, newLeft: AnyStr) -> None: ...
    def setRight(self, newRight: AnyStr) -> None: ...

class FormulaEvaluator:
    def clearAllCachedResultValues(self) -> None: ...
    def evaluate(self, cell: Cell) -> CellValue: ...
    def evaluateAll(self) -> None: ...
    def evaluateFormulaCell(self, cell: Cell) -> CellType: ...
    def evaluateInCell(self, cell: Cell) -> Cell: ...
    def notifyDeleteCell(self, cell: Cell) -> None: ...
    def notifyUpdateCell(self, cell: Cell) -> None: ...
    def notifySetFormula(self, cell: Cell) -> None: ...
    def setDebugEvaluationOutputForNextEval(self, value: bool) -> None: ...
    def setIgnoreMissingWorkbooks(self, ignore: bool) -> None: ...
    def setupReferencedWorkbooks(
        self, workbooks: Dict[AnyStr, FormulaEvaluator]
    ) -> None: ...

class Header(HeaderFooter):
    def getCenter(self) -> AnyStr: ...
    def getLeft(self) -> AnyStr: ...
    def getRight(self) -> AnyStr: ...
    def setCenter(self, newCenter: AnyStr) -> None: ...
    def setLeft(self, newLeft: AnyStr) -> None: ...
    def setRight(self, newRight: AnyStr) -> None: ...

class Hyperlink(IHyperlink):
    def getFirstColumn(self) -> int: ...
    def getFirstRow(self) -> int: ...
    def getLastColumn(self) -> int: ...
    def getLastRow(self) -> int: ...
    def setFirstColumn(self, col: int) -> None: ...
    def setFirstRow(self, row: int) -> None: ...
    def setLastColumn(self, col: int) -> None: ...
    def setLastRow(self, row: int) -> None: ...

class IconMultiStateFormatting:
    class IconSet(Enum):
        GREY_3_ARROWS: IconMultiStateFormatting.IconSet
        GREY_4_ARROWS: IconMultiStateFormatting.IconSet
        GREY_5_ARROWS: IconMultiStateFormatting.IconSet
        GYR_3_ARROW: IconMultiStateFormatting.IconSet
        GYR_3_FLAGS: IconMultiStateFormatting.IconSet
        GYR_3_SHAPES: IconMultiStateFormatting.IconSet
        GYR_3_SYMBOLS: IconMultiStateFormatting.IconSet
        GYR_3_SYMBOLS_CIRCLE: IconMultiStateFormatting.IconSet
        GYR_3_TRAFFIC_LIGHTS: IconMultiStateFormatting.IconSet
        GYR_3_TRAFFIC_LIGHTS_BOX: IconMultiStateFormatting.IconSet
        GYR_4_ARROWS: IconMultiStateFormatting.IconSet
        GYRB_4_TRAFFIC_LIGHTS: IconMultiStateFormatting.IconSet
        GYYYR_5_ARROWS: IconMultiStateFormatting.IconSet
        QUARTERS_5: IconMultiStateFormatting.IconSet
        RATINGS_4: IconMultiStateFormatting.IconSet
        RATINGS_5: IconMultiStateFormatting.IconSet
        RB_4_TRAFFIC_LIGHTS: IconMultiStateFormatting.IconSet
        @staticmethod
        def byId(id: int) -> IconMultiStateFormatting.IconSet: ...
        @staticmethod
        def byName(name: AnyStr) -> IconMultiStateFormatting.IconSet: ...
        @staticmethod
        def values() -> List[IconMultiStateFormatting.IconSet]: ...

    def createThreshold(self) -> ConditionalFormattingThreshold: ...
    def getIconSet(self) -> IconSet: ...
    def getThresholds(self) -> List[ConditionalFormattingThreshold]: ...
    def isIconOnly(self) -> bool: ...
    def isReversed(self) -> bool: ...
    def setIconOnly(self, only: bool) -> None: ...
    def setIconSet(self, set: IconSet) -> None: ...
    def setReversed(self, reversed: bool) -> None: ...
    def setThresholds(
        self, thresholds: List[ConditionalFormattingThreshold]
    ) -> None: ...

class Name:
    def getComment(self) -> AnyStr: ...
    def getNameName(self) -> AnyStr: ...
    def getRefersToFormula(self) -> AnyStr: ...
    def getSheetIndex(self) -> int: ...
    def getSheetName(self) -> AnyStr: ...
    def isDeleted(self) -> bool: ...
    def isFunctionName(self) -> bool: ...
    def setComment(self, comment: AnyStr) -> None: ...
    def setFunction(self, value: bool) -> None: ...
    def setNameName(self, name: AnyStr) -> None: ...
    def setRefersToFormula(self, formulaText: AnyStr) -> None: ...
    def setSheetIndex(self, sheetId: int) -> None: ...

class Shape:
    def getAnchor(self) -> ChildAnchor: ...
    def getParent(self) -> Shape: ...
    def getShapeName(self) -> AnyStr: ...
    def isNoFill(self) -> bool: ...
    def setFillColor(self, red: int, green: int, blue: int) -> None: ...
    def setLineStyleColor(self, red: int, green: int, blue: int) -> None: ...
    def setNoFill(self, noFill: bool) -> None: ...

class Picture(Shape):
    def getClientAnchor(self) -> ClientAnchor: ...
    def getImageDimension(self) -> Dimension: ...
    def getPictureData(self) -> PictureData: ...
    def getPreferredSize(
        self, scaleX: int = ..., scaleY: int = ...
    ) -> ClientAnchor: ...
    def getSheet(self) -> Sheet: ...
    def resize(self, *args: Any) -> AnyStr: ...

class PatternFormatting:
    NO_FILL: int
    SOLID_FOREGROUND: int
    FINE_DOTS: int
    ALT_BARS: int
    SPARSE_DOTS: int
    THICK_HORZ_BANDS: int
    THICK_VERT_BANDS: int
    THICK_BACKWARD_DIAG: int
    THICK_FORWARD_DIAG: int
    BIG_SPOTS: int
    BRICKS: int
    THIN_BACKWARD_DIAG: int
    THIN_VERT_BANDS: int
    THIN_HORZ_BANDS: int
    THIN_FORWARD_DIAG: int
    SQUARES: int
    DIAMONDS: int
    LESS_DOTS: int
    LEAST_DOTS: int
    def getFillBackgroundColor(self) -> int: ...
    def getFillBackgroundColorColor(self) -> Color: ...
    def getFillForegroundColor(self) -> int: ...
    def getFillForegroundColorColor(self) -> Color: ...
    def getFillPattern(self) -> FillPatternType: ...
    def setFillBackgroundColor(self, bg: Union[int, Color]) -> None: ...
    def setFillForegroundColor(self, bg: Union[int, Color]) -> None: ...
    def setFillPattern(self, fp: FillPatternType) -> None: ...

class PictureData:
    def getData(self) -> bytearray: ...
    def getMimeType(self) -> AnyStr: ...
    def getPictureType(self) -> int: ...
    def suggestFileExtension(self) -> AnyStr: ...

class PrintSetup:
    PRINTER_DEFAULT_PAPERSIZE: int
    LETTER_PAPERSIZE: int
    LETTER_SMALL_PAGESIZE: int
    TABLOID_PAPERSIZE: int
    LEDGER_PAPERSIZE: int
    LEGAL_PAPERSIZE: int
    STATEMENT_PAPERSIZE: int
    EXECUTIVE_PAPERSIZE: int
    A3_PAPERSIZE: int
    A4_PAPERSIZE: int
    A4_SMALL_PAPERSIZE: int
    A5_PAPERSIZE: int
    B4_PAPERSIZE: int
    B5_PAPERSIZE: int
    FOLIO8_PAPERSIZE: int
    QUARTO_PAPERSIZE: int
    TEN_BY_FOURTEEN_PAPERSIZE: int
    ELEVEN_BY_SEVENTEEN_PAPERSIZE: int
    NOTE8_PAPERSIZE: int
    ENVELOPE_9_PAPERSIZE: int
    ENVELOPE_10_PAPERSIZE: int
    ENVELOPE_DL_PAPERSIZE: int
    ENVELOPE_CS_PAPERSIZE: int
    ENVELOPE_C5_PAPERSIZE: int
    ENVELOPE_C3_PAPERSIZE: int
    ENVELOPE_C4_PAPERSIZE: int
    ENVELOPE_C6_PAPERSIZE: int
    ENVELOPE_MONARCH_PAPERSIZE: int
    A4_EXTRA_PAPERSIZE: int
    A4_TRANSVERSE_PAPERSIZE: int
    A4_PLUS_PAPERSIZE: int
    LETTER_ROTATED_PAPERSIZE: int
    A4_ROTATED_PAPERSIZE: int
    def getCopies(self) -> int: ...
    def getDraft(self) -> bool: ...
    def getFitHeight(self) -> int: ...
    def getFitWidth(self) -> int: ...
    def getFooterMargin(self) -> float: ...
    def getHeaderMargin(self) -> float: ...
    def getHResolution(self) -> int: ...
    def getLandscape(self) -> bool: ...
    def getLeftToRight(self) -> bool: ...
    def getNoColor(self) -> bool: ...
    def getNoOrientation(self) -> bool: ...
    def getNotes(self) -> bool: ...
    def getPageStart(self) -> int: ...
    def getPaperSize(self) -> int: ...
    def getScale(self) -> int: ...
    def getUsePage(self) -> bool: ...
    def getValidSettings(self) -> bool: ...
    def getVResolution(self) -> int: ...
    def setCopies(self, copies: int) -> None: ...
    def setDraft(self, d: bool) -> None: ...
    def setFitHeight(self, height: int) -> None: ...
    def setFitWidth(self, width: int) -> None: ...
    def setFooterMargin(self, footermargin: float) -> None: ...
    def setHeaderMargin(self, headermargin: float) -> None: ...
    def setHResolution(self, resolution: int) -> None: ...
    def setLandscape(self, ls: bool) -> None: ...
    def setLeftToRight(self, ltor: bool) -> None: ...
    def setNoColor(self, mono: bool) -> None: ...
    def setNoOrientation(self, orientation: bool) -> None: ...
    def setNotes(self, printnotes: bool) -> None: ...
    def setPageStart(self, start: int) -> None: ...
    def setPaperSize(self, size: int) -> None: ...
    def setScale(self, scale: int) -> None: ...
    def setUsePage(self, page: bool) -> None: ...
    def setValidSettings(self, valid: bool) -> None: ...
    def setVResolution(self, resolution: int) -> None: ...

class RichTextString:
    def applyFont(self, *args: Any) -> None: ...
    def clearFormatting(self) -> None: ...
    def getIndexOfFormattingRun(self, index: int) -> int: ...
    def getString(self) -> AnyStr: ...
    def length(self) -> int: ...
    def numFormattingRuns(self) -> int: ...

class Row:
    class MissingCellPolicy(Enum):
        CREATE_NULL_AS_BLANK: Row.MissingCellPolicy
        RETURN_BLANK_AS_NULL: Row.MissingCellPolicy
        RETURN_NULL_AND_BLANK: Row.MissingCellPolicy
        @staticmethod
        def values() -> List[Row.MissingCellPolicy]: ...

    def cellIterator(self) -> Iterator[Cell]: ...
    def createCell(self, column: int, type_: Optional[CellType] = ...) -> Cell: ...
    def getCell(
        self, cellnum: int, policy: Optional[Row.MissingCellPolicy] = ...
    ) -> Cell: ...
    def getFirstCellNum(self) -> int: ...
    def getHeight(self) -> int: ...
    def getHeightInPoints(self) -> float: ...
    def getLastCellNum(self) -> int: ...
    def getOutlineLevel(self) -> int: ...
    def getPhysicalNumberOfCells(self) -> int: ...
    def getRowNum(self) -> int: ...
    def getRowStyle(self) -> CellStyle: ...
    def getSheet(self) -> Sheet: ...
    def getZeroHeight(self) -> bool: ...
    def isFormatted(self) -> bool: ...
    def removeCell(self, cell: Cell) -> None: ...
    def setHeight(self, height: int) -> None: ...
    def setHeightInPoints(self, height: float) -> None: ...
    def setRowNum(self, rowNum: int) -> None: ...
    def setRowStyle(self, style: CellStyle) -> None: ...
    def setZeroHeight(self, zHeight: bool) -> None: ...
    def shiftCellsLeft(
        self, firstShiftColumnIndex: int, lastShiftColumnIndex: int, step: int
    ) -> None: ...
    def shiftCellsRight(
        self, firstShiftColumnIndex: int, lastShiftColumnIndex: int, step: int
    ) -> None: ...
    def __iter__(self) -> Iterator[Cell]: ...

class ShapeContainer: ...

class SimpleShape(Shape):
    def getShapeId(self) -> int: ...

class ObjectData(SimpleShape):
    def getContentType(self) -> AnyStr: ...
    def getDirectory(self) -> DirectoryEntry: ...
    def getFileName(self) -> AnyStr: ...
    def getObjectData(self) -> bytearray: ...
    def getOLE2ClassName(self) -> AnyStr: ...
    def getPictureData(self) -> PictureData: ...
    def hasDirectoryEntry(self) -> bool: ...

class Drawing(ShapeContainer):
    def createAnchor(
        self,
        dx1: int,
        dy1: int,
        dx2: int,
        dy2: int,
        col1: int,
        row1: int,
        col2: int,
        row2: int,
    ) -> ClientAnchor: ...
    def createCellComment(self, anchor: ClientAnchor) -> Comment: ...
    def createObjectData(
        self, anchor: ClientAnchor, storageId: int, pictureIndex: int
    ) -> ObjectData: ...
    def createPicture(self, anchor: ClientAnchor, pictureIndex: int) -> Picture: ...

class Sheet:
    LeftMargin: int
    RightMargin: int
    TopMargin: int
    BottomMargin: int
    FooterMargin: int
    HeaderMargin: int
    PANE_LOWER_RIGHT: int
    PANE_UPPER_RIGHT: int
    PANE_LOWER_LEFT: int
    PANE_UPPER_LEFT: int
    def addMergedRegion(self, region: CellRangeAddress) -> None: ...
    def addMergedRegionUnsafe(self, region: CellRangeAddress) -> None: ...
    def addValidationData(self, data: DataValidation) -> None: ...
    def autoSizeColumn(self, column: int, useMergedCells: bool = ...) -> None: ...
    def createDrawingPatriarch(self) -> Drawing: ...
    def createFreezePane(
        self, colSplit: int, rowSplit: int, leftmostColumn: int = ..., topRow: int = ...
    ) -> None: ...
    def createRow(self, rownum: int) -> Row: ...
    def createSplitPane(
        self,
        xSplitPos: int,
        ySplitPos: int,
        leftmostColumn: int,
        topRow: int,
        activePane: int,
    ) -> None: ...
    def getActiveCell(self) -> CellAddress: ...
    def getAutobreaks(self) -> bool: ...
    def getCellComment(self, ref: CellAddress) -> Comment: ...
    def getCellComments(self) -> Dict[CellAddress, Comment]: ...
    def getColumnBreaks(self) -> List[int]: ...
    def getColumnOutlineLevel(self, column: int) -> int: ...
    def getColumnStyle(self, column: int) -> CellStyle: ...
    def getColumnWidth(self, column: int) -> int: ...
    def getColumnWidthInPixels(self, column: int) -> float: ...
    def getDataValidationHelper(self) -> DataValidationHelper: ...
    def getDataValidations(self) -> List[DataValidation]: ...
    def getDefaultColumnWidth(self) -> int: ...
    def getDefaultRowHeight(self) -> int: ...
    def getDefaultRowHeightInPoints(self) -> float: ...
    def getDisplayGuts(self) -> bool: ...
    def getDrawingPatriarch(self) -> Drawing: ...
    def getFirstRowNum(self) -> int: ...
    def getFitToPage(self) -> bool: ...
    def getFooter(self) -> Footer: ...
    def getForceFormulaRecalculation(self) -> bool: ...
    def getHeader(self) -> Header: ...
    def getHorizontallyCenter(self) -> bool: ...
    def getHyperlink(self, *args: Any) -> Hyperlink: ...
    def getHyperlinks(self) -> List[Hyperlink]: ...
    def getLastRowNum(self) -> int: ...
    def getLeftCol(self) -> int: ...
    def getMargin(self, margin: int) -> float: ...
    def getMergedRegions(self) -> List[CellRangeAddress]: ...
    def getNumMergedRegions(self) -> int: ...
    def getPaneInformation(self) -> PaneInformation: ...
    def getPhysicalNumberOfRows(self) -> int: ...
    def getPrintSetup(self) -> PrintSetup: ...
    def getProtect(self) -> bool: ...
    def getRepeatingColumns(self) -> CellRangeAddress: ...
    def getRepeatingRows(self) -> CellRangeAddress: ...
    def getRow(self, rownum: int) -> Row: ...
    def getRowBreaks(self) -> List[int]: ...
    def getRowSumsBelow(self) -> bool: ...
    def getRowSumsRight(self) -> bool: ...
    def getScenarioProtect(self) -> bool: ...
    def getSheetConditionalFormatting(self) -> SheetConditionalFormatting: ...
    def getSheetName(self) -> AnyStr: ...
    def getTopRow(self) -> int: ...
    def getVerticallyCenter(self) -> bool: ...
    def getWorkbook(self) -> Workbook: ...
    def groupColumn(self, fromColumn: int, toColumn: int) -> None: ...
    def groupRow(self, fromRow: int, toRow: int) -> None: ...
    def isColumnBroken(self, column: int) -> bool: ...
    def isColumnHidden(self, column: int) -> bool: ...
    def isDisplayFormulas(self) -> bool: ...
    def isDisplayGridlines(self) -> bool: ...
    def isDisplayRowColHeadings(self) -> bool: ...
    def isDisplayZeros(self) -> bool: ...
    def isPrintGridlines(self) -> bool: ...
    def isPrintRowAndColumnHeadings(self) -> bool: ...
    def isRightToLeft(self) -> bool: ...
    def isRowBroken(self, row: int) -> bool: ...
    def isSelected(self) -> bool: ...
    def protectSheet(self, password: AnyStr) -> None: ...
    def removeArrayFormula(self, cell: Cell) -> CellRange: ...
    def removeColumnBreak(self, column: int) -> None: ...
    def removeMergedRegion(self, index: int) -> None: ...
    def removeMergedRegions(self, indices: List[int]) -> None: ...
    def removeRow(self, row: Row) -> None: ...
    def removeRowBreak(self, row: int) -> None: ...
    def rowIterator(self) -> Iterator[Row]: ...
    def setActiveCell(self, address: CellAddress) -> None: ...
    def setArrayFormula(
        self, formula: AnyStr, range: CellRangeAddress
    ) -> CellRange: ...
    def setAutobreaks(self, value: bool) -> None: ...
    def setAutoFilter(self, range: CellRangeAddress) -> AutoFilter: ...
    def setColumnBreak(self, column: int) -> None: ...
    def setColumnGroupCollapsed(self, columnNumber: int, collapsed: bool) -> None: ...
    def setColumnHidden(self, columnIndex: int, hidden: bool) -> None: ...
    def setColumnWidth(self, columnIndex: int, width: int) -> None: ...
    def setDefaultColumnStyle(self, column: int, style: CellStyle) -> None: ...
    def setDefaultColumnWidth(self, width: int) -> None: ...
    def setDefaultRowHeight(self, height: int) -> None: ...
    def setDefaultRowHeightInPoints(self, height: float) -> None: ...
    def setDisplayFormulas(self, show: bool) -> None: ...
    def setDisplayGridlines(self, show: bool) -> None: ...
    def setDisplayGuts(self, value: bool) -> None: ...
    def setDisplayRowColHeadings(self, show: bool) -> None: ...
    def setDisplayZeros(self, value: bool) -> None: ...
    def setFitToPage(self, value: bool) -> None: ...
    def setForceFormulaRecalculation(self, value: bool) -> None: ...
    def setHorizontallyCenter(self, value: bool) -> None: ...
    def setMargin(self, margin: int, size: float) -> None: ...
    def setPrintGridlines(self, show: bool) -> None: ...
    def setPrintRowAndColumnHeadings(self, show: bool) -> None: ...
    def setRepeatingColumns(self, columnRangeRef: CellRangeAddress) -> None: ...
    def setRepeatingRows(self, rowRangeRef: CellRangeAddress) -> None: ...
    def setRightToLeft(self, value: bool) -> None: ...
    def setRowBreak(self, row: int) -> None: ...
    def setRowGroupCollapsed(self, row: int, collapse: bool) -> None: ...
    def setRowSumsBelow(self, value: bool) -> None: ...
    def setRowSumsRight(self, value: bool) -> None: ...
    def setSelected(self, value: bool) -> None: ...
    def setVerticallyCenter(self, value: bool) -> None: ...
    def setZoom(self, scale: int) -> None: ...
    def shiftColumns(self, startColumn: int, endColumn: int, n: int) -> None: ...
    def shiftRows(
        self,
        startRow: int,
        endRow: int,
        n: int,
        copyRowHeight: bool = ...,
        resetOriginalRowHeight: bool = ...,
    ) -> None: ...
    def showInPane(self, topRow: int, leftCol: int) -> None: ...
    def ungroupColumn(self, fromColumn: int, toColumn: int) -> None: ...
    def ungroupRow(self, fromRow: int, toRow: int) -> None: ...
    def valudateMergedRegions(self) -> None: ...
    def __iter__(self) -> Iterator[Row]: ...

class SheetConditionalFormatting:
    def addConditionalFormatting(self, *args: Any) -> int: ...
    def createConditionalFormattingColorScaleRule(
        self,
    ) -> ConditionalFormattingRule: ...
    def createConditionalFormattingRule(
        self, *args: Any
    ) -> ConditionalFormattingRule: ...
    def getConditionalFormattingAt(self, index: int) -> ConditionalFormatting: ...
    def getNumConditionalFormattings(self) -> int: ...
    def removeConditionalFormatting(self, index: int) -> None: ...

class Workbook(Closeable):
    PICTURE_TYPE_EMF: int
    PICTURE_TYPE_WMF: int
    PICTURE_TYPE_PICT: int
    PICTURE_TYPE_JPEG: int
    PICTURE_TYPE_PNG: int
    PICTURE_TYPE_DIB: int
    def addOlePackage(
        self, oleData: bytearray, label: AnyStr, fileName: AnyStr, command: AnyStr
    ) -> int: ...
    def addPicture(self, pictureData: bytearray, format_: int) -> int: ...
    def addToolPack(self, toolpack: UDFFinder) -> None: ...
    def cloneSheet(self, sheetNum: int) -> Sheet: ...
    def close(self) -> None: ...
    def createCellStyle(self) -> CellStyle: ...
    def createDataFormat(self) -> DataFormat: ...
    def createFont(self) -> Font: ...
    def createName(self) -> Name: ...
    def createSheet(self, name: Optional[AnyStr] = ...) -> Sheet: ...
    def findFont(
        self,
        bold: bool,
        color: int,
        fontHeight: float,
        name: AnyStr,
        italic: bool,
        strikeout: bool,
        underline: int,
    ) -> Font: ...
    def getActiveSheetIndex(self) -> int: ...
    def getAllNames(self) -> List[Name]: ...
    def getAllPictures(self) -> List[PictureData]: ...
    def getCellStyleAt(self, idx: int) -> CellStyle: ...
    def getCreationHelper(self) -> CreationHelper: ...
    def getFirstVisibleTab(self) -> int: ...
    def getFontAt(self, idx: int) -> Font: ...
    def getForceFormulaRecalculation(self) -> bool: ...
    def getMissingCellPolicy(self) -> Row.MissingCellPolicy: ...
    def getName(self, name: AnyStr) -> Name: ...
    def getNames(self) -> List[Name]: ...
    def getNumberOfFontsAsInt(self) -> int: ...
    def getNumberOfNames(self) -> int: ...
    def getNumberOfSheets(self) -> int: ...
    def getNumCellStyles(self) -> int: ...
    def getPrintArea(self) -> AnyStr: ...
    def getSheet(self, name: AnyStr) -> Sheet: ...
    def getSheetAt(self, index: int) -> Sheet: ...
    def getSheetIndex(self, arg: Union[AnyStr, Sheet]) -> int: ...
    def getSheetName(self, sheet: int) -> AnyStr: ...
    def getSheetVisibility(self, sheetIx: int) -> SheetVisibility: ...
    def getSpreadsheetVersion(self) -> SpreadsheetVersion: ...
    def isHidden(self) -> bool: ...
    def isSheetHidden(self, sheetIx: int) -> bool: ...
    def isSheetVeryHidden(self, sheetIx: int) -> bool: ...
    def linkExternalWorkbook(self, name: AnyStr, workbook: Workbook) -> None: ...
    def removeName(self, name: Name) -> None: ...
    def removePrintArea(self, sheetIndex: int) -> None: ...
    def removeSheetAt(self, sheetIndex: int) -> None: ...
    def setActiveSheet(self, sheetIndex: int) -> None: ...
    def setFirstVisibleTab(self, sheetIndex: int) -> None: ...
    def setForceFormulaRecalculation(self, value: bool) -> None: ...
    def setHidden(self, hiddenFlag: bool) -> None: ...
    def setMissingCellPolicy(
        self, missingCellPolicy: Row.MissingCellPolicy
    ) -> None: ...
    def setPrintArea(self, sheetIndex: int, *args: AnyStr) -> None: ...
    def setSelectedTab(self, index: int) -> None: ...
    def setSheetHidden(self, sheetIx: int, hidden: bool) -> None: ...
    def setSheetName(self, sheet: int, name: AnyStr) -> None: ...
    def setSheetOrder(self, sheetName: AnyStr, pos: int) -> None: ...
    def setSheetVisibility(self, sheetIx: int, visibility: SheetVisibility) -> None: ...
    def sheetIterator(self) -> Iterator[Sheet]: ...
    def write(self, stream: OutputStream) -> None: ...
    def __iter__(self) -> Iterator[Sheet]: ...

class BorderStyle(Enum):
    NONE: BorderStyle
    THIN: BorderStyle
    MEDIUM: BorderStyle
    DASHED: BorderStyle
    DOTTED: BorderStyle
    THICK: BorderStyle
    DOUBLE: BorderStyle
    HAIR: BorderStyle
    MEDIUM_DASHED: BorderStyle
    DASH_DOTTED: BorderStyle
    MEDIUM_DASH_DOTTED: BorderStyle
    SLANTED_DASH_DOTTED: BorderStyle
    @staticmethod
    def forInt(code: int) -> BorderStyle: ...
    @staticmethod
    def values() -> List[BorderStyle]: ...

class CellType(Enum):
    BLANK: CellType
    BOOLEAN: CellType
    ERROR: CellType
    FORMULA: CellType
    NUMERIC: CellType
    STRING: CellType
    @staticmethod
    def forInt(code: int) -> CellType: ...
    @staticmethod
    def values() -> List[CellType]: ...

class ConditionFilterType(Enum):
    ABOVE_AVERAGE: ConditionFilterType
    BEGINS_WITH: ConditionFilterType
    CONTAINS_BLANKS: ConditionFilterType
    CONTAINS_ERRORS: ConditionFilterType
    CONTAINS_TEXT: ConditionFilterType
    DUPLICATE_VALUES: ConditionFilterType
    ENDS_WITH: ConditionFilterType
    FILTER: ConditionFilterType
    NOT_CONTAINS_BLANKS: ConditionFilterType
    NOT_CONTAINS_ERRORS: ConditionFilterType
    NOT_CONTAINS_TEXT: ConditionFilterType
    TIME_PERIOD: ConditionFilterType
    TOP_10: ConditionFilterType
    UNIQUE_VALUES: ConditionFilterType
    @staticmethod
    def values() -> List[ConditionFilterType]: ...

class ConditionType(Object):
    CELL_VALUE_IS: ConditionType
    COLOR_SCALE: ConditionType
    DATA_BAR: ConditionType
    FILTER: ConditionType
    FORMULA: ConditionType
    ICON_SET: ConditionType
    id: int
    type: AnyStr
    @staticmethod
    def forId(id: int) -> ConditionType: ...

class ExcelNumberFormat(Object):
    id: int
    format: AnyStr
    def __init__(self, idx: int, format_: AnyStr) -> None: ...
    def getIdx(self) -> int: ...
    def getFormat(self) -> AnyStr: ...

class ExtendedColor(Object, Color):
    def __init__(self) -> None: ...
    def getARGB(self) -> bytearray: ...
    def getARGBHex(self) -> AnyStr: ...
    def getIndex(self) -> int: ...
    def getRGB(self) -> bytearray: ...
    def getRGBWithTint(self) -> bytearray: ...
    def getTheme(self) -> int: ...
    def getTint(self) -> float: ...
    def isAuto(self) -> bool: ...
    def isIndexed(self) -> bool: ...
    def isRGB(self) -> bool: ...
    def isThemed(self) -> bool: ...
    def setARGBHex(self, argb: AnyStr) -> None: ...
    def setRGB(self, rgb: bytearray) -> None: ...
    def setTint(self, tint: float) -> None: ...

class CellValue(Object):
    FALSE: CellValue
    TRUE: CellValue
    def formatAsString(self) -> AnyStr: ...
    def getBooleanValue(self) -> bool: ...
    def getCellType(self) -> CellType: ...
    @staticmethod
    def getError(errorCode: int) -> int: ...
    def getErrorValue(self) -> int: ...
    def getNumberValue(self) -> float: ...
    def getStringValue(self) -> AnyStr: ...
    @staticmethod
    def valueOf(booleanValue: bool) -> CellValue: ...

class FillPatternType(Enum):
    NO_FILL: FillPatternType
    SOLID_FOREGROUND: FillPatternType
    FINE_DOTS: FillPatternType
    ALT_BARS: FillPatternType
    SPARSE_DOTS: FillPatternType
    THICK_HORZ_BANDS: FillPatternType
    THICK_VERT_BANDS: FillPatternType
    THICK_BACKWARD_DIAG: FillPatternType
    THICK_FORWARD_DIAG: FillPatternType
    BIG_SPOTS: FillPatternType
    BRICKS: FillPatternType
    THIN_BACKWARD_DIAG: FillPatternType
    THIN_FORWARD_DIAG: FillPatternType
    THIN_HORZ_BANDS: FillPatternType
    THIN_VERT_BANDS: FillPatternType
    @staticmethod
    def forInt(code: int) -> FillPatternType: ...
    @staticmethod
    def values() -> List[FillPatternType]: ...

class HorizontalAlignment(Enum):
    CENTER: HorizontalAlignment
    CENTER_SELECTION: HorizontalAlignment
    DISTRIBUTED: HorizontalAlignment
    GENERAL: HorizontalAlignment
    JUSTIFY: HorizontalAlignment
    LEFT: HorizontalAlignment
    RIGHT: HorizontalAlignment
    @staticmethod
    def forInt(code: int) -> HorizontalAlignment: ...
    @staticmethod
    def values() -> List[HorizontalAlignment]: ...

class SheetVisibility(Enum):
    HIDDEN: SheetVisibility
    VISIBLE: SheetVisibility
    VERY_HIDDEN: SheetVisibility
    @staticmethod
    def values() -> List[SheetVisibility]: ...

class VerticalAlignment(Enum):
    BOTTOM: VerticalAlignment
    CENTER: VerticalAlignment
    DISTRIBUTED: VerticalAlignment
    JUSTIFY: VerticalAlignment
    TOP: VerticalAlignment
    @staticmethod
    def forInt(code: int) -> VerticalAlignment: ...
    @staticmethod
    def values() -> List[VerticalAlignment]: ...

class WorkbookFactory(Object):
    def __init__(self) -> None: ...
    @staticmethod
    def create(*args: Any) -> Workbook: ...
