# The PEP 484 type hints stub file for the _core module.
#
# Generated by SIP 6.1.1


import typing

import PyQt5.sip

from PyQt5 import QtPositioning
from PyQt5 import QtWidgets
from PyQt5 import QtPrintSupport
from PyQt5 import QtSql
from PyQt5 import QtNetwork
from PyQt5 import QtXml

# Support for QDate, QDateTime and QTime.
import datetime

# Convenient type aliases.
PYQT_SIGNAL = typing.Union[QtCore.pyqtSignal, QtCore.pyqtBoundSignal]
PYQT_SLOT = typing.Union[typing.Callable[..., None], QtCore.pyqtBoundSignal]

# Convenient aliases for complicated OpenGL types.
PYQT_OPENGL_ARRAY = typing.Union[typing.Sequence[int], typing.Sequence[float],
        PyQt5.sip.Buffer, None]
PYQT_OPENGL_BOUND_ARRAY = typing.Union[typing.Sequence[int],
        typing.Sequence[float], PyQt5.sip.Buffer, int, None]


class SmartgroupTable(int):
    SmartgroupId = ... # type: SmartgroupTable
    SmartgroupName = ... # type: SmartgroupTable
    SmartgroupXML = ... # type: SmartgroupTable


class LabelSettingsTable(int):
    LabelSettingsId = ... # type: LabelSettingsTable
    LabelSettingsName = ... # type: LabelSettingsTable
    LabelSettingsXML = ... # type: LabelSettingsTable
    LabelSettingsFavoriteId = ... # type: LabelSettingsTable


class TextFormatTable(int):
    TextFormatId = ... # type: TextFormatTable
    TextFormatName = ... # type: TextFormatTable
    TextFormatXML = ... # type: TextFormatTable
    TextFormatFavoriteId = ... # type: TextFormatTable


class ColorrampTable(int):
    ColorrampId = ... # type: ColorrampTable
    ColorrampName = ... # type: ColorrampTable
    ColorrampXML = ... # type: ColorrampTable
    ColorrampFavoriteId = ... # type: ColorrampTable


class TagmapTable(int):
    TagmapTagId = ... # type: TagmapTable
    TagmapSymbolId = ... # type: TagmapTable


class TagTable(int):
    TagId = ... # type: TagTable
    TagName = ... # type: TagTable


class SymbolTable(int):
    SymbolId = ... # type: SymbolTable
    SymbolName = ... # type: SymbolTable
    SymbolXML = ... # type: SymbolTable
    SymbolFavoriteId = ... # type: SymbolTable


class Qgis(PyQt5.sip.wrapper):

    class TileAvailability(int):
        Available = ... # type: Qgis.TileAvailability
        NotAvailable = ... # type: Qgis.TileAvailability
        AvailableNoChildren = ... # type: Qgis.TileAvailability
        UseLowerZoomLevelTile = ... # type: Qgis.TileAvailability

    class VectorTileProviderCapability(int):
        ReadLayerMetadata = ... # type: Qgis.VectorTileProviderCapability

    class VectorTileProviderFlag(int):
        AlwaysUseTileMatrixSetFromProvider = ... # type: Qgis.VectorTileProviderFlag

    class FeatureSymbologyExport(int):
        NoSymbology = ... # type: Qgis.FeatureSymbologyExport
        PerFeature = ... # type: Qgis.FeatureSymbologyExport
        PerSymbolLayer = ... # type: Qgis.FeatureSymbologyExport

    class ExpressionType(int):
        Qgis = ... # type: Qgis.ExpressionType
        PointCloud = ... # type: Qgis.ExpressionType

    class AttributeFormPythonInitCodeSource(int):
        NoSource = ... # type: Qgis.AttributeFormPythonInitCodeSource
        File = ... # type: Qgis.AttributeFormPythonInitCodeSource
        Dialog = ... # type: Qgis.AttributeFormPythonInitCodeSource
        Environment = ... # type: Qgis.AttributeFormPythonInitCodeSource

    class AttributeFormSuppression(int):
        Default = ... # type: Qgis.AttributeFormSuppression
        On = ... # type: Qgis.AttributeFormSuppression
        Off = ... # type: Qgis.AttributeFormSuppression

    class AttributeFormLayout(int):
        AutoGenerated = ... # type: Qgis.AttributeFormLayout
        DragAndDrop = ... # type: Qgis.AttributeFormLayout
        UiFile = ... # type: Qgis.AttributeFormLayout

    class AttributeEditorContainerType(int):
        GroupBox = ... # type: Qgis.AttributeEditorContainerType
        Tab = ... # type: Qgis.AttributeEditorContainerType
        Row = ... # type: Qgis.AttributeEditorContainerType

    class AttributeEditorType(int):
        Container = ... # type: Qgis.AttributeEditorType
        Field = ... # type: Qgis.AttributeEditorType
        Relation = ... # type: Qgis.AttributeEditorType
        QmlElement = ... # type: Qgis.AttributeEditorType
        HtmlElement = ... # type: Qgis.AttributeEditorType
        Action = ... # type: Qgis.AttributeEditorType
        TextElement = ... # type: Qgis.AttributeEditorType
        SpacerElement = ... # type: Qgis.AttributeEditorType
        Invalid = ... # type: Qgis.AttributeEditorType

    class UserProfileSelectionPolicy(int):
        LastProfile = ... # type: Qgis.UserProfileSelectionPolicy
        DefaultProfile = ... # type: Qgis.UserProfileSelectionPolicy
        AskUser = ... # type: Qgis.UserProfileSelectionPolicy

    class DatabaseProviderConnectionCapability2(int):
        SetFieldComment = ... # type: Qgis.DatabaseProviderConnectionCapability2
        SetFieldAlias = ... # type: Qgis.DatabaseProviderConnectionCapability2

    class PostgresRelKind(int):
        NotSet = ... # type: Qgis.PostgresRelKind
        Unknown = ... # type: Qgis.PostgresRelKind
        OrdinaryTable = ... # type: Qgis.PostgresRelKind
        Index = ... # type: Qgis.PostgresRelKind
        Sequence = ... # type: Qgis.PostgresRelKind
        View = ... # type: Qgis.PostgresRelKind
        MaterializedView = ... # type: Qgis.PostgresRelKind
        CompositeType = ... # type: Qgis.PostgresRelKind
        ToastTable = ... # type: Qgis.PostgresRelKind
        ForeignTable = ... # type: Qgis.PostgresRelKind
        PartitionedTable = ... # type: Qgis.PostgresRelKind

    class LayoutUnitType(int):
        PaperUnits = ... # type: Qgis.LayoutUnitType
        ScreenUnits = ... # type: Qgis.LayoutUnitType

    class LayoutUnit(int):
        Millimeters = ... # type: Qgis.LayoutUnit
        Centimeters = ... # type: Qgis.LayoutUnit
        Meters = ... # type: Qgis.LayoutUnit
        Inches = ... # type: Qgis.LayoutUnit
        Feet = ... # type: Qgis.LayoutUnit
        Points = ... # type: Qgis.LayoutUnit
        Picas = ... # type: Qgis.LayoutUnit
        Pixels = ... # type: Qgis.LayoutUnit

    class RenderUnit(int):
        Millimeters = ... # type: Qgis.RenderUnit
        MapUnits = ... # type: Qgis.RenderUnit
        Pixels = ... # type: Qgis.RenderUnit
        Percentage = ... # type: Qgis.RenderUnit
        Points = ... # type: Qgis.RenderUnit
        Inches = ... # type: Qgis.RenderUnit
        Unknown = ... # type: Qgis.RenderUnit
        MetersInMapUnits = ... # type: Qgis.RenderUnit

    class TemporalUnit(int):
        Milliseconds = ... # type: Qgis.TemporalUnit
        Seconds = ... # type: Qgis.TemporalUnit
        Minutes = ... # type: Qgis.TemporalUnit
        Hours = ... # type: Qgis.TemporalUnit
        Days = ... # type: Qgis.TemporalUnit
        Weeks = ... # type: Qgis.TemporalUnit
        Months = ... # type: Qgis.TemporalUnit
        Years = ... # type: Qgis.TemporalUnit
        Decades = ... # type: Qgis.TemporalUnit
        Centuries = ... # type: Qgis.TemporalUnit
        IrregularStep = ... # type: Qgis.TemporalUnit
        Unknown = ... # type: Qgis.TemporalUnit

    class AngleUnit(int):
        Degrees = ... # type: Qgis.AngleUnit
        Radians = ... # type: Qgis.AngleUnit
        Gon = ... # type: Qgis.AngleUnit
        MinutesOfArc = ... # type: Qgis.AngleUnit
        SecondsOfArc = ... # type: Qgis.AngleUnit
        Turn = ... # type: Qgis.AngleUnit
        MilliradiansSI = ... # type: Qgis.AngleUnit
        MilNATO = ... # type: Qgis.AngleUnit
        Unknown = ... # type: Qgis.AngleUnit

    class VolumeUnit(int):
        CubicMeters = ... # type: Qgis.VolumeUnit
        CubicFeet = ... # type: Qgis.VolumeUnit
        CubicYards = ... # type: Qgis.VolumeUnit
        Barrel = ... # type: Qgis.VolumeUnit
        CubicDecimeter = ... # type: Qgis.VolumeUnit
        Liters = ... # type: Qgis.VolumeUnit
        GallonUS = ... # type: Qgis.VolumeUnit
        CubicInch = ... # type: Qgis.VolumeUnit
        CubicCentimeter = ... # type: Qgis.VolumeUnit
        CubicDegrees = ... # type: Qgis.VolumeUnit
        Unknown = ... # type: Qgis.VolumeUnit

    class AreaUnit(int):
        SquareMeters = ... # type: Qgis.AreaUnit
        SquareKilometers = ... # type: Qgis.AreaUnit
        SquareFeet = ... # type: Qgis.AreaUnit
        SquareYards = ... # type: Qgis.AreaUnit
        SquareMiles = ... # type: Qgis.AreaUnit
        Hectares = ... # type: Qgis.AreaUnit
        Acres = ... # type: Qgis.AreaUnit
        SquareNauticalMiles = ... # type: Qgis.AreaUnit
        SquareDegrees = ... # type: Qgis.AreaUnit
        SquareCentimeters = ... # type: Qgis.AreaUnit
        SquareMillimeters = ... # type: Qgis.AreaUnit
        SquareInches = ... # type: Qgis.AreaUnit
        Unknown = ... # type: Qgis.AreaUnit

    class DistanceUnitType(int):
        Standard = ... # type: Qgis.DistanceUnitType
        Geographic = ... # type: Qgis.DistanceUnitType
        Unknown = ... # type: Qgis.DistanceUnitType

    class DistanceUnit(int):
        Meters = ... # type: Qgis.DistanceUnit
        Kilometers = ... # type: Qgis.DistanceUnit
        Feet = ... # type: Qgis.DistanceUnit
        NauticalMiles = ... # type: Qgis.DistanceUnit
        Yards = ... # type: Qgis.DistanceUnit
        Miles = ... # type: Qgis.DistanceUnit
        Degrees = ... # type: Qgis.DistanceUnit
        Centimeters = ... # type: Qgis.DistanceUnit
        Millimeters = ... # type: Qgis.DistanceUnit
        Inches = ... # type: Qgis.DistanceUnit
        Unknown = ... # type: Qgis.DistanceUnit

    class UnitType(int):
        Distance = ... # type: Qgis.UnitType
        Area = ... # type: Qgis.UnitType
        Volume = ... # type: Qgis.UnitType
        Unknown = ... # type: Qgis.UnitType
        Temporal = ... # type: Qgis.UnitType

    class MapToolUnit(int):
        Layer = ... # type: Qgis.MapToolUnit
        Pixels = ... # type: Qgis.MapToolUnit
        Project = ... # type: Qgis.MapToolUnit

    class SystemOfMeasurement(int):
        Unknown = ... # type: Qgis.SystemOfMeasurement
        Metric = ... # type: Qgis.SystemOfMeasurement
        Imperial = ... # type: Qgis.SystemOfMeasurement
        USCS = ... # type: Qgis.SystemOfMeasurement

    class BlendMode(int):
        Normal = ... # type: Qgis.BlendMode
        Lighten = ... # type: Qgis.BlendMode
        Screen = ... # type: Qgis.BlendMode
        Dodge = ... # type: Qgis.BlendMode
        Addition = ... # type: Qgis.BlendMode
        Darken = ... # type: Qgis.BlendMode
        Multiply = ... # type: Qgis.BlendMode
        Burn = ... # type: Qgis.BlendMode
        Overlay = ... # type: Qgis.BlendMode
        SoftLight = ... # type: Qgis.BlendMode
        HardLight = ... # type: Qgis.BlendMode
        Difference = ... # type: Qgis.BlendMode
        Subtract = ... # type: Qgis.BlendMode
        Source = ... # type: Qgis.BlendMode
        DestinationOver = ... # type: Qgis.BlendMode
        Clear = ... # type: Qgis.BlendMode
        Destination = ... # type: Qgis.BlendMode
        SourceIn = ... # type: Qgis.BlendMode
        DestinationIn = ... # type: Qgis.BlendMode
        SourceOut = ... # type: Qgis.BlendMode
        DestinationOut = ... # type: Qgis.BlendMode
        SourceAtop = ... # type: Qgis.BlendMode
        DestinationAtop = ... # type: Qgis.BlendMode
        Xor = ... # type: Qgis.BlendMode

    class ElevationMapCombineMethod(int):
        HighestElevation = ... # type: Qgis.ElevationMapCombineMethod
        NewerElevation = ... # type: Qgis.ElevationMapCombineMethod

    class RasterIdentifyFormat(int):
        Undefined = ... # type: Qgis.RasterIdentifyFormat
        Value = ... # type: Qgis.RasterIdentifyFormat
        Text = ... # type: Qgis.RasterIdentifyFormat
        Html = ... # type: Qgis.RasterIdentifyFormat
        Feature = ... # type: Qgis.RasterIdentifyFormat

    class RasterBuildPyramidOption(int):
        No = ... # type: Qgis.RasterBuildPyramidOption
        Yes = ... # type: Qgis.RasterBuildPyramidOption
        CopyExisting = ... # type: Qgis.RasterBuildPyramidOption

    class RasterPyramidFormat(int):
        GeoTiff = ... # type: Qgis.RasterPyramidFormat
        Internal = ... # type: Qgis.RasterPyramidFormat
        Erdas = ... # type: Qgis.RasterPyramidFormat

    class RasterDrawingStyle(int):
        Undefined = ... # type: Qgis.RasterDrawingStyle
        SingleBandGray = ... # type: Qgis.RasterDrawingStyle
        SingleBandPseudoColor = ... # type: Qgis.RasterDrawingStyle
        PalettedColor = ... # type: Qgis.RasterDrawingStyle
        PalettedSingleBandGray = ... # type: Qgis.RasterDrawingStyle
        PalettedSingleBandPseudoColor = ... # type: Qgis.RasterDrawingStyle
        PalettedMultiBandColor = ... # type: Qgis.RasterDrawingStyle
        MultiBandSingleBandGray = ... # type: Qgis.RasterDrawingStyle
        MultiBandSingleBandPseudoColor = ... # type: Qgis.RasterDrawingStyle
        MultiBandColor = ... # type: Qgis.RasterDrawingStyle
        SingleBandColorData = ... # type: Qgis.RasterDrawingStyle

    class RasterLayerType(int):
        GrayOrUndefined = ... # type: Qgis.RasterLayerType
        Palette = ... # type: Qgis.RasterLayerType
        MultiBand = ... # type: Qgis.RasterLayerType
        SingleBandColorData = ... # type: Qgis.RasterLayerType

    class RasterColorInterpretation(int):
        Undefined = ... # type: Qgis.RasterColorInterpretation
        GrayIndex = ... # type: Qgis.RasterColorInterpretation
        PaletteIndex = ... # type: Qgis.RasterColorInterpretation
        RedBand = ... # type: Qgis.RasterColorInterpretation
        GreenBand = ... # type: Qgis.RasterColorInterpretation
        BlueBand = ... # type: Qgis.RasterColorInterpretation
        AlphaBand = ... # type: Qgis.RasterColorInterpretation
        HueBand = ... # type: Qgis.RasterColorInterpretation
        SaturationBand = ... # type: Qgis.RasterColorInterpretation
        LightnessBand = ... # type: Qgis.RasterColorInterpretation
        CyanBand = ... # type: Qgis.RasterColorInterpretation
        MagentaBand = ... # type: Qgis.RasterColorInterpretation
        YellowBand = ... # type: Qgis.RasterColorInterpretation
        BlackBand = ... # type: Qgis.RasterColorInterpretation
        YCbCr_YBand = ... # type: Qgis.RasterColorInterpretation
        YCbCr_CbBand = ... # type: Qgis.RasterColorInterpretation
        YCbCr_CrBand = ... # type: Qgis.RasterColorInterpretation
        ContinuousPalette = ... # type: Qgis.RasterColorInterpretation

    class MetadataDateType(int):
        Created = ... # type: Qgis.MetadataDateType
        Published = ... # type: Qgis.MetadataDateType
        Revised = ... # type: Qgis.MetadataDateType
        Superseded = ... # type: Qgis.MetadataDateType

    class AttributeActionType(int):
        Generic = ... # type: Qgis.AttributeActionType
        GenericPython = ... # type: Qgis.AttributeActionType
        Mac = ... # type: Qgis.AttributeActionType
        Windows = ... # type: Qgis.AttributeActionType
        Unix = ... # type: Qgis.AttributeActionType
        OpenUrl = ... # type: Qgis.AttributeActionType
        SubmitUrlEncoded = ... # type: Qgis.AttributeActionType
        SubmitUrlMultipart = ... # type: Qgis.AttributeActionType

    class MapLayerActionFlag(int):
        EnabledOnlyWhenEditable = ... # type: Qgis.MapLayerActionFlag

    class MapLayerActionTarget(int):
        Layer = ... # type: Qgis.MapLayerActionTarget
        SingleFeature = ... # type: Qgis.MapLayerActionTarget
        MultipleFeatures = ... # type: Qgis.MapLayerActionTarget
        AllActions = ... # type: Qgis.MapLayerActionTarget

    class ActionType(int):
        Invalid = ... # type: Qgis.ActionType
        MapLayerAction = ... # type: Qgis.ActionType
        AttributeAction = ... # type: Qgis.ActionType

    class LayerTreeFilterFlag(int):
        SkipVisibilityCheck = ... # type: Qgis.LayerTreeFilterFlag

    class LayerTreeInsertionMethod(int):
        AboveInsertionPoint = ... # type: Qgis.LayerTreeInsertionMethod
        TopOfTree = ... # type: Qgis.LayerTreeInsertionMethod
        OptimalInInsertionGroup = ... # type: Qgis.LayerTreeInsertionMethod

    class ScriptLanguageCapability(int):
        Reformat = ... # type: Qgis.ScriptLanguageCapability
        CheckSyntax = ... # type: Qgis.ScriptLanguageCapability
        ToggleComment = ... # type: Qgis.ScriptLanguageCapability

    class ScriptLanguage(int):
        Css = ... # type: Qgis.ScriptLanguage
        QgisExpression = ... # type: Qgis.ScriptLanguage
        Html = ... # type: Qgis.ScriptLanguage
        JavaScript = ... # type: Qgis.ScriptLanguage
        Json = ... # type: Qgis.ScriptLanguage
        Python = ... # type: Qgis.ScriptLanguage
        R = ... # type: Qgis.ScriptLanguage
        Sql = ... # type: Qgis.ScriptLanguage
        Batch = ... # type: Qgis.ScriptLanguage
        Bash = ... # type: Qgis.ScriptLanguage
        Unknown = ... # type: Qgis.ScriptLanguage

    class SettingsOrigin(int):
        Any = ... # type: Qgis.SettingsOrigin
        Global = ... # type: Qgis.SettingsOrigin
        Local = ... # type: Qgis.SettingsOrigin

    class CoordinateDisplayType(int):
        MapCrs = ... # type: Qgis.CoordinateDisplayType
        MapGeographic = ... # type: Qgis.CoordinateDisplayType
        CustomCrs = ... # type: Qgis.CoordinateDisplayType

    class RelationshipCapability(int):
        MultipleFieldKeys = ... # type: Qgis.RelationshipCapability
        ForwardPathLabel = ... # type: Qgis.RelationshipCapability
        BackwardPathLabel = ... # type: Qgis.RelationshipCapability

    class RelationshipCardinality(int):
        OneToOne = ... # type: Qgis.RelationshipCardinality
        OneToMany = ... # type: Qgis.RelationshipCardinality
        ManyToOne = ... # type: Qgis.RelationshipCardinality
        ManyToMany = ... # type: Qgis.RelationshipCardinality

    class RelationshipStrength(int):
        Association = ... # type: Qgis.RelationshipStrength
        Composition = ... # type: Qgis.RelationshipStrength

    class RelationshipType(int):
        Normal = ... # type: Qgis.RelationshipType
        Generated = ... # type: Qgis.RelationshipType

    class ArcGisRestServiceType(int):
        FeatureServer = ... # type: Qgis.ArcGisRestServiceType
        MapServer = ... # type: Qgis.ArcGisRestServiceType
        ImageServer = ... # type: Qgis.ArcGisRestServiceType
        GlobeServer = ... # type: Qgis.ArcGisRestServiceType
        GPServer = ... # type: Qgis.ArcGisRestServiceType
        GeocodeServer = ... # type: Qgis.ArcGisRestServiceType
        Unknown = ... # type: Qgis.ArcGisRestServiceType

    class MapBoxGlStyleSourceType(int):
        Vector = ... # type: Qgis.MapBoxGlStyleSourceType
        Raster = ... # type: Qgis.MapBoxGlStyleSourceType
        RasterDem = ... # type: Qgis.MapBoxGlStyleSourceType
        GeoJson = ... # type: Qgis.MapBoxGlStyleSourceType
        Image = ... # type: Qgis.MapBoxGlStyleSourceType
        Video = ... # type: Qgis.MapBoxGlStyleSourceType
        Unknown = ... # type: Qgis.MapBoxGlStyleSourceType

    class ProjectCapability(int):
        ProjectStyles = ... # type: Qgis.ProjectCapability

    class ProjectReadFlag(int):
        DontResolveLayers = ... # type: Qgis.ProjectReadFlag
        DontLoadLayouts = ... # type: Qgis.ProjectReadFlag
        TrustLayerMetadata = ... # type: Qgis.ProjectReadFlag
        DontStoreOriginalStyles = ... # type: Qgis.ProjectReadFlag
        DontLoad3DViews = ... # type: Qgis.ProjectReadFlag
        DontLoadProjectStyles = ... # type: Qgis.ProjectReadFlag
        ForceReadOnlyLayers = ... # type: Qgis.ProjectReadFlag

    class ProjectFileFormat(int):
        Qgz = ... # type: Qgis.ProjectFileFormat
        Qgs = ... # type: Qgis.ProjectFileFormat

    class AvoidIntersectionsMode(int):
        AllowIntersections = ... # type: Qgis.AvoidIntersectionsMode
        AvoidIntersectionsCurrentLayer = ... # type: Qgis.AvoidIntersectionsMode
        AvoidIntersectionsLayers = ... # type: Qgis.AvoidIntersectionsMode

    class PointCloudDrawOrder(int):
        Default = ... # type: Qgis.PointCloudDrawOrder
        BottomToTop = ... # type: Qgis.PointCloudDrawOrder
        TopToBottom = ... # type: Qgis.PointCloudDrawOrder

    class PointCloudSymbol(int):
        Square = ... # type: Qgis.PointCloudSymbol
        Circle = ... # type: Qgis.PointCloudSymbol

    class ProfileExportType(int):
        Features3D = ... # type: Qgis.ProfileExportType
        Profile2D = ... # type: Qgis.ProfileExportType
        DistanceVsElevationTable = ... # type: Qgis.ProfileExportType

    class ProfileGeneratorFlag(int):
        RespectsMaximumErrorMapUnit = ... # type: Qgis.ProfileGeneratorFlag
        RespectsDistanceRange = ... # type: Qgis.ProfileGeneratorFlag
        RespectsElevationRange = ... # type: Qgis.ProfileGeneratorFlag

    class VectorProfileType(int):
        IndividualFeatures = ... # type: Qgis.VectorProfileType
        ContinuousSurface = ... # type: Qgis.VectorProfileType

    class ProfileSurfaceSymbology(int):
        Line = ... # type: Qgis.ProfileSurfaceSymbology
        FillBelow = ... # type: Qgis.ProfileSurfaceSymbology
        FillAbove = ... # type: Qgis.ProfileSurfaceSymbology

    class VerticalAxisInversion(int):
        Never = ... # type: Qgis.VerticalAxisInversion
        WhenDragging = ... # type: Qgis.VerticalAxisInversion
        Always = ... # type: Qgis.VerticalAxisInversion

    class NavigationMode(int):
        TerrainBased = ... # type: Qgis.NavigationMode
        Walk = ... # type: Qgis.NavigationMode

    class LightSourceType(int):
        Point = ... # type: Qgis.LightSourceType
        Directional = ... # type: Qgis.LightSourceType

    class PlotToolFlag(int):
        ShowContextMenu = ... # type: Qgis.PlotToolFlag

    class ProjectFlag(int):
        EvaluateDefaultValuesOnProviderSide = ... # type: Qgis.ProjectFlag
        TrustStoredLayerStatistics = ... # type: Qgis.ProjectFlag
        RememberLayerEditStatusBetweenSessions = ... # type: Qgis.ProjectFlag
        RememberAttributeTableWindowsBetweenSessions = ... # type: Qgis.ProjectFlag

    class CadConstraintType(int):
        Generic = ... # type: Qgis.CadConstraintType
        Angle = ... # type: Qgis.CadConstraintType
        Distance = ... # type: Qgis.CadConstraintType
        XCoordinate = ... # type: Qgis.CadConstraintType
        YCoordinate = ... # type: Qgis.CadConstraintType
        ZValue = ... # type: Qgis.CadConstraintType
        MValue = ... # type: Qgis.CadConstraintType

    class LineExtensionSide(int):
        BeforeVertex = ... # type: Qgis.LineExtensionSide
        AfterVertex = ... # type: Qgis.LineExtensionSide
        NoVertex = ... # type: Qgis.LineExtensionSide

    class BetweenLineConstraint(int):
        NoConstraint = ... # type: Qgis.BetweenLineConstraint
        Perpendicular = ... # type: Qgis.BetweenLineConstraint
        Parallel = ... # type: Qgis.BetweenLineConstraint

    class AltitudeBinding(int):
        Vertex = ... # type: Qgis.AltitudeBinding
        Centroid = ... # type: Qgis.AltitudeBinding

    class AltitudeClamping(int):
        Absolute = ... # type: Qgis.AltitudeClamping
        Relative = ... # type: Qgis.AltitudeClamping
        Terrain = ... # type: Qgis.AltitudeClamping

    class TransactionMode(int):
        Disabled = ... # type: Qgis.TransactionMode
        AutomaticGroups = ... # type: Qgis.TransactionMode
        BufferedGroups = ... # type: Qgis.TransactionMode

    class FieldDomainType(int):
        Coded = ... # type: Qgis.FieldDomainType
        Range = ... # type: Qgis.FieldDomainType
        Glob = ... # type: Qgis.FieldDomainType

    class FieldDomainMergePolicy(int):
        DefaultValue = ... # type: Qgis.FieldDomainMergePolicy
        Sum = ... # type: Qgis.FieldDomainMergePolicy
        GeometryWeighted = ... # type: Qgis.FieldDomainMergePolicy

    class FieldDomainSplitPolicy(int):
        DefaultValue = ... # type: Qgis.FieldDomainSplitPolicy
        Duplicate = ... # type: Qgis.FieldDomainSplitPolicy
        GeometryRatio = ... # type: Qgis.FieldDomainSplitPolicy
        UnsetField = ... # type: Qgis.FieldDomainSplitPolicy

    class CrsDefinitionFormat(int):
        Wkt = ... # type: Qgis.CrsDefinitionFormat
        Proj = ... # type: Qgis.CrsDefinitionFormat

    class HistoryProviderBackend(int):
        LocalProfile = ... # type: Qgis.HistoryProviderBackend

    class MapRecenteringMode(int):
        Always = ... # type: Qgis.MapRecenteringMode
        WhenOutsideVisibleExtent = ... # type: Qgis.MapRecenteringMode
        Never = ... # type: Qgis.MapRecenteringMode

    class ViewSyncModeFlag(int):
        Sync3DTo2D = ... # type: Qgis.ViewSyncModeFlag
        Sync2DTo3D = ... # type: Qgis.ViewSyncModeFlag

    class RendererUsage(int):
        View = ... # type: Qgis.RendererUsage
        Export = ... # type: Qgis.RendererUsage
        Unknown = ... # type: Qgis.RendererUsage

    class AngularDirection(int):
        Clockwise = ... # type: Qgis.AngularDirection
        CounterClockwise = ... # type: Qgis.AngularDirection

    class ScaleToTileZoomLevelMethod(int):
        MapBox = ... # type: Qgis.ScaleToTileZoomLevelMethod
        Esri = ... # type: Qgis.ScaleToTileZoomLevelMethod

    class TextRendererFlag(int):
        WrapLines = ... # type: Qgis.TextRendererFlag

    class Capitalization(int):
        MixedCase = ... # type: Qgis.Capitalization
        AllUppercase = ... # type: Qgis.Capitalization
        AllLowercase = ... # type: Qgis.Capitalization
        ForceFirstLetterToCapital = ... # type: Qgis.Capitalization
        SmallCaps = ... # type: Qgis.Capitalization
        TitleCase = ... # type: Qgis.Capitalization
        UpperCamelCase = ... # type: Qgis.Capitalization
        AllSmallCaps = ... # type: Qgis.Capitalization

    class TilePixelRatio(int):
        Undefined = ... # type: Qgis.TilePixelRatio
        StandardDpi = ... # type: Qgis.TilePixelRatio
        HighDpi = ... # type: Qgis.TilePixelRatio

    class DpiMode(int):
        All = ... # type: Qgis.DpiMode
        Off = ... # type: Qgis.DpiMode
        QGIS = ... # type: Qgis.DpiMode
        UMN = ... # type: Qgis.DpiMode
        GeoServer = ... # type: Qgis.DpiMode

    class PlotAxisSuffixPlacement(int):
        NoLabels = ... # type: Qgis.PlotAxisSuffixPlacement
        EveryLabel = ... # type: Qgis.PlotAxisSuffixPlacement
        FirstLabel = ... # type: Qgis.PlotAxisSuffixPlacement
        LastLabel = ... # type: Qgis.PlotAxisSuffixPlacement
        FirstAndLastLabels = ... # type: Qgis.PlotAxisSuffixPlacement

    class GraduatedMethod(int):
        Color = ... # type: Qgis.GraduatedMethod
        Size = ... # type: Qgis.GraduatedMethod

    class DashPatternSizeAdjustment(int):
        ScaleBothDashAndGap = ... # type: Qgis.DashPatternSizeAdjustment
        ScaleDashOnly = ... # type: Qgis.DashPatternSizeAdjustment
        ScaleGapOnly = ... # type: Qgis.DashPatternSizeAdjustment

    class DashPatternLineEndingRule(int):
        NoRule = ... # type: Qgis.DashPatternLineEndingRule
        FullDash = ... # type: Qgis.DashPatternLineEndingRule
        HalfDash = ... # type: Qgis.DashPatternLineEndingRule
        FullGap = ... # type: Qgis.DashPatternLineEndingRule
        HalfGap = ... # type: Qgis.DashPatternLineEndingRule

    class LineClipMode(int):
        ClipPainterOnly = ... # type: Qgis.LineClipMode
        ClipToIntersection = ... # type: Qgis.LineClipMode
        NoClipping = ... # type: Qgis.LineClipMode

    class MarkerClipMode(int):
        NoClipping = ... # type: Qgis.MarkerClipMode
        Shape = ... # type: Qgis.MarkerClipMode
        CentroidWithin = ... # type: Qgis.MarkerClipMode
        CompletelyWithin = ... # type: Qgis.MarkerClipMode

    class PointCountMethod(int):
        Absolute = ... # type: Qgis.PointCountMethod
        DensityBased = ... # type: Qgis.PointCountMethod

    class GradientSpread(int):
        Pad = ... # type: Qgis.GradientSpread
        Reflect = ... # type: Qgis.GradientSpread
        Repeat = ... # type: Qgis.GradientSpread

    class SymbolCoordinateReference(int):
        Feature = ... # type: Qgis.SymbolCoordinateReference
        Viewport = ... # type: Qgis.SymbolCoordinateReference

    class GradientType(int):
        Linear = ... # type: Qgis.GradientType
        Radial = ... # type: Qgis.GradientType
        Conical = ... # type: Qgis.GradientType

    class GradientColorSource(int):
        SimpleTwoColor = ... # type: Qgis.GradientColorSource
        ColorRamp = ... # type: Qgis.GradientColorSource

    class MarkerLinePlacement(int):
        Interval = ... # type: Qgis.MarkerLinePlacement
        Vertex = ... # type: Qgis.MarkerLinePlacement
        LastVertex = ... # type: Qgis.MarkerLinePlacement
        FirstVertex = ... # type: Qgis.MarkerLinePlacement
        CentralPoint = ... # type: Qgis.MarkerLinePlacement
        CurvePoint = ... # type: Qgis.MarkerLinePlacement
        SegmentCenter = ... # type: Qgis.MarkerLinePlacement
        InnerVertices = ... # type: Qgis.MarkerLinePlacement

    class MarkerShape(int):
        Square = ... # type: Qgis.MarkerShape
        Diamond = ... # type: Qgis.MarkerShape
        Pentagon = ... # type: Qgis.MarkerShape
        Hexagon = ... # type: Qgis.MarkerShape
        Triangle = ... # type: Qgis.MarkerShape
        EquilateralTriangle = ... # type: Qgis.MarkerShape
        Star = ... # type: Qgis.MarkerShape
        Arrow = ... # type: Qgis.MarkerShape
        Circle = ... # type: Qgis.MarkerShape
        Cross = ... # type: Qgis.MarkerShape
        CrossFill = ... # type: Qgis.MarkerShape
        Cross2 = ... # type: Qgis.MarkerShape
        Line = ... # type: Qgis.MarkerShape
        ArrowHead = ... # type: Qgis.MarkerShape
        ArrowHeadFilled = ... # type: Qgis.MarkerShape
        SemiCircle = ... # type: Qgis.MarkerShape
        ThirdCircle = ... # type: Qgis.MarkerShape
        QuarterCircle = ... # type: Qgis.MarkerShape
        QuarterSquare = ... # type: Qgis.MarkerShape
        HalfSquare = ... # type: Qgis.MarkerShape
        DiagonalHalfSquare = ... # type: Qgis.MarkerShape
        RightHalfTriangle = ... # type: Qgis.MarkerShape
        LeftHalfTriangle = ... # type: Qgis.MarkerShape
        Octagon = ... # type: Qgis.MarkerShape
        SquareWithCorners = ... # type: Qgis.MarkerShape
        AsteriskFill = ... # type: Qgis.MarkerShape
        HalfArc = ... # type: Qgis.MarkerShape
        ThirdArc = ... # type: Qgis.MarkerShape
        QuarterArc = ... # type: Qgis.MarkerShape
        ParallelogramRight = ... # type: Qgis.MarkerShape
        ParallelogramLeft = ... # type: Qgis.MarkerShape
        Trapezoid = ... # type: Qgis.MarkerShape
        Shield = ... # type: Qgis.MarkerShape
        DiamondStar = ... # type: Qgis.MarkerShape
        Heart = ... # type: Qgis.MarkerShape
        Decagon = ... # type: Qgis.MarkerShape
        RoundedSquare = ... # type: Qgis.MarkerShape

    class VertexType(int):
        Segment = ... # type: Qgis.VertexType
        Curve = ... # type: Qgis.VertexType

    class RenderSubcomponentProperty(int):
        Generic = ... # type: Qgis.RenderSubcomponentProperty
        ShadowOffset = ... # type: Qgis.RenderSubcomponentProperty
        BlurSize = ... # type: Qgis.RenderSubcomponentProperty
        GlowSpread = ... # type: Qgis.RenderSubcomponentProperty

    class TextCharacterVerticalAlignment(int):
        Normal = ... # type: Qgis.TextCharacterVerticalAlignment
        SuperScript = ... # type: Qgis.TextCharacterVerticalAlignment
        SubScript = ... # type: Qgis.TextCharacterVerticalAlignment

    class TextVerticalAlignment(int):
        Top = ... # type: Qgis.TextVerticalAlignment
        VerticalCenter = ... # type: Qgis.TextVerticalAlignment
        Bottom = ... # type: Qgis.TextVerticalAlignment

    class TextHorizontalAlignment(int):
        Left = ... # type: Qgis.TextHorizontalAlignment
        Center = ... # type: Qgis.TextHorizontalAlignment
        Right = ... # type: Qgis.TextHorizontalAlignment
        Justify = ... # type: Qgis.TextHorizontalAlignment

    class TextComponent(int):
        Text = ... # type: Qgis.TextComponent
        Buffer = ... # type: Qgis.TextComponent
        Background = ... # type: Qgis.TextComponent
        Shadow = ... # type: Qgis.TextComponent

    class TextLayoutMode(int):
        Rectangle = ... # type: Qgis.TextLayoutMode
        Point = ... # type: Qgis.TextLayoutMode
        Labeling = ... # type: Qgis.TextLayoutMode
        RectangleCapHeightBased = ... # type: Qgis.TextLayoutMode
        RectangleAscentBased = ... # type: Qgis.TextLayoutMode

    class TextOrientation(int):
        Horizontal = ... # type: Qgis.TextOrientation
        Vertical = ... # type: Qgis.TextOrientation
        RotationBased = ... # type: Qgis.TextOrientation

    class LabelPlacementEngineVersion(int):
        Version1 = ... # type: Qgis.LabelPlacementEngineVersion
        Version2 = ... # type: Qgis.LabelPlacementEngineVersion

    class LabelingFlag(int):
        UseAllLabels = ... # type: Qgis.LabelingFlag
        UsePartialCandidates = ... # type: Qgis.LabelingFlag
        RenderOutlineLabels = ... # type: Qgis.LabelingFlag
        DrawLabelRectOnly = ... # type: Qgis.LabelingFlag
        DrawCandidates = ... # type: Qgis.LabelingFlag
        DrawUnplacedLabels = ... # type: Qgis.LabelingFlag
        CollectUnplacedLabels = ... # type: Qgis.LabelingFlag
        DrawLabelMetrics = ... # type: Qgis.LabelingFlag

    class TextRenderFormat(int):
        AlwaysOutlines = ... # type: Qgis.TextRenderFormat
        AlwaysText = ... # type: Qgis.TextRenderFormat

    class RenderContextFlag(int):
        DrawEditingInfo = ... # type: Qgis.RenderContextFlag
        ForceVectorOutput = ... # type: Qgis.RenderContextFlag
        UseAdvancedEffects = ... # type: Qgis.RenderContextFlag
        UseRenderingOptimization = ... # type: Qgis.RenderContextFlag
        DrawSelection = ... # type: Qgis.RenderContextFlag
        DrawSymbolBounds = ... # type: Qgis.RenderContextFlag
        RenderMapTile = ... # type: Qgis.RenderContextFlag
        Antialiasing = ... # type: Qgis.RenderContextFlag
        RenderPartialOutput = ... # type: Qgis.RenderContextFlag
        RenderPreviewJob = ... # type: Qgis.RenderContextFlag
        RenderBlocking = ... # type: Qgis.RenderContextFlag
        RenderSymbolPreview = ... # type: Qgis.RenderContextFlag
        LosslessImageRendering = ... # type: Qgis.RenderContextFlag
        ApplyScalingWorkaroundForTextRendering = ... # type: Qgis.RenderContextFlag
        Render3DMap = ... # type: Qgis.RenderContextFlag
        ApplyClipAfterReprojection = ... # type: Qgis.RenderContextFlag
        RenderingSubSymbol = ... # type: Qgis.RenderContextFlag
        HighQualityImageTransforms = ... # type: Qgis.RenderContextFlag
        SkipSymbolRendering = ... # type: Qgis.RenderContextFlag

    class MapSettingsFlag(int):
        Antialiasing = ... # type: Qgis.MapSettingsFlag
        DrawEditingInfo = ... # type: Qgis.MapSettingsFlag
        ForceVectorOutput = ... # type: Qgis.MapSettingsFlag
        UseAdvancedEffects = ... # type: Qgis.MapSettingsFlag
        DrawLabeling = ... # type: Qgis.MapSettingsFlag
        UseRenderingOptimization = ... # type: Qgis.MapSettingsFlag
        DrawSelection = ... # type: Qgis.MapSettingsFlag
        DrawSymbolBounds = ... # type: Qgis.MapSettingsFlag
        RenderMapTile = ... # type: Qgis.MapSettingsFlag
        RenderPartialOutput = ... # type: Qgis.MapSettingsFlag
        RenderPreviewJob = ... # type: Qgis.MapSettingsFlag
        RenderBlocking = ... # type: Qgis.MapSettingsFlag
        LosslessImageRendering = ... # type: Qgis.MapSettingsFlag
        Render3DMap = ... # type: Qgis.MapSettingsFlag
        HighQualityImageTransforms = ... # type: Qgis.MapSettingsFlag
        SkipSymbolRendering = ... # type: Qgis.MapSettingsFlag
        ForceRasterMasks = ... # type: Qgis.MapSettingsFlag

    class CoordinateTransformationFlag(int):
        BallparkTransformsAreAppropriate = ... # type: Qgis.CoordinateTransformationFlag
        IgnoreImpossibleTransformations = ... # type: Qgis.CoordinateTransformationFlag

    class TransformDirection(int):
        Forward = ... # type: Qgis.TransformDirection
        Reverse = ... # type: Qgis.TransformDirection

    class RasterTemporalCapabilityFlag(int):
        RequestedTimesMustExactlyMatchAllAvailableTemporalRanges = ... # type: Qgis.RasterTemporalCapabilityFlag

    class TemporalIntervalMatchMethod(int):
        MatchUsingWholeRange = ... # type: Qgis.TemporalIntervalMatchMethod
        MatchExactUsingStartOfRange = ... # type: Qgis.TemporalIntervalMatchMethod
        MatchExactUsingEndOfRange = ... # type: Qgis.TemporalIntervalMatchMethod
        FindClosestMatchToStartOfRange = ... # type: Qgis.TemporalIntervalMatchMethod
        FindClosestMatchToEndOfRange = ... # type: Qgis.TemporalIntervalMatchMethod

    class RasterTemporalMode(int):
        FixedTemporalRange = ... # type: Qgis.RasterTemporalMode
        TemporalRangeFromDataProvider = ... # type: Qgis.RasterTemporalMode
        RedrawLayerOnly = ... # type: Qgis.RasterTemporalMode

    class VectorDataProviderTemporalMode(int):
        HasFixedTemporalRange = ... # type: Qgis.VectorDataProviderTemporalMode
        StoresFeatureDateTimeInstantInField = ... # type: Qgis.VectorDataProviderTemporalMode
        StoresFeatureDateTimeStartAndEndInSeparateFields = ... # type: Qgis.VectorDataProviderTemporalMode

    class VectorTemporalLimitMode(int):
        IncludeBeginExcludeEnd = ... # type: Qgis.VectorTemporalLimitMode
        IncludeBeginIncludeEnd = ... # type: Qgis.VectorTemporalLimitMode

    class VectorTemporalMode(int):
        FixedTemporalRange = ... # type: Qgis.VectorTemporalMode
        FeatureDateTimeInstantFromField = ... # type: Qgis.VectorTemporalMode
        FeatureDateTimeStartAndEndFromFields = ... # type: Qgis.VectorTemporalMode
        FeatureDateTimeStartAndDurationFromFields = ... # type: Qgis.VectorTemporalMode
        FeatureDateTimeStartAndEndFromExpressions = ... # type: Qgis.VectorTemporalMode
        RedrawLayerOnly = ... # type: Qgis.VectorTemporalMode

    class AnnotationItemEditOperationResult(int):
        Success = ... # type: Qgis.AnnotationItemEditOperationResult
        Invalid = ... # type: Qgis.AnnotationItemEditOperationResult
        ItemCleared = ... # type: Qgis.AnnotationItemEditOperationResult

    class AnnotationItemNodeType(int):
        VertexHandle = ... # type: Qgis.AnnotationItemNodeType

    class AnnotationItemGuiFlag(int):
        FlagNoCreationTools = ... # type: Qgis.AnnotationItemGuiFlag

    class AnnotationItemFlag(int):
        ScaleDependentBoundingBox = ... # type: Qgis.AnnotationItemFlag

    class CoordinateOrder(int):
        Default = ... # type: Qgis.CoordinateOrder
        XY = ... # type: Qgis.CoordinateOrder
        YX = ... # type: Qgis.CoordinateOrder

    class CrsAxisDirection(int):
        North = ... # type: Qgis.CrsAxisDirection
        NorthNorthEast = ... # type: Qgis.CrsAxisDirection
        NorthEast = ... # type: Qgis.CrsAxisDirection
        EastNorthEast = ... # type: Qgis.CrsAxisDirection
        East = ... # type: Qgis.CrsAxisDirection
        EastSouthEast = ... # type: Qgis.CrsAxisDirection
        SouthEast = ... # type: Qgis.CrsAxisDirection
        SouthSouthEast = ... # type: Qgis.CrsAxisDirection
        South = ... # type: Qgis.CrsAxisDirection
        SouthSouthWest = ... # type: Qgis.CrsAxisDirection
        SouthWest = ... # type: Qgis.CrsAxisDirection
        WestSouthWest = ... # type: Qgis.CrsAxisDirection
        West = ... # type: Qgis.CrsAxisDirection
        WestNorthWest = ... # type: Qgis.CrsAxisDirection
        NorthWest = ... # type: Qgis.CrsAxisDirection
        NorthNorthWest = ... # type: Qgis.CrsAxisDirection
        GeocentricX = ... # type: Qgis.CrsAxisDirection
        GeocentricY = ... # type: Qgis.CrsAxisDirection
        GeocentricZ = ... # type: Qgis.CrsAxisDirection
        Up = ... # type: Qgis.CrsAxisDirection
        Down = ... # type: Qgis.CrsAxisDirection
        Forward = ... # type: Qgis.CrsAxisDirection
        Aft = ... # type: Qgis.CrsAxisDirection
        Port = ... # type: Qgis.CrsAxisDirection
        Starboard = ... # type: Qgis.CrsAxisDirection
        Clockwise = ... # type: Qgis.CrsAxisDirection
        CounterClockwise = ... # type: Qgis.CrsAxisDirection
        ColumnPositive = ... # type: Qgis.CrsAxisDirection
        ColumnNegative = ... # type: Qgis.CrsAxisDirection
        RowPositive = ... # type: Qgis.CrsAxisDirection
        RowNegative = ... # type: Qgis.CrsAxisDirection
        DisplayRight = ... # type: Qgis.CrsAxisDirection
        DisplayLeft = ... # type: Qgis.CrsAxisDirection
        DisplayUp = ... # type: Qgis.CrsAxisDirection
        DisplayDown = ... # type: Qgis.CrsAxisDirection
        Future = ... # type: Qgis.CrsAxisDirection
        Past = ... # type: Qgis.CrsAxisDirection
        Towards = ... # type: Qgis.CrsAxisDirection
        AwayFrom = ... # type: Qgis.CrsAxisDirection
        Unspecified = ... # type: Qgis.CrsAxisDirection

    class DataProviderFlag(int):
        IsBasemapSource = ... # type: Qgis.DataProviderFlag

    class MapLayerProperty(int):
        UsersCannotToggleEditing = ... # type: Qgis.MapLayerProperty
        IsBasemapLayer = ... # type: Qgis.MapLayerProperty

    class FileOperationFlag(int):
        IncludeMetadataFile = ... # type: Qgis.FileOperationFlag
        IncludeStyleFile = ... # type: Qgis.FileOperationFlag

    class SpatialFilterType(int):
        NoFilter = ... # type: Qgis.SpatialFilterType
        BoundingBox = ... # type: Qgis.SpatialFilterType
        DistanceWithin = ... # type: Qgis.SpatialFilterType

    class MakeValidMethod(int):
        Linework = ... # type: Qgis.MakeValidMethod
        Structure = ... # type: Qgis.MakeValidMethod

    class JoinStyle(int):
        Round = ... # type: Qgis.JoinStyle
        Miter = ... # type: Qgis.JoinStyle
        Bevel = ... # type: Qgis.JoinStyle

    class EndCapStyle(int):
        Round = ... # type: Qgis.EndCapStyle
        Flat = ... # type: Qgis.EndCapStyle
        Square = ... # type: Qgis.EndCapStyle

    class BufferSide(int):
        Left = ... # type: Qgis.BufferSide
        Right = ... # type: Qgis.BufferSide

    class GeometryValidationEngine(int):
        QgisInternal = ... # type: Qgis.GeometryValidationEngine
        Geos = ... # type: Qgis.GeometryValidationEngine

    class GeometryValidityFlag(int):
        AllowSelfTouchingHoles = ... # type: Qgis.GeometryValidityFlag

    class GeometryOperationResult(int):
        Success = ... # type: Qgis.GeometryOperationResult
        NothingHappened = ... # type: Qgis.GeometryOperationResult
        InvalidBaseGeometry = ... # type: Qgis.GeometryOperationResult
        InvalidInputGeometryType = ... # type: Qgis.GeometryOperationResult
        SelectionIsEmpty = ... # type: Qgis.GeometryOperationResult
        SelectionIsGreaterThanOne = ... # type: Qgis.GeometryOperationResult
        GeometryEngineError = ... # type: Qgis.GeometryOperationResult
        LayerNotEditable = ... # type: Qgis.GeometryOperationResult
        AddPartSelectedGeometryNotFound = ... # type: Qgis.GeometryOperationResult
        AddPartNotMultiGeometry = ... # type: Qgis.GeometryOperationResult
        AddRingNotClosed = ... # type: Qgis.GeometryOperationResult
        AddRingNotValid = ... # type: Qgis.GeometryOperationResult
        AddRingCrossesExistingRings = ... # type: Qgis.GeometryOperationResult
        AddRingNotInExistingFeature = ... # type: Qgis.GeometryOperationResult
        SplitCannotSplitPoint = ... # type: Qgis.GeometryOperationResult

    class GpsFeatureType(int):
        Waypoint = ... # type: Qgis.GpsFeatureType
        Route = ... # type: Qgis.GpsFeatureType
        Track = ... # type: Qgis.GpsFeatureType

    class BabelCommandFlag(int):
        QuoteFilePaths = ... # type: Qgis.BabelCommandFlag

    class BabelFormatCapability(int):
        Import = ... # type: Qgis.BabelFormatCapability
        Export = ... # type: Qgis.BabelFormatCapability
        Waypoints = ... # type: Qgis.BabelFormatCapability
        Routes = ... # type: Qgis.BabelFormatCapability
        Tracks = ... # type: Qgis.BabelFormatCapability

    class GpsInformationComponent(int):
        Location = ... # type: Qgis.GpsInformationComponent
        Altitude = ... # type: Qgis.GpsInformationComponent
        GroundSpeed = ... # type: Qgis.GpsInformationComponent
        Bearing = ... # type: Qgis.GpsInformationComponent
        TotalTrackLength = ... # type: Qgis.GpsInformationComponent
        TrackDistanceFromStart = ... # type: Qgis.GpsInformationComponent
        Pdop = ... # type: Qgis.GpsInformationComponent
        Hdop = ... # type: Qgis.GpsInformationComponent
        Vdop = ... # type: Qgis.GpsInformationComponent
        HorizontalAccuracy = ... # type: Qgis.GpsInformationComponent
        VerticalAccuracy = ... # type: Qgis.GpsInformationComponent
        HvAccuracy = ... # type: Qgis.GpsInformationComponent
        SatellitesUsed = ... # type: Qgis.GpsInformationComponent
        Timestamp = ... # type: Qgis.GpsInformationComponent
        TrackStartTime = ... # type: Qgis.GpsInformationComponent
        TrackEndTime = ... # type: Qgis.GpsInformationComponent
        TrackDistanceSinceLastPoint = ... # type: Qgis.GpsInformationComponent
        TrackTimeSinceLastPoint = ... # type: Qgis.GpsInformationComponent
        GeoidalSeparation = ... # type: Qgis.GpsInformationComponent
        EllipsoidAltitude = ... # type: Qgis.GpsInformationComponent

    class GpsQualityIndicator(int):
        Unknown = ... # type: Qgis.GpsQualityIndicator
        Invalid = ... # type: Qgis.GpsQualityIndicator
        GPS = ... # type: Qgis.GpsQualityIndicator
        DGPS = ... # type: Qgis.GpsQualityIndicator
        PPS = ... # type: Qgis.GpsQualityIndicator
        RTK = ... # type: Qgis.GpsQualityIndicator
        FloatRTK = ... # type: Qgis.GpsQualityIndicator
        Estimated = ... # type: Qgis.GpsQualityIndicator
        Manual = ... # type: Qgis.GpsQualityIndicator
        Simulation = ... # type: Qgis.GpsQualityIndicator

    class GnssConstellation(int):
        Unknown = ... # type: Qgis.GnssConstellation
        Gps = ... # type: Qgis.GnssConstellation
        Glonass = ... # type: Qgis.GnssConstellation
        Galileo = ... # type: Qgis.GnssConstellation
        BeiDou = ... # type: Qgis.GnssConstellation
        Qzss = ... # type: Qgis.GnssConstellation
        Navic = ... # type: Qgis.GnssConstellation
        Sbas = ... # type: Qgis.GnssConstellation

    class GpsFixStatus(int):
        NoData = ... # type: Qgis.GpsFixStatus
        NoFix = ... # type: Qgis.GpsFixStatus
        Fix2D = ... # type: Qgis.GpsFixStatus
        Fix3D = ... # type: Qgis.GpsFixStatus

    class DeviceConnectionStatus(int):
        Disconnected = ... # type: Qgis.DeviceConnectionStatus
        Connecting = ... # type: Qgis.DeviceConnectionStatus
        Connected = ... # type: Qgis.DeviceConnectionStatus

    class GpsConnectionType(int):
        Automatic = ... # type: Qgis.GpsConnectionType
        Internal = ... # type: Qgis.GpsConnectionType
        Serial = ... # type: Qgis.GpsConnectionType
        Gpsd = ... # type: Qgis.GpsConnectionType

    class ContentStatus(int):
        NotStarted = ... # type: Qgis.ContentStatus
        Running = ... # type: Qgis.ContentStatus
        Finished = ... # type: Qgis.ContentStatus
        Failed = ... # type: Qgis.ContentStatus
        Canceled = ... # type: Qgis.ContentStatus

    class VertexMarkerType(int):
        SemiTransparentCircle = ... # type: Qgis.VertexMarkerType
        Cross = ... # type: Qgis.VertexMarkerType
        NoMarker = ... # type: Qgis.VertexMarkerType

    class VectorEditResult(int):
        Success = ... # type: Qgis.VectorEditResult
        EmptyGeometry = ... # type: Qgis.VectorEditResult
        EditFailed = ... # type: Qgis.VectorEditResult
        FetchFeatureFailed = ... # type: Qgis.VectorEditResult
        InvalidLayer = ... # type: Qgis.VectorEditResult

    class SelectionFlag(int):
        SingleFeatureSelection = ... # type: Qgis.SelectionFlag
        ToggleSelection = ... # type: Qgis.SelectionFlag

    class SelectGeometryRelationship(int):
        Intersect = ... # type: Qgis.SelectGeometryRelationship
        Within = ... # type: Qgis.SelectGeometryRelationship

    class SelectBehavior(int):
        SetSelection = ... # type: Qgis.SelectBehavior
        AddToSelection = ... # type: Qgis.SelectBehavior
        IntersectSelection = ... # type: Qgis.SelectBehavior
        RemoveFromSelection = ... # type: Qgis.SelectBehavior

    class FieldMetadataProperty(int):
        GeometryCrs = ... # type: Qgis.FieldMetadataProperty
        GeometryWkbType = ... # type: Qgis.FieldMetadataProperty
        CustomProperty = ... # type: Qgis.FieldMetadataProperty

    class SublayerPromptMode(int):
        AlwaysAsk = ... # type: Qgis.SublayerPromptMode
        AskExcludingRasterBands = ... # type: Qgis.SublayerPromptMode
        NeverAskSkip = ... # type: Qgis.SublayerPromptMode
        NeverAskLoadAll = ... # type: Qgis.SublayerPromptMode

    class FilePathType(int):
        Absolute = ... # type: Qgis.FilePathType
        Relative = ... # type: Qgis.FilePathType

    class MeshEditingErrorType(int):
        NoError = ... # type: Qgis.MeshEditingErrorType
        InvalidFace = ... # type: Qgis.MeshEditingErrorType
        TooManyVerticesInFace = ... # type: Qgis.MeshEditingErrorType
        FlatFace = ... # type: Qgis.MeshEditingErrorType
        UniqueSharedVertex = ... # type: Qgis.MeshEditingErrorType
        InvalidVertex = ... # type: Qgis.MeshEditingErrorType
        ManifoldFace = ... # type: Qgis.MeshEditingErrorType

    class RasterFileWriterResult(int):
        Success = ... # type: Qgis.RasterFileWriterResult
        SourceProviderError = ... # type: Qgis.RasterFileWriterResult
        DestinationProviderError = ... # type: Qgis.RasterFileWriterResult
        CreateDatasourceError = ... # type: Qgis.RasterFileWriterResult
        WriteError = ... # type: Qgis.RasterFileWriterResult
        NoDataConflict = ... # type: Qgis.RasterFileWriterResult
        Canceled = ... # type: Qgis.RasterFileWriterResult

    class RasterExportType(int):
        Raw = ... # type: Qgis.RasterExportType
        RenderedImage = ... # type: Qgis.RasterExportType

    class RasterAttributeTableType(int):
        Thematic = ... # type: Qgis.RasterAttributeTableType
        Athematic = ... # type: Qgis.RasterAttributeTableType

    class RasterAttributeTableFieldUsage(int):
        Generic = ... # type: Qgis.RasterAttributeTableFieldUsage
        PixelCount = ... # type: Qgis.RasterAttributeTableFieldUsage
        Name = ... # type: Qgis.RasterAttributeTableFieldUsage
        Min = ... # type: Qgis.RasterAttributeTableFieldUsage
        Max = ... # type: Qgis.RasterAttributeTableFieldUsage
        MinMax = ... # type: Qgis.RasterAttributeTableFieldUsage
        Red = ... # type: Qgis.RasterAttributeTableFieldUsage
        Green = ... # type: Qgis.RasterAttributeTableFieldUsage
        Blue = ... # type: Qgis.RasterAttributeTableFieldUsage
        Alpha = ... # type: Qgis.RasterAttributeTableFieldUsage
        RedMin = ... # type: Qgis.RasterAttributeTableFieldUsage
        GreenMin = ... # type: Qgis.RasterAttributeTableFieldUsage
        BlueMin = ... # type: Qgis.RasterAttributeTableFieldUsage
        AlphaMin = ... # type: Qgis.RasterAttributeTableFieldUsage
        RedMax = ... # type: Qgis.RasterAttributeTableFieldUsage
        GreenMax = ... # type: Qgis.RasterAttributeTableFieldUsage
        BlueMax = ... # type: Qgis.RasterAttributeTableFieldUsage
        AlphaMax = ... # type: Qgis.RasterAttributeTableFieldUsage
        MaxCount = ... # type: Qgis.RasterAttributeTableFieldUsage

    class RasterRendererFlag(int):
        InternalLayerOpacityHandling = ... # type: Qgis.RasterRendererFlag

    class RasterResamplingStage(int):
        ResampleFilter = ... # type: Qgis.RasterResamplingStage
        Provider = ... # type: Qgis.RasterResamplingStage

    class RasterPipeInterfaceRole(int):
        Unknown = ... # type: Qgis.RasterPipeInterfaceRole
        Provider = ... # type: Qgis.RasterPipeInterfaceRole
        Renderer = ... # type: Qgis.RasterPipeInterfaceRole
        Brightness = ... # type: Qgis.RasterPipeInterfaceRole
        Resampler = ... # type: Qgis.RasterPipeInterfaceRole
        Projector = ... # type: Qgis.RasterPipeInterfaceRole
        Nuller = ... # type: Qgis.RasterPipeInterfaceRole
        HueSaturation = ... # type: Qgis.RasterPipeInterfaceRole

    class SublayerFlag(int):
        SystemTable = ... # type: Qgis.SublayerFlag

    class SublayerQueryFlag(int):
        FastScan = ... # type: Qgis.SublayerQueryFlag
        ResolveGeometryType = ... # type: Qgis.SublayerQueryFlag
        CountFeatures = ... # type: Qgis.SublayerQueryFlag
        IncludeSystemTables = ... # type: Qgis.SublayerQueryFlag

    class FileFilterType(int):
        Vector = ... # type: Qgis.FileFilterType
        Raster = ... # type: Qgis.FileFilterType
        Mesh = ... # type: Qgis.FileFilterType
        MeshDataset = ... # type: Qgis.FileFilterType
        PointCloud = ... # type: Qgis.FileFilterType
        VectorTile = ... # type: Qgis.FileFilterType

    class LabelMultiLineAlignment(int):
        Left = ... # type: Qgis.LabelMultiLineAlignment
        Center = ... # type: Qgis.LabelMultiLineAlignment
        Right = ... # type: Qgis.LabelMultiLineAlignment
        FollowPlacement = ... # type: Qgis.LabelMultiLineAlignment
        Justify = ... # type: Qgis.LabelMultiLineAlignment

    class UpsideDownLabelHandling(int):
        FlipUpsideDownLabels = ... # type: Qgis.UpsideDownLabelHandling
        AllowUpsideDownWhenRotationIsDefined = ... # type: Qgis.UpsideDownLabelHandling
        AlwaysAllowUpsideDown = ... # type: Qgis.UpsideDownLabelHandling

    class LabelPolygonPlacementFlag(int):
        AllowPlacementOutsideOfPolygon = ... # type: Qgis.LabelPolygonPlacementFlag
        AllowPlacementInsideOfPolygon = ... # type: Qgis.LabelPolygonPlacementFlag

    class LabelLinePlacementFlag(int):
        OnLine = ... # type: Qgis.LabelLinePlacementFlag
        AboveLine = ... # type: Qgis.LabelLinePlacementFlag
        BelowLine = ... # type: Qgis.LabelLinePlacementFlag
        MapOrientation = ... # type: Qgis.LabelLinePlacementFlag

    class LabelQuadrantPosition(int):
        AboveLeft = ... # type: Qgis.LabelQuadrantPosition
        Above = ... # type: Qgis.LabelQuadrantPosition
        AboveRight = ... # type: Qgis.LabelQuadrantPosition
        Left = ... # type: Qgis.LabelQuadrantPosition
        Over = ... # type: Qgis.LabelQuadrantPosition
        Right = ... # type: Qgis.LabelQuadrantPosition
        BelowLeft = ... # type: Qgis.LabelQuadrantPosition
        Below = ... # type: Qgis.LabelQuadrantPosition
        BelowRight = ... # type: Qgis.LabelQuadrantPosition

    class LabelOffsetType(int):
        FromPoint = ... # type: Qgis.LabelOffsetType
        FromSymbolBounds = ... # type: Qgis.LabelOffsetType

    class LabelPredefinedPointPosition(int):
        TopLeft = ... # type: Qgis.LabelPredefinedPointPosition
        TopSlightlyLeft = ... # type: Qgis.LabelPredefinedPointPosition
        TopMiddle = ... # type: Qgis.LabelPredefinedPointPosition
        TopSlightlyRight = ... # type: Qgis.LabelPredefinedPointPosition
        TopRight = ... # type: Qgis.LabelPredefinedPointPosition
        MiddleLeft = ... # type: Qgis.LabelPredefinedPointPosition
        MiddleRight = ... # type: Qgis.LabelPredefinedPointPosition
        BottomLeft = ... # type: Qgis.LabelPredefinedPointPosition
        BottomSlightlyLeft = ... # type: Qgis.LabelPredefinedPointPosition
        BottomMiddle = ... # type: Qgis.LabelPredefinedPointPosition
        BottomSlightlyRight = ... # type: Qgis.LabelPredefinedPointPosition
        BottomRight = ... # type: Qgis.LabelPredefinedPointPosition

    class LabelPlacement(int):
        AroundPoint = ... # type: Qgis.LabelPlacement
        OverPoint = ... # type: Qgis.LabelPlacement
        Line = ... # type: Qgis.LabelPlacement
        Curved = ... # type: Qgis.LabelPlacement
        Horizontal = ... # type: Qgis.LabelPlacement
        Free = ... # type: Qgis.LabelPlacement
        OrderedPositionsAroundPoint = ... # type: Qgis.LabelPlacement
        PerimeterCurved = ... # type: Qgis.LabelPlacement
        OutsidePolygons = ... # type: Qgis.LabelPlacement

    class LabelOverlapHandling(int):
        PreventOverlap = ... # type: Qgis.LabelOverlapHandling
        AllowOverlapIfRequired = ... # type: Qgis.LabelOverlapHandling
        AllowOverlapAtNoCost = ... # type: Qgis.LabelOverlapHandling

    class UnplacedLabelVisibility(int):
        FollowEngineSetting = ... # type: Qgis.UnplacedLabelVisibility
        NeverShow = ... # type: Qgis.UnplacedLabelVisibility

    class ActionStart(int):
        Deferred = ... # type: Qgis.ActionStart
        Immediate = ... # type: Qgis.ActionStart

    class DriveType(int):
        Unknown = ... # type: Qgis.DriveType
        Invalid = ... # type: Qgis.DriveType
        Removable = ... # type: Qgis.DriveType
        Fixed = ... # type: Qgis.DriveType
        Remote = ... # type: Qgis.DriveType
        CdRom = ... # type: Qgis.DriveType
        RamDisk = ... # type: Qgis.DriveType
        Cloud = ... # type: Qgis.DriveType

    class SqlKeywordCategory(int):
        Keyword = ... # type: Qgis.SqlKeywordCategory
        Constant = ... # type: Qgis.SqlKeywordCategory
        Function = ... # type: Qgis.SqlKeywordCategory
        Geospatial = ... # type: Qgis.SqlKeywordCategory
        Operator = ... # type: Qgis.SqlKeywordCategory
        Math = ... # type: Qgis.SqlKeywordCategory
        Aggregate = ... # type: Qgis.SqlKeywordCategory
        String = ... # type: Qgis.SqlKeywordCategory
        Identifier = ... # type: Qgis.SqlKeywordCategory

    class SqlLayerDefinitionCapability(int):
        SubsetStringFilter = ... # type: Qgis.SqlLayerDefinitionCapability
        GeometryColumn = ... # type: Qgis.SqlLayerDefinitionCapability
        PrimaryKeys = ... # type: Qgis.SqlLayerDefinitionCapability
        UnstableFeatureIds = ... # type: Qgis.SqlLayerDefinitionCapability

    class VectorFileWriterCapability(int):
        FieldAliases = ... # type: Qgis.VectorFileWriterCapability
        FieldComments = ... # type: Qgis.VectorFileWriterCapability

    class VectorExportResult(int):
        Success = ... # type: Qgis.VectorExportResult
        ErrorCreatingDataSource = ... # type: Qgis.VectorExportResult
        ErrorCreatingLayer = ... # type: Qgis.VectorExportResult
        ErrorAttributeTypeUnsupported = ... # type: Qgis.VectorExportResult
        ErrorAttributeCreationFailed = ... # type: Qgis.VectorExportResult
        ErrorProjectingFeatures = ... # type: Qgis.VectorExportResult
        ErrorFeatureWriteFailed = ... # type: Qgis.VectorExportResult
        ErrorInvalidLayer = ... # type: Qgis.VectorExportResult
        ErrorInvalidProvider = ... # type: Qgis.VectorExportResult
        ErrorProviderUnsupportedFeature = ... # type: Qgis.VectorExportResult
        ErrorConnectionFailed = ... # type: Qgis.VectorExportResult
        UserCanceled = ... # type: Qgis.VectorExportResult

    class HttpMethod(int):
        Get = ... # type: Qgis.HttpMethod
        Post = ... # type: Qgis.HttpMethod

    class BrowserDirectoryMonitoring(int):
        Default = ... # type: Qgis.BrowserDirectoryMonitoring
        NeverMonitor = ... # type: Qgis.BrowserDirectoryMonitoring
        AlwaysMonitor = ... # type: Qgis.BrowserDirectoryMonitoring

    class BrowserLayerType(int):
        NoType = ... # type: Qgis.BrowserLayerType
        Vector = ... # type: Qgis.BrowserLayerType
        Raster = ... # type: Qgis.BrowserLayerType
        Point = ... # type: Qgis.BrowserLayerType
        Line = ... # type: Qgis.BrowserLayerType
        Polygon = ... # type: Qgis.BrowserLayerType
        TableLayer = ... # type: Qgis.BrowserLayerType
        Database = ... # type: Qgis.BrowserLayerType
        Table = ... # type: Qgis.BrowserLayerType
        Plugin = ... # type: Qgis.BrowserLayerType
        Mesh = ... # type: Qgis.BrowserLayerType
        VectorTile = ... # type: Qgis.BrowserLayerType
        PointCloud = ... # type: Qgis.BrowserLayerType

    class BrowserItemCapability(int):
        NoCapabilities = ... # type: Qgis.BrowserItemCapability
        SetCrs = ... # type: Qgis.BrowserItemCapability
        Fertile = ... # type: Qgis.BrowserItemCapability
        Fast = ... # type: Qgis.BrowserItemCapability
        Collapse = ... # type: Qgis.BrowserItemCapability
        Rename = ... # type: Qgis.BrowserItemCapability
        Delete = ... # type: Qgis.BrowserItemCapability
        ItemRepresentsFile = ... # type: Qgis.BrowserItemCapability
        RefreshChildrenWhenItemIsRefreshed = ... # type: Qgis.BrowserItemCapability

    class BrowserItemState(int):
        NotPopulated = ... # type: Qgis.BrowserItemState
        Populating = ... # type: Qgis.BrowserItemState
        Populated = ... # type: Qgis.BrowserItemState

    class BrowserItemType(int):
        Collection = ... # type: Qgis.BrowserItemType
        Directory = ... # type: Qgis.BrowserItemType
        Layer = ... # type: Qgis.BrowserItemType
        Error = ... # type: Qgis.BrowserItemType
        Favorites = ... # type: Qgis.BrowserItemType
        Project = ... # type: Qgis.BrowserItemType
        Custom = ... # type: Qgis.BrowserItemType
        Fields = ... # type: Qgis.BrowserItemType
        Field = ... # type: Qgis.BrowserItemType

    class SymbolLayerFlag(int):
        DisableFeatureClipping = ... # type: Qgis.SymbolLayerFlag

    class SymbolPreviewFlag(int):
        FlagIncludeCrosshairsForMarkerSymbols = ... # type: Qgis.SymbolPreviewFlag

    class SymbolFlag(int):
        RendererShouldUseSymbolLevels = ... # type: Qgis.SymbolFlag

    class SymbolRotationMode(int):
        RespectMapRotation = ... # type: Qgis.SymbolRotationMode
        IgnoreMapRotation = ... # type: Qgis.SymbolRotationMode

    class SymbolRenderHint(int):
        DynamicRotation = ... # type: Qgis.SymbolRenderHint

    class SnappingType(int):
        NoSnap = ... # type: Qgis.SnappingType
        Vertex = ... # type: Qgis.SnappingType
        Segment = ... # type: Qgis.SnappingType
        Area = ... # type: Qgis.SnappingType
        Centroid = ... # type: Qgis.SnappingType
        MiddleOfSegment = ... # type: Qgis.SnappingType
        LineEndpoint = ... # type: Qgis.SnappingType

    class SnappingMode(int):
        ActiveLayer = ... # type: Qgis.SnappingMode
        AllLayers = ... # type: Qgis.SnappingMode
        AdvancedConfiguration = ... # type: Qgis.SnappingMode

    class SettingsOption(int):
        SaveFormerValue = ... # type: Qgis.SettingsOption
        SaveEnumFlagAsInt = ... # type: Qgis.SettingsOption

    class SldExportVendorExtension(int):
        NoVendorExtension = ... # type: Qgis.SldExportVendorExtension
        GeoServerVendorExtension = ... # type: Qgis.SldExportVendorExtension
        DeegreeVendorExtension = ... # type: Qgis.SldExportVendorExtension

    class SldExportOption(int):
        NoOptions = ... # type: Qgis.SldExportOption
        Svg = ... # type: Qgis.SldExportOption
        Png = ... # type: Qgis.SldExportOption

    class SettingsTreeNodeOption(int):
        NamedListSelectedItemSetting = ... # type: Qgis.SettingsTreeNodeOption

    class SettingsTreeNodeType(int):
        Root = ... # type: Qgis.SettingsTreeNodeType
        Standard = ... # type: Qgis.SettingsTreeNodeType
        NamedList = ... # type: Qgis.SettingsTreeNodeType

    class SettingsType(int):
        Custom = ... # type: Qgis.SettingsType
        Variant = ... # type: Qgis.SettingsType
        String = ... # type: Qgis.SettingsType
        StringList = ... # type: Qgis.SettingsType
        VariantMap = ... # type: Qgis.SettingsType
        Bool = ... # type: Qgis.SettingsType
        Integer = ... # type: Qgis.SettingsType
        Double = ... # type: Qgis.SettingsType
        EnumFlag = ... # type: Qgis.SettingsType
        Color = ... # type: Qgis.SettingsType

    class ScaleMethod(int):
        ScaleArea = ... # type: Qgis.ScaleMethod
        ScaleDiameter = ... # type: Qgis.ScaleMethod

    class SymbolType(int):
        Marker = ... # type: Qgis.SymbolType
        Line = ... # type: Qgis.SymbolType
        Fill = ... # type: Qgis.SymbolType
        Hybrid = ... # type: Qgis.SymbolType

    class VectorDataProviderAttributeEditCapability(int):
        EditAlias = ... # type: Qgis.VectorDataProviderAttributeEditCapability
        EditComment = ... # type: Qgis.VectorDataProviderAttributeEditCapability

    class FeatureCountState(int):
        Uncounted = ... # type: Qgis.FeatureCountState
        UnknownCount = ... # type: Qgis.FeatureCountState

    class PythonMacroMode(int):
        Never = ... # type: Qgis.PythonMacroMode
        Ask = ... # type: Qgis.PythonMacroMode
        SessionOnly = ... # type: Qgis.PythonMacroMode
        Always = ... # type: Qgis.PythonMacroMode
        NotForThisSession = ... # type: Qgis.PythonMacroMode

    class VectorLayerTypeFlag(int):
        SqlQuery = ... # type: Qgis.VectorLayerTypeFlag

    class CaptureTechnique(int):
        StraightSegments = ... # type: Qgis.CaptureTechnique
        CircularString = ... # type: Qgis.CaptureTechnique
        Streaming = ... # type: Qgis.CaptureTechnique
        Shape = ... # type: Qgis.CaptureTechnique

    class DataType(int):
        UnknownDataType = ... # type: Qgis.DataType
        Byte = ... # type: Qgis.DataType
        Int8 = ... # type: Qgis.DataType
        UInt16 = ... # type: Qgis.DataType
        Int16 = ... # type: Qgis.DataType
        UInt32 = ... # type: Qgis.DataType
        Int32 = ... # type: Qgis.DataType
        Float32 = ... # type: Qgis.DataType
        Float64 = ... # type: Qgis.DataType
        CInt16 = ... # type: Qgis.DataType
        CInt32 = ... # type: Qgis.DataType
        CFloat32 = ... # type: Qgis.DataType
        CFloat64 = ... # type: Qgis.DataType
        ARGB32 = ... # type: Qgis.DataType
        ARGB32_Premultiplied = ... # type: Qgis.DataType

    class GeometryType(int):
        Point = ... # type: Qgis.GeometryType
        Line = ... # type: Qgis.GeometryType
        Polygon = ... # type: Qgis.GeometryType
        Unknown = ... # type: Qgis.GeometryType
        Null = ... # type: Qgis.GeometryType

    class WkbType(int):
        Unknown = ... # type: Qgis.WkbType
        Point = ... # type: Qgis.WkbType
        LineString = ... # type: Qgis.WkbType
        Polygon = ... # type: Qgis.WkbType
        Triangle = ... # type: Qgis.WkbType
        MultiPoint = ... # type: Qgis.WkbType
        MultiLineString = ... # type: Qgis.WkbType
        MultiPolygon = ... # type: Qgis.WkbType
        GeometryCollection = ... # type: Qgis.WkbType
        CircularString = ... # type: Qgis.WkbType
        CompoundCurve = ... # type: Qgis.WkbType
        CurvePolygon = ... # type: Qgis.WkbType
        MultiCurve = ... # type: Qgis.WkbType
        MultiSurface = ... # type: Qgis.WkbType
        NoGeometry = ... # type: Qgis.WkbType
        PointZ = ... # type: Qgis.WkbType
        LineStringZ = ... # type: Qgis.WkbType
        PolygonZ = ... # type: Qgis.WkbType
        TriangleZ = ... # type: Qgis.WkbType
        MultiPointZ = ... # type: Qgis.WkbType
        MultiLineStringZ = ... # type: Qgis.WkbType
        MultiPolygonZ = ... # type: Qgis.WkbType
        GeometryCollectionZ = ... # type: Qgis.WkbType
        CircularStringZ = ... # type: Qgis.WkbType
        CompoundCurveZ = ... # type: Qgis.WkbType
        CurvePolygonZ = ... # type: Qgis.WkbType
        MultiCurveZ = ... # type: Qgis.WkbType
        MultiSurfaceZ = ... # type: Qgis.WkbType
        PointM = ... # type: Qgis.WkbType
        LineStringM = ... # type: Qgis.WkbType
        PolygonM = ... # type: Qgis.WkbType
        TriangleM = ... # type: Qgis.WkbType
        MultiPointM = ... # type: Qgis.WkbType
        MultiLineStringM = ... # type: Qgis.WkbType
        MultiPolygonM = ... # type: Qgis.WkbType
        GeometryCollectionM = ... # type: Qgis.WkbType
        CircularStringM = ... # type: Qgis.WkbType
        CompoundCurveM = ... # type: Qgis.WkbType
        CurvePolygonM = ... # type: Qgis.WkbType
        MultiCurveM = ... # type: Qgis.WkbType
        MultiSurfaceM = ... # type: Qgis.WkbType
        PointZM = ... # type: Qgis.WkbType
        LineStringZM = ... # type: Qgis.WkbType
        PolygonZM = ... # type: Qgis.WkbType
        MultiPointZM = ... # type: Qgis.WkbType
        MultiLineStringZM = ... # type: Qgis.WkbType
        MultiPolygonZM = ... # type: Qgis.WkbType
        GeometryCollectionZM = ... # type: Qgis.WkbType
        CircularStringZM = ... # type: Qgis.WkbType
        CompoundCurveZM = ... # type: Qgis.WkbType
        CurvePolygonZM = ... # type: Qgis.WkbType
        MultiCurveZM = ... # type: Qgis.WkbType
        MultiSurfaceZM = ... # type: Qgis.WkbType
        TriangleZM = ... # type: Qgis.WkbType
        Point25D = ... # type: Qgis.WkbType
        LineString25D = ... # type: Qgis.WkbType
        Polygon25D = ... # type: Qgis.WkbType
        MultiPoint25D = ... # type: Qgis.WkbType
        MultiLineString25D = ... # type: Qgis.WkbType
        MultiPolygon25D = ... # type: Qgis.WkbType

    class LayerType(int):
        Vector = ... # type: Qgis.LayerType
        Raster = ... # type: Qgis.LayerType
        Plugin = ... # type: Qgis.LayerType
        Mesh = ... # type: Qgis.LayerType
        VectorTile = ... # type: Qgis.LayerType
        Annotation = ... # type: Qgis.LayerType
        PointCloud = ... # type: Qgis.LayerType
        Group = ... # type: Qgis.LayerType

    class MessageLevel(int):
        Info = ... # type: Qgis.MessageLevel
        Warning = ... # type: Qgis.MessageLevel
        Critical = ... # type: Qgis.MessageLevel
        Success = ... # type: Qgis.MessageLevel
        NoLevel = ... # type: Qgis.MessageLevel

    class VectorLayerTypeFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.VectorLayerTypeFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.VectorLayerTypeFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorDataProviderAttributeEditCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.VectorDataProviderAttributeEditCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SettingsTreeNodeOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SettingsTreeNodeOptions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SldExportOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SldExportOptions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SldExportOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SettingsOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SettingsOptions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SettingsOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SnappingTypes(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SnappingTypes') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SnappingTypes': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SymbolRenderHints(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SymbolRenderHints') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SymbolRenderHints': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SymbolFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SymbolFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SymbolFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SymbolPreviewFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SymbolPreviewFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SymbolPreviewFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SymbolLayerFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SymbolLayerFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SymbolLayerFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class BrowserItemCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.BrowserItemCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.BrowserItemCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorFileWriterCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.VectorFileWriterCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SqlLayerDefinitionCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SqlLayerDefinitionCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LabelLinePlacementFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.LabelLinePlacementFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.LabelLinePlacementFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LabelPolygonPlacementFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.LabelPolygonPlacementFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SublayerQueryFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SublayerQueryFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SublayerQueryFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SublayerFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SublayerFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SublayerFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterRendererFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.RasterRendererFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.RasterRendererFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SelectionFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.SelectionFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.SelectionFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class GpsInformationComponents(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.GpsInformationComponents') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.GpsInformationComponents': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class BabelFormatCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.BabelFormatCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.BabelFormatCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class BabelCommandFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.BabelCommandFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.BabelCommandFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class GeometryValidityFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.GeometryValidityFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.GeometryValidityFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FileOperationFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.FileOperationFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.FileOperationFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MapLayerProperties(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.MapLayerProperties') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.MapLayerProperties': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class DataProviderFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.DataProviderFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.DataProviderFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class AnnotationItemFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.AnnotationItemFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.AnnotationItemFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class AnnotationItemGuiFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.AnnotationItemGuiFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterTemporalCapabilityFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.RasterTemporalCapabilityFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class CoordinateTransformationFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.CoordinateTransformationFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.CoordinateTransformationFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MapSettingsFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.MapSettingsFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.MapSettingsFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RenderContextFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.RenderContextFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.RenderContextFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LabelingFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.LabelingFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.LabelingFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MarkerLinePlacements(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.MarkerLinePlacements') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.MarkerLinePlacements': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class TextRendererFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.TextRendererFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.TextRendererFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ViewSyncModeFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ViewSyncModeFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ViewSyncModeFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class HistoryProviderBackends(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.HistoryProviderBackends') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.HistoryProviderBackends': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProjectFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ProjectFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ProjectFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class PlotToolFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.PlotToolFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.PlotToolFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProfileGeneratorFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ProfileGeneratorFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ProfileGeneratorFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProjectReadFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ProjectReadFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ProjectReadFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProjectCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ProjectCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ProjectCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RelationshipCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.RelationshipCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.RelationshipCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ScriptLanguageCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.ScriptLanguageCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LayerTreeFilterFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.LayerTreeFilterFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.LayerTreeFilterFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MapLayerActionTargets(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.MapLayerActionTargets') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.MapLayerActionTargets': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MapLayerActionFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.MapLayerActionFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.MapLayerActionFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class DatabaseProviderConnectionCapabilities2(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.DatabaseProviderConnectionCapabilities2') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorTileProviderFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.VectorTileProviderFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.VectorTileProviderFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorTileProviderCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'Qgis.VectorTileProviderCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    DEFAULT_HIGHLIGHT_BUFFER_MM = ... # type: float
    DEFAULT_HIGHLIGHT_COLOR = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    DEFAULT_HIGHLIGHT_MIN_WIDTH_MM = ... # type: float
    DEFAULT_MAPTOPIXEL_THRESHOLD = ... # type: float
    DEFAULT_M_COORDINATE = ... # type: float
    DEFAULT_SEARCH_RADIUS_MM = ... # type: float
    DEFAULT_SNAP_TOLERANCE = ... # type: float
    DEFAULT_SNAP_UNITS = ... # type: 'Qgis.MapToolUnit'
    DEFAULT_Z_COORDINATE = ... # type: float
    QGIS_DEV_VERSION = ... # type: str
    SCALE_PRECISION = ... # type: float
    UI_SCALE_FACTOR = ... # type: float
    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgis') -> None: ...

    @staticmethod
    def geosVersion() -> str: ...
    @staticmethod
    def geosVersionPatch() -> int: ...
    @staticmethod
    def geosVersionMinor() -> int: ...
    @staticmethod
    def geosVersionMajor() -> int: ...
    @staticmethod
    def geosVersionInt() -> int: ...
    @staticmethod
    def defaultProjectScales() -> str: ...
    @staticmethod
    def devVersion() -> str: ...
    @staticmethod
    def releaseName() -> str: ...
    @staticmethod
    def versionInt() -> int: ...
    @staticmethod
    def version() -> str: ...


class QgsAbstractContentCacheEntry(PyQt5.sip.wrapper):

    fileModified = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
    fileModifiedLastCheckTimer = ... # type: QtCore.QElapsedTimer
    mFileModifiedCheckTimeout = ... # type: int
    nextEntry = ... # type: 'QgsAbstractContentCacheEntry'
    path = ... # type: str
    previousEntry = ... # type: 'QgsAbstractContentCacheEntry'

    def __init__(self, path: str) -> None: ...

    def isEqual(self, other: 'QgsAbstractContentCacheEntry') -> bool: ...
    def dump(self) -> None: ...
    def dataSize(self) -> int: ...


class QgsAbstractContentCacheBase(QtCore.QObject):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def onRemoteContentFetched(self, url: str, success: bool) -> None: ...
    def checkReply(self, reply: QtNetwork.QNetworkReply, path: str) -> bool: ...
    def remoteContentFetched(self, url: str) -> None: ...


class QgsAggregateCalculator(PyQt5.sip.wrapper):

    class Aggregate(int):
        Count = ... # type: QgsAggregateCalculator.Aggregate
        CountDistinct = ... # type: QgsAggregateCalculator.Aggregate
        CountMissing = ... # type: QgsAggregateCalculator.Aggregate
        Min = ... # type: QgsAggregateCalculator.Aggregate
        Max = ... # type: QgsAggregateCalculator.Aggregate
        Sum = ... # type: QgsAggregateCalculator.Aggregate
        Mean = ... # type: QgsAggregateCalculator.Aggregate
        Median = ... # type: QgsAggregateCalculator.Aggregate
        StDev = ... # type: QgsAggregateCalculator.Aggregate
        StDevSample = ... # type: QgsAggregateCalculator.Aggregate
        Range = ... # type: QgsAggregateCalculator.Aggregate
        Minority = ... # type: QgsAggregateCalculator.Aggregate
        Majority = ... # type: QgsAggregateCalculator.Aggregate
        FirstQuartile = ... # type: QgsAggregateCalculator.Aggregate
        ThirdQuartile = ... # type: QgsAggregateCalculator.Aggregate
        InterQuartileRange = ... # type: QgsAggregateCalculator.Aggregate
        StringMinimumLength = ... # type: QgsAggregateCalculator.Aggregate
        StringMaximumLength = ... # type: QgsAggregateCalculator.Aggregate
        StringConcatenate = ... # type: QgsAggregateCalculator.Aggregate
        GeometryCollect = ... # type: QgsAggregateCalculator.Aggregate
        ArrayAggregate = ... # type: QgsAggregateCalculator.Aggregate
        StringConcatenateUnique = ... # type: QgsAggregateCalculator.Aggregate

    class AggregateInfo(PyQt5.sip.wrapper):

        function = ... # type: str
        name = ... # type: str
        supportedTypes = ... # type: typing.Iterable[QtCore.QVariant.Type]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAggregateCalculator.AggregateInfo') -> None: ...

    class AggregateParameters(PyQt5.sip.wrapper):

        delimiter = ... # type: str
        filter = ... # type: str
        orderBy = ... # type: 'QgsFeatureRequest.OrderBy'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAggregateCalculator.AggregateParameters') -> None: ...

    @typing.overload
    def __init__(self, layer: 'QgsVectorLayer') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAggregateCalculator') -> None: ...

    @staticmethod
    def aggregates() -> typing.List['QgsAggregateCalculator.AggregateInfo']: ...
    @staticmethod
    def displayName(aggregate: 'QgsAggregateCalculator.Aggregate') -> str: ...
    @staticmethod
    def stringToAggregate(string: str) -> typing.Tuple['QgsAggregateCalculator.Aggregate', bool]: ...
    def calculate(self, aggregate: 'QgsAggregateCalculator.Aggregate', fieldOrExpression: str, context: typing.Optional['QgsExpressionContext'] = ..., feedback: typing.Optional['QgsFeedback'] = ...) -> typing.Tuple[typing.Any, bool]: ...
    def delimiter(self) -> str: ...
    def setDelimiter(self, delimiter: str) -> None: ...
    def filter(self) -> str: ...
    def setFidsFilter(self, fids: typing.Any) -> None: ...
    def setFilter(self, filterExpression: str) -> None: ...
    def setParameters(self, parameters: 'QgsAggregateCalculator.AggregateParameters') -> None: ...
    def layer(self) -> 'QgsVectorLayer': ...
    def lastError(self) -> str: ...


class QgsAnimatedIcon(QtCore.QObject):

    def __init__(self, iconPath: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def frameChanged(self) -> None: ...
    def height(self) -> int: ...
    def width(self) -> int: ...
    def disconnectFrameChanged(self, receiver: QtCore.QObject, method: str) -> bool: ...
    def connectFrameChanged(self, receiver: QtCore.QObject, method: str) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def setIconPath(self, iconPath: str) -> None: ...
    def iconPath(self) -> str: ...


class QgsApplication(QtWidgets.QApplication):

    class endian_t(int):
        XDR = ... # type: QgsApplication.endian_t
        NDR = ... # type: QgsApplication.endian_t

    class Cursor(int):
        ZoomIn = ... # type: QgsApplication.Cursor
        ZoomOut = ... # type: QgsApplication.Cursor
        Identify = ... # type: QgsApplication.Cursor
        CrossHair = ... # type: QgsApplication.Cursor
        CapturePoint = ... # type: QgsApplication.Cursor
        Select = ... # type: QgsApplication.Cursor
        Sampler = ... # type: QgsApplication.Cursor

    class StyleSheetType(int):
        Qt = ... # type: QgsApplication.StyleSheetType
        WebBrowser = ... # type: QgsApplication.StyleSheetType

    QGIS_APPLICATION_NAME = ... # type: str
    QGIS_ORGANIZATION_DOMAIN = ... # type: str
    QGIS_ORGANIZATION_NAME = ... # type: str

    def __init__(self, argv: typing.List, GUIenabled: bool, profileFolder: str = ..., platformName: str = ...) -> None: ...

    def localeChanged(self) -> None: ...
    def requestForTranslatableObjects(self, translationContext: 'QgsTranslationContext') -> None: ...
    def nullRepresentationChanged(self) -> None: ...
    def customVariablesChanged(self) -> None: ...
    def collectTranslatableObjects(self, translationContext: 'QgsTranslationContext') -> None: ...
    def translation(self) -> str: ...
    @staticmethod
    def setTranslation(translation: str) -> None: ...
    def maxConcurrentConnectionsPerPool(self) -> int: ...
    @staticmethod
    def scaleIconSize(standardSize: int, applyDevicePixelRatio: bool = ...) -> int: ...
    @staticmethod
    def setCustomVariable(name: str, value: typing.Any) -> None: ...
    @staticmethod
    def setCustomVariables(customVariables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def customVariables() -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def setNullRepresentation(nullRepresentation: str) -> None: ...
    @staticmethod
    def nullRepresentation() -> str: ...
    @staticmethod
    def localizedDataPathRegistry() -> 'QgsLocalizedDataPathRegistry': ...
    @staticmethod
    def externalStorageRegistry() -> 'QgsExternalStorageRegistry': ...
    @staticmethod
    def layerMetadataProviderRegistry() -> 'QgsLayerMetadataProviderRegistry': ...
    @staticmethod
    def projectStorageRegistry() -> 'QgsProjectStorageRegistry': ...
    @staticmethod
    def scaleBarRendererRegistry() -> 'QgsScaleBarRendererRegistry': ...
    @staticmethod
    def symbol3DRegistry() -> 'Qgs3DSymbolRegistry': ...
    @staticmethod
    def renderer3DRegistry() -> 'Qgs3DRendererRegistry': ...
    @staticmethod
    def fieldFormatterRegistry() -> 'QgsFieldFormatterRegistry': ...
    @staticmethod
    def numericFormatRegistry() -> 'QgsNumericFormatRegistry': ...
    @staticmethod
    def profiler() -> 'QgsRuntimeProfiler': ...
    @staticmethod
    def connectionRegistry() -> 'QgsConnectionRegistry': ...
    @staticmethod
    def actionScopeRegistry() -> 'QgsActionScopeRegistry': ...
    @staticmethod
    def pageSizeRegistry() -> 'QgsPageSizeRegistry': ...
    @staticmethod
    def processingRegistry() -> 'QgsProcessingRegistry': ...
    @staticmethod
    def authManager() -> 'QgsAuthManager': ...
    @staticmethod
    def messageLog() -> 'QgsMessageLog': ...
    @staticmethod
    def sensorRegistry() -> 'QgsSensorRegistry': ...
    @staticmethod
    def fontManager() -> 'QgsFontManager': ...
    @staticmethod
    def defaultStyleModel() -> 'QgsStyleModel': ...
    @staticmethod
    def databaseQueryLog() -> 'QgsDatabaseQueryLog': ...
    @staticmethod
    def recentStyleHandler() -> 'QgsRecentStyleHandler': ...
    @staticmethod
    def bookmarkManager() -> 'QgsBookmarkManager': ...
    @staticmethod
    def classificationMethodRegistry() -> 'QgsClassificationMethodRegistry': ...
    @staticmethod
    def pluginLayerRegistry() -> 'QgsPluginLayerRegistry': ...
    @staticmethod
    def gpsBabelFormatRegistry() -> 'QgsBabelFormatRegistry': ...
    @staticmethod
    def gpsConnectionRegistry() -> 'QgsGpsConnectionRegistry': ...
    @staticmethod
    def annotationItemRegistry() -> 'QgsAnnotationItemRegistry': ...
    @staticmethod
    def layoutItemRegistry() -> 'QgsLayoutItemRegistry': ...
    @staticmethod
    def calloutRegistry() -> 'QgsCalloutRegistry': ...
    @staticmethod
    def symbolLayerRegistry() -> 'QgsSymbolLayerRegistry': ...
    @staticmethod
    def validityCheckRegistry() -> 'QgsValidityCheckRegistry': ...
    @staticmethod
    def networkContentFetcherRegistry() -> 'QgsNetworkContentFetcherRegistry': ...
    @staticmethod
    def sourceCache() -> 'QgsSourceCache': ...
    @staticmethod
    def imageCache() -> 'QgsImageCache': ...
    @staticmethod
    def svgCache() -> 'QgsSvgCache': ...
    @staticmethod
    def coordinateReferenceSystemRegistry() -> 'QgsCoordinateReferenceSystemRegistry': ...
    @staticmethod
    def dataItemProviderRegistry() -> 'QgsDataItemProviderRegistry': ...
    @staticmethod
    def pointCloudRendererRegistry() -> 'QgsPointCloudRendererRegistry': ...
    @staticmethod
    def rendererRegistry() -> 'QgsRendererRegistry': ...
    @staticmethod
    def paintEffectRegistry() -> 'QgsPaintEffectRegistry': ...
    @staticmethod
    def colorSchemeRegistry() -> 'QgsColorSchemeRegistry': ...
    @staticmethod
    def settingsRegistryCore() -> 'QgsSettingsRegistryCore': ...
    @staticmethod
    def taskManager() -> 'QgsTaskManager': ...
    @staticmethod
    def setMaxThreads(maxThreads: int) -> None: ...
    @staticmethod
    def maxThreads() -> int: ...
    @staticmethod
    def setSkippedGdalDrivers(skippedGdalDrivers: typing.Iterable[str], deferredSkippedGdalDrivers: typing.Iterable[str]) -> None: ...
    @staticmethod
    def deferredSkippedGdalDrivers() -> typing.List[str]: ...
    @staticmethod
    def registerGdalDriversFromSettings() -> None: ...
    @staticmethod
    def applyGdalSkippedDrivers() -> None: ...
    @staticmethod
    def skippedGdalDrivers() -> typing.List[str]: ...
    @staticmethod
    def restoreGdalDriver(driver: str) -> None: ...
    @staticmethod
    def skipGdalDriver(driver: str) -> None: ...
    @staticmethod
    def buildOutputPath() -> str: ...
    @staticmethod
    def buildSourcePath() -> str: ...
    @staticmethod
    def isRunningFromBuildDir() -> bool: ...
    @staticmethod
    def relativePathToAbsolutePath(rpath: str, targetPath: str) -> str: ...
    @staticmethod
    def absolutePathToRelativePath(apath: str, targetPath: str) -> str: ...
    @staticmethod
    def registerOgrDrivers() -> None: ...
    @staticmethod
    def showSettings() -> str: ...
    @staticmethod
    def reportStyleSheet(styleSheetType: 'QgsApplication.StyleSheetType' = ...) -> str: ...
    @staticmethod
    def endian() -> 'QgsApplication.endian_t': ...
    @staticmethod
    def appIconPath() -> str: ...
    @staticmethod
    def exitQgis() -> None: ...
    @staticmethod
    def createThemeFolder() -> bool: ...
    @staticmethod
    def createDatabase(errorMessage: typing.Optional[str] = ...) -> bool: ...
    @staticmethod
    def initQgis() -> None: ...
    @staticmethod
    def setAuthDatabaseDirPath(authDbDirPath: str) -> None: ...
    @staticmethod
    def setDefaultSvgPaths(pathList: typing.Iterable[str]) -> None: ...
    @staticmethod
    def setPkgDataPath(pkgDataPath: str) -> None: ...
    @staticmethod
    def setPluginPath(pluginPath: str) -> None: ...
    @staticmethod
    def setPrefixPath(prefixPath: str, useDefaultPaths: bool = ...) -> None: ...
    @staticmethod
    def qmlImportPath() -> str: ...
    @staticmethod
    def libexecPath() -> str: ...
    @staticmethod
    def libraryPath() -> str: ...
    @staticmethod
    def defaultThemesFolder() -> str: ...
    @staticmethod
    def defaultStylePath() -> str: ...
    @staticmethod
    def userThemesFolder() -> str: ...
    @staticmethod
    def setLocale(locale: QtCore.QLocale) -> None: ...
    @staticmethod
    def locale() -> str: ...
    @staticmethod
    def applicationFullName() -> str: ...
    @staticmethod
    def platform() -> str: ...
    @staticmethod
    def systemMemorySizeMb() -> int: ...
    @staticmethod
    def osName() -> str: ...
    @staticmethod
    def userFullName() -> str: ...
    @staticmethod
    def userLoginName() -> str: ...
    @staticmethod
    def shortNameRegularExpression() -> QtCore.QRegularExpression: ...
    @staticmethod
    def userStylePath() -> str: ...
    @staticmethod
    def getThemePixmap(name: str, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., backColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., size: int = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def getThemeCursor(cursor: 'QgsApplication.Cursor') -> QtGui.QCursor: ...
    @staticmethod
    def getThemeIcon(name: str, fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def iconPath(iconFile: str) -> str: ...
    @staticmethod
    def defaultThemePath() -> str: ...
    @staticmethod
    def activeThemePath() -> str: ...
    @staticmethod
    def pkgDataPath() -> str: ...
    @staticmethod
    def pluginPath() -> str: ...
    @staticmethod
    def prefixPath() -> str: ...
    @staticmethod
    def systemEnvVars() -> typing.Dict[str, str]: ...
    @staticmethod
    def layoutTemplatePaths() -> typing.List[str]: ...
    @staticmethod
    def svgPaths() -> typing.List[str]: ...
    @staticmethod
    def setSvgPaths(svgPaths: typing.Iterable[str]) -> None: ...
    @staticmethod
    def srsDatabaseFilePath() -> str: ...
    @staticmethod
    def iconsPath() -> str: ...
    @staticmethod
    def splashPath() -> str: ...
    @staticmethod
    def qgisAuthDatabaseFilePath() -> str: ...
    @staticmethod
    def qgisUserDatabaseFilePath() -> str: ...
    @staticmethod
    def qgisSettingsDirPath() -> str: ...
    @staticmethod
    def qgisMasterDatabaseFilePath() -> str: ...
    @staticmethod
    def metadataPath() -> str: ...
    @staticmethod
    def i18nPath() -> str: ...
    @staticmethod
    def licenceFilePath() -> str: ...
    @staticmethod
    def translatorsFilePath() -> str: ...
    @staticmethod
    def serverResourcesPath() -> str: ...
    @staticmethod
    def donorsFilePath() -> str: ...
    @staticmethod
    def sponsorsFilePath() -> str: ...
    @staticmethod
    def developersMapFilePath() -> str: ...
    @staticmethod
    def contributorsFilePath() -> str: ...
    @staticmethod
    def authorsFilePath() -> str: ...
    @staticmethod
    def uiThemes() -> typing.Dict[str, str]: ...
    @staticmethod
    def setUITheme(themeName: str) -> None: ...
    @staticmethod
    def themeName() -> str: ...
    @staticmethod
    def resolvePkgPath() -> str: ...
    @staticmethod
    def setThemeName(themeName: str) -> None: ...
    @staticmethod
    def setFileOpenEventReceiver(receiver: QtCore.QObject) -> None: ...
    def notify(self, receiver: QtCore.QObject, event: QtCore.QEvent) -> bool: ...
    def event(self, event: QtCore.QEvent) -> bool: ...
    @staticmethod
    def instance() -> 'QgsApplication': ...


class QgsArchive(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsArchive') -> None: ...

    def exists(self) -> bool: ...
    def dir(self) -> str: ...
    def files(self) -> typing.List[str]: ...
    def removeFile(self, filename: str) -> bool: ...
    def addFile(self, filename: str) -> None: ...
    def clear(self) -> None: ...
    def unzip(self, zipFilename: str) -> bool: ...
    def zip(self, zipFilename: str) -> bool: ...


class QgsProjectArchive(QgsArchive):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectArchive') -> None: ...

    def auxiliaryStorageFile(self) -> str: ...
    def clearProjectFile(self) -> bool: ...
    def projectFile(self) -> str: ...
    def unzip(self, zipFilename: str) -> bool: ...


class QgsAttributeTableConfig(PyQt5.sip.wrapper):

    class ActionWidgetStyle(int):
        ButtonList = ... # type: QgsAttributeTableConfig.ActionWidgetStyle
        DropDown = ... # type: QgsAttributeTableConfig.ActionWidgetStyle

    class Type(int):
        Field = ... # type: QgsAttributeTableConfig.Type
        Action = ... # type: QgsAttributeTableConfig.Type

    class ColumnConfig(PyQt5.sip.wrapper):

        hidden = ... # type: bool
        name = ... # type: str
        type = ... # type: 'QgsAttributeTableConfig.Type'
        width = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAttributeTableConfig.ColumnConfig') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeTableConfig') -> None: ...

    def hasSameColumns(self, other: 'QgsAttributeTableConfig') -> bool: ...
    def setSortOrder(self, sortOrder: QtCore.Qt.SortOrder) -> None: ...
    def sortOrder(self) -> QtCore.Qt.SortOrder: ...
    def setColumnHidden(self, column: int, hidden: bool) -> None: ...
    def columnHidden(self, column: int) -> bool: ...
    def setColumnWidth(self, column: int, width: int) -> None: ...
    def columnWidth(self, column: int) -> int: ...
    def setSortExpression(self, sortExpression: str) -> None: ...
    def sortExpression(self) -> str: ...
    def readXml(self, node: QtXml.QDomNode) -> None: ...
    def writeXml(self, node: QtXml.QDomNode) -> None: ...
    def setActionWidgetStyle(self, actionWidgetStyle: 'QgsAttributeTableConfig.ActionWidgetStyle') -> None: ...
    def actionWidgetStyle(self) -> 'QgsAttributeTableConfig.ActionWidgetStyle': ...
    def setActionWidgetVisible(self, visible: bool) -> None: ...
    def actionWidgetVisible(self) -> bool: ...
    def update(self, fields: 'QgsFields') -> None: ...
    def setColumns(self, columns: typing.Iterable['QgsAttributeTableConfig.ColumnConfig']) -> None: ...
    def mapVisibleColumnToIndex(self, visibleColumn: int) -> int: ...
    def __len__(self) -> int: ...
    def size(self) -> int: ...
    def isEmpty(self) -> bool: ...
    def columns(self) -> typing.List['QgsAttributeTableConfig.ColumnConfig']: ...


class QgsMapLayer(QtCore.QObject):

    class ReadFlag(int):
        FlagDontResolveLayers = ... # type: QgsMapLayer.ReadFlag
        FlagTrustLayerMetadata = ... # type: QgsMapLayer.ReadFlag
        FlagReadExtentFromXml = ... # type: QgsMapLayer.ReadFlag
        FlagForceReadOnly = ... # type: QgsMapLayer.ReadFlag

    class StyleCategory(int):
        LayerConfiguration = ... # type: QgsMapLayer.StyleCategory
        Symbology = ... # type: QgsMapLayer.StyleCategory
        Symbology3D = ... # type: QgsMapLayer.StyleCategory
        Labeling = ... # type: QgsMapLayer.StyleCategory
        Fields = ... # type: QgsMapLayer.StyleCategory
        Forms = ... # type: QgsMapLayer.StyleCategory
        Actions = ... # type: QgsMapLayer.StyleCategory
        MapTips = ... # type: QgsMapLayer.StyleCategory
        Diagrams = ... # type: QgsMapLayer.StyleCategory
        AttributeTable = ... # type: QgsMapLayer.StyleCategory
        Rendering = ... # type: QgsMapLayer.StyleCategory
        CustomProperties = ... # type: QgsMapLayer.StyleCategory
        GeometryOptions = ... # type: QgsMapLayer.StyleCategory
        Relations = ... # type: QgsMapLayer.StyleCategory
        Temporal = ... # type: QgsMapLayer.StyleCategory
        Legend = ... # type: QgsMapLayer.StyleCategory
        Elevation = ... # type: QgsMapLayer.StyleCategory
        Notes = ... # type: QgsMapLayer.StyleCategory
        AllStyleCategories = ... # type: QgsMapLayer.StyleCategory

    class LayerFlag(int):
        Identifiable = ... # type: QgsMapLayer.LayerFlag
        Removable = ... # type: QgsMapLayer.LayerFlag
        Searchable = ... # type: QgsMapLayer.LayerFlag
        Private = ... # type: QgsMapLayer.LayerFlag

    class PropertyType(int):
        Style = ... # type: QgsMapLayer.PropertyType
        Metadata = ... # type: QgsMapLayer.PropertyType

    class LayerFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayer.LayerFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapLayer.LayerFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class StyleCategories(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayer.StyleCategories') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapLayer.StyleCategories': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ReadFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayer.ReadFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapLayer.ReadFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, type: Qgis.LayerType = ..., name: str = ..., source: str = ...) -> None: ...

    def hasDependencyCycle(self, a0: typing.Iterable['QgsMapLayerDependency']) -> bool: ...
    def invalidateWgs84Extent(self) -> None: ...
    def setError(self, error: 'QgsError') -> None: ...
    def appendError(self, error: 'QgsErrorMessage') -> None: ...
    def setProviderType(self, providerType: str) -> None: ...
    def readCommonStyle(self, layerElement: QtXml.QDomElement, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> None: ...
    def writeCommonStyle(self, layerElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> None: ...
    def writeStyleManager(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    def readStyleManager(self, layerNode: QtXml.QDomNode) -> None: ...
    def writeCustomProperties(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    def readCustomProperties(self, layerNode: QtXml.QDomNode, keyStartsWith: str = ...) -> None: ...
    def decodedSource(self, source: str, dataProvider: str, context: 'QgsReadWriteContext') -> str: ...
    def encodedSource(self, source: str, context: 'QgsReadWriteContext') -> str: ...
    def writeXml(self, layer_node: QtXml.QDomNode, document: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: 'QgsReadWriteContext') -> bool: ...
    def setValid(self, valid: bool) -> None: ...
    def setExtent(self, rect: 'QgsRectangle') -> None: ...
    def mapTipsEnabledChanged(self) -> None: ...
    def mapTipTemplateChanged(self) -> None: ...
    def layerModified(self) -> None: ...
    def editingStopped(self) -> None: ...
    def editingStarted(self) -> None: ...
    def customPropertyChanged(self, key: str) -> None: ...
    def isValidChanged(self) -> None: ...
    def styleLoaded(self, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> None: ...
    def dataSourceChanged(self) -> None: ...
    def flagsChanged(self) -> None: ...
    def metadataChanged(self) -> None: ...
    def autoRefreshIntervalChanged(self, interval: int) -> None: ...
    def willBeDeleted(self) -> None: ...
    def dependenciesChanged(self) -> None: ...
    def configChanged(self) -> None: ...
    def request3DUpdate(self) -> None: ...
    def renderer3DChanged(self) -> None: ...
    def legendChanged(self) -> None: ...
    def styleChanged(self) -> None: ...
    def rendererChanged(self) -> None: ...
    def opacityChanged(self, opacity: float) -> None: ...
    def blendModeChanged(self, blendMode: QtGui.QPainter.CompositionMode) -> None: ...
    def dataChanged(self) -> None: ...
    def recalculateExtents(self) -> None: ...
    def repaintRequested(self, deferredUpdate: bool = ...) -> None: ...
    def crsChanged(self) -> None: ...
    def nameChanged(self) -> None: ...
    def statusChanged(self, status: str) -> None: ...
    def beforeResolveReferences(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def __repr__(self) -> typing.Any: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def setRefreshOnNofifyMessage(self, message: str) -> None: ...
    def setRefreshOnNotifyEnabled(self, enabled: bool) -> None: ...
    def setDependencies(self, layers: typing.Iterable['QgsMapLayerDependency']) -> bool: ...
    def emitStyleChanged(self) -> None: ...
    def trigger3DUpdate(self) -> None: ...
    def triggerRepaint(self, deferredUpdate: bool = ...) -> None: ...
    def setScaleBasedVisibility(self, enabled: bool) -> None: ...
    def setMaximumScale(self, scale: float) -> None: ...
    def setMinimumScale(self, scale: float) -> None: ...
    @staticmethod
    def providerReadFlags(layerNode: QtXml.QDomNode, layerReadFlags: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
    def mapTipsEnabled(self) -> bool: ...
    def setMapTipsEnabled(self, enabled: bool) -> None: ...
    def setMapTipTemplate(self, mapTipTemplate: str) -> None: ...
    def mapTipTemplate(self) -> str: ...
    def hasMapTips(self) -> bool: ...
    def setLegendPlaceholderImage(self, imgPath: str) -> None: ...
    def legendPlaceholderImage(self) -> str: ...
    def elevationProperties(self) -> 'QgsMapLayerElevationProperties': ...
    def temporalProperties(self) -> 'QgsMapLayerTemporalProperties': ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    @staticmethod
    def generateId(layerName: str) -> str: ...
    def setOriginalXmlProperties(self, originalXmlProperties: str) -> None: ...
    def originalXmlProperties(self) -> str: ...
    def isRefreshOnNotifyEnabled(self) -> bool: ...
    def refreshOnNotifyMessage(self) -> str: ...
    def dependencies(self) -> typing.Set['QgsMapLayerDependency']: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def htmlMetadata(self) -> str: ...
    def setMetadata(self, metadata: 'QgsLayerMetadata') -> None: ...
    def metadata(self) -> 'QgsLayerMetadata': ...
    def setAutoRefreshEnabled(self, enabled: bool) -> None: ...
    def setAutoRefreshInterval(self, interval: int) -> None: ...
    def autoRefreshInterval(self) -> int: ...
    def hasAutoRefreshEnabled(self) -> bool: ...
    def hasScaleBasedVisibility(self) -> bool: ...
    def maximumScale(self) -> float: ...
    def minimumScale(self) -> float: ...
    def isInScaleRange(self, scale: float) -> bool: ...
    def renderer3D(self) -> 'QgsAbstract3DRenderer': ...
    def setRenderer3D(self, renderer: 'QgsAbstract3DRenderer') -> None: ...
    def styleManager(self) -> 'QgsMapLayerStyleManager': ...
    def legend(self) -> 'QgsMapLayerLegend': ...
    def setLegend(self, legend: 'QgsMapLayerLegend') -> None: ...
    def legendUrlFormat(self) -> str: ...
    def setLegendUrlFormat(self, legendUrlFormat: str) -> None: ...
    def legendUrl(self) -> str: ...
    def setLegendUrl(self, legendUrl: str) -> None: ...
    def undoStackStyles(self) -> QtWidgets.QUndoStack: ...
    def undoStack(self) -> QtWidgets.QUndoStack: ...
    def providerType(self) -> str: ...
    @typing.overload
    def setDataSource(self, dataSource: str, baseName: str, provider: str, loadDefaultStyleFlag: bool = ...) -> None: ...
    @typing.overload
    def setDataSource(self, dataSource: str, baseName: str, provider: str, options: 'QgsDataProvider.ProviderOptions', loadDefaultStyleFlag: bool = ...) -> None: ...
    @typing.overload
    def setDataSource(self, dataSource: str, baseName: str, provider: str, options: 'QgsDataProvider.ProviderOptions', flags: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readSld(self, node: QtXml.QDomNode, errorMessage: str) -> bool: ...
    def loadSldStyle(self, uri: str) -> typing.Tuple[str, bool]: ...
    def saveSldStyleV2(self, exportContext: 'QgsSldExportContext') -> typing.Tuple[str, bool]: ...
    def saveSldStyle(self, uri: str) -> typing.Tuple[str, bool]: ...
    def saveNamedStyle(self, uri: str, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> typing.Tuple[str, bool]: ...
    @typing.overload
    def saveDefaultStyle(self, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> typing.Tuple[str, bool]: ...
    @typing.overload
    def saveDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def exportSldStyleV2(self, doc: QtXml.QDomDocument, errorMsg: str, exportContext: 'QgsSldExportContext') -> None: ...
    def exportSldStyle(self, doc: QtXml.QDomDocument, errorMsg: str) -> None: ...
    def exportNamedStyle(self, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext' = ..., categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> str: ...
    def importNamedStyle(self, doc: QtXml.QDomDocument, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> typing.Tuple[bool, str]: ...
    def loadNamedStyleFromDatabase(self, db: str, uri: str) -> typing.Tuple[bool, str]: ...
    def loadNamedStyle(self, uri: str, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> typing.Tuple[str, bool]: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def styleURI(self) -> str: ...
    def importNamedMetadata(self, document: QtXml.QDomDocument, errorMessage: str) -> bool: ...
    def loadNamedMetadataFromDatabase(self, db: str, uri: str, qmd: str) -> bool: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def loadNamedMetadata(self, uri: str) -> typing.Tuple[str, bool]: ...
    def saveNamedMetadata(self, uri: str) -> typing.Tuple[str, bool]: ...
    def saveDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def exportNamedMetadata(self, doc: QtXml.QDomDocument, errorMsg: str) -> None: ...
    def metadataUri(self) -> str: ...
    @staticmethod
    def formatLayerName(name: str) -> str: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def setCrs(self, srs: 'QgsCoordinateReferenceSystem', emitSignal: bool = ...) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def error(self) -> 'QgsError': ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperties(self) -> 'QgsObjectCustomProperties': ...
    def setCustomProperties(self, properties: 'QgsObjectCustomProperties') -> None: ...
    def customProperty(self, value: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def customPropertyKeys(self) -> typing.List[str]: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def writeLayerXml(self, layerElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readLayerXml(self, layerElement: QtXml.QDomElement, context: 'QgsReadWriteContext', flags: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag'] = ..., preloadedProvider: typing.Optional['QgsDataProvider'] = ...) -> bool: ...
    def isTemporary(self) -> bool: ...
    def isSpatial(self) -> bool: ...
    def isModified(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def supportsEditing(self) -> bool: ...
    def setSubLayerVisibility(self, name: str, visible: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[str]) -> None: ...
    def subLayers(self) -> typing.List[str]: ...
    def source(self) -> str: ...
    def publicSource(self) -> str: ...
    def isValid(self) -> bool: ...
    def wgs84Extent(self, forceRecalculate: bool = ...) -> 'QgsRectangle': ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: 'QgsRenderContext') -> 'QgsMapLayerRenderer': ...
    def reload(self) -> None: ...
    def readOnly(self) -> bool: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, blendMode: QtGui.QPainter.CompositionMode) -> None: ...
    def metadataUrlFormat(self) -> str: ...
    def setMetadataUrlFormat(self, metaUrlFormat: str) -> None: ...
    def metadataUrlType(self) -> str: ...
    def setMetadataUrlType(self, metaUrlType: str) -> None: ...
    def metadataUrl(self) -> str: ...
    def setMetadataUrl(self, metaUrl: str) -> None: ...
    def serverProperties(self) -> 'QgsMapLayerServerProperties': ...
    def attributionUrl(self) -> str: ...
    def setAttributionUrl(self, attribUrl: str) -> None: ...
    def attribution(self) -> str: ...
    def setAttribution(self, attrib: str) -> None: ...
    def dataUrlFormat(self) -> str: ...
    def setDataUrlFormat(self, dataUrlFormat: str) -> None: ...
    def dataUrl(self) -> str: ...
    def setDataUrl(self, dataUrl: str) -> None: ...
    def keywordList(self) -> str: ...
    def setKeywordList(self, keywords: str) -> None: ...
    def abstract(self) -> str: ...
    def setAbstract(self, abstract: str) -> None: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def shortName(self) -> str: ...
    def setShortName(self, shortName: str) -> None: ...
    def dataProvider(self) -> 'QgsDataProvider': ...
    def name(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def id(self) -> str: ...
    @staticmethod
    def extensionPropertyType(type: 'QgsMapLayer.PropertyType') -> str: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def setFlags(self, flags: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> None: ...
    def flags(self) -> 'QgsMapLayer.LayerFlags': ...
    def type(self) -> Qgis.LayerType: ...
    @typing.overload
    def clone(self) -> 'QgsMapLayer': ...
    @typing.overload
    def clone(self, layer: 'QgsMapLayer') -> None: ...


class QgsExpressionContextGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionContextGenerator') -> None: ...

    def createExpressionContext(self) -> 'QgsExpressionContext': ...


class QgsExpressionContextScopeGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionContextScopeGenerator') -> None: ...

    def createExpressionContextScope(self) -> 'QgsExpressionContextScope': ...


class QgsFeatureSink(PyQt5.sip.wrapper):

    class Flag(int):
        FastInsert = ... # type: QgsFeatureSink.Flag
        RollBackOnErrors = ... # type: QgsFeatureSink.Flag

    class SinkFlag(int):
        RegeneratePrimaryKey = ... # type: QgsFeatureSink.SinkFlag

    class SinkFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureSink.SinkFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFeatureSink.SinkFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureSink.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFeatureSink.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureSink') -> None: ...

    def lastError(self) -> str: ...
    def flushBuffer(self) -> bool: ...
    @typing.overload
    def addFeatures(self, features: typing.Iterable['QgsFeature'], flags: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag'] = ...) -> bool: ...
    @typing.overload
    def addFeatures(self, iterator: 'QgsFeatureIterator', flags: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag'] = ...) -> bool: ...
    def addFeature(self, feature: 'QgsFeature', flags: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag'] = ...) -> bool: ...


class QgsFeatureSource(PyQt5.sip.wrapper):

    class SpatialIndexPresence(int):
        SpatialIndexUnknown = ... # type: QgsFeatureSource.SpatialIndexPresence
        SpatialIndexNotPresent = ... # type: QgsFeatureSource.SpatialIndexPresence
        SpatialIndexPresent = ... # type: QgsFeatureSource.SpatialIndexPresence

    class FeatureAvailability(int):
        NoFeaturesAvailable = ... # type: QgsFeatureSource.FeatureAvailability
        FeaturesAvailable = ... # type: QgsFeatureSource.FeatureAvailability
        FeaturesMaybeAvailable = ... # type: QgsFeatureSource.FeatureAvailability

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureSource') -> None: ...

    def hasSpatialIndex(self) -> 'QgsFeatureSource.SpatialIndexPresence': ...
    def materialize(self, request: 'QgsFeatureRequest', feedback: typing.Optional['QgsFeedback'] = ...) -> 'QgsVectorLayer': ...
    def allFeatureIds(self) -> typing.Any: ...
    def sourceExtent(self) -> 'QgsRectangle': ...
    def maximumValue(self, fieldIndex: int) -> typing.Any: ...
    def minimumValue(self, fieldIndex: int) -> typing.Any: ...
    def uniqueValues(self, fieldIndex: int, limit: int = ...) -> typing.Set[typing.Any]: ...
    def hasFeatures(self) -> 'QgsFeatureSource.FeatureAvailability': ...
    def featureCount(self) -> int: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def fields(self) -> 'QgsFields': ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def sourceName(self) -> str: ...
    def getFeatures(self, request: 'QgsFeatureRequest' = ...) -> 'QgsFeatureIterator': ...


class QgsAbstractProfileSource(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractProfileSource') -> None: ...

    def createProfileGenerator(self, request: 'QgsProfileRequest') -> 'QgsAbstractProfileGenerator': ...


class QgsVectorLayer(QgsMapLayer, QgsExpressionContextGenerator, QgsExpressionContextScopeGenerator, QgsFeatureSink, QgsFeatureSource, QgsAbstractProfileSource):

    class LayerOptions(PyQt5.sip.wrapper):

        fallbackCrs = ... # type: 'QgsCoordinateReferenceSystem'
        fallbackWkbType = ... # type: Qgis.WkbType
        forceReadOnly = ... # type: bool
        loadAllStoredStyles = ... # type: bool
        loadDefaultStyle = ... # type: bool
        readExtentFromXml = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, loadDefaultStyle: bool = ..., readExtentFromXml: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext', loadDefaultStyle: bool = ..., readExtentFromXml: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayer.LayerOptions') -> None: ...

    class DeleteContext(PyQt5.sip.wrapper):

        cascade = ... # type: bool
        project = ... # type: 'QgsProject'

        @typing.overload
        def __init__(self, cascade: bool = ..., project: typing.Optional['QgsProject'] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayer.DeleteContext') -> None: ...

        def handledFeatures(self, layer: 'QgsVectorLayer') -> typing.Any: ...
        def handledLayers(self, includeAuxiliaryLayers: bool = ...) -> typing.List['QgsVectorLayer']: ...

    def __init__(self, path: str = ..., baseName: str = ..., providerLib: str = ..., options: 'QgsVectorLayer.LayerOptions' = ...) -> None: ...

    def setExtent(self, rect: 'QgsRectangle') -> None: ...
    def symbolFeatureCountMapChanged(self) -> None: ...
    def supportsEditingChanged(self) -> None: ...
    def readOnlyChanged(self) -> None: ...
    def editFormConfigChanged(self) -> None: ...
    def raiseError(self, msg: str) -> None: ...
    def displayExpressionChanged(self) -> None: ...
    def writeCustomSymbology(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, errorMessage: str) -> None: ...
    def readCustomSymbology(self, element: QtXml.QDomElement, errorMessage: str) -> None: ...
    def editCommandDestroyed(self) -> None: ...
    def editCommandEnded(self) -> None: ...
    def editCommandStarted(self, text: str) -> None: ...
    def featureBlendModeChanged(self, blendMode: QtGui.QPainter.CompositionMode) -> None: ...
    def labelingFontNotFound(self, layer: 'QgsVectorLayer', fontfamily: str) -> None: ...
    def committedGeometriesChanges(self, layerId: str, changedGeometries: typing.Any) -> None: ...
    def committedAttributeValuesChanges(self, layerId: str, changedAttributesValues: typing.Any) -> None: ...
    def committedFeaturesRemoved(self, layerId: str, deletedFeatureIds: typing.Any) -> None: ...
    def committedFeaturesAdded(self, layerId: str, addedFeatures: typing.Iterable['QgsFeature']) -> None: ...
    def committedAttributesAdded(self, layerId: str, addedAttributes: typing.Any) -> None: ...
    def committedAttributesDeleted(self, layerId: str, deletedAttributes: typing.Iterable[int]) -> None: ...
    def geometryChanged(self, fid: int, geometry: 'QgsGeometry') -> None: ...
    def attributeValueChanged(self, fid: int, idx: int, value: typing.Any) -> None: ...
    def subsetStringChanged(self) -> None: ...
    def updatedFields(self) -> None: ...
    def featuresDeleted(self, fids: typing.Any) -> None: ...
    def featureDeleted(self, fid: int) -> None: ...
    def featureAdded(self, fid: int) -> None: ...
    def beforeRemovingExpressionField(self, idx: int) -> None: ...
    def attributeDeleted(self, idx: int) -> None: ...
    def beforeAddingExpressionField(self, fieldName: str) -> None: ...
    def attributeAdded(self, idx: int) -> None: ...
    def afterRollBack(self) -> None: ...
    def afterCommitChanges(self) -> None: ...
    def beforeRollBack(self) -> None: ...
    def beforeCommitChanges(self, stopEditing: bool) -> None: ...
    def beforeEditingStarted(self) -> None: ...
    def beforeModifiedCheck(self) -> None: ...
    def allowCommitChanged(self) -> None: ...
    def selectionChanged(self, selected: typing.Any, deselected: typing.Any, clearAndSelect: bool) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def hasSpatialIndex(self) -> QgsFeatureSource.SpatialIndexPresence: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def startEditing(self) -> bool: ...
    def updateExtents(self, force: bool = ...) -> None: ...
    def reselect(self) -> None: ...
    def removeSelection(self) -> None: ...
    @typing.overload
    def deselect(self, featureId: int) -> None: ...
    @typing.overload
    def deselect(self, featureIds: typing.Any) -> None: ...
    @typing.overload
    def select(self, featureId: int) -> None: ...
    @typing.overload
    def select(self, featureIds: typing.Any) -> None: ...
    def storedExpressionManager(self) -> 'QgsStoredExpressionManager': ...
    def geometryOptions(self) -> 'QgsGeometryOptions': ...
    def isEditCommandActive(self) -> bool: ...
    def readExtentFromXml(self) -> bool: ...
    def setReadExtentFromXml(self, readExtentFromXml: bool) -> None: ...
    def setEditFormConfig(self, editFormConfig: 'QgsEditFormConfig') -> None: ...
    def editFormConfig(self) -> 'QgsEditFormConfig': ...
    def createExpressionContextScope(self) -> 'QgsExpressionContextScope': ...
    def createExpressionContext(self) -> 'QgsExpressionContext': ...
    def setAttributeTableConfig(self, attributeTableConfig: QgsAttributeTableConfig) -> None: ...
    def attributeTableConfig(self) -> QgsAttributeTableConfig: ...
    def conditionalStyles(self) -> 'QgsConditionalLayerStyles': ...
    def simplifyDrawingCanbeApplied(self, renderContext: 'QgsRenderContext', simplifyHint: 'QgsVectorSimplifyMethod.SimplifyHint') -> bool: ...
    def simplifyMethod(self) -> 'QgsVectorSimplifyMethod': ...
    def setSimplifyMethod(self, simplifyMethod: 'QgsVectorSimplifyMethod') -> None: ...
    def htmlMetadata(self) -> str: ...
    def featureBlendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setFeatureBlendMode(self, blendMode: QtGui.QPainter.CompositionMode) -> None: ...
    def aggregate(self, aggregate: QgsAggregateCalculator.Aggregate, fieldOrExpression: str, parameters: QgsAggregateCalculator.AggregateParameters = ..., context: typing.Optional['QgsExpressionContext'] = ..., fids: typing.Optional[typing.Any] = ..., feedback: typing.Optional['QgsFeedback'] = ...) -> typing.Tuple[typing.Any, bool]: ...
    def minimumAndMaximumValue(self, index: int) -> typing.Tuple[typing.Any, typing.Any]: ...
    def maximumValue(self, index: int) -> typing.Any: ...
    def minimumValue(self, index: int) -> typing.Any: ...
    def uniqueStringsMatching(self, index: int, substring: str, limit: int = ..., feedback: typing.Optional['QgsFeedback'] = ...) -> typing.List[str]: ...
    def uniqueValues(self, fieldIndex: int, limit: int = ...) -> typing.Set[typing.Any]: ...
    def editorWidgetSetup(self, index: int) -> 'QgsEditorWidgetSetup': ...
    def setEditorWidgetSetup(self, index: int, setup: 'QgsEditorWidgetSetup') -> None: ...
    def setConstraintExpression(self, index: int, expression: str, description: str = ...) -> None: ...
    def constraintDescription(self, index: int) -> str: ...
    def constraintExpression(self, index: int) -> str: ...
    def removeFieldConstraint(self, index: int, constraint: 'QgsFieldConstraints.Constraint') -> None: ...
    def setFieldConstraint(self, index: int, constraint: 'QgsFieldConstraints.Constraint', strength: 'QgsFieldConstraints.ConstraintStrength' = ...) -> None: ...
    def fieldConstraintsAndStrength(self, fieldIndex: int) -> typing.Dict['QgsFieldConstraints.Constraint', 'QgsFieldConstraints.ConstraintStrength']: ...
    def fieldConstraints(self, fieldIndex: int) -> 'QgsFieldConstraints.Constraints': ...
    def defaultValueDefinition(self, index: int) -> 'QgsDefaultValue': ...
    def setDefaultValueDefinition(self, index: int, definition: 'QgsDefaultValue') -> None: ...
    def defaultValue(self, index: int, feature: 'QgsFeature' = ..., context: typing.Optional['QgsExpressionContext'] = ...) -> typing.Any: ...
    def updateFields(self) -> None: ...
    @staticmethod
    def drawVertexMarker(x: float, y: float, p: QtGui.QPainter, type: Qgis.VertexMarkerType, vertexSize: int) -> None: ...
    def destroyEditCommand(self) -> None: ...
    def endEditCommand(self) -> None: ...
    def beginEditCommand(self, text: str) -> None: ...
    def editBuffer(self) -> 'QgsVectorLayerEditBuffer': ...
    def referencingRelations(self, idx: int) -> typing.List['QgsRelation']: ...
    def rollBack(self, deleteBuffer: bool = ...) -> bool: ...
    def commitErrors(self) -> typing.List[str]: ...
    def commitChanges(self, stopEditing: bool = ...) -> bool: ...
    def deleteFeatures(self, fids: typing.Any, context: typing.Optional['QgsVectorLayer.DeleteContext'] = ...) -> bool: ...
    def deleteFeature(self, fid: int, context: typing.Optional['QgsVectorLayer.DeleteContext'] = ...) -> bool: ...
    def addFeatures(self, features: typing.Iterable['QgsFeature'], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def deleteAttributes(self, attrs: typing.Iterable[int]) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def setExcludeAttributesWfs(self, att: typing.Iterable[str]) -> None: ...
    def excludeAttributesWfs(self) -> typing.Set[str]: ...
    def setExcludeAttributesWms(self, att: typing.Iterable[str]) -> None: ...
    def excludeAttributesWms(self) -> typing.Set[str]: ...
    def setFieldSplitPolicy(self, index: int, policy: Qgis.FieldDomainSplitPolicy) -> None: ...
    def attributeAliases(self) -> typing.Dict[str, str]: ...
    def attributeDisplayName(self, index: int) -> str: ...
    def attributeAlias(self, index: int) -> str: ...
    def renameAttribute(self, index: int, newName: str) -> bool: ...
    def removeFieldAlias(self, index: int) -> None: ...
    def setFieldAlias(self, index: int, aliasString: str) -> None: ...
    def addAttribute(self, field: 'QgsField') -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any] = ..., skipDefaultValues: bool = ...) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ..., skipDefaultValues: bool = ...) -> bool: ...
    def changeGeometry(self, fid: int, geometry: 'QgsGeometry', skipDefaultValue: bool = ...) -> bool: ...
    def supportsEditing(self) -> bool: ...
    def setReadOnly(self, readonly: bool = ...) -> bool: ...
    def primaryKeyAttributes(self) -> typing.List[int]: ...
    def attributeList(self) -> typing.List[int]: ...
    def fields(self) -> 'QgsFields': ...
    def sourceExtent(self) -> 'QgsRectangle': ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: 'QgsRenderContext') -> 'QgsMapLayerRenderer': ...
    def reload(self) -> None: ...
    def isAuxiliaryField(self, index: int) -> typing.Tuple[bool, int]: ...
    def isModified(self) -> bool: ...
    def isSpatial(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def setLabeling(self, labeling: 'QgsAbstractVectorLayerLabeling') -> None: ...
    def labeling(self) -> 'QgsAbstractVectorLayerLabeling': ...
    @typing.overload
    def addTopologicalPoints(self, geom: 'QgsGeometry') -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: 'QgsPointXY') -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: 'QgsPoint') -> int: ...
    @typing.overload
    def addTopologicalPoints(self, ps: typing.Iterable['QgsPoint']) -> int: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable['QgsPointXY'], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable['QgsPoint'], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, curve: 'QgsCurve', preserveCircular: bool = ..., topologicalEditing: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List['QgsPoint']]: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable['QgsPointXY'], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable['QgsPoint'], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    def translateFeature(self, featureId: int, dx: float, dy: float) -> int: ...
    def addCurvedPart(self, ring: 'QgsCurve') -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPartV2(self, ring: typing.Iterable['QgsPointXY']) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPartV2(self, ring: typing.Iterable['QgsPoint']) -> Qgis.GeometryOperationResult: ...
    def addPart(self, ring: typing.Iterable['QgsPointXY']) -> Qgis.GeometryOperationResult: ...
    def addCurvedRing(self, ring: 'QgsCurve') -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable['QgsPointXY']) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable['QgsPoint']) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    def deleteSelectedFeatures(self, context: typing.Optional['QgsVectorLayer.DeleteContext'] = ...) -> typing.Tuple[bool, int]: ...
    def deleteVertex(self, featureId: int, vertex: int) -> Qgis.VectorEditResult: ...
    def moveVertexV2(self, p: 'QgsPoint', atFeatureId: int, atVertex: int) -> bool: ...
    def moveVertex(self, x: float, y: float, atFeatureId: int, atVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, x: float, y: float, atFeatureId: int, beforeVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, point: 'QgsPoint', atFeatureId: int, beforeVertex: int) -> bool: ...
    def updateFeature(self, feature: 'QgsFeature', skipDefaultValues: bool = ...) -> bool: ...
    def addFeature(self, feature: 'QgsFeature', flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def getGeometry(self, fid: int) -> 'QgsGeometry': ...
    def getFeature(self, fid: int) -> 'QgsFeature': ...
    @typing.overload
    def getFeatures(self, request: 'QgsFeatureRequest' = ...) -> 'QgsFeatureIterator': ...
    @typing.overload
    def getFeatures(self, expression: str) -> 'QgsFeatureIterator': ...
    @typing.overload
    def getFeatures(self, fids: typing.Any) -> 'QgsFeatureIterator': ...
    @typing.overload
    def getFeatures(self, rectangle: 'QgsRectangle') -> 'QgsFeatureIterator': ...
    def subsetString(self) -> str: ...
    def setSubsetString(self, subset: str) -> bool: ...
    def countSymbolFeatures(self, storeSymbolFids: bool = ...) -> 'QgsVectorLayerFeatureCounter': ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def hasFeatures(self) -> QgsFeatureSource.FeatureAvailability: ...
    def symbolFeatureIds(self, legendKey: str) -> typing.Any: ...
    @typing.overload
    def featureCount(self, legendKey: str) -> int: ...
    @typing.overload
    def featureCount(self) -> int: ...
    def readSld(self, node: QtXml.QDomNode, errorMessage: str) -> bool: ...
    def writeSld(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, props: typing.Dict[str, typing.Any] = ...) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, layerNode: QtXml.QDomNode, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def auxiliaryLayer(self) -> 'QgsAuxiliaryLayer': ...
    def setAuxiliaryLayer(self, layer: typing.Optional['QgsAuxiliaryLayer'] = ...) -> None: ...
    def loadAuxiliaryLayer(self, storage: 'QgsAuxiliaryStorage', key: str = ...) -> bool: ...
    @typing.overload
    def loadNamedStyle(self, theURI: str, loadFromLocalDb: bool, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> typing.Tuple[str, bool]: ...
    @typing.overload
    def loadNamedStyle(self, theURI: str, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> typing.Tuple[str, bool]: ...
    def deleteStyleFromDatabase(self, styleId: str) -> typing.Tuple[bool, str]: ...
    def getStyleFromDatabase(self, styleId: str) -> typing.Tuple[str, str]: ...
    def listStylesInDatabase(self) -> typing.Tuple[int, typing.List[str], typing.List[str], typing.List[str], str]: ...
    def saveStyleToDatabase(self, name: str, description: str, useAsDefault: bool, uiFileContent: str, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> str: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def decodedSource(self, source: str, provider: str, context: 'QgsReadWriteContext') -> str: ...
    def encodedSource(self, source: str, context: 'QgsReadWriteContext') -> str: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: 'QgsReadWriteContext') -> bool: ...
    def sourceName(self) -> str: ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def wkbType(self) -> Qgis.WkbType: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def featureRendererGenerators(self) -> typing.List['QgsFeatureRendererGenerator']: ...
    def removeFeatureRendererGenerator(self, id: str) -> None: ...
    def addFeatureRendererGenerator(self, generator: 'QgsFeatureRendererGenerator') -> None: ...
    def setRenderer(self, r: 'QgsFeatureRenderer') -> None: ...
    def renderer(self) -> 'QgsFeatureRenderer': ...
    def diagramLayerSettings(self) -> 'QgsDiagramLayerSettings': ...
    def setDiagramLayerSettings(self, s: 'QgsDiagramLayerSettings') -> None: ...
    def diagramRenderer(self) -> 'QgsDiagramRenderer': ...
    def setDiagramRenderer(self, r: 'QgsDiagramRenderer') -> None: ...
    def diagramsEnabled(self) -> bool: ...
    def setLabelsEnabled(self, enabled: bool) -> None: ...
    def labelsEnabled(self) -> bool: ...
    def boundingBoxOfSelected(self) -> 'QgsRectangle': ...
    def selectedFeatureIds(self) -> typing.Any: ...
    def getSelectedFeatures(self, request: 'QgsFeatureRequest' = ...) -> 'QgsFeatureIterator': ...
    def selectedFeatures(self) -> typing.List['QgsFeature']: ...
    def invertSelectionInRectangle(self, rect: 'QgsRectangle') -> None: ...
    def selectAll(self) -> None: ...
    def invertSelection(self) -> None: ...
    def modifySelection(self, selectIds: typing.Any, deselectIds: typing.Any) -> None: ...
    def selectByIds(self, ids: typing.Any, behavior: Qgis.SelectBehavior = ...) -> None: ...
    def selectByExpression(self, expression: str, behavior: Qgis.SelectBehavior = ..., context: typing.Optional['QgsExpressionContext'] = ...) -> None: ...
    def selectByRect(self, rect: 'QgsRectangle', behavior: Qgis.SelectBehavior = ...) -> None: ...
    def selectedFeatureCount(self) -> int: ...
    def actions(self) -> 'QgsActionManager': ...
    def updateExpressionField(self, index: int, exp: str) -> None: ...
    def expressionField(self, index: int) -> str: ...
    def removeExpressionField(self, index: int) -> None: ...
    def addExpressionField(self, exp: str, fld: 'QgsField') -> int: ...
    def dependencies(self) -> typing.Set['QgsMapLayerDependency']: ...
    def setDependencies(self, layers: typing.Iterable['QgsMapLayerDependency']) -> bool: ...
    def vectorJoins(self) -> typing.List['QgsVectorLayerJoinInfo']: ...
    def joinBuffer(self) -> 'QgsVectorLayerJoinBuffer': ...
    def removeJoin(self, joinLayerId: str) -> bool: ...
    def addJoin(self, joinInfo: 'QgsVectorLayerJoinInfo') -> bool: ...
    def setCoordinateSystem(self) -> None: ...
    def setProviderEncoding(self, encoding: str) -> None: ...
    def createProfileGenerator(self, request: 'QgsProfileRequest') -> 'QgsAbstractProfileGenerator': ...
    def elevationProperties(self) -> 'QgsMapLayerElevationProperties': ...
    def temporalProperties(self) -> 'QgsMapLayerTemporalProperties': ...
    def dataProvider(self) -> 'QgsVectorDataProvider': ...
    def hasMapTips(self) -> bool: ...
    def displayExpression(self) -> str: ...
    def setDisplayExpression(self, displayExpression: str) -> None: ...
    def displayField(self) -> str: ...
    def dataComment(self) -> str: ...
    def vectorLayerTypeFlags(self) -> Qgis.VectorLayerTypeFlags: ...
    def isSqlQuery(self) -> bool: ...
    def capabilitiesString(self) -> str: ...
    def storageType(self) -> str: ...
    def clone(self) -> 'QgsVectorLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsAuxiliaryLayer(QgsVectorLayer):

    def __init__(self, pkField: str, filename: str, table: str, vlayer: QgsVectorLayer) -> None: ...

    @staticmethod
    def propertyDefinitionFromField(field: 'QgsField') -> 'QgsPropertyDefinition': ...
    @staticmethod
    def nameFromProperty(def_: 'QgsPropertyDefinition', joined: bool = ...) -> str: ...
    @typing.overload
    @staticmethod
    def createAuxiliaryField(definition: 'QgsPropertyDefinition') -> 'QgsField': ...
    @typing.overload
    @staticmethod
    def createAuxiliaryField(field: 'QgsField') -> 'QgsField': ...
    @typing.overload
    @staticmethod
    def createProperty(property: 'QgsPalLayerSettings.Property', vlayer: QgsVectorLayer, overwriteExisting: bool = ...) -> int: ...
    @typing.overload
    @staticmethod
    def createProperty(property: 'QgsDiagramLayerSettings.Property', vlayer: QgsVectorLayer, overwriteExisting: bool = ...) -> int: ...
    @typing.overload
    @staticmethod
    def createProperty(property: 'QgsCallout.Property', vlayer: QgsVectorLayer, overwriteExisting: bool = ...) -> int: ...
    def propertyDefinitionFromIndex(self, index: int) -> 'QgsPropertyDefinition': ...
    def propertyFromIndex(self, index: int) -> int: ...
    def indexOfPropertyDefinition(self, definition: 'QgsPropertyDefinition') -> int: ...
    def isHiddenProperty(self, index: int) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def save(self) -> bool: ...
    def auxiliaryFields(self) -> 'QgsFields': ...
    def addAuxiliaryField(self, definition: 'QgsPropertyDefinition') -> bool: ...
    def exists(self, definition: 'QgsPropertyDefinition') -> bool: ...
    def joinInfo(self) -> 'QgsVectorLayerJoinInfo': ...
    def clear(self) -> bool: ...
    def toSpatialLayer(self) -> QgsVectorLayer: ...
    def clone(self, layer: QgsVectorLayer) -> 'QgsAuxiliaryLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsAuxiliaryStorage(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, project: 'QgsProject', copy: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, filename: str = ..., copy: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAuxiliaryStorage') -> None: ...

    @staticmethod
    def exists(project: 'QgsProject') -> bool: ...
    @staticmethod
    def extension() -> str: ...
    @staticmethod
    def duplicateTable(uri: 'QgsDataSourceUri', newTable: str) -> bool: ...
    @staticmethod
    def deleteTable(uri: 'QgsDataSourceUri') -> bool: ...
    def createAuxiliaryLayer(self, field: 'QgsField', layer: QgsVectorLayer) -> QgsAuxiliaryLayer: ...
    def save(self) -> bool: ...
    @typing.overload
    def saveAs(self, filename: str) -> bool: ...
    @typing.overload
    def saveAs(self, project: 'QgsProject') -> bool: ...
    def errorString(self) -> str: ...
    def currentFileName(self) -> str: ...
    def fileName(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsBearingUtils(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBearingUtils') -> None: ...

    @staticmethod
    def bearingTrueNorth(crs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', point: 'QgsPointXY') -> float: ...


class QgsBookmark(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBookmark') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def fromXml(element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> 'QgsBookmark': ...
    def setRotation(self, rotation: float) -> None: ...
    def rotation(self) -> float: ...
    def setExtent(self, extent: 'QgsReferencedRectangle') -> None: ...
    def extent(self) -> 'QgsReferencedRectangle': ...
    def setGroup(self, group: str) -> None: ...
    def group(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...


class QgsBookmarkManager(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def bookmarkChanged(self, id: str) -> None: ...
    def bookmarkAboutToBeRemoved(self, id: str) -> None: ...
    def bookmarkRemoved(self, id: str) -> None: ...
    def bookmarkAdded(self, id: str) -> None: ...
    def bookmarkAboutToBeAdded(self, id: str) -> None: ...
    def importFromFile(self, path: str) -> bool: ...
    @staticmethod
    def exportToFile(path: str, managers: typing.Iterable['QgsBookmarkManager'], group: str = ...) -> bool: ...
    def moveBookmark(self, id: str, destination: 'QgsBookmarkManager') -> bool: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def bookmarksByGroup(self, group: str) -> typing.List[QgsBookmark]: ...
    def bookmarkById(self, id: str) -> QgsBookmark: ...
    def bookmarks(self) -> typing.List[QgsBookmark]: ...
    def renameGroup(self, oldName: str, newName: str) -> None: ...
    def groups(self) -> typing.List[str]: ...
    def clear(self) -> None: ...
    def updateBookmark(self, bookmark: QgsBookmark) -> bool: ...
    def removeBookmark(self, id: str) -> bool: ...
    def addBookmark(self, bookmark: QgsBookmark) -> typing.Tuple[str, bool]: ...
    def initialize(self, filePath: str) -> None: ...
    @staticmethod
    def createProjectBasedManager(project: 'QgsProject') -> 'QgsBookmarkManager': ...


class QgsBookmarkManagerModel(QtCore.QAbstractTableModel):

    class Columns(int):
        ColumnName = ... # type: QgsBookmarkManagerModel.Columns
        ColumnGroup = ... # type: QgsBookmarkManagerModel.Columns
        ColumnXMin = ... # type: QgsBookmarkManagerModel.Columns
        ColumnYMin = ... # type: QgsBookmarkManagerModel.Columns
        ColumnXMax = ... # type: QgsBookmarkManagerModel.Columns
        ColumnYMax = ... # type: QgsBookmarkManagerModel.Columns
        ColumnRotation = ... # type: QgsBookmarkManagerModel.Columns
        ColumnCrs = ... # type: QgsBookmarkManagerModel.Columns
        ColumnStore = ... # type: QgsBookmarkManagerModel.Columns

    class CustomRoles(int):
        RoleExtent = ... # type: QgsBookmarkManagerModel.CustomRoles
        RoleName = ... # type: QgsBookmarkManagerModel.CustomRoles
        RoleId = ... # type: QgsBookmarkManagerModel.CustomRoles
        RoleGroup = ... # type: QgsBookmarkManagerModel.CustomRoles
        RoleRotation = ... # type: QgsBookmarkManagerModel.CustomRoles

    def __init__(self, manager: QgsBookmarkManager, projectManager: typing.Optional[QgsBookmarkManager] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def insertRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...


class QgsBookmarkManagerProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, manager: QgsBookmarkManager, projectManager: typing.Optional[QgsBookmarkManager] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...


class QgsAbstractFeatureIterator(PyQt5.sip.wrapper):

    class RequestToSourceCrsResult(int):
        Success = ... # type: QgsAbstractFeatureIterator.RequestToSourceCrsResult
        DistanceWithinMustBeCheckedManually = ... # type: QgsAbstractFeatureIterator.RequestToSourceCrsResult

    class CompileStatus(int):
        NoCompilation = ... # type: QgsAbstractFeatureIterator.CompileStatus
        PartiallyCompiled = ... # type: QgsAbstractFeatureIterator.CompileStatus
        Compiled = ... # type: QgsAbstractFeatureIterator.CompileStatus

    @typing.overload
    def __init__(self, request: 'QgsFeatureRequest') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractFeatureIterator') -> None: ...

    def prepareSimplification(self, simplifyMethod: 'QgsSimplifyMethod') -> bool: ...
    def deref(self) -> None: ...
    def ref(self) -> None: ...
    def updateRequestToSourceCrs(self, request: 'QgsFeatureRequest', transform: 'QgsCoordinateTransform') -> 'QgsAbstractFeatureIterator.RequestToSourceCrsResult': ...
    def filterRectToSourceCrs(self, transform: 'QgsCoordinateTransform') -> 'QgsRectangle': ...
    def geometryToDestinationCrs(self, feature: 'QgsFeature', transform: 'QgsCoordinateTransform') -> None: ...
    def nextFeatureFilterFids(self, f: 'QgsFeature') -> bool: ...
    def nextFeatureFilterExpression(self, f: 'QgsFeature') -> bool: ...
    def fetchFeature(self, f: 'QgsFeature') -> bool: ...
    def compileFailed(self) -> bool: ...
    def isValid(self) -> bool: ...
    def compileStatus(self) -> 'QgsAbstractFeatureIterator.CompileStatus': ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...
    def nextFeature(self, f: 'QgsFeature') -> bool: ...


class QgsCachedFeatureIterator(QgsAbstractFeatureIterator):

    def __init__(self, vlCache: 'QgsVectorLayerCache', featureRequest: 'QgsFeatureRequest') -> None: ...

    def nextFeatureFilterFids(self, f: 'QgsFeature') -> bool: ...
    def fetchFeature(self, f: 'QgsFeature') -> bool: ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...


class QgsCachedFeatureWriterIterator(QgsAbstractFeatureIterator):

    @typing.overload
    def __init__(self, vlCache: 'QgsVectorLayerCache', featureRequest: 'QgsFeatureRequest') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCachedFeatureWriterIterator') -> None: ...

    def fetchFeature(self, f: 'QgsFeature') -> bool: ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...


class QgsAbstractCacheIndex(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractCacheIndex') -> None: ...

    def getCacheIterator(self, featureIterator: 'QgsFeatureIterator', featureRequest: 'QgsFeatureRequest') -> bool: ...
    def requestCompleted(self, featureRequest: 'QgsFeatureRequest', fids: typing.Any) -> None: ...
    def flush(self) -> None: ...
    def flushFeature(self, fid: int) -> None: ...


class QgsCacheIndexFeatureId(QgsAbstractCacheIndex):

    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerCache') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCacheIndexFeatureId') -> None: ...

    def getCacheIterator(self, featureIterator: 'QgsFeatureIterator', featureRequest: 'QgsFeatureRequest') -> bool: ...
    def requestCompleted(self, featureRequest: 'QgsFeatureRequest', fids: typing.Any) -> None: ...
    def flush(self) -> None: ...
    def flushFeature(self, fid: int) -> None: ...


class QgsCadUtils(PyQt5.sip.wrapper):

    class AlignMapPointConstraint(PyQt5.sip.wrapper):

        locked = ... # type: bool
        relative = ... # type: bool
        value = ... # type: float

        @typing.overload
        def __init__(self, locked: bool = ..., relative: bool = ..., value: float = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCadUtils.AlignMapPointConstraint') -> None: ...

    class AlignMapPointOutput(PyQt5.sip.wrapper):

        edgeMatch = ... # type: 'QgsPointLocator.Match'
        finalMapPoint = ... # type: 'QgsPointXY'
        snapMatch = ... # type: 'QgsPointLocator.Match'
        softLockCommonAngle = ... # type: float
        softLockLineExtension = ... # type: Qgis.LineExtensionSide
        softLockX = ... # type: float
        softLockY = ... # type: float
        valid = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCadUtils.AlignMapPointOutput') -> None: ...

    class AlignMapPointContext(PyQt5.sip.wrapper):

        angleConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        commonAngleConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        distanceConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        lineExtensionConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        mConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        mapUnitsPerPixel = ... # type: float
        snappingToFeaturesOverridesCommonAngle = ... # type: bool
        snappingUtils = ... # type: 'QgsSnappingUtils'
        xConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        xyVertexConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        yConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'
        zConstraint = ... # type: 'QgsCadUtils.AlignMapPointConstraint'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCadUtils.AlignMapPointContext') -> None: ...

        def _cadPointList(self) -> typing.List['QgsPointXY']: ...
        def _setCadPointList(self, list: typing.Iterable['QgsPointXY']) -> None: ...
        def cadPoint(self, index: int) -> 'QgsPoint': ...
        def setCadPoint(self, index: int, point: 'QgsPoint') -> None: ...
        def setCadPoints(self, points: typing.Iterable['QgsPoint']) -> None: ...
        def cadPoints(self) -> typing.List['QgsPoint']: ...
        @property
        def cadPointList(self) -> typing.List['QgsPointXY']: ...
        @cadPointList.setter
        def cadPointList(self, list: typing.Iterable['QgsPointXY']) -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCadUtils') -> None: ...

    @staticmethod
    def alignMapPoint(originalMapPoint: 'QgsPointXY', ctx: 'QgsCadUtils.AlignMapPointContext') -> 'QgsCadUtils.AlignMapPointOutput': ...


class QgsClipper(PyQt5.sip.wrapper):

    class Boundary(int):
        XMax = ... # type: QgsClipper.Boundary
        XMin = ... # type: QgsClipper.Boundary
        YMax = ... # type: QgsClipper.Boundary
        YMin = ... # type: QgsClipper.Boundary
        ZMax = ... # type: QgsClipper.Boundary
        ZMin = ... # type: QgsClipper.Boundary

    MAX_X = ... # type: float
    MAX_Y = ... # type: float
    MIN_X = ... # type: float
    MIN_Y = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClipper') -> None: ...

    @staticmethod
    def clipLineSegment(left: float, right: float, bottom: float, top: float, x0: float, y0: float, x1: float, y1: float) -> typing.Tuple[bool, float, float, float, float]: ...
    @typing.overload
    @staticmethod
    def clippedLine(curve: 'QgsCurve', clipExtent: 'QgsRectangle') -> QtGui.QPolygonF: ...
    @typing.overload
    @staticmethod
    def clippedLine(curve: QtGui.QPolygonF, clipExtent: 'QgsRectangle') -> QtGui.QPolygonF: ...
    @staticmethod
    def trimPolygon(pts: QtGui.QPolygonF, clipRect: 'QgsRectangle') -> None: ...
    @staticmethod
    def trimFeature(x: typing.Iterable[float], y: typing.Iterable[float], shapeOpen: bool) -> None: ...


class QgsCommandLineUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCommandLineUtils') -> None: ...

    @staticmethod
    def allVersions() -> str: ...


class QgsColorRamp(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorRamp') -> None: ...

    @staticmethod
    def rampTypes() -> typing.List[typing.Tuple[str, str]]: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsColorRamp': ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    def count(self) -> int: ...


class QgsGradientStop(PyQt5.sip.wrapper):

    color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    offset = ... # type: float

    @typing.overload
    def __init__(self, offset: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGradientStop') -> None: ...

    def setDirection(self, direction: Qgis.AngularDirection) -> None: ...
    def direction(self) -> Qgis.AngularDirection: ...
    def setColorSpec(self, spec: QtGui.QColor.Spec) -> None: ...
    def colorSpec(self) -> QtGui.QColor.Spec: ...


class QgsGradientColorRamp(QgsColorRamp):

    @typing.overload
    def __init__(self, color1: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., discrete: bool = ..., stops: typing.Iterable[QgsGradientStop] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGradientColorRamp') -> None: ...

    def setDirection(self, direction: Qgis.AngularDirection) -> None: ...
    def direction(self) -> Qgis.AngularDirection: ...
    def setColorSpec(self, spec: QtGui.QColor.Spec) -> None: ...
    def colorSpec(self) -> QtGui.QColor.Spec: ...
    def addStopsToGradient(self, gradient: QtGui.QGradient, opacity: float = ...) -> None: ...
    def setInfo(self, info: typing.Dict[str, str]) -> None: ...
    def info(self) -> typing.Dict[str, str]: ...
    def stops(self) -> typing.List[QgsGradientStop]: ...
    def setStops(self, stops: typing.Iterable[QgsGradientStop]) -> None: ...
    def convertToDiscrete(self, discrete: bool) -> None: ...
    def setDiscrete(self, discrete: bool) -> None: ...
    def isDiscrete(self) -> bool: ...
    def setColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setColor1(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def color1(self) -> QtGui.QColor: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsGradientColorRamp': ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    def count(self) -> int: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsColorRamp: ...


class QgsLimitedRandomColorRamp(QgsColorRamp):

    @typing.overload
    def __init__(self, count: int = ..., hueMin: int = ..., hueMax: int = ..., satMin: int = ..., satMax: int = ..., valMin: int = ..., valMax: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLimitedRandomColorRamp') -> None: ...

    def setValMax(self, val: int) -> None: ...
    def setValMin(self, val: int) -> None: ...
    def setSatMax(self, val: int) -> None: ...
    def setSatMin(self, val: int) -> None: ...
    def setHueMax(self, val: int) -> None: ...
    def setHueMin(self, val: int) -> None: ...
    def setCount(self, val: int) -> None: ...
    def valMax(self) -> int: ...
    def valMin(self) -> int: ...
    def satMax(self) -> int: ...
    def satMin(self) -> int: ...
    def hueMax(self) -> int: ...
    def hueMin(self) -> int: ...
    def updateColors(self) -> None: ...
    @staticmethod
    def randomColors(count: int, hueMax: int = ..., hueMin: int = ..., satMax: int = ..., satMin: int = ..., valMax: int = ..., valMin: int = ...) -> typing.List[QtGui.QColor]: ...
    def count(self) -> int: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsLimitedRandomColorRamp': ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsColorRamp: ...


class QgsRandomColorRamp(QgsColorRamp):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRandomColorRamp') -> None: ...

    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsRandomColorRamp': ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    def setTotalColorCount(self, colorCount: int) -> None: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    def count(self) -> int: ...


class QgsColorScheme(PyQt5.sip.wrapper):

    class SchemeFlag(int):
        ShowInColorDialog = ... # type: QgsColorScheme.SchemeFlag
        ShowInColorButtonMenu = ... # type: QgsColorScheme.SchemeFlag
        ShowInAllContexts = ... # type: QgsColorScheme.SchemeFlag

    class SchemeFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsColorScheme.SchemeFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsColorScheme.SchemeFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorScheme') -> None: ...

    def clone(self) -> 'QgsColorScheme': ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    def flags(self) -> 'QgsColorScheme.SchemeFlags': ...
    def schemeName(self) -> str: ...


class QgsPresetSchemeColorRamp(QgsColorRamp, QgsColorScheme):

    @typing.overload
    def __init__(self, colors: typing.Iterable[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]] = ...) -> None: ...
    @typing.overload
    def __init__(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPresetSchemeColorRamp') -> None: ...

    def isEditable(self) -> bool: ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    def schemeName(self) -> str: ...
    def count(self) -> int: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsPresetSchemeColorRamp': ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    def colors(self) -> typing.List[QtGui.QColor]: ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], a1: str = ..., a2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsColorRamp: ...


class QgsColorBrewerColorRamp(QgsColorRamp):

    @typing.overload
    def __init__(self, schemeName: str = ..., colors: int = ..., inverted: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorBrewerColorRamp') -> None: ...

    def loadPalette(self) -> None: ...
    @staticmethod
    def listSchemeVariants(schemeName: str) -> typing.List[int]: ...
    @staticmethod
    def listSchemeNames() -> typing.List[str]: ...
    def setColors(self, colors: int) -> None: ...
    def setSchemeName(self, schemeName: str) -> None: ...
    def colors(self) -> int: ...
    def schemeName(self) -> str: ...
    def count(self) -> int: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsColorBrewerColorRamp': ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def value(self, index: int) -> float: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsColorRamp: ...


class QgsCptCityColorRamp(QgsGradientColorRamp):

    @typing.overload
    def __init__(self, schemeName: str = ..., variantName: str = ..., inverted: bool = ..., doLoadFile: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, schemeName: str, variantList: typing.Iterable[str], variantName: str = ..., inverted: bool = ..., doLoadFile: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCptCityColorRamp') -> None: ...

    def copyingInfo(self) -> typing.Dict[str, str]: ...
    def descFileName(self) -> str: ...
    def copyingFileName(self) -> str: ...
    def fileLoaded(self) -> bool: ...
    def loadFile(self) -> bool: ...
    def fileName(self) -> str: ...
    def hasMultiStops(self) -> bool: ...
    def loadPalette(self) -> None: ...
    def setName(self, schemeName: str, variantName: str = ..., variantList: typing.Iterable[str] = ...) -> None: ...
    def setVariantList(self, variantList: typing.Iterable[str]) -> None: ...
    def setVariantName(self, variantName: str) -> None: ...
    def setSchemeName(self, schemeName: str) -> None: ...
    def variantList(self) -> typing.List[str]: ...
    def variantName(self) -> str: ...
    def schemeName(self) -> str: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def cloneGradientRamp(self) -> QgsGradientColorRamp: ...
    def copy(self, other: 'QgsCptCityColorRamp') -> None: ...
    def clone(self) -> 'QgsCptCityColorRamp': ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsColorRamp: ...


class QgsGplColorScheme(QgsColorScheme):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGplColorScheme') -> None: ...

    def gplFilePath(self) -> str: ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...


class QgsUserColorScheme(QgsGplColorScheme):

    @typing.overload
    def __init__(self, filename: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUserColorScheme') -> None: ...

    def gplFilePath(self) -> str: ...
    def setShowSchemeInMenu(self, show: bool) -> None: ...
    def erase(self) -> bool: ...
    def setName(self, name: str) -> None: ...
    def flags(self) -> QgsColorScheme.SchemeFlags: ...
    def isEditable(self) -> bool: ...
    def clone(self) -> 'QgsUserColorScheme': ...
    def schemeName(self) -> str: ...


class QgsRecentColorScheme(QgsColorScheme):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRecentColorScheme') -> None: ...

    @staticmethod
    def lastUsedColor() -> QtGui.QColor: ...
    @staticmethod
    def addRecentColor(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def clone(self) -> 'QgsRecentColorScheme': ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    def flags(self) -> QgsColorScheme.SchemeFlags: ...
    def schemeName(self) -> str: ...


class QgsCustomColorScheme(QgsColorScheme):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCustomColorScheme') -> None: ...

    def clone(self) -> 'QgsCustomColorScheme': ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    def flags(self) -> QgsColorScheme.SchemeFlags: ...
    def schemeName(self) -> str: ...


class QgsProjectColorScheme(QgsColorScheme):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectColorScheme') -> None: ...

    def clone(self) -> 'QgsProjectColorScheme': ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: str = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    def flags(self) -> QgsColorScheme.SchemeFlags: ...
    def schemeName(self) -> str: ...


class QgsColorSchemeRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorSchemeRegistry') -> None: ...

    def fetchRandomStyleColor(self) -> QtGui.QColor: ...
    def randomStyleColorScheme(self) -> QgsColorScheme: ...
    def setRandomStyleColorScheme(self, scheme: QgsColorScheme) -> None: ...
    @typing.overload
    def schemes(self) -> typing.List[QgsColorScheme]: ...
    @typing.overload
    def schemes(self, flag: QgsColorScheme.SchemeFlag) -> typing.List[QgsColorScheme]: ...
    def removeColorScheme(self, scheme: QgsColorScheme) -> bool: ...
    def addColorScheme(self, scheme: QgsColorScheme) -> None: ...
    def addUserSchemes(self) -> None: ...
    def initStyleScheme(self) -> None: ...
    def addDefaultSchemes(self) -> None: ...
    def populateFromInstance(self) -> None: ...


class QgsColorUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorUtils') -> None: ...

    @staticmethod
    def colorFromString(string: str) -> QtGui.QColor: ...
    @staticmethod
    def colorToString(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...
    @staticmethod
    def readXml(element: QtXml.QDomElement, identifier: str, context: 'QgsReadWriteContext') -> QtGui.QColor: ...
    @staticmethod
    def writeXml(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], identifier: str, document: QtXml.QDomDocument, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...


class QgsConditionalLayerStyles(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def changed(self) -> None: ...
    def rulesNeedGeometry(self) -> bool: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, node: QtXml.QDomNode, context: 'QgsReadWriteContext') -> bool: ...
    def fieldStyles(self, fieldName: str) -> typing.List['QgsConditionalStyle']: ...
    def setFieldStyles(self, fieldName: str, styles: typing.Iterable['QgsConditionalStyle']) -> None: ...
    def constraintFailureStyles(self, strength: 'QgsFieldConstraints.ConstraintStrength') -> 'QgsConditionalStyle': ...
    def setRowStyles(self, styles: typing.Iterable['QgsConditionalStyle']) -> None: ...
    def rowStyles(self) -> typing.List['QgsConditionalStyle']: ...


class QgsConditionalStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsConditionalStyle') -> None: ...
    @typing.overload
    def __init__(self, rule: str) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, node: QtXml.QDomNode, context: 'QgsReadWriteContext') -> bool: ...
    @staticmethod
    def compressStyles(styles: typing.Iterable['QgsConditionalStyle']) -> 'QgsConditionalStyle': ...
    @staticmethod
    def matchingConditionalStyle(styles: typing.Iterable['QgsConditionalStyle'], value: typing.Any, context: 'QgsExpressionContext') -> 'QgsConditionalStyle': ...
    @staticmethod
    def matchingConditionalStyles(styles: typing.Iterable['QgsConditionalStyle'], value: typing.Any, context: 'QgsExpressionContext') -> typing.List['QgsConditionalStyle']: ...
    def isValid(self) -> bool: ...
    def rule(self) -> str: ...
    def font(self) -> QtGui.QFont: ...
    def validBackgroundColor(self) -> bool: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def validTextColor(self) -> bool: ...
    def textColor(self) -> QtGui.QColor: ...
    def symbol(self) -> 'QgsSymbol': ...
    def icon(self) -> QtGui.QPixmap: ...
    def name(self) -> str: ...
    def displayText(self) -> str: ...
    def setSymbol(self, value: 'QgsSymbol') -> None: ...
    def setFont(self, value: QtGui.QFont) -> None: ...
    def setTextColor(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setBackgroundColor(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setRule(self, value: str) -> None: ...
    def setName(self, value: str) -> None: ...
    def renderPreview(self, size: QtCore.QSize = ...) -> QtGui.QPixmap: ...
    def matches(self, value: typing.Any, context: 'QgsExpressionContext') -> bool: ...


class QgsConnectionRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def createConnection(self, name: str) -> 'QgsAbstractProviderConnection': ...


class QgsCoordinateFormatter(PyQt5.sip.wrapper):

    class FormatFlag(int):
        FlagDegreesUseStringSuffix = ... # type: QgsCoordinateFormatter.FormatFlag
        FlagDegreesPadMinutesSeconds = ... # type: QgsCoordinateFormatter.FormatFlag

    class Format(int):
        FormatPair = ... # type: QgsCoordinateFormatter.Format
        FormatDegreesMinutesSeconds = ... # type: QgsCoordinateFormatter.Format
        FormatDegreesMinutes = ... # type: QgsCoordinateFormatter.Format
        FormatDecimalDegrees = ... # type: QgsCoordinateFormatter.Format

    class FormatFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCoordinateFormatter.FormatFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCoordinateFormatter') -> None: ...

    @staticmethod
    def separator() -> str: ...
    @staticmethod
    def asPair(x: float, y: float, precision: int = ..., order: Qgis.CoordinateOrder = ...) -> str: ...
    @staticmethod
    def format(point: 'QgsPointXY', format: 'QgsCoordinateFormatter.Format', precision: int = ..., flags: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag'] = ..., order: Qgis.CoordinateOrder = ...) -> str: ...
    @staticmethod
    def formatY(y: float, format: 'QgsCoordinateFormatter.Format', precision: int = ..., flags: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag'] = ...) -> str: ...
    @staticmethod
    def formatX(x: float, format: 'QgsCoordinateFormatter.Format', precision: int = ..., flags: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag'] = ...) -> str: ...


class QgsTask(QtCore.QObject):

    class SubTaskDependency(int):
        SubTaskIndependent = ... # type: QgsTask.SubTaskDependency
        ParentDependsOnSubTask = ... # type: QgsTask.SubTaskDependency

    class Flag(int):
        CanCancel = ... # type: QgsTask.Flag
        CancelWithoutPrompt = ... # type: QgsTask.Flag
        Hidden = ... # type: QgsTask.Flag
        Silent = ... # type: QgsTask.Flag
        AllFlags = ... # type: QgsTask.Flag

    class TaskStatus(int):
        Queued = ... # type: QgsTask.TaskStatus
        OnHold = ... # type: QgsTask.TaskStatus
        Running = ... # type: QgsTask.TaskStatus
        Complete = ... # type: QgsTask.TaskStatus
        Terminated = ... # type: QgsTask.TaskStatus

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTask.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsTask.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, description: str = ..., flags: typing.Union['QgsTask.Flags', 'QgsTask.Flag'] = ...) -> None: ...

    def setProgress(self, progress: float) -> None: ...
    def isCanceled(self) -> bool: ...
    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def taskTerminated(self) -> None: ...
    def taskCompleted(self) -> None: ...
    def begun(self) -> None: ...
    def statusChanged(self, status: int) -> None: ...
    def progressChanged(self, progress: float) -> None: ...
    def waitForFinished(self, timeout: int = ...) -> bool: ...
    def dependentLayers(self) -> typing.List[QgsMapLayer]: ...
    def setDependentLayers(self, dependentLayers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addSubTask(self, subTask: 'QgsTask', dependencies: typing.Iterable['QgsTask'] = ..., subTaskDependency: 'QgsTask.SubTaskDependency' = ...) -> None: ...
    def unhold(self) -> None: ...
    def hold(self) -> None: ...
    def cancel(self) -> None: ...
    def elapsedTime(self) -> int: ...
    def progress(self) -> float: ...
    def description(self) -> str: ...
    def status(self) -> 'QgsTask.TaskStatus': ...
    def isActive(self) -> bool: ...
    def canCancel(self) -> bool: ...
    def setDescription(self, description: str) -> None: ...
    def flags(self) -> 'QgsTask.Flags': ...


class QgsCopyFileTask(QgsTask):

    def __init__(self, source: str, destination: str) -> None: ...

    def destination(self) -> str: ...
    def errorString(self) -> str: ...
    def run(self) -> bool: ...


class QgsCredentials(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def setInstance(self, instance: 'QgsCredentials') -> None: ...
    def requestMasterPassword(self, password: str, stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def request(self, realm: str, username: str, password: str, message: str = ...) -> typing.Tuple[bool, str, str]: ...
    def mutex(self) -> QtCore.QMutex: ...
    def unlock(self) -> None: ...
    def lock(self) -> None: ...
    @staticmethod
    def instance() -> 'QgsCredentials': ...
    def getMasterPassword(self, password: str, stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def put(self, realm: str, username: str, password: str) -> None: ...
    def get(self, realm: str, username: str, password: str, message: str = ..., requestCredentials: bool = ...) -> typing.Tuple[bool, str, str]: ...


class QgsCredentialsNone(QtCore.QObject, QgsCredentials):

    def __init__(self) -> None: ...

    def requestMasterPassword(self, password: str, stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def request(self, realm: str, username: str, password: str, message: str = ...) -> typing.Tuple[bool, str, str]: ...
    def destroyed(self) -> None: ...


class QgsCredentialsConsole(QtCore.QObject, QgsCredentials):

    def __init__(self) -> None: ...

    def requestMasterPassword(self, password: str, stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def request(self, realm: str, username: str, password: str, message: str = ...) -> typing.Tuple[bool, str, str]: ...
    def destroyed(self) -> None: ...


class QgsDartMeasurement(PyQt5.sip.wrapper):

    class Type(int):
        Text = ... # type: QgsDartMeasurement.Type
        ImagePng = ... # type: QgsDartMeasurement.Type
        Integer = ... # type: QgsDartMeasurement.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, type: 'QgsDartMeasurement.Type', value: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDartMeasurement') -> None: ...

    @staticmethod
    def typeToString(type: 'QgsDartMeasurement.Type') -> str: ...
    def send(self) -> None: ...
    def toString(self) -> str: ...


class QgsDatabaseSchemaModel(QtCore.QAbstractItemModel):

    class Role(int):
        RoleEmpty = ... # type: QgsDatabaseSchemaModel.Role

    @typing.overload
    def __init__(self, provider: str, connection: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, connection: 'QgsAbstractDatabaseProviderConnection', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def refresh(self) -> None: ...
    def allowEmptySchema(self) -> bool: ...
    def setAllowEmptySchema(self, allowEmpty: bool) -> None: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...


class QgsDatabaseTableModel(QtCore.QAbstractItemModel):

    class Role(int):
        RoleTableName = ... # type: QgsDatabaseTableModel.Role
        RoleSchema = ... # type: QgsDatabaseTableModel.Role
        RoleTableFlags = ... # type: QgsDatabaseTableModel.Role
        RoleComment = ... # type: QgsDatabaseTableModel.Role
        RoleCustomInfo = ... # type: QgsDatabaseTableModel.Role
        RoleWkbType = ... # type: QgsDatabaseTableModel.Role
        RoleCrs = ... # type: QgsDatabaseTableModel.Role
        RoleEmpty = ... # type: QgsDatabaseTableModel.Role

    @typing.overload
    def __init__(self, provider: str, connection: str, schema: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, connection: 'QgsAbstractDatabaseProviderConnection', schema: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def refresh(self) -> None: ...
    def allowEmptyTable(self) -> bool: ...
    def setAllowEmptyTable(self, allowEmpty: bool) -> None: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...


class QgsDataDefinedSizeLegend(PyQt5.sip.wrapper):

    class VerticalAlignment(int):
        AlignCenter = ... # type: QgsDataDefinedSizeLegend.VerticalAlignment
        AlignBottom = ... # type: QgsDataDefinedSizeLegend.VerticalAlignment

    class LegendType(int):
        LegendSeparated = ... # type: QgsDataDefinedSizeLegend.LegendType
        LegendCollapsed = ... # type: QgsDataDefinedSizeLegend.LegendType

    class SizeClass(PyQt5.sip.wrapper):

        label = ... # type: str
        size = ... # type: float

        @typing.overload
        def __init__(self, size: float, label: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDataDefinedSizeLegend.SizeClass') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsDataDefinedSizeLegend') -> None: ...

    def writeXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    @staticmethod
    def readXml(elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> 'QgsDataDefinedSizeLegend': ...
    def collapsedLegendImage(self, context: 'QgsRenderContext', backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., paddingMM: float = ...) -> QtGui.QImage: ...
    def drawCollapsedLegend(self, context: 'QgsRenderContext') -> typing.Tuple[QtCore.QSizeF, float]: ...
    def legendSymbolList(self) -> typing.List['QgsLegendSymbolItem']: ...
    def updateFromSymbolAndProperty(self, symbol: 'QgsMarkerSymbol', ddSize: 'QgsProperty') -> None: ...
    def textAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setTextAlignment(self, flag: QtCore.Qt.AlignmentFlag) -> None: ...
    def textColor(self) -> QtGui.QColor: ...
    def setTextColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def verticalAlignment(self) -> 'QgsDataDefinedSizeLegend.VerticalAlignment': ...
    def setVerticalAlignment(self, vAlign: 'QgsDataDefinedSizeLegend.VerticalAlignment') -> None: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def classes(self) -> typing.List['QgsDataDefinedSizeLegend.SizeClass']: ...
    def setClasses(self, classes: typing.Iterable['QgsDataDefinedSizeLegend.SizeClass']) -> None: ...
    def sizeScaleTransformer(self) -> 'QgsSizeScaleTransformer': ...
    def setSizeScaleTransformer(self, transformer: 'QgsSizeScaleTransformer') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def symbol(self) -> 'QgsMarkerSymbol': ...
    def setSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def legendType(self) -> 'QgsDataDefinedSizeLegend.LegendType': ...
    def setLegendType(self, type: 'QgsDataDefinedSizeLegend.LegendType') -> None: ...


class QgsDataProviderElevationProperties(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDataProviderElevationProperties') -> None: ...


class QgsDataProviderTemporalCapabilities(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, available: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDataProviderTemporalCapabilities') -> None: ...

    def setHasTemporalCapabilities(self, available: bool) -> None: ...
    def hasTemporalCapabilities(self) -> bool: ...


class QgsDataSourceUri(PyQt5.sip.wrapper):

    class SslMode(int):
        SslPrefer = ... # type: QgsDataSourceUri.SslMode
        SslDisable = ... # type: QgsDataSourceUri.SslMode
        SslAllow = ... # type: QgsDataSourceUri.SslMode
        SslRequire = ... # type: QgsDataSourceUri.SslMode
        SslVerifyCa = ... # type: QgsDataSourceUri.SslMode
        SslVerifyFull = ... # type: QgsDataSourceUri.SslMode

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, uri: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDataSourceUri') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setHttpHeaders(self, headers: 'QgsHttpHeaders') -> None: ...
    def httpHeader(self, key: str) -> str: ...
    def httpHeaders(self) -> 'QgsHttpHeaders': ...
    def parameterKeys(self) -> typing.Set[str]: ...
    def setGeometryColumn(self, geometryColumn: str) -> None: ...
    def setTable(self, table: str) -> None: ...
    @staticmethod
    def encodeSslMode(sslMode: 'QgsDataSourceUri.SslMode') -> str: ...
    @staticmethod
    def decodeSslMode(sslMode: str) -> 'QgsDataSourceUri.SslMode': ...
    def setSrid(self, srid: str) -> None: ...
    def srid(self) -> str: ...
    def setWkbType(self, type: Qgis.WkbType) -> None: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def setKeyColumn(self, column: str) -> None: ...
    def keyColumn(self) -> str: ...
    def service(self) -> str: ...
    def sslMode(self) -> 'QgsDataSourceUri.SslMode': ...
    def password(self) -> str: ...
    def setDriver(self, driver: str) -> None: ...
    def driver(self) -> str: ...
    def port(self) -> str: ...
    def database(self) -> str: ...
    def host(self) -> str: ...
    def setSql(self, sql: str) -> None: ...
    def setSchema(self, schema: str) -> None: ...
    def clearSchema(self) -> None: ...
    def selectAtIdDisabled(self) -> bool: ...
    def disableSelectAtId(self, flag: bool) -> None: ...
    def useEstimatedMetadata(self) -> bool: ...
    def setUseEstimatedMetadata(self, flag: bool) -> None: ...
    def geometryColumn(self) -> str: ...
    def sql(self) -> str: ...
    def table(self) -> str: ...
    def schema(self) -> str: ...
    def username(self) -> str: ...
    def authConfigId(self) -> str: ...
    @staticmethod
    def removePassword(aUri: str) -> str: ...
    def setPassword(self, password: str) -> None: ...
    def setUsername(self, username: str) -> None: ...
    def setAuthConfigId(self, authcfg: str) -> None: ...
    def setDataSource(self, aSchema: str, aTable: str, aGeometryColumn: str, aSql: str = ..., aKeyColumn: str = ...) -> None: ...
    def setDatabase(self, database: str) -> None: ...
    @typing.overload
    def setConnection(self, aHost: str, aPort: str, aDatabase: str, aUsername: str, aPassword: str, sslmode: 'QgsDataSourceUri.SslMode' = ..., authConfigId: str = ...) -> None: ...
    @typing.overload
    def setConnection(self, aService: str, aDatabase: str, aUsername: str, aPassword: str, sslmode: 'QgsDataSourceUri.SslMode' = ..., authConfigId: str = ...) -> None: ...
    def hasParam(self, key: str) -> bool: ...
    def params(self, key: str) -> typing.List[str]: ...
    def param(self, key: str) -> str: ...
    def removeParam(self, key: str) -> int: ...
    def setParamList(self, key: str, value: typing.Iterable[str]) -> None: ...
    def setParam(self, key: str, value: str) -> None: ...
    def quotedTablename(self) -> str: ...
    def setEncodedUri(self, uri: str) -> None: ...
    def encodedUri(self) -> QtCore.QByteArray: ...
    def uri(self, expandAuthConfig: bool = ...) -> str: ...
    def connectionInfo(self, expandAuthConfig: bool = ...) -> str: ...


class QgsDateTimeStatisticalSummary(PyQt5.sip.wrapper):

    class Statistic(int):
        Count = ... # type: QgsDateTimeStatisticalSummary.Statistic
        CountDistinct = ... # type: QgsDateTimeStatisticalSummary.Statistic
        CountMissing = ... # type: QgsDateTimeStatisticalSummary.Statistic
        Min = ... # type: QgsDateTimeStatisticalSummary.Statistic
        Max = ... # type: QgsDateTimeStatisticalSummary.Statistic
        Range = ... # type: QgsDateTimeStatisticalSummary.Statistic
        All = ... # type: QgsDateTimeStatisticalSummary.Statistic

    class Statistics(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDateTimeStatisticalSummary.Statistics', 'QgsDateTimeStatisticalSummary.Statistic']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDateTimeStatisticalSummary.Statistics') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDateTimeStatisticalSummary.Statistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, stats: typing.Union['QgsDateTimeStatisticalSummary.Statistics', 'QgsDateTimeStatisticalSummary.Statistic'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDateTimeStatisticalSummary') -> None: ...

    @staticmethod
    def displayName(statistic: 'QgsDateTimeStatisticalSummary.Statistic') -> str: ...
    def range(self) -> 'QgsInterval': ...
    def max(self) -> QtCore.QDateTime: ...
    def min(self) -> QtCore.QDateTime: ...
    def countMissing(self) -> int: ...
    def distinctValues(self) -> typing.Set[QtCore.QDateTime]: ...
    def countDistinct(self) -> int: ...
    def count(self) -> int: ...
    def statistic(self, stat: 'QgsDateTimeStatisticalSummary.Statistic') -> typing.Any: ...
    def finalize(self) -> None: ...
    def addValue(self, value: typing.Any) -> None: ...
    def calculate(self, values: typing.Iterable[typing.Any]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union['QgsDateTimeStatisticalSummary.Statistics', 'QgsDateTimeStatisticalSummary.Statistic']) -> None: ...
    def statistics(self) -> 'QgsDateTimeStatisticalSummary.Statistics': ...


class QgsDatabaseFilterProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def filterAcceptsRow(self, row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def _setFilterRegExp(self, pattern: str) -> None: ...
    def _setFilterWildcard(self, pattern: str) -> None: ...


class QgsDatabaseQueryLogEntry(PyQt5.sip.wrapper):

    canceled = ... # type: bool
    error = ... # type: str
    fetchedRows = ... # type: int
    finishedTime = ... # type: int
    initiatorClass = ... # type: str
    origin = ... # type: str
    provider = ... # type: str
    query = ... # type: str
    queryId = ... # type: int
    startedTime = ... # type: int
    uri = ... # type: str

    @typing.overload
    def __init__(self, query: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDatabaseQueryLogEntry') -> None: ...


class QgsDatabaseQueryLog(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    @staticmethod
    def finished(query: QgsDatabaseQueryLogEntry) -> None: ...
    @staticmethod
    def log(query: QgsDatabaseQueryLogEntry) -> None: ...
    @staticmethod
    def enabled() -> bool: ...


class QgsDefaultValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, expression: str = ..., applyOnUpdate: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDefaultValue') -> None: ...

    def isValid(self) -> bool: ...
    def setApplyOnUpdate(self, applyOnUpdate: bool) -> None: ...
    def applyOnUpdate(self) -> bool: ...
    def setExpression(self, expression: str) -> None: ...
    def expression(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsDiagramLayerSettings(PyQt5.sip.wrapper):

    class Property(int):
        BackgroundColor = ... # type: QgsDiagramLayerSettings.Property
        StrokeColor = ... # type: QgsDiagramLayerSettings.Property
        StrokeWidth = ... # type: QgsDiagramLayerSettings.Property
        PositionX = ... # type: QgsDiagramLayerSettings.Property
        PositionY = ... # type: QgsDiagramLayerSettings.Property
        Distance = ... # type: QgsDiagramLayerSettings.Property
        Priority = ... # type: QgsDiagramLayerSettings.Property
        ZIndex = ... # type: QgsDiagramLayerSettings.Property
        IsObstacle = ... # type: QgsDiagramLayerSettings.Property
        Show = ... # type: QgsDiagramLayerSettings.Property
        AlwaysShow = ... # type: QgsDiagramLayerSettings.Property
        StartAngle = ... # type: QgsDiagramLayerSettings.Property

    class LinePlacementFlag(int):
        OnLine = ... # type: QgsDiagramLayerSettings.LinePlacementFlag
        AboveLine = ... # type: QgsDiagramLayerSettings.LinePlacementFlag
        BelowLine = ... # type: QgsDiagramLayerSettings.LinePlacementFlag
        MapOrientation = ... # type: QgsDiagramLayerSettings.LinePlacementFlag

    class Placement(int):
        AroundPoint = ... # type: QgsDiagramLayerSettings.Placement
        OverPoint = ... # type: QgsDiagramLayerSettings.Placement
        Line = ... # type: QgsDiagramLayerSettings.Placement
        Curved = ... # type: QgsDiagramLayerSettings.Placement
        Horizontal = ... # type: QgsDiagramLayerSettings.Placement
        Free = ... # type: QgsDiagramLayerSettings.Placement

    class LinePlacementFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDiagramLayerSettings.LinePlacementFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, rh: 'QgsDiagramLayerSettings') -> None: ...

    def setDataDefinedProperties(self, collection: 'QgsPropertyCollection') -> None: ...
    def dataDefinedProperties(self) -> 'QgsPropertyCollection': ...
    def referencedFields(self, context: 'QgsExpressionContext' = ...) -> typing.Set[str]: ...
    def prepare(self, context: 'QgsExpressionContext' = ...) -> bool: ...
    def writeXml(self, layerElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def setShowAllDiagrams(self, showAllDiagrams: bool) -> None: ...
    def showAllDiagrams(self) -> bool: ...
    def setCoordinateTransform(self, transform: 'QgsCoordinateTransform') -> None: ...
    def coordinateTransform(self) -> 'QgsCoordinateTransform': ...
    def setRenderer(self, diagramRenderer: 'QgsDiagramRenderer') -> None: ...
    def renderer(self) -> 'QgsDiagramRenderer': ...
    def setDistance(self, distance: float) -> None: ...
    def distance(self) -> float: ...
    def setIsObstacle(self, isObstacle: bool) -> None: ...
    def isObstacle(self) -> bool: ...
    def setZIndex(self, index: float) -> None: ...
    def zIndex(self) -> float: ...
    def setPriority(self, value: int) -> None: ...
    def priority(self) -> int: ...
    def setLinePlacementFlags(self, flags: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> None: ...
    def linePlacementFlags(self) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
    def setPlacement(self, value: 'QgsDiagramLayerSettings.Placement') -> None: ...
    def placement(self) -> 'QgsDiagramLayerSettings.Placement': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, 'QgsPropertyDefinition']: ...


class QgsDiagramSettings(PyQt5.sip.wrapper):

    class Direction(int):
        Clockwise = ... # type: QgsDiagramSettings.Direction
        Counterclockwise = ... # type: QgsDiagramSettings.Direction

    class DiagramOrientation(int):
        Up = ... # type: QgsDiagramSettings.DiagramOrientation
        Down = ... # type: QgsDiagramSettings.DiagramOrientation
        Left = ... # type: QgsDiagramSettings.DiagramOrientation
        Right = ... # type: QgsDiagramSettings.DiagramOrientation

    class LabelPlacementMethod(int):
        Height = ... # type: QgsDiagramSettings.LabelPlacementMethod
        XHeight = ... # type: QgsDiagramSettings.LabelPlacementMethod

    backgroundColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    barWidth = ... # type: float
    categoryAttributes = ... # type: typing.Iterable[str]
    categoryColors = ... # type: typing.Iterable[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]]
    categoryLabels = ... # type: typing.Iterable[str]
    diagramOrientation = ... # type: 'QgsDiagramSettings.DiagramOrientation'
    enabled = ... # type: bool
    font = ... # type: QtGui.QFont
    labelPlacementMethod = ... # type: 'QgsDiagramSettings.LabelPlacementMethod'
    lineSizeScale = ... # type: 'QgsMapUnitScale'
    lineSizeUnit = ... # type: Qgis.RenderUnit
    maximumScale = ... # type: float
    minimumScale = ... # type: float
    minimumSize = ... # type: float
    opacity = ... # type: float
    penColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    penWidth = ... # type: float
    rotationOffset = ... # type: float
    scaleBasedVisibility = ... # type: bool
    scaleByArea = ... # type: bool
    size = ... # type: QtCore.QSizeF
    sizeScale = ... # type: 'QgsMapUnitScale'
    sizeType = ... # type: Qgis.RenderUnit

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsDiagramSettings') -> None: ...

    def setPaintEffect(self, effect: 'QgsPaintEffect') -> None: ...
    def paintEffect(self) -> 'QgsPaintEffect': ...
    def setShowAxis(self, showAxis: bool) -> None: ...
    def showAxis(self) -> bool: ...
    def setAxisLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def axisLineSymbol(self) -> 'QgsLineSymbol': ...
    def legendItems(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def writeXml(self, rendererElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext' = ...) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext' = ...) -> None: ...
    def setDirection(self, direction: 'QgsDiagramSettings.Direction') -> None: ...
    def direction(self) -> 'QgsDiagramSettings.Direction': ...
    def spacingMapUnitScale(self) -> 'QgsMapUnitScale': ...
    def setSpacingMapUnitScale(self, scale: 'QgsMapUnitScale') -> None: ...
    def spacingUnit(self) -> Qgis.RenderUnit: ...
    def setSpacingUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setSpacing(self, spacing: float) -> None: ...
    def spacing(self) -> float: ...


class QgsDiagramInterpolationSettings(PyQt5.sip.wrapper):

    classificationAttributeExpression = ... # type: str
    classificationAttributeIsExpression = ... # type: bool
    classificationField = ... # type: str
    lowerSize = ... # type: QtCore.QSizeF
    lowerValue = ... # type: float
    upperSize = ... # type: QtCore.QSizeF
    upperValue = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDiagramInterpolationSettings') -> None: ...


class QgsDiagramRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsDiagramRenderer') -> None: ...

    def _writeXml(self, rendererElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    def _readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    @staticmethod
    def dpiPaintDevice(a0: QtGui.QPainter) -> int: ...
    def convertSizeToMapUnits(self, size: QtCore.QSizeF, context: 'QgsRenderContext') -> None: ...
    def diagramSize(self, features: 'QgsFeature', c: 'QgsRenderContext') -> QtCore.QSizeF: ...
    def setAttributeLegend(self, enabled: bool) -> None: ...
    def attributeLegend(self) -> bool: ...
    def legendItems(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def writeXml(self, layerElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    @typing.overload
    def diagramSettings(self) -> typing.List[QgsDiagramSettings]: ...
    @typing.overload
    def diagramSettings(self, feature: 'QgsFeature', c: 'QgsRenderContext', s: QgsDiagramSettings) -> bool: ...
    def diagram(self) -> 'QgsDiagram': ...
    def setDiagram(self, d: 'QgsDiagram') -> None: ...
    def renderDiagram(self, feature: 'QgsFeature', c: 'QgsRenderContext', pos: typing.Union[QtCore.QPointF, QtCore.QPoint], properties: 'QgsPropertyCollection' = ...) -> None: ...
    def referencedFields(self, context: 'QgsExpressionContext' = ...) -> typing.Set[str]: ...
    def diagramAttributes(self) -> typing.List[str]: ...
    def rendererName(self) -> str: ...
    def sizeMapUnits(self, feature: 'QgsFeature', c: 'QgsRenderContext') -> QtCore.QSizeF: ...
    def clone(self) -> 'QgsDiagramRenderer': ...


class QgsSingleCategoryDiagramRenderer(QgsDiagramRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSingleCategoryDiagramRenderer') -> None: ...

    def diagramSize(self, a0: 'QgsFeature', c: 'QgsRenderContext') -> QtCore.QSizeF: ...
    def legendItems(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def writeXml(self, layerElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    @typing.overload
    def diagramSettings(self) -> typing.List[QgsDiagramSettings]: ...
    @typing.overload
    def diagramSettings(self, feature: 'QgsFeature', c: 'QgsRenderContext', s: QgsDiagramSettings) -> bool: ...
    def setDiagramSettings(self, s: QgsDiagramSettings) -> None: ...
    def diagramAttributes(self) -> typing.List[str]: ...
    def rendererName(self) -> str: ...
    def clone(self) -> 'QgsSingleCategoryDiagramRenderer': ...


class QgsLinearlyInterpolatedDiagramRenderer(QgsDiagramRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLinearlyInterpolatedDiagramRenderer') -> None: ...

    def diagramSize(self, a0: 'QgsFeature', c: 'QgsRenderContext') -> QtCore.QSizeF: ...
    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    def legendItems(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def writeXml(self, layerElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def setClassificationAttributeIsExpression(self, isExpression: bool) -> None: ...
    def classificationAttributeIsExpression(self) -> bool: ...
    def setClassificationAttributeExpression(self, expression: str) -> None: ...
    def classificationAttributeExpression(self) -> str: ...
    def setClassificationField(self, field: str) -> None: ...
    def classificationField(self) -> str: ...
    def upperSize(self) -> QtCore.QSizeF: ...
    def setUpperSize(self, s: QtCore.QSizeF) -> None: ...
    def lowerSize(self) -> QtCore.QSizeF: ...
    def setLowerSize(self, s: QtCore.QSizeF) -> None: ...
    def upperValue(self) -> float: ...
    def setUpperValue(self, val: float) -> None: ...
    def lowerValue(self) -> float: ...
    def setLowerValue(self, val: float) -> None: ...
    def rendererName(self) -> str: ...
    def referencedFields(self, context: 'QgsExpressionContext' = ...) -> typing.Set[str]: ...
    def diagramAttributes(self) -> typing.List[str]: ...
    def setDiagramSettings(self, s: QgsDiagramSettings) -> None: ...
    @typing.overload
    def diagramSettings(self) -> typing.List[QgsDiagramSettings]: ...
    @typing.overload
    def diagramSettings(self, feature: 'QgsFeature', c: 'QgsRenderContext', s: QgsDiagramSettings) -> bool: ...
    def clone(self) -> 'QgsLinearlyInterpolatedDiagramRenderer': ...


class QgsDistanceArea(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsDistanceArea') -> None: ...

    def splitGeometryAtAntimeridian(self, geometry: 'QgsGeometry') -> 'QgsGeometry': ...
    def latitudeGeodesicCrossesAntimeridian(self, p1: 'QgsPointXY', p2: 'QgsPointXY') -> typing.Tuple[float, float]: ...
    def geodesicLine(self, p1: 'QgsPointXY', p2: 'QgsPointXY', interval: float, breakLine: bool = ...) -> typing.Any: ...
    def computeSpheroidProject(self, p1: 'QgsPointXY', distance: float = ..., azimuth: float = ...) -> 'QgsPointXY': ...
    def convertAreaMeasurement(self, area: float, toUnits: Qgis.AreaUnit) -> float: ...
    def convertLengthMeasurement(self, length: float, toUnits: Qgis.DistanceUnit) -> float: ...
    @staticmethod
    def formatArea(area: float, decimals: int, unit: Qgis.AreaUnit, keepBaseUnit: bool = ...) -> str: ...
    @staticmethod
    def formatDistance(distance: float, decimals: int, unit: Qgis.DistanceUnit, keepBaseUnit: bool = ...) -> str: ...
    def bearing(self, p1: 'QgsPointXY', p2: 'QgsPointXY') -> float: ...
    def measurePolygon(self, points: typing.Iterable['QgsPointXY']) -> float: ...
    def areaUnits(self) -> Qgis.AreaUnit: ...
    def lengthUnits(self) -> Qgis.DistanceUnit: ...
    def measureLineProjected(self, p1: 'QgsPointXY', distance: float = ..., azimuth: float = ...) -> typing.Tuple[float, 'QgsPointXY']: ...
    @typing.overload
    def measureLine(self, points: typing.Iterable['QgsPointXY']) -> float: ...
    @typing.overload
    def measureLine(self, p1: 'QgsPointXY', p2: 'QgsPointXY') -> float: ...
    def measurePerimeter(self, geometry: 'QgsGeometry') -> float: ...
    def measureLength(self, geometry: 'QgsGeometry') -> float: ...
    def measureArea(self, geometry: 'QgsGeometry') -> float: ...
    def ellipsoidInverseFlattening(self) -> float: ...
    def ellipsoidSemiMinor(self) -> float: ...
    def ellipsoidSemiMajor(self) -> float: ...
    def ellipsoid(self) -> str: ...
    @typing.overload
    def setEllipsoid(self, ellipsoid: str) -> bool: ...
    @typing.overload
    def setEllipsoid(self, semiMajor: float, semiMinor: float) -> bool: ...
    def ellipsoidCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setSourceCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext') -> None: ...
    def willUseEllipsoid(self) -> bool: ...


class QgsEditorWidgetSetup(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: str, config: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEditorWidgetSetup') -> None: ...

    def isNull(self) -> bool: ...
    def config(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...


class QgsElevationMap(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, size: QtCore.QSize) -> None: ...
    @typing.overload
    def __init__(self, image: QtGui.QImage) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsElevationMap') -> None: ...

    def noDataValue(self) -> float: ...
    def isNoData(self, colorRaw: int) -> bool: ...
    @staticmethod
    def decodeElevation(colorRaw: int) -> float: ...
    @staticmethod
    def encodeElevation(z: float) -> int: ...
    def isValid(self) -> bool: ...
    def combine(self, otherElevationMap: 'QgsElevationMap', method: Qgis.ElevationMapCombineMethod) -> None: ...
    def painter(self) -> QtGui.QPainter: ...
    def rawElevationImage(self) -> QtGui.QImage: ...
    def applyHillshading(self, image: QtGui.QImage, multiDirectional: bool, altitude: float, azimuth: float, zFactor: float, cellSizeX: float, cellSizeY: float) -> None: ...
    def applyEyeDomeLighting(self, image: QtGui.QImage, distance: int, strength: float, rendererScale: float) -> None: ...


class QgsElevationShadingRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsElevationShadingRenderer') -> None: ...

    def setCombinedElevationMethod(self, method: Qgis.ElevationMapCombineMethod) -> None: ...
    def combinedElevationMethod(self) -> Qgis.ElevationMapCombineMethod: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def setLightAzimuth(self, lightAzimuth: float) -> None: ...
    def lightAzimuth(self) -> float: ...
    def setLightAltitude(self, lightAltitude: float) -> None: ...
    def lightAltitude(self) -> float: ...
    def setHillshadingMultidirectional(self, multiDirectional: bool) -> None: ...
    def isHillshadingMultidirectional(self) -> bool: ...
    def setHillshadingZFactor(self, zFactor: float) -> None: ...
    def hillshadingZFactor(self) -> float: ...
    def isActiveHillshading(self) -> bool: ...
    def setActiveHillshading(self, active: bool) -> None: ...
    def setEyeDomeLightingDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def eyeDomeLightingDistanceUnit(self) -> Qgis.RenderUnit: ...
    def setEyeDomeLightingDistance(self, distance: float) -> None: ...
    def eyeDomeLightingDistance(self) -> float: ...
    def setEyeDomeLightingStrength(self, strength: float) -> None: ...
    def eyeDomeLightingStrength(self) -> float: ...
    def isActiveEyeDomeLighting(self) -> bool: ...
    def setActiveEyeDomeLighting(self, active: bool) -> None: ...
    def isActive(self) -> bool: ...
    def setActive(self, active: bool) -> None: ...
    def renderShading(self, elevation: QgsElevationMap, image: QtGui.QImage, context: 'QgsRenderContext') -> None: ...


class QgsElevationUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsElevationUtils') -> None: ...

    @staticmethod
    def enableElevationForLayer(layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def canEnableElevationForLayer(layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def calculateZRangeForProject(project: 'QgsProject') -> 'QgsDoubleRange': ...


class QgsErrorMessage(PyQt5.sip.wrapper):

    class Format(int):
        Text = ... # type: QgsErrorMessage.Format
        Html = ... # type: QgsErrorMessage.Format

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, message: str, tag: str = ..., file: str = ..., function: str = ..., line: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsErrorMessage') -> None: ...

    def line(self) -> int: ...
    def function(self) -> str: ...
    def file(self) -> str: ...
    def tag(self) -> str: ...
    def message(self) -> str: ...


class QgsError(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, message: str, tag: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsError') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def messageList(self) -> typing.List[QgsErrorMessage]: ...
    def clear(self) -> None: ...
    def summary(self) -> str: ...
    def message(self, format: QgsErrorMessage.Format = ...) -> str: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def append(self, message: str, tag: str) -> None: ...
    @typing.overload
    def append(self, message: QgsErrorMessage) -> None: ...


class QgsExpressionFunction(PyQt5.sip.wrapper):

    class Parameter(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, name: str, optional: bool = ..., defaultValue: typing.Any = ..., isSubExpression: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionFunction.Parameter') -> None: ...

        def isSubExpression(self) -> bool: ...
        def defaultValue(self) -> typing.Any: ...
        def optional(self) -> bool: ...
        def name(self) -> str: ...

    @typing.overload
    def __init__(self, fnname: str, params: int, group: str, helpText: str = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, fnname: str, params: int, groups: typing.Iterable[str], helpText: str = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, fnname: str, params: typing.Iterable['QgsExpressionFunction.Parameter'], group: str, helpText: str = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, fnname: str, params: typing.Iterable['QgsExpressionFunction.Parameter'], groups: typing.Iterable[str], helpText: str = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionFunction') -> None: ...

    @staticmethod
    def allParamsStatic(node: 'QgsExpressionNodeFunction', parent: 'QgsExpression', context: 'QgsExpressionContext') -> bool: ...
    def handlesNull(self) -> bool: ...
    def run(self, args: 'QgsExpressionNode.NodeList', context: 'QgsExpressionContext', parent: 'QgsExpression', node: 'QgsExpressionNodeFunction') -> typing.Any: ...
    def func(self, values: typing.Iterable[typing.Any], context: 'QgsExpressionContext', parent: 'QgsExpression', node: 'QgsExpressionNodeFunction') -> typing.Any: ...
    def helpText(self) -> str: ...
    def groups(self) -> typing.List[str]: ...
    def group(self) -> str: ...
    def isDeprecated(self) -> bool: ...
    def isContextual(self) -> bool: ...
    def referencedColumns(self, node: 'QgsExpressionNodeFunction') -> typing.Set[str]: ...
    def prepare(self, node: 'QgsExpressionNodeFunction', parent: 'QgsExpression', context: 'QgsExpressionContext') -> bool: ...
    def isStatic(self, node: 'QgsExpressionNodeFunction', parent: 'QgsExpression', context: 'QgsExpressionContext') -> bool: ...
    def lazyEval(self) -> bool: ...
    def aliases(self) -> typing.List[str]: ...
    def usesGeometry(self, node: 'QgsExpressionNodeFunction') -> bool: ...
    def parameters(self) -> typing.List['QgsExpressionFunction.Parameter']: ...
    def minParams(self) -> int: ...
    def params(self) -> int: ...
    def name(self) -> str: ...


class QgsScopedExpressionFunction(QgsExpressionFunction):

    @typing.overload
    def __init__(self, fnname: str, params: int, group: str, helpText: str = ..., usesGeometry: bool = ..., referencedColumns: typing.Iterable[str] = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, fnname: str, params: typing.Iterable[QgsExpressionFunction.Parameter], group: str, helpText: str = ..., usesGeometry: bool = ..., referencedColumns: typing.Iterable[str] = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScopedExpressionFunction') -> None: ...

    def isStatic(self, node: 'QgsExpressionNodeFunction', parent: 'QgsExpression', context: 'QgsExpressionContext') -> bool: ...
    def referencedColumns(self, node: 'QgsExpressionNodeFunction') -> typing.Set[str]: ...
    def usesGeometry(self, node: 'QgsExpressionNodeFunction') -> bool: ...
    def clone(self) -> 'QgsScopedExpressionFunction': ...
    def func(self, values: typing.Iterable[typing.Any], context: 'QgsExpressionContext', parent: 'QgsExpression', node: 'QgsExpressionNodeFunction') -> typing.Any: ...


class QgsExpressionContextScope(PyQt5.sip.wrapper):

    class StaticVariable(PyQt5.sip.wrapper):

        description = ... # type: str
        isStatic = ... # type: bool
        name = ... # type: str
        readOnly = ... # type: bool
        value = ... # type: typing.Any

        @typing.overload
        def __init__(self, name: str = ..., value: typing.Any = ..., readOnly: bool = ..., isStatic: bool = ..., description: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionContextScope.StaticVariable') -> None: ...

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsExpressionContextScope') -> None: ...

    def layerStores(self) -> typing.List['QgsMapLayerStore']: ...
    def addLayerStore(self, store: 'QgsMapLayerStore') -> None: ...
    def removeHiddenVariable(self, hiddenVariable: str) -> None: ...
    def addHiddenVariable(self, hiddenVariable: str) -> None: ...
    def setHiddenVariables(self, hiddenVariables: typing.Iterable[str]) -> None: ...
    def hiddenVariables(self) -> typing.List[str]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def setFields(self, fields: 'QgsFields') -> None: ...
    def removeGeometry(self) -> None: ...
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...
    def hasGeometry(self) -> bool: ...
    def removeFeature(self) -> None: ...
    def setFeature(self, feature: 'QgsFeature') -> None: ...
    def feature(self) -> 'QgsFeature': ...
    def hasFeature(self) -> bool: ...
    def addFunction(self, name: str, function: QgsScopedExpressionFunction) -> None: ...
    def functionNames(self) -> typing.List[str]: ...
    def function(self, name: str) -> QgsExpressionFunction: ...
    def hasFunction(self, name: str) -> bool: ...
    def variableCount(self) -> int: ...
    def description(self, name: str) -> str: ...
    def isStatic(self, name: str) -> bool: ...
    def isReadOnly(self, name: str) -> bool: ...
    def filteredVariableNames(self) -> typing.List[str]: ...
    def variableNames(self) -> typing.List[str]: ...
    def variable(self, name: str) -> typing.Any: ...
    def hasVariable(self, name: str) -> bool: ...
    def removeVariable(self, name: str) -> bool: ...
    def addVariable(self, variable: 'QgsExpressionContextScope.StaticVariable') -> None: ...
    def setVariable(self, name: str, value: typing.Any, isStatic: bool = ...) -> None: ...
    def name(self) -> str: ...


class QgsExpressionContext(PyQt5.sip.wrapper):

    EXPR_CLUSTER_COLOR = ... # type: str
    EXPR_CLUSTER_SIZE = ... # type: str
    EXPR_FIELDS = ... # type: str
    EXPR_GEOMETRY_PART_COUNT = ... # type: str
    EXPR_GEOMETRY_PART_NUM = ... # type: str
    EXPR_GEOMETRY_POINT_COUNT = ... # type: str
    EXPR_GEOMETRY_POINT_NUM = ... # type: str
    EXPR_GEOMETRY_RING_NUM = ... # type: str
    EXPR_ORIGINAL_VALUE = ... # type: str
    EXPR_SYMBOL_ANGLE = ... # type: str
    EXPR_SYMBOL_COLOR = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, scopes: typing.Iterable[QgsExpressionContextScope]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsExpressionContext') -> None: ...

    def feedback(self) -> 'QgsFeedback': ...
    def setFeedback(self, feedback: 'QgsFeedback') -> None: ...
    def loadedLayerStore(self) -> 'QgsMapLayerStore': ...
    def setLoadedLayerStore(self, store: 'QgsMapLayerStore') -> None: ...
    def layerStores(self) -> typing.List['QgsMapLayerStore']: ...
    def clearCachedValues(self) -> None: ...
    def cachedValue(self, key: str) -> typing.Any: ...
    def hasCachedValue(self, key: str) -> bool: ...
    def setCachedValue(self, key: str, value: typing.Any) -> None: ...
    def setOriginalValueVariable(self, value: typing.Any) -> None: ...
    def fields(self) -> 'QgsFields': ...
    def setFields(self, fields: 'QgsFields') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...
    def hasGeometry(self) -> bool: ...
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def feature(self) -> 'QgsFeature': ...
    def hasFeature(self) -> bool: ...
    def setFeature(self, feature: 'QgsFeature') -> None: ...
    def popScope(self) -> QgsExpressionContextScope: ...
    def appendScopes(self, scopes: typing.Iterable[QgsExpressionContextScope]) -> None: ...
    def appendScope(self, scope: QgsExpressionContextScope) -> None: ...
    def scopeCount(self) -> int: ...
    def function(self, name: str) -> QgsExpressionFunction: ...
    def functionNames(self) -> typing.List[str]: ...
    def hasFunction(self, name: str) -> bool: ...
    def description(self, name: str) -> str: ...
    def isReadOnly(self, name: str) -> bool: ...
    def filteredVariableNames(self) -> typing.List[str]: ...
    def variableNames(self) -> typing.List[str]: ...
    @typing.overload
    def indexOfScope(self, scope: QgsExpressionContextScope) -> int: ...
    @typing.overload
    def indexOfScope(self, scopeName: str) -> int: ...
    def scopes(self) -> typing.List[QgsExpressionContextScope]: ...
    def lastScope(self) -> QgsExpressionContextScope: ...
    def scope(self, index: int) -> QgsExpressionContextScope: ...
    def activeScopeForVariable(self, name: str) -> QgsExpressionContextScope: ...
    def setHighlightedFunctions(self, names: typing.Iterable[str]) -> None: ...
    def isHighlightedFunction(self, name: str) -> bool: ...
    def setHighlightedVariables(self, variableNames: typing.Iterable[str]) -> None: ...
    def highlightedVariables(self) -> typing.List[str]: ...
    def isHighlightedVariable(self, name: str) -> bool: ...
    def variablesToMap(self) -> typing.Dict[str, typing.Any]: ...
    def variable(self, name: str) -> typing.Any: ...
    def hasVariable(self, name: str) -> bool: ...


class QgsExpressionFieldBuffer(PyQt5.sip.wrapper):

    class ExpressionField(PyQt5.sip.wrapper):

        cachedExpression = ... # type: 'QgsExpression'
        field = ... # type: 'QgsField'

        @typing.overload
        def __init__(self, exp: str, fld: 'QgsField') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionFieldBuffer.ExpressionField') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionFieldBuffer') -> None: ...

    def expressions(self) -> typing.List['QgsExpressionFieldBuffer.ExpressionField']: ...
    def updateFields(self, flds: 'QgsFields') -> None: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> None: ...
    def writeXml(self, layer_node: QtXml.QDomNode, document: QtXml.QDomDocument) -> None: ...
    def updateExpression(self, index: int, exp: str) -> None: ...
    def renameExpression(self, index: int, name: str) -> None: ...
    def removeExpression(self, index: int) -> None: ...
    def addExpression(self, exp: str, fld: 'QgsField') -> None: ...


class QgsFeature(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, id: int = ...) -> None: ...
    @typing.overload
    def __init__(self, fields: 'QgsFields', id: int = ...) -> None: ...
    @typing.overload
    def __init__(self, rhs: 'QgsFeature') -> None: ...

    def approximateMemoryUsage(self) -> int: ...
    def fieldNameIndex(self, fieldName: str) -> int: ...
    def setEmbeddedSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def embeddedSymbol(self) -> 'QgsSymbol': ...
    def isUnsetValue(self, fieldIdx: int) -> bool: ...
    @typing.overload
    def attribute(self, name: str) -> typing.Any: ...
    @typing.overload
    def attribute(self, fieldIdx: int) -> typing.Any: ...
    def fields(self) -> 'QgsFields': ...
    def setFields(self, fields: 'QgsFields', initAttributes: bool = ...) -> None: ...
    def clearGeometry(self) -> None: ...
    @typing.overload
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    @typing.overload
    def setGeometry(self, geometry: 'QgsAbstractGeometry') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...
    def hasGeometry(self) -> bool: ...
    def setValid(self, validity: bool) -> None: ...
    def isValid(self) -> bool: ...
    @typing.overload
    def deleteAttribute(self, field: int) -> None: ...
    @typing.overload
    def deleteAttribute(self, name: str) -> bool: ...
    def padAttributes(self, count: int) -> None: ...
    def resizeAttributes(self, fieldCount: int) -> None: ...
    def initAttributes(self, fieldCount: int) -> None: ...
    @typing.overload
    def setAttribute(self, field: int, attr: typing.Any) -> bool: ...
    @typing.overload
    def setAttribute(self, name: str, value: typing.Any) -> None: ...
    def setAttributes(self, attrs: typing.Any) -> None: ...
    def attributeCount(self) -> int: ...
    def attributeMap(self) -> typing.Dict[str, typing.Optional[object]]: ...
    def attributes(self) -> typing.Any: ...
    def setId(self, id: int) -> None: ...
    def id(self) -> int: ...
    def __hash__(self) -> int: ...
    @typing.overload
    def __delitem__(self, key: int) -> None: ...
    @typing.overload
    def __delitem__(self, name: str) -> None: ...
    @typing.overload
    def __setitem__(self, key: int, value: typing.Any) -> None: ...
    @typing.overload
    def __setitem__(self, key: str, value: typing.Any) -> None: ...
    @typing.overload
    def __getitem__(self, key: int) -> typing.Any: ...
    @typing.overload
    def __getitem__(self, name: str) -> typing.Any: ...
    def __iter__(self) -> typing.Any: ...


class QgsFeaturePickerModelBase(QtCore.QAbstractItemModel):

    class Role(int):
        IdentifierValueRole = ... # type: QgsFeaturePickerModelBase.Role
        IdentifierValuesRole = ... # type: QgsFeaturePickerModelBase.Role
        ValueRole = ... # type: QgsFeaturePickerModelBase.Role
        FeatureRole = ... # type: QgsFeaturePickerModelBase.Role
        FeatureIdRole = ... # type: QgsFeaturePickerModelBase.Role

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setExtraIdentifierValueUnguarded(self, identifierValue: typing.Any) -> None: ...
    def requestToReloadCurrentFeature(self, request: 'QgsFeatureRequest') -> None: ...
    def setExtraIdentifierValue(self, extraIdentifierValue: typing.Any) -> None: ...
    def extraIdentifierValue(self) -> typing.Any: ...
    def fetchLimitChanged(self) -> None: ...
    def fetchGeometryChanged(self) -> None: ...
    def allowNullChanged(self) -> None: ...
    def endUpdate(self) -> None: ...
    def beginUpdate(self) -> None: ...
    def extraValueDoesNotExistChanged(self) -> None: ...
    def extraIdentifierValueIndexChanged(self, index: int) -> None: ...
    def extraIdentifierValueChanged(self) -> None: ...
    def filterJobCompleted(self) -> None: ...
    def isLoadingChanged(self) -> None: ...
    def filterExpressionChanged(self) -> None: ...
    def filterValueChanged(self) -> None: ...
    def displayExpressionChanged(self) -> None: ...
    def sourceLayerChanged(self) -> None: ...
    def currentFeatureChanged(self) -> None: ...
    def setFetchLimit(self, fetchLimit: int) -> None: ...
    def fetchLimit(self) -> int: ...
    def setFetchGeometry(self, fetchGeometry: bool) -> None: ...
    def fetchGeometry(self) -> bool: ...
    def setAllowNull(self, allowNull: bool) -> None: ...
    def allowNull(self) -> bool: ...
    def extraValueDoesNotExist(self) -> bool: ...
    def extraIdentifierValueIndex(self) -> int: ...
    def setExtraIdentifierValueToNull(self) -> None: ...
    def isLoading(self) -> bool: ...
    def setFilterExpression(self, filterExpression: str) -> None: ...
    def filterExpression(self) -> str: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def setFilterValue(self, filterValue: str) -> None: ...
    def filterValue(self) -> str: ...
    def setDisplayExpression(self, displayExpression: str) -> None: ...
    def displayExpression(self) -> str: ...
    def setSourceLayer(self, sourceLayer: QgsVectorLayer) -> None: ...
    def sourceLayer(self) -> QgsVectorLayer: ...


class QgsFeaturePickerModel(QgsFeaturePickerModelBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def featureChanged(self, feature: QgsFeature) -> None: ...
    def feature(self) -> QgsFeature: ...
    def setFeature(self, fid: int) -> None: ...
    def setExtraIdentifierValueToNull(self) -> None: ...


class QgsFeatureFilterModel(QgsFeaturePickerModelBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def extraIdentifierValuesChanged(self) -> None: ...
    def identifierFieldsChanged(self) -> None: ...
    def setExtraIdentifierValues(self, extraIdentifierValues: typing.Iterable[typing.Any]) -> None: ...
    def extraIdentifierValues(self) -> typing.List[typing.Any]: ...
    def setExtraIdentifierValueToNull(self) -> None: ...
    def setIdentifierFields(self, identifierFields: typing.Iterable[str]) -> None: ...
    def identifierFields(self) -> typing.List[str]: ...
    def identifierField(self) -> str: ...


class QgsFeatureFilterProvider(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureFilterProvider') -> None: ...

    def clone(self) -> 'QgsFeatureFilterProvider': ...
    def layerAttributes(self, layer: QgsVectorLayer, attributes: typing.Iterable[str]) -> typing.List[str]: ...
    def filterFeatures(self, layer: QgsVectorLayer, featureRequest: 'QgsFeatureRequest') -> None: ...


class QgsFeatureIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, iter: QgsAbstractFeatureIterator) -> None: ...
    @typing.overload
    def __init__(self, fi: 'QgsFeatureIterator') -> None: ...

    def compileFailed(self) -> bool: ...
    def compileStatus(self) -> QgsAbstractFeatureIterator.CompileStatus: ...
    def isClosed(self) -> bool: ...
    def isValid(self) -> bool: ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...
    def nextFeature(self, f: QgsFeature) -> bool: ...
    def __next__(self) -> QgsFeature: ...
    def __iter__(self) -> 'QgsFeatureIterator': ...


class QgsFeatureRequest(PyQt5.sip.wrapper):

    class InvalidGeometryCheck(int):
        GeometryNoCheck = ... # type: QgsFeatureRequest.InvalidGeometryCheck
        GeometrySkipInvalid = ... # type: QgsFeatureRequest.InvalidGeometryCheck
        GeometryAbortOnInvalid = ... # type: QgsFeatureRequest.InvalidGeometryCheck

    class FilterType(int):
        FilterNone = ... # type: QgsFeatureRequest.FilterType
        FilterFid = ... # type: QgsFeatureRequest.FilterType
        FilterExpression = ... # type: QgsFeatureRequest.FilterType
        FilterFids = ... # type: QgsFeatureRequest.FilterType

    class Flag(int):
        NoFlags = ... # type: QgsFeatureRequest.Flag
        NoGeometry = ... # type: QgsFeatureRequest.Flag
        SubsetOfAttributes = ... # type: QgsFeatureRequest.Flag
        ExactIntersect = ... # type: QgsFeatureRequest.Flag
        IgnoreStaticNodesDuringExpressionCompilation = ... # type: QgsFeatureRequest.Flag
        EmbeddedSymbols = ... # type: QgsFeatureRequest.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureRequest.Flags', 'QgsFeatureRequest.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureRequest.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFeatureRequest.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class OrderByClause(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, expression: str, ascending: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, expression: str, ascending: bool, nullsfirst: bool) -> None: ...
        @typing.overload
        def __init__(self, expression: 'QgsExpression', ascending: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, expression: 'QgsExpression', ascending: bool, nullsfirst: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureRequest.OrderByClause') -> None: ...

        def dump(self) -> str: ...
        def setNullsFirst(self, nullsFirst: bool) -> None: ...
        def nullsFirst(self) -> bool: ...
        def setAscending(self, ascending: bool) -> None: ...
        def ascending(self) -> bool: ...
        def prepare(self, context: QgsExpressionContext) -> bool: ...
        def expression(self) -> 'QgsExpression': ...

    class OrderBy(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, other: typing.Iterable['QgsFeatureRequest.OrderByClause']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureRequest.OrderBy') -> None: ...

        def dump(self) -> str: ...
        def usedAttributeIndices(self, fields: 'QgsFields') -> typing.Any: ...
        def usedAttributes(self) -> typing.Set[str]: ...
        def load(self, elem: QtXml.QDomElement) -> None: ...
        def save(self, elem: QtXml.QDomElement) -> None: ...
        def list(self) -> typing.List['QgsFeatureRequest.OrderByClause']: ...

    ALL_ATTRIBUTES = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, fid: int) -> None: ...
    @typing.overload
    def __init__(self, fids: typing.Any) -> None: ...
    @typing.overload
    def __init__(self, rectangle: 'QgsRectangle') -> None: ...
    @typing.overload
    def __init__(self, expr: 'QgsExpression', context: QgsExpressionContext = ...) -> None: ...
    @typing.overload
    def __init__(self, rh: 'QgsFeatureRequest') -> None: ...

    def feedback(self) -> 'QgsFeedback': ...
    def setFeedback(self, feedback: 'QgsFeedback') -> None: ...
    def setRequestMayBeNested(self, requestMayBeNested: bool) -> 'QgsFeatureRequest': ...
    def requestMayBeNested(self) -> bool: ...
    def setTimeout(self, timeout: int) -> 'QgsFeatureRequest': ...
    def timeout(self) -> int: ...
    def setConnectionTimeout(self, connectionTimeout: int) -> 'QgsFeatureRequest': ...
    def connectionTimeout(self) -> int: ...
    def acceptFeature(self, feature: QgsFeature) -> bool: ...
    def setTransformErrorCallback(self, a0: typing.Callable[..., None]) -> 'QgsFeatureRequest': ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext') -> 'QgsFeatureRequest': ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def simplifyMethod(self) -> 'QgsSimplifyMethod': ...
    def setSimplifyMethod(self, simplifyMethod: 'QgsSimplifyMethod') -> 'QgsFeatureRequest': ...
    def subsetOfAttributes(self) -> typing.List[int]: ...
    def setNoAttributes(self) -> 'QgsFeatureRequest': ...
    @typing.overload
    def setSubsetOfAttributes(self, attrs: typing.Iterable[int]) -> 'QgsFeatureRequest': ...
    @typing.overload
    def setSubsetOfAttributes(self, attrNames: typing.Iterable[str], fields: 'QgsFields') -> 'QgsFeatureRequest': ...
    @typing.overload
    def setSubsetOfAttributes(self, attrNames: typing.Iterable[str], fields: 'QgsFields') -> 'QgsFeatureRequest': ...
    def flags(self) -> 'QgsFeatureRequest.Flags': ...
    def setFlags(self, flags: typing.Union['QgsFeatureRequest.Flags', 'QgsFeatureRequest.Flag']) -> 'QgsFeatureRequest': ...
    def limit(self) -> int: ...
    def setLimit(self, limit: int) -> 'QgsFeatureRequest': ...
    def setOrderBy(self, orderBy: 'QgsFeatureRequest.OrderBy') -> 'QgsFeatureRequest': ...
    def orderBy(self) -> 'QgsFeatureRequest.OrderBy': ...
    @typing.overload
    def addOrderBy(self, expression: str, ascending: bool = ...) -> 'QgsFeatureRequest': ...
    @typing.overload
    def addOrderBy(self, expression: str, ascending: bool, nullsfirst: bool) -> 'QgsFeatureRequest': ...
    def disableFilter(self) -> 'QgsFeatureRequest': ...
    def setExpressionContext(self, context: QgsExpressionContext) -> 'QgsFeatureRequest': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def combineFilterExpression(self, expression: str) -> 'QgsFeatureRequest': ...
    def filterExpression(self) -> 'QgsExpression': ...
    def setFilterExpression(self, expression: str) -> 'QgsFeatureRequest': ...
    def setInvalidGeometryCallback(self, a0: typing.Callable[..., None]) -> 'QgsFeatureRequest': ...
    def invalidGeometryCheck(self) -> 'QgsFeatureRequest.InvalidGeometryCheck': ...
    def setInvalidGeometryCheck(self, check: 'QgsFeatureRequest.InvalidGeometryCheck') -> 'QgsFeatureRequest': ...
    def filterFids(self) -> typing.Any: ...
    def setFilterFids(self, fids: typing.Any) -> 'QgsFeatureRequest': ...
    def filterFid(self) -> int: ...
    def setFilterFid(self, fid: int) -> 'QgsFeatureRequest': ...
    def distanceWithin(self) -> float: ...
    def referenceGeometry(self) -> 'QgsGeometry': ...
    def setDistanceWithin(self, geometry: 'QgsGeometry', distance: float) -> 'QgsFeatureRequest': ...
    def filterRect(self) -> 'QgsRectangle': ...
    def setFilterRect(self, rectangle: 'QgsRectangle') -> 'QgsFeatureRequest': ...
    def spatialFilterType(self) -> Qgis.SpatialFilterType: ...
    def filterType(self) -> 'QgsFeatureRequest.FilterType': ...


class QgsAbstractFeatureSource(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractFeatureSource') -> None: ...

    def iteratorClosed(self, it: QgsAbstractFeatureIterator) -> None: ...
    def iteratorOpened(self, it: QgsAbstractFeatureIterator) -> None: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsFeatureStore(QgsFeatureSink):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, fields: 'QgsFields', crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureStore') -> None: ...

    def params(self) -> typing.Dict[str, typing.Any]: ...
    def setParams(self, parameters: typing.Dict[str, typing.Any]) -> None: ...
    def features(self) -> typing.List[QgsFeature]: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def count(self) -> int: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setFields(self, fields: 'QgsFields') -> None: ...
    def fields(self) -> 'QgsFields': ...


class QgsFeedback(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def processedCountChanged(self, processedCount: int) -> None: ...
    def progressChanged(self, progress: float) -> None: ...
    def canceled(self) -> None: ...
    def cancel(self) -> None: ...
    def setProcessedCount(self, processedCount: int) -> None: ...
    def processedCount(self) -> int: ...
    def progress(self) -> float: ...
    def setProgress(self, progress: float) -> None: ...
    def isCanceled(self) -> bool: ...


class QgsField(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, name: str = ..., type: QtCore.QVariant.Type = ..., typeName: str = ..., len: int = ..., prec: int = ..., comment: str = ..., subType: QtCore.QVariant.Type = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsField') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setSplitPolicy(self, policy: Qgis.FieldDomainSplitPolicy) -> None: ...
    def splitPolicy(self) -> Qgis.FieldDomainSplitPolicy: ...
    def isReadOnly(self) -> bool: ...
    def setReadOnly(self, readOnly: bool) -> None: ...
    def editorWidgetSetup(self) -> QgsEditorWidgetSetup: ...
    def setEditorWidgetSetup(self, v: QgsEditorWidgetSetup) -> None: ...
    def convertCompatible(self, v: typing.Any) -> bool: ...
    def displayString(self, v: typing.Any) -> str: ...
    def setAlias(self, alias: str) -> None: ...
    def alias(self) -> str: ...
    def setConstraints(self, constraints: 'QgsFieldConstraints') -> None: ...
    def constraints(self) -> 'QgsFieldConstraints': ...
    def setDefaultValueDefinition(self, defaultValueDefinition: QgsDefaultValue) -> None: ...
    def defaultValueDefinition(self) -> QgsDefaultValue: ...
    def setComment(self, comment: str) -> None: ...
    def setPrecision(self, precision: int) -> None: ...
    def setLength(self, len: int) -> None: ...
    def setTypeName(self, typeName: str) -> None: ...
    def setSubType(self, subType: QtCore.QVariant.Type) -> None: ...
    def setType(self, type: QtCore.QVariant.Type) -> None: ...
    def setName(self, name: str) -> None: ...
    def isDateOrTime(self) -> bool: ...
    def isNumeric(self) -> bool: ...
    @typing.overload
    def setMetadata(self, metadata: typing.Dict[int, typing.Any]) -> None: ...
    @typing.overload
    def setMetadata(self, property: int, value: typing.Any) -> None: ...
    @typing.overload
    def metadata(self) -> typing.Dict[int, typing.Any]: ...
    @typing.overload
    def metadata(self, property: int) -> typing.Any: ...
    def comment(self) -> str: ...
    def precision(self) -> int: ...
    def length(self) -> int: ...
    def typeName(self) -> str: ...
    def subType(self) -> QtCore.QVariant.Type: ...
    def type(self) -> QtCore.QVariant.Type: ...
    def friendlyTypeString(self) -> str: ...
    def displayType(self, showConstraints: bool = ...) -> str: ...
    def displayNameWithAlias(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...


class QgsFieldConstraints(PyQt5.sip.wrapper):

    class ConstraintStrength(int):
        ConstraintStrengthNotSet = ... # type: QgsFieldConstraints.ConstraintStrength
        ConstraintStrengthHard = ... # type: QgsFieldConstraints.ConstraintStrength
        ConstraintStrengthSoft = ... # type: QgsFieldConstraints.ConstraintStrength

    class ConstraintOrigin(int):
        ConstraintOriginNotSet = ... # type: QgsFieldConstraints.ConstraintOrigin
        ConstraintOriginProvider = ... # type: QgsFieldConstraints.ConstraintOrigin
        ConstraintOriginLayer = ... # type: QgsFieldConstraints.ConstraintOrigin

    class Constraint(int):
        ConstraintNotNull = ... # type: QgsFieldConstraints.Constraint
        ConstraintUnique = ... # type: QgsFieldConstraints.Constraint
        ConstraintExpression = ... # type: QgsFieldConstraints.Constraint

    class Constraints(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFieldConstraints.Constraints') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFieldConstraints.Constraints': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFieldConstraints') -> None: ...

    def setDomainName(self, domain: str) -> None: ...
    def domainName(self) -> str: ...
    def setConstraintExpression(self, expression: str, description: str = ...) -> None: ...
    def constraintDescription(self) -> str: ...
    def constraintExpression(self) -> str: ...
    def removeConstraint(self, constraint: 'QgsFieldConstraints.Constraint') -> None: ...
    def setConstraint(self, constraint: 'QgsFieldConstraints.Constraint', origin: 'QgsFieldConstraints.ConstraintOrigin' = ...) -> None: ...
    def setConstraintStrength(self, constraint: 'QgsFieldConstraints.Constraint', strength: 'QgsFieldConstraints.ConstraintStrength') -> None: ...
    def constraintStrength(self, constraint: 'QgsFieldConstraints.Constraint') -> 'QgsFieldConstraints.ConstraintStrength': ...
    def constraintOrigin(self, constraint: 'QgsFieldConstraints.Constraint') -> 'QgsFieldConstraints.ConstraintOrigin': ...
    def constraints(self) -> 'QgsFieldConstraints.Constraints': ...


class QgsFieldFormatterContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFieldFormatterContext') -> None: ...

    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...


class QgsFieldFormatter(PyQt5.sip.wrapper):

    class Flag(int):
        CanProvideAvailableValues = ... # type: QgsFieldFormatter.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFieldFormatter.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFieldFormatter.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFieldFormatter') -> None: ...

    def setFlags(self, flags: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> None: ...
    def flags(self) -> 'QgsFieldFormatter.Flags': ...
    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    def createCache(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def alignmentFlag(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> QtCore.Qt.AlignmentFlag: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsFieldFormatterRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def fieldFormatterRemoved(self, formatter: QgsFieldFormatter) -> None: ...
    def fieldFormatterAdded(self, formatter: QgsFieldFormatter) -> None: ...
    def fallbackFieldFormatter(self) -> QgsFieldFormatter: ...
    def fieldFormatter(self, id: str) -> QgsFieldFormatter: ...
    @typing.overload
    def removeFieldFormatter(self, formatter: QgsFieldFormatter) -> None: ...
    @typing.overload
    def removeFieldFormatter(self, id: str) -> None: ...
    def addFieldFormatter(self, formatter: QgsFieldFormatter) -> None: ...


class QgsFieldModel(QtCore.QAbstractItemModel):

    class FieldRoles(int):
        FieldNameRole = ... # type: QgsFieldModel.FieldRoles
        FieldIndexRole = ... # type: QgsFieldModel.FieldRoles
        ExpressionRole = ... # type: QgsFieldModel.FieldRoles
        IsExpressionRole = ... # type: QgsFieldModel.FieldRoles
        ExpressionValidityRole = ... # type: QgsFieldModel.FieldRoles
        FieldTypeRole = ... # type: QgsFieldModel.FieldRoles
        FieldOriginRole = ... # type: QgsFieldModel.FieldRoles
        IsEmptyRole = ... # type: QgsFieldModel.FieldRoles
        EditorWidgetType = ... # type: QgsFieldModel.FieldRoles
        JoinedFieldIsEditable = ... # type: QgsFieldModel.FieldRoles
        FieldIsWidgetEditable = ... # type: QgsFieldModel.FieldRoles

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def updateModel(self) -> None: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def fields(self) -> 'QgsFields': ...
    def setFields(self, fields: 'QgsFields') -> None: ...
    @staticmethod
    def fieldToolTipExtended(field: QgsField, layer: QgsVectorLayer) -> str: ...
    @staticmethod
    def fieldToolTip(field: QgsField) -> str: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def layer(self) -> QgsVectorLayer: ...
    def removeExpression(self) -> None: ...
    def setExpression(self, expression: str) -> None: ...
    def isField(self, expression: str) -> bool: ...
    def allowEmptyFieldName(self) -> bool: ...
    def setAllowEmptyFieldName(self, allowEmpty: bool) -> None: ...
    def allowExpression(self) -> bool: ...
    def setAllowExpression(self, allowExpression: bool) -> None: ...
    def indexFromName(self, fieldName: str) -> QtCore.QModelIndex: ...


class QgsFieldProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        String = ... # type: QgsFieldProxyModel.Filter
        Int = ... # type: QgsFieldProxyModel.Filter
        LongLong = ... # type: QgsFieldProxyModel.Filter
        Double = ... # type: QgsFieldProxyModel.Filter
        Numeric = ... # type: QgsFieldProxyModel.Filter
        Date = ... # type: QgsFieldProxyModel.Filter
        Time = ... # type: QgsFieldProxyModel.Filter
        HideReadOnly = ... # type: QgsFieldProxyModel.Filter
        DateTime = ... # type: QgsFieldProxyModel.Filter
        AllTypes = ... # type: QgsFieldProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFieldProxyModel.Filters') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFieldProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def filters(self) -> 'QgsFieldProxyModel.Filters': ...
    def setFilters(self, filters: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel': ...
    def sourceFieldModel(self) -> QgsFieldModel: ...


class QgsFields(PyQt5.sip.wrapper):

    class FieldOrigin(int):
        OriginUnknown = ... # type: QgsFields.FieldOrigin
        OriginProvider = ... # type: QgsFields.FieldOrigin
        OriginJoin = ... # type: QgsFields.FieldOrigin
        OriginEdit = ... # type: QgsFields.FieldOrigin
        OriginExpression = ... # type: QgsFields.FieldOrigin

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsFields') -> None: ...

    def __setitem__(self, key: int, field: QgsField) -> None: ...
    @staticmethod
    def iconForFieldType(type: QtCore.QVariant.Type, subType: QtCore.QVariant.Type = ..., typeString: str = ...) -> QtGui.QIcon: ...
    def iconForField(self, fieldIdx: int, considerOrigin: bool = ...) -> QtGui.QIcon: ...
    def toList(self) -> typing.Any: ...
    def allAttributesList(self) -> typing.List[int]: ...
    def lookupField(self, fieldName: str) -> int: ...
    def indexOf(self, fieldName: str) -> int: ...
    def indexFromName(self, fieldName: str) -> int: ...
    def fieldOriginIndex(self, fieldIdx: int) -> int: ...
    def fieldOrigin(self, fieldIdx: int) -> 'QgsFields.FieldOrigin': ...
    @typing.overload
    def field(self, fieldIdx: int) -> QgsField: ...
    @typing.overload
    def field(self, name: str) -> QgsField: ...
    def at(self, i: int) -> QgsField: ...
    @typing.overload
    def __getitem__(self, i: int) -> QgsField: ...
    @typing.overload
    def __getitem__(self, name: str) -> QgsField: ...
    def exists(self, i: int) -> bool: ...
    def names(self) -> typing.List[str]: ...
    def size(self) -> int: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def count(self) -> int: ...
    def isEmpty(self) -> bool: ...
    def extend(self, other: 'QgsFields') -> None: ...
    def remove(self, fieldIdx: int) -> None: ...
    def appendExpressionField(self, field: QgsField, originIndex: int) -> bool: ...
    def rename(self, fieldIdx: int, name: str) -> bool: ...
    def append(self, field: QgsField, origin: 'QgsFields.FieldOrigin' = ..., originIndex: int = ...) -> bool: ...
    def clear(self) -> None: ...


class QgsFileFilterGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFileFilterGenerator') -> None: ...

    def createFileFilter(self) -> str: ...


class QgsFileUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFileUtils') -> None: ...

    @staticmethod
    def uniquePath(path: str) -> str: ...
    @staticmethod
    def splitPathToComponents(path: str) -> typing.List[str]: ...
    @staticmethod
    def renameDataset(oldPath: str, newPath: str, flags: typing.Union[Qgis.FileOperationFlags, Qgis.FileOperationFlag] = ...) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def sidecarFilesForPath(path: str) -> typing.Set[str]: ...
    @staticmethod
    def pathIsSlowDevice(path: str) -> bool: ...
    @staticmethod
    def driveType(path: str) -> Qgis.DriveType: ...
    @staticmethod
    def findFile(file: str, basepath: str = ..., maxClimbs: int = ..., searchCeiling: int = ..., currentDir: str = ...) -> typing.List[str]: ...
    @staticmethod
    def findClosestExistingPath(path: str) -> str: ...
    @staticmethod
    def stringToSafeFilename(string: str) -> str: ...
    @staticmethod
    def addExtensionFromFilter(fileName: str, filter: str) -> str: ...
    @staticmethod
    def ensureFileNameHasExtension(fileName: str, extensions: typing.Iterable[str]) -> str: ...
    @staticmethod
    def fileMatchesFilter(fileName: str, filter: str) -> bool: ...
    @staticmethod
    def wildcardsFromFilter(filter: str) -> str: ...
    @staticmethod
    def extensionsFromFilter(filter: str) -> typing.List[str]: ...
    @staticmethod
    def representFileSize(bytes: int) -> str: ...


class QgsFontUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFontUtils') -> None: ...

    @staticmethod
    def recentFontFamilies() -> typing.List[str]: ...
    @staticmethod
    def addRecentFontFamily(family: str) -> None: ...
    @staticmethod
    def asCSS(font: QtGui.QFont, pointToPixelMultiplier: float = ...) -> str: ...
    @staticmethod
    def untranslateNamedStyle(namedStyle: str) -> str: ...
    @staticmethod
    def translateNamedStyle(namedStyle: str) -> str: ...
    @staticmethod
    def fromMimeData(data: QtCore.QMimeData) -> typing.Tuple[QtGui.QFont, bool]: ...
    @staticmethod
    def toMimeData(font: QtGui.QFont) -> QtCore.QMimeData: ...
    @staticmethod
    def setFromXmlChildNode(font: QtGui.QFont, element: QtXml.QDomElement, childNode: str) -> bool: ...
    @staticmethod
    def setFromXmlElement(font: QtGui.QFont, element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def toXmlElement(font: QtGui.QFont, document: QtXml.QDomDocument, elementName: str) -> QtXml.QDomElement: ...
    @staticmethod
    def getStandardTestFont(style: str = ..., pointsize: int = ...) -> QtGui.QFont: ...
    @staticmethod
    def loadStandardTestFonts(loadstyles: typing.Iterable[str]) -> bool: ...
    @staticmethod
    def standardTestFontFamily() -> str: ...
    @staticmethod
    def updateFontViaStyle(f: QtGui.QFont, fontstyle: str, fallback: bool = ...) -> bool: ...
    @staticmethod
    def fontFamilyMatchOnSystem(family: str, chosen: typing.Optional[str] = ...) -> typing.Tuple[bool, bool]: ...
    @staticmethod
    def resolveFontStyleName(font: QtGui.QFont) -> str: ...
    @staticmethod
    def fontFamilyHasStyle(family: str, style: str) -> bool: ...
    @staticmethod
    def fontFamilyOnSystem(family: str) -> bool: ...
    @staticmethod
    def fontMatchOnSystem(f: QtGui.QFont) -> bool: ...


class QgsGeometryOptions(QtCore.QObject):

    def __init__(self) -> None: ...

    def geometryPrecisionChanged(self) -> None: ...
    def removeDuplicateNodesChanged(self) -> None: ...
    def geometryChecksChanged(self) -> None: ...
    def checkConfigurationChanged(self) -> None: ...
    def readXml(self, node: QtXml.QDomNode) -> None: ...
    def writeXml(self, node: QtXml.QDomNode) -> None: ...
    def setCheckConfiguration(self, checkId: str, checkConfiguration: typing.Dict[str, typing.Any]) -> None: ...
    def checkConfiguration(self, checkId: str) -> typing.Dict[str, typing.Any]: ...
    def setGeometryChecks(self, geometryChecks: typing.Iterable[str]) -> None: ...
    def geometryChecks(self) -> typing.List[str]: ...
    def apply(self, geometry: 'QgsGeometry') -> None: ...
    def isActive(self) -> bool: ...
    def setGeometryPrecision(self, value: float) -> None: ...
    def geometryPrecision(self) -> float: ...
    def setRemoveDuplicateNodes(self, value: bool) -> None: ...
    def removeDuplicateNodes(self) -> bool: ...


class QgsAbstractGeometrySimplifier(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractGeometrySimplifier') -> None: ...

    @typing.overload
    @staticmethod
    def isGeneralizableByDeviceBoundingBox(envelope: 'QgsRectangle', mapToPixelTol: float = ...) -> bool: ...
    @typing.overload
    @staticmethod
    def isGeneralizableByDeviceBoundingBox(points: typing.Iterable[typing.Union[QtCore.QPointF, QtCore.QPoint]], mapToPixelTol: float = ...) -> bool: ...
    @typing.overload
    def simplify(self, geometry: 'QgsGeometry') -> 'QgsGeometry': ...
    @typing.overload
    def simplify(self, geometry: 'QgsAbstractGeometry') -> 'QgsAbstractGeometry': ...


class QgsTopologyPreservingSimplifier(QgsAbstractGeometrySimplifier):

    @typing.overload
    def __init__(self, tolerance: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTopologyPreservingSimplifier') -> None: ...

    @typing.overload
    def simplify(self, geometry: 'QgsGeometry') -> 'QgsGeometry': ...
    @typing.overload
    def simplify(self, geometry: 'QgsAbstractGeometry') -> 'QgsAbstractGeometry': ...


class QgsGeometryValidator(QtCore.QThread):

    def __init__(self, geometry: 'QgsGeometry', errors: typing.Optional[typing.Iterable['QgsGeometry.Error']] = ..., method: Qgis.GeometryValidationEngine = ...) -> None: ...

    def addError(self, a0: 'QgsGeometry.Error') -> None: ...
    def validationFinished(self, summary: str) -> None: ...
    def errorFound(self, error: 'QgsGeometry.Error') -> None: ...
    @staticmethod
    def validateGeometry(geometry: 'QgsGeometry', method: Qgis.GeometryValidationEngine = ...) -> typing.List['QgsGeometry.Error']: ...
    def stop(self) -> None: ...
    def run(self) -> None: ...


class QgsGml(QtCore.QObject):

    def __init__(self, typeName: str, geometryAttribute: str, fields: QgsFields) -> None: ...

    def dataProgressAndSteps(self, progress: int, totalSteps: int) -> None: ...
    def totalStepsUpdate(self, totalSteps: int) -> None: ...
    def dataReadProgress(self, progress: int) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def idsMap(self) -> typing.Any: ...
    def featuresMap(self) -> typing.Any: ...
    def getFeatures(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], extent: typing.Optional['QgsRectangle'] = ...) -> typing.Tuple[int, Qgis.WkbType]: ...
    def getFeaturesUri(self, uri: str, extent: typing.Optional['QgsRectangle'] = ..., userName: str = ..., password: str = ..., authcfg: str = ...) -> typing.Tuple[int, Qgis.WkbType]: ...


class QgsGmlFeatureClass(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, path: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGmlFeatureClass') -> None: ...

    def geometryAttributes(self) -> typing.List[str]: ...
    def path(self) -> str: ...
    def fieldIndex(self, name: str) -> int: ...
    def fields(self) -> typing.Any: ...


class QgsGmlSchema(QtCore.QObject):

    def __init__(self) -> None: ...

    def error(self) -> QgsError: ...
    def geometryAttributes(self, typeName: str) -> typing.List[str]: ...
    def fields(self, typeName: str) -> typing.Any: ...
    def typeNames(self) -> typing.List[str]: ...
    def guessSchema(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> bool: ...
    def parseXSD(self, xml: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> bool: ...


class QgsGroupLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsGroupLayer.LayerOptions') -> None: ...

    def __init__(self, name: str, options: 'QgsGroupLayer.LayerOptions') -> None: ...

    def prepareLayersForRemovalFromGroup(self) -> None: ...
    def setPaintEffect(self, effect: 'QgsPaintEffect') -> None: ...
    def paintEffect(self) -> 'QgsPaintEffect': ...
    def childLayers(self) -> typing.List[QgsMapLayer]: ...
    def setChildLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def htmlMetadata(self) -> str: ...
    def dataProvider(self) -> 'QgsDataProvider': ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, a3: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: 'QgsReadWriteContext') -> bool: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: 'QgsRenderContext') -> 'QgsMapLayerRenderer': ...
    def clone(self) -> 'QgsGroupLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsHistogram(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHistogram') -> None: ...

    def counts(self, bins: int) -> typing.List[int]: ...
    def binEdges(self, bins: int) -> typing.List[float]: ...
    def optimalNumberBins(self) -> int: ...
    def optimalBinWidth(self) -> float: ...
    @typing.overload
    def setValues(self, values: typing.Iterable[float]) -> None: ...
    @typing.overload
    def setValues(self, layer: QgsVectorLayer, fieldOrExpression: str, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...


class QgsHstoreUtils(PyQt5.sip.simplewrapper):

    def build(self, map: typing.Dict[str, typing.Any]) -> str: ...
    def parse(self, string: str) -> typing.Dict[str, typing.Any]: ...


class QgsHtmlUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHtmlUtils') -> None: ...

    @staticmethod
    def buildBulletList(values: typing.Iterable[str]) -> str: ...


class QgsIconUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsIconUtils') -> None: ...

    @staticmethod
    def iconForLayerType(type: Qgis.LayerType) -> QtGui.QIcon: ...
    @staticmethod
    def iconForLayer(layer: QgsMapLayer) -> QtGui.QIcon: ...
    @staticmethod
    def iconPointCloud() -> QtGui.QIcon: ...
    @staticmethod
    def iconVectorTile() -> QtGui.QIcon: ...
    @staticmethod
    def iconMesh() -> QtGui.QIcon: ...
    @staticmethod
    def iconDefaultLayer() -> QtGui.QIcon: ...
    @staticmethod
    def iconRaster() -> QtGui.QIcon: ...
    @staticmethod
    def iconTable() -> QtGui.QIcon: ...
    @staticmethod
    def iconGeometryCollection() -> QtGui.QIcon: ...
    @staticmethod
    def iconPolygon() -> QtGui.QIcon: ...
    @staticmethod
    def iconLine() -> QtGui.QIcon: ...
    @staticmethod
    def iconPoint() -> QtGui.QIcon: ...
    @staticmethod
    def iconForGeometryType(typeGroup: Qgis.GeometryType) -> QtGui.QIcon: ...
    @staticmethod
    def iconForWkbType(type: Qgis.WkbType) -> QtGui.QIcon: ...


class QgsIdentifyContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsIdentifyContext') -> None: ...

    def isTemporal(self) -> bool: ...
    def temporalRange(self) -> 'QgsDateTimeRange': ...
    def setTemporalRange(self, range: 'QgsDateTimeRange') -> None: ...


class QgsImageCache(QgsAbstractContentCacheBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def remoteImageFetched(self, url: str) -> None: ...
    def prepareAnimation(self, path: str) -> None: ...
    def nextFrameDelay(self, path: str, currentFrame: int = ..., blocking: bool = ...) -> int: ...
    def totalFrameCount(self, path: str, blocking: bool = ...) -> int: ...
    def originalSize(self, path: str, blocking: bool = ...) -> QtCore.QSize: ...
    def pathAsImage(self, path: str, size: QtCore.QSize, keepAspectRatio: bool, opacity: float, blocking: bool = ..., targetDpi: float = ..., frameNumber: int = ...) -> typing.Tuple[QtGui.QImage, bool]: ...
    def maximumSize(self) -> int: ...


class QgsInterval(PyQt5.sip.wrapper):

    DAY = ... # type: int
    HOUR = ... # type: int
    MINUTE = ... # type: int
    MONTHS = ... # type: int
    WEEKS = ... # type: int
    YEARS = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, seconds: float) -> None: ...
    @typing.overload
    def __init__(self, duration: float, unit: Qgis.TemporalUnit) -> None: ...
    @typing.overload
    def __init__(self, years: float, months: float, weeks: float, days: float, hours: float, minutes: float, seconds: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsInterval') -> None: ...

    @staticmethod
    def fromString(string: str) -> 'QgsInterval': ...
    def originalUnit(self) -> Qgis.TemporalUnit: ...
    def originalDuration(self) -> float: ...
    def setValid(self, valid: bool) -> None: ...
    def isValid(self) -> bool: ...
    def setSeconds(self, seconds: float) -> None: ...
    def seconds(self) -> float: ...
    def setMinutes(self, minutes: float) -> None: ...
    def minutes(self) -> float: ...
    def setHours(self, hours: float) -> None: ...
    def hours(self) -> float: ...
    def setDays(self, days: float) -> None: ...
    def days(self) -> float: ...
    def setWeeks(self, weeks: float) -> None: ...
    def weeks(self) -> float: ...
    def setMonths(self, months: float) -> None: ...
    def months(self) -> float: ...
    def setYears(self, years: float) -> None: ...
    def years(self) -> float: ...


class QgsJsonExporter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, vectorLayer: typing.Optional[QgsVectorLayer] = ..., precision: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsJsonExporter') -> None: ...

    def setDestinationCrs(self, destinationCrs: 'QgsCoordinateReferenceSystem') -> None: ...
    def exportFeatures(self, features: typing.Iterable[QgsFeature], indent: int = ...) -> str: ...
    def exportFeature(self, feature: QgsFeature, extraProperties: typing.Dict[str, typing.Any] = ..., id: typing.Any = ..., indent: int = ...) -> str: ...
    def excludedAttributes(self) -> typing.List[int]: ...
    def setExcludedAttributes(self, attributes: typing.Iterable[int]) -> None: ...
    def attributes(self) -> typing.List[int]: ...
    def setAttributes(self, attributes: typing.Iterable[int]) -> None: ...
    def setTransformGeometries(self, activate: bool) -> None: ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setSourceCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def vectorLayer(self) -> QgsVectorLayer: ...
    def setVectorLayer(self, vectorLayer: QgsVectorLayer) -> None: ...
    def attributeDisplayName(self) -> bool: ...
    def setAttributeDisplayName(self, displayName: bool) -> None: ...
    def includeRelated(self) -> bool: ...
    def setIncludeRelated(self, includeRelated: bool) -> None: ...
    def includeAttributes(self) -> bool: ...
    def setIncludeAttributes(self, includeAttributes: bool) -> None: ...
    def includeGeometry(self) -> bool: ...
    def setIncludeGeometry(self, includeGeometry: bool) -> None: ...
    def precision(self) -> int: ...
    def setPrecision(self, precision: int) -> None: ...


class QgsJsonUtils(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsJsonUtils') -> None: ...

    @staticmethod
    def parseArray(json: str, type: QtCore.QVariant.Type = ...) -> typing.List[typing.Any]: ...
    @staticmethod
    def exportAttributes(feature: QgsFeature, layer: typing.Optional[QgsVectorLayer] = ..., attributeWidgetCaches: typing.Iterable[typing.Any] = ...) -> str: ...
    @staticmethod
    def encodeValue(value: typing.Any) -> str: ...
    @staticmethod
    def stringToFields(string: str, encoding: typing.Optional[QtCore.QTextCodec] = ...) -> QgsFields: ...
    @staticmethod
    def stringToFeatureList(string: str, fields: QgsFields = ..., encoding: typing.Optional[QtCore.QTextCodec] = ...) -> typing.List[QgsFeature]: ...


class QgsLayerDefinition(PyQt5.sip.wrapper):

    class DependencySorter(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, doc: QtXml.QDomDocument) -> None: ...
        @typing.overload
        def __init__(self, fileName: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerDefinition.DependencySorter') -> None: ...

        def isLayerDependent(self, layerId: str) -> bool: ...
        def hasMissingDependency(self) -> bool: ...
        def hasCycle(self) -> bool: ...
        def sortedLayerIds(self) -> typing.List[str]: ...
        def sortedLayerNodes(self) -> typing.List[QtXml.QDomNode]: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerDefinition') -> None: ...

    @typing.overload
    @staticmethod
    def loadLayerDefinitionLayers(document: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def loadLayerDefinitionLayers(qlrfile: str) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def exportLayerDefinitionLayers(layers: typing.Iterable[QgsMapLayer], context: 'QgsReadWriteContext') -> QtXml.QDomDocument: ...
    @typing.overload
    @staticmethod
    def exportLayerDefinition(path: str, selectedTreeNodes: typing.Iterable['QgsLayerTreeNode']) -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def exportLayerDefinition(path: str, selectedTreeNodes: typing.Iterable['QgsLayerTreeNode'], pathType: Qgis.FilePathType) -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def exportLayerDefinition(doc: QtXml.QDomDocument, selectedTreeNodes: typing.Iterable['QgsLayerTreeNode'], context: 'QgsReadWriteContext') -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def loadLayerDefinition(path: str, project: 'QgsProject', rootGroup: 'QgsLayerTreeGroup') -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def loadLayerDefinition(doc: QtXml.QDomDocument, project: 'QgsProject', rootGroup: 'QgsLayerTreeGroup', context: 'QgsReadWriteContext') -> typing.Tuple[bool, str]: ...


class QgsLayerNotesUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerNotesUtils') -> None: ...

    @staticmethod
    def removeNotes(layer: QgsMapLayer) -> None: ...
    @staticmethod
    def layerHasNotes(layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def setLayerNotes(layer: QgsMapLayer, notes: str) -> None: ...
    @staticmethod
    def layerNotes(layer: QgsMapLayer) -> str: ...


class QgsLegendRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, legendModel: 'QgsLayerTreeModel', settings: 'QgsLegendSettings') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLegendRenderer') -> None: ...

    @staticmethod
    def nodeLegendStyle(node: 'QgsLayerTreeNode', model: 'QgsLayerTreeModel') -> 'QgsLegendStyle.Style': ...
    @staticmethod
    def setNodeLegendStyle(node: 'QgsLayerTreeNode', style: 'QgsLegendStyle.Style') -> None: ...
    def exportLegendToJson(self, context: 'QgsRenderContext') -> typing.Dict[str, QtCore.QJsonValue]: ...
    @typing.overload
    def drawLegend(self, painter: QtGui.QPainter) -> None: ...
    @typing.overload
    def drawLegend(self, context: 'QgsRenderContext') -> None: ...
    def legendSize(self) -> QtCore.QSizeF: ...
    def setLegendSize(self, s: QtCore.QSizeF) -> None: ...
    def minimumSize(self, renderContext: typing.Optional['QgsRenderContext'] = ...) -> QtCore.QSizeF: ...


class QgsLegendSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLegendSettings') -> None: ...

    def fontDescentMillimeters(self, font: QtGui.QFont) -> float: ...
    def fontAscentMillimeters(self, font: QtGui.QFont) -> float: ...
    def fontHeightCharacterMM(self, font: QtGui.QFont, c: str) -> float: ...
    def textWidthMillimeters(self, font: QtGui.QFont, text: str) -> float: ...
    def pixelFontSize(self, pointSize: float) -> float: ...
    def scaledFontPixelSize(self, font: QtGui.QFont) -> QtGui.QFont: ...
    @typing.overload
    def drawText(self, p: QtGui.QPainter, x: float, y: float, text: str, font: QtGui.QFont) -> None: ...
    @typing.overload
    def drawText(self, p: QtGui.QPainter, rect: QtCore.QRectF, text: str, font: QtGui.QFont, halignment: QtCore.Qt.AlignmentFlag = ..., valignment: QtCore.Qt.AlignmentFlag = ..., flags: int = ...) -> None: ...
    def splitStringForWrapping(self, stringToSplt: str) -> typing.List[str]: ...
    def evaluateItemText(self, text: str, context: QgsExpressionContext) -> typing.List[str]: ...
    def setDpi(self, dpi: int) -> None: ...
    def dpi(self) -> int: ...
    def setMapUnitsPerPixel(self, mapUnitsPerPixel: float) -> None: ...
    def mapUnitsPerPixel(self) -> float: ...
    def setMapScale(self, scale: float) -> None: ...
    def mapScale(self) -> float: ...
    def setUseAdvancedEffects(self, use: bool) -> None: ...
    def useAdvancedEffects(self) -> bool: ...
    def setMmPerMapUnit(self, mmPerMapUnit: float) -> None: ...
    def mmPerMapUnit(self) -> float: ...
    def setLineSpacing(self, s: float) -> None: ...
    def lineSpacing(self) -> float: ...
    def setWmsLegendSize(self, s: QtCore.QSizeF) -> None: ...
    def wmsLegendSize(self) -> QtCore.QSizeF: ...
    def setRasterStrokeWidth(self, width: float) -> None: ...
    def rasterStrokeWidth(self) -> float: ...
    def setRasterStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def rasterStrokeColor(self) -> QtGui.QColor: ...
    def setDrawRasterStroke(self, enabled: bool) -> None: ...
    def drawRasterStroke(self) -> bool: ...
    def symbolAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setSymbolAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def setMinimumSymbolSize(self, size: float) -> None: ...
    def minimumSymbolSize(self) -> float: ...
    def setMaximumSymbolSize(self, size: float) -> None: ...
    def maximumSymbolSize(self) -> float: ...
    def setSymbolSize(self, s: QtCore.QSizeF) -> None: ...
    def symbolSize(self) -> QtCore.QSizeF: ...
    def setLayerFontColor(self, fontColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def layerFontColor(self) -> QtGui.QColor: ...
    def setFontColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setEqualColumnWidth(self, s: bool) -> None: ...
    def equalColumnWidth(self) -> bool: ...
    def setSplitLayer(self, s: bool) -> None: ...
    def splitLayer(self) -> bool: ...
    def setColumnCount(self, c: int) -> None: ...
    def columnCount(self) -> int: ...
    def setColumnSpace(self, s: float) -> None: ...
    def columnSpace(self) -> float: ...
    def wrapChar(self) -> str: ...
    def setWrapChar(self, t: str) -> None: ...
    def setBoxSpace(self, s: float) -> None: ...
    def boxSpace(self) -> float: ...
    def setStyle(self, s: 'QgsLegendStyle.Style', style: 'QgsLegendStyle') -> None: ...
    def style(self, s: 'QgsLegendStyle.Style') -> 'QgsLegendStyle': ...
    def setTitleAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def titleAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def title(self) -> str: ...
    def setTitle(self, t: str) -> None: ...


class QgsLegendStyle(PyQt5.sip.wrapper):

    class Side(int):
        Top = ... # type: QgsLegendStyle.Side
        Bottom = ... # type: QgsLegendStyle.Side
        Left = ... # type: QgsLegendStyle.Side
        Right = ... # type: QgsLegendStyle.Side

    class Style(int):
        Undefined = ... # type: QgsLegendStyle.Style
        Hidden = ... # type: QgsLegendStyle.Style
        Title = ... # type: QgsLegendStyle.Style
        Group = ... # type: QgsLegendStyle.Style
        Subgroup = ... # type: QgsLegendStyle.Style
        Symbol = ... # type: QgsLegendStyle.Style
        SymbolLabel = ... # type: QgsLegendStyle.Style

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLegendStyle') -> None: ...

    @staticmethod
    def styleLabel(s: 'QgsLegendStyle.Style') -> str: ...
    @staticmethod
    def styleFromName(styleName: str) -> 'QgsLegendStyle.Style': ...
    @staticmethod
    def styleName(s: 'QgsLegendStyle.Style') -> str: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext' = ...) -> None: ...
    def writeXml(self, name: str, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext' = ...) -> None: ...
    def setIndent(self, indent: float) -> None: ...
    def indent(self) -> float: ...
    def setAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def alignment(self) -> QtCore.Qt.Alignment: ...
    @typing.overload
    def setMargin(self, side: 'QgsLegendStyle.Side', margin: float) -> None: ...
    @typing.overload
    def setMargin(self, margin: float) -> None: ...
    def margin(self, side: 'QgsLegendStyle.Side') -> float: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...


class QgsLocalDefaultSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocalDefaultSettings') -> None: ...

    @staticmethod
    def geographicCoordinateFormat() -> 'QgsGeographicCoordinateNumericFormat': ...
    @staticmethod
    def setGeographicCoordinateFormat(format: 'QgsGeographicCoordinateNumericFormat') -> None: ...
    @staticmethod
    def bearingFormat() -> 'QgsBearingNumericFormat': ...
    @staticmethod
    def setBearingFormat(format: 'QgsBearingNumericFormat') -> None: ...


class QgsLocalizedDataPathRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def unregisterPath(self, path: str) -> None: ...
    def registerPath(self, path: str, position: int = ...) -> None: ...
    def paths(self) -> typing.List[str]: ...
    def localizedPath(self, globalPath: str) -> str: ...
    def globalPath(self, localizedPath: str) -> str: ...


class QgsLogger(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLogger') -> None: ...

    @staticmethod
    def logFile() -> str: ...
    @staticmethod
    def logMessageToFile(message: str) -> None: ...
    @staticmethod
    def debugLevel() -> int: ...
    @staticmethod
    def fatal(msg: str) -> None: ...
    @staticmethod
    def critical(msg: str) -> None: ...
    @staticmethod
    def warning(msg: str) -> None: ...
    @typing.overload
    @staticmethod
    def debug(msg: str, debuglevel: int = ..., file: typing.Optional[str] = ..., function: typing.Optional[str] = ..., line: int = ...) -> None: ...
    @typing.overload
    @staticmethod
    def debug(var: str, val: int, debuglevel: int = ..., file: typing.Optional[str] = ..., function: typing.Optional[str] = ..., line: int = ...) -> None: ...


class QgsScopeLogger(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, file: str, func: str, line: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScopeLogger') -> None: ...


class QgsMapClippingRegion(PyQt5.sip.wrapper):

    class FeatureClippingType(int):
        ClipToIntersection = ... # type: QgsMapClippingRegion.FeatureClippingType
        ClipPainterOnly = ... # type: QgsMapClippingRegion.FeatureClippingType
        NoClipping = ... # type: QgsMapClippingRegion.FeatureClippingType

    @typing.overload
    def __init__(self, geometry: 'QgsGeometry') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapClippingRegion') -> None: ...

    def appliesToLayer(self, layer: QgsMapLayer) -> bool: ...
    def restrictedLayers(self) -> typing.List[QgsMapLayer]: ...
    def setRestrictedLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def setRestrictToLayers(self, enabled: bool) -> None: ...
    def restrictToLayers(self) -> bool: ...
    def setFeatureClip(self, type: 'QgsMapClippingRegion.FeatureClippingType') -> None: ...
    def featureClip(self) -> 'QgsMapClippingRegion.FeatureClippingType': ...
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...


class QgsMapClippingUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapClippingUtils') -> None: ...

    @staticmethod
    def calculateLabelIntersectionGeometry(regions: typing.Iterable[QgsMapClippingRegion], context: 'QgsRenderContext') -> typing.Tuple['QgsGeometry', bool]: ...
    @staticmethod
    def calculatePainterClipRegion(regions: typing.Iterable[QgsMapClippingRegion], context: 'QgsRenderContext', layerType: Qgis.LayerType) -> typing.Tuple[QtGui.QPainterPath, bool]: ...
    @staticmethod
    def calculateFeatureIntersectionGeometry(regions: typing.Iterable[QgsMapClippingRegion], context: 'QgsRenderContext') -> typing.Tuple['QgsGeometry', bool]: ...
    @staticmethod
    def calculateFeatureRequestGeometry(regions: typing.Iterable[QgsMapClippingRegion], context: 'QgsRenderContext') -> typing.Tuple['QgsGeometry', bool]: ...
    @staticmethod
    def collectClippingRegionsForLayer(context: 'QgsRenderContext', layer: QgsMapLayer) -> typing.List[QgsMapClippingRegion]: ...


class QgsMapDecoration(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapDecoration') -> None: ...

    def setDisplayName(self, name: str) -> None: ...
    def displayName(self) -> str: ...
    def render(self, mapSettings: 'QgsMapSettings', context: 'QgsRenderContext') -> None: ...


class QgsMapHitTest(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, settings: 'QgsMapSettings', polygon: 'QgsGeometry' = ..., layerFilterExpression: typing.Dict[str, str] = ...) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsMapSettings', layerFilterExpression: typing.Dict[str, str]) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsLayerTreeFilterSettings') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapHitTest') -> None: ...

    def legendKeyVisible(self, ruleKey: str, layer: QgsVectorLayer) -> bool: ...
    def symbolVisible(self, symbol: 'QgsSymbol', layer: QgsVectorLayer) -> bool: ...
    def results(self) -> typing.Any: ...
    def run(self) -> None: ...


class QgsMapHitTestTask(QgsTask):

    def __init__(self, settings: 'QgsLayerTreeFilterSettings') -> None: ...

    def run(self) -> bool: ...
    def cancel(self) -> None: ...
    def results(self) -> typing.Any: ...


class QgsMapLayerDependency(PyQt5.sip.wrapper):

    class Origin(int):
        FromProvider = ... # type: QgsMapLayerDependency.Origin
        FromUser = ... # type: QgsMapLayerDependency.Origin

    class Type(int):
        PresenceDependency = ... # type: QgsMapLayerDependency.Type
        DataDependency = ... # type: QgsMapLayerDependency.Type

    @typing.overload
    def __init__(self, layerId: str, type: 'QgsMapLayerDependency.Type' = ..., origin: 'QgsMapLayerDependency.Origin' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerDependency') -> None: ...

    def __hash__(self) -> int: ...
    def layerId(self) -> str: ...
    def origin(self) -> 'QgsMapLayerDependency.Origin': ...
    def type(self) -> 'QgsMapLayerDependency.Type': ...


class QgsMapLayerFactory(PyQt5.sip.wrapper):

    class LayerOptions(PyQt5.sip.wrapper):

        loadAllStoredStyles = ... # type: bool
        loadDefaultStyle = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayerFactory.LayerOptions') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerFactory') -> None: ...

    @staticmethod
    def createLayer(uri: str, name: str, type: Qgis.LayerType, options: 'QgsMapLayerFactory.LayerOptions', provider: str = ...) -> QgsMapLayer: ...
    @staticmethod
    def typeToString(type: Qgis.LayerType) -> str: ...
    @staticmethod
    def typeFromString(string: str) -> typing.Tuple[Qgis.LayerType, bool]: ...


class QgsMapLayerLegend(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def itemsChanged(self) -> None: ...
    @staticmethod
    def defaultPointCloudLegend(layer: 'QgsPointCloudLayer') -> 'QgsMapLayerLegend': ...
    @staticmethod
    def defaultMeshLegend(ml: 'QgsMeshLayer') -> 'QgsMapLayerLegend': ...
    @staticmethod
    def defaultRasterLegend(rl: 'QgsRasterLayer') -> 'QgsMapLayerLegend': ...
    @staticmethod
    def defaultVectorLegend(vl: QgsVectorLayer) -> 'QgsMapLayerLegend': ...
    def createLayerTreeModelLegendNodes(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...


class QgsMapLayerLegendUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerLegendUtils') -> None: ...

    @staticmethod
    def applyLayerNodeProperties(nodeLayer: 'QgsLayerTreeLayer', nodes: typing.Iterable['QgsLayerTreeModelLegendNode']) -> None: ...
    @staticmethod
    def legendNodeColumnBreak(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> bool: ...
    @staticmethod
    def setLegendNodeColumnBreak(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, columnBreakBeforeNode: bool) -> None: ...
    @staticmethod
    def legendNodeColorRampSettings(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> 'QgsColorRampLegendNodeSettings': ...
    @staticmethod
    def setLegendNodeColorRampSettings(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, settings: 'QgsColorRampLegendNodeSettings') -> None: ...
    @staticmethod
    def legendNodeCustomSymbol(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> 'QgsSymbol': ...
    @staticmethod
    def setLegendNodeCustomSymbol(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, symbol: 'QgsSymbol') -> None: ...
    @staticmethod
    def legendNodeSymbolSize(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> QtCore.QSizeF: ...
    @staticmethod
    def setLegendNodeSymbolSize(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def legendNodePatchShape(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> 'QgsLegendPatchShape': ...
    @staticmethod
    def setLegendNodePatchShape(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, shape: 'QgsLegendPatchShape') -> None: ...
    @staticmethod
    def hasLegendNodeUserLabel(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> bool: ...
    @staticmethod
    def legendNodeUserLabel(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int) -> str: ...
    @staticmethod
    def setLegendNodeUserLabel(nodeLayer: 'QgsLayerTreeLayer', originalIndex: int, newLabel: str) -> None: ...
    @staticmethod
    def hasLegendNodeOrder(nodeLayer: 'QgsLayerTreeLayer') -> bool: ...
    @staticmethod
    def legendNodeOrder(nodeLayer: 'QgsLayerTreeLayer') -> typing.List[int]: ...
    @staticmethod
    def setLegendNodeOrder(nodeLayer: 'QgsLayerTreeLayer', order: typing.Iterable[int]) -> None: ...


class QgsDefaultVectorLayerLegend(QgsMapLayerLegend):

    def __init__(self, vl: QgsVectorLayer) -> None: ...

    def writeXml(self, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def createLayerTreeModelLegendNodes(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def setTextOnSymbolContent(self, content: typing.Dict[str, str]) -> None: ...
    def textOnSymbolContent(self) -> typing.Dict[str, str]: ...
    def setTextOnSymbolTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textOnSymbolTextFormat(self) -> 'QgsTextFormat': ...
    def setShowLabelLegend(self, enabled: bool) -> None: ...
    def showLabelLegend(self) -> bool: ...
    def setTextOnSymbolEnabled(self, enabled: bool) -> None: ...
    def textOnSymbolEnabled(self) -> bool: ...


class QgsDefaultRasterLayerLegend(QgsMapLayerLegend):

    def __init__(self, rl: 'QgsRasterLayer') -> None: ...

    def createLayerTreeModelLegendNodes(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...


class QgsDefaultMeshLayerLegend(QgsMapLayerLegend):

    def __init__(self, ml: 'QgsMeshLayer') -> None: ...

    def createLayerTreeModelLegendNodes(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...


class QgsDefaultPointCloudLayerLegend(QgsMapLayerLegend):

    def __init__(self, layer: 'QgsPointCloudLayer') -> None: ...

    def createLayerTreeModelLegendNodes(self, nodeLayer: 'QgsLayerTreeLayer') -> typing.List['QgsLayerTreeModelLegendNode']: ...


class QgsMapLayerModel(QtCore.QAbstractItemModel):

    class ItemDataRole(int):
        LayerIdRole = ... # type: QgsMapLayerModel.ItemDataRole
        LayerRole = ... # type: QgsMapLayerModel.ItemDataRole
        EmptyRole = ... # type: QgsMapLayerModel.ItemDataRole
        AdditionalRole = ... # type: QgsMapLayerModel.ItemDataRole

    @typing.overload
    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., project: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, layers: typing.Iterable[QgsMapLayer], parent: typing.Optional[QtCore.QObject] = ..., project: typing.Optional['QgsProject'] = ...) -> None: ...

    def addLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def removeLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    @staticmethod
    def iconForLayer(layer: QgsMapLayer) -> QtGui.QIcon: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def canDropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def insertRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def additionalLayers(self) -> typing.List[QgsMapLayer]: ...
    def setAdditionalLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def additionalItems(self) -> typing.List[str]: ...
    def setAdditionalItems(self, items: typing.Iterable[str]) -> None: ...
    def layerFromIndex(self, index: QtCore.QModelIndex) -> QgsMapLayer: ...
    def indexFromLayer(self, layer: QgsMapLayer) -> QtCore.QModelIndex: ...
    def itemsCheckable(self) -> bool: ...
    def setLayersChecked(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layersChecked(self, checkState: QtCore.Qt.CheckState = ...) -> typing.List[QgsMapLayer]: ...
    def showCrs(self) -> bool: ...
    def setShowCrs(self, showCrs: bool) -> None: ...
    def allowEmptyLayer(self) -> bool: ...
    def setAllowEmptyLayer(self, allowEmpty: bool, text: str = ..., icon: QtGui.QIcon = ...) -> None: ...
    def checkAll(self, checkState: QtCore.Qt.CheckState) -> None: ...
    def itemsCanBeReordered(self) -> bool: ...
    def setItemsCanBeReordered(self, allow: bool) -> None: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def setItemsCheckable(self, checkable: bool) -> None: ...


class QgsMapLayerProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        RasterLayer = ... # type: QgsMapLayerProxyModel.Filter
        NoGeometry = ... # type: QgsMapLayerProxyModel.Filter
        PointLayer = ... # type: QgsMapLayerProxyModel.Filter
        LineLayer = ... # type: QgsMapLayerProxyModel.Filter
        PolygonLayer = ... # type: QgsMapLayerProxyModel.Filter
        HasGeometry = ... # type: QgsMapLayerProxyModel.Filter
        VectorLayer = ... # type: QgsMapLayerProxyModel.Filter
        PluginLayer = ... # type: QgsMapLayerProxyModel.Filter
        WritableLayer = ... # type: QgsMapLayerProxyModel.Filter
        MeshLayer = ... # type: QgsMapLayerProxyModel.Filter
        VectorTileLayer = ... # type: QgsMapLayerProxyModel.Filter
        PointCloudLayer = ... # type: QgsMapLayerProxyModel.Filter
        AnnotationLayer = ... # type: QgsMapLayerProxyModel.Filter
        All = ... # type: QgsMapLayerProxyModel.Filter
        SpatialLayer = ... # type: QgsMapLayerProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapLayerProxyModel.Filters', 'QgsMapLayerProxyModel.Filter']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayerProxyModel.Filters') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapLayerProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilterString(self, filter: str) -> None: ...
    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def acceptsLayer(self, layer: QgsMapLayer) -> bool: ...
    def filterString(self) -> str: ...
    def excludedProviders(self) -> typing.List[str]: ...
    def setExcludedProviders(self, providers: typing.Iterable[str]) -> None: ...
    def exceptedLayerIds(self) -> typing.List[str]: ...
    def setExceptedLayerIds(self, ids: typing.Iterable[str]) -> None: ...
    def exceptedLayerList(self) -> typing.List[QgsMapLayer]: ...
    def setExceptedLayerList(self, exceptList: typing.Iterable[QgsMapLayer]) -> None: ...
    def layerAllowlist(self) -> typing.List[QgsMapLayer]: ...
    def layerWhitelist(self) -> typing.List[QgsMapLayer]: ...
    def setLayerAllowlist(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def setLayerWhitelist(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    @staticmethod
    def layerMatchesFilters(layer: QgsMapLayer, filters: typing.Union['QgsMapLayerProxyModel.Filters', 'QgsMapLayerProxyModel.Filter']) -> bool: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def filters(self) -> 'QgsMapLayerProxyModel.Filters': ...
    def setFilters(self, filters: typing.Union['QgsMapLayerProxyModel.Filters', 'QgsMapLayerProxyModel.Filter']) -> 'QgsMapLayerProxyModel': ...
    def sourceLayerModel(self) -> QgsMapLayerModel: ...


class QgsMapLayerRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layerID: str, context: typing.Optional['QgsRenderContext'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerRenderer') -> None: ...

    def appendRenderedItemDetails(self, details: 'QgsRenderedItemDetails') -> None: ...
    def takeRenderedItemDetails(self) -> typing.List['QgsRenderedItemDetails']: ...
    def isReadyToCompose(self) -> bool: ...
    def renderContext(self) -> 'QgsRenderContext': ...
    def layerId(self) -> str: ...
    def errors(self) -> typing.List[str]: ...
    def feedback(self) -> QgsFeedback: ...
    def forceRasterRender(self) -> bool: ...
    def render(self) -> bool: ...


class QgsServerMetadataUrlProperties(PyQt5.sip.wrapper):

    class MetadataUrl(PyQt5.sip.wrapper):

        format = ... # type: str
        type = ... # type: str
        url = ... # type: str

        @typing.overload
        def __init__(self, url: str = ..., type: str = ..., format: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsServerMetadataUrlProperties.MetadataUrl') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsServerMetadataUrlProperties') -> None: ...

    def layer(self) -> QgsMapLayer: ...
    def addMetadataUrl(self, metaUrl: 'QgsServerMetadataUrlProperties.MetadataUrl') -> None: ...
    def setMetadataUrls(self, metaUrls: typing.Iterable['QgsServerMetadataUrlProperties.MetadataUrl']) -> None: ...
    def metadataUrls(self) -> typing.List['QgsServerMetadataUrlProperties.MetadataUrl']: ...


class QgsServerWmsDimensionProperties(PyQt5.sip.wrapper):

    class PredefinedWmsDimensionName(int):
        TIME = ... # type: QgsServerWmsDimensionProperties.PredefinedWmsDimensionName
        DATE = ... # type: QgsServerWmsDimensionProperties.PredefinedWmsDimensionName
        ELEVATION = ... # type: QgsServerWmsDimensionProperties.PredefinedWmsDimensionName

    class WmsDimensionInfo(PyQt5.sip.wrapper):

        class DefaultDisplay(int):
            AllValues = ... # type: QgsServerWmsDimensionProperties.WmsDimensionInfo.DefaultDisplay
            MinValue = ... # type: QgsServerWmsDimensionProperties.WmsDimensionInfo.DefaultDisplay
            MaxValue = ... # type: QgsServerWmsDimensionProperties.WmsDimensionInfo.DefaultDisplay
            ReferenceValue = ... # type: QgsServerWmsDimensionProperties.WmsDimensionInfo.DefaultDisplay

        defaultDisplayType = ... # type: int
        endFieldName = ... # type: str
        fieldName = ... # type: str
        name = ... # type: str
        referenceValue = ... # type: typing.Any
        unitSymbol = ... # type: str
        units = ... # type: str

        @typing.overload
        def __init__(self, dimName: str, dimFieldName: str, dimEndFieldName: str = ..., dimUnits: str = ..., dimUnitSymbol: str = ..., dimDefaultDisplayType: int = ..., dimReferenceValue: typing.Any = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsServerWmsDimensionProperties.WmsDimensionInfo') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsServerWmsDimensionProperties') -> None: ...

    def layer(self) -> QgsMapLayer: ...
    def wmsDimensions(self) -> typing.List['QgsServerWmsDimensionProperties.WmsDimensionInfo']: ...
    def setWmsDimensions(self, dimensions: typing.Iterable['QgsServerWmsDimensionProperties.WmsDimensionInfo']) -> None: ...
    def removeWmsDimension(self, wmsDimName: str) -> bool: ...
    def addWmsDimension(self, wmsDimInfo: 'QgsServerWmsDimensionProperties.WmsDimensionInfo') -> bool: ...
    @staticmethod
    def wmsDimensionDefaultDisplayLabels() -> typing.Dict[int, str]: ...


class QgsMapLayerServerProperties(QgsServerMetadataUrlProperties, QgsServerWmsDimensionProperties):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, layer: typing.Optional[QgsMapLayer] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerServerProperties') -> None: ...

    def layer(self) -> QgsMapLayer: ...
    def reset(self) -> None: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> None: ...
    def writeXml(self, layer_node: QtXml.QDomNode, document: QtXml.QDomDocument) -> None: ...
    def copyTo(self, properties: 'QgsMapLayerServerProperties') -> None: ...


class QgsVectorLayerServerProperties(QgsMapLayerServerProperties):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerServerProperties') -> None: ...


class QgsMapLayerStore(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def layerWasAdded(self, layer: QgsMapLayer) -> None: ...
    def layersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def allLayersRemoved(self) -> None: ...
    def layerRemoved(self, layerId: str) -> None: ...
    def layersRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def layerWillBeRemoved(self, layerId: str) -> None: ...
    @typing.overload
    def layerWillBeRemoved(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def layersWillBeRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def layersWillBeRemoved(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def transferLayersFromStore(self, other: 'QgsMapLayerStore') -> None: ...
    def removeAllMapLayers(self) -> None: ...
    def takeMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    @typing.overload
    def removeMapLayer(self, id: str) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: QgsMapLayer) -> None: ...
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def removeMapLayersById(self, layerIds: typing.Iterable[str]) -> None: ...
    def addMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    def addMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> typing.List[QgsMapLayer]: ...
    def validMapLayers(self) -> typing.Any: ...
    def mapLayers(self) -> typing.Any: ...
    def mapLayersByName(self, name: str) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, id: str) -> QgsMapLayer: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def validCount(self) -> int: ...
    def count(self) -> int: ...


class QgsMapLayerStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, xmlData: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerStyle') -> None: ...

    def writeXml(self, styleElement: QtXml.QDomElement) -> None: ...
    def readXml(self, styleElement: QtXml.QDomElement) -> None: ...
    def writeToLayer(self, layer: QgsMapLayer) -> None: ...
    def readFromLayer(self, layer: QgsMapLayer) -> None: ...
    def xmlData(self) -> str: ...
    def clear(self) -> None: ...
    def isValid(self) -> bool: ...


class QgsMapLayerStyleOverride(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerStyleOverride') -> None: ...

    def setOverrideStyle(self, style: str) -> None: ...


class QgsMapLayerStyleManager(QtCore.QObject):

    def __init__(self, layer: QgsMapLayer) -> None: ...

    def currentStyleChanged(self, currentName: str) -> None: ...
    def styleRenamed(self, oldName: str, newName: str) -> None: ...
    def styleRemoved(self, name: str) -> None: ...
    def styleAdded(self, name: str) -> None: ...
    def copyStylesFrom(self, other: 'QgsMapLayerStyleManager') -> None: ...
    @staticmethod
    def isDefault(styleName: str) -> bool: ...
    def restoreOverrideStyle(self) -> bool: ...
    def setOverrideStyle(self, styleDef: str) -> bool: ...
    def setCurrentStyle(self, name: str) -> bool: ...
    def currentStyle(self) -> str: ...
    def renameStyle(self, name: str, newName: str) -> bool: ...
    def removeStyle(self, name: str) -> bool: ...
    def addStyleFromLayer(self, name: str) -> bool: ...
    def addStyle(self, name: str, style: QgsMapLayerStyle) -> bool: ...
    def style(self, name: str) -> QgsMapLayerStyle: ...
    def mapLayerStyles(self) -> typing.Dict[str, QgsMapLayerStyle]: ...
    def styles(self) -> typing.List[str]: ...
    def writeXml(self, mgrElement: QtXml.QDomElement) -> None: ...
    def readXml(self, mgrElement: QtXml.QDomElement) -> None: ...
    def reset(self) -> None: ...
    def layer(self) -> QgsMapLayer: ...


class QgsMapLayerElevationProperties(QtCore.QObject):

    class Flag(int):
        FlagDontInvalidateCachedRendersWhenRangeChanges = ... # type: QgsMapLayerElevationProperties.Flag

    class Property(int):
        ZOffset = ... # type: QgsMapLayerElevationProperties.Property
        ExtrusionHeight = ... # type: QgsMapLayerElevationProperties.Property

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapLayerElevationProperties.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def copyCommonProperties(self, other: 'QgsMapLayerElevationProperties') -> None: ...
    def readCommonProperties(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    def profileGenerationPropertyChanged(self) -> None: ...
    def profileRenderingPropertyChanged(self) -> None: ...
    def zScaleChanged(self) -> None: ...
    def zOffsetChanged(self) -> None: ...
    def changed(self) -> None: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, 'QgsPropertyDefinition']: ...
    def setDataDefinedProperties(self, collection: 'QgsPropertyCollection') -> None: ...
    def dataDefinedProperties(self) -> 'QgsPropertyCollection': ...
    def setZScale(self, scale: float) -> None: ...
    def zScale(self) -> float: ...
    def setZOffset(self, offset: float) -> None: ...
    def zOffset(self) -> float: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> 'QgsDoubleRange': ...
    def flags(self) -> 'QgsMapLayerElevationProperties.Flags': ...
    def isVisibleInZRange(self, range: 'QgsDoubleRange') -> bool: ...
    def clone(self) -> 'QgsMapLayerElevationProperties': ...
    def htmlSummary(self) -> str: ...
    def setDefaultsFromLayer(self, layer: QgsMapLayer) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsTemporalProperty(QtCore.QObject):

    class Flag(int):
        FlagDontInvalidateCachedRendersWhenRangeChanges = ... # type: QgsTemporalProperty.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTemporalProperty.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsTemporalProperty.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def changed(self) -> None: ...
    def flags(self) -> 'QgsTemporalProperty.Flags': ...
    def isActive(self) -> bool: ...
    def setIsActive(self, active: bool) -> None: ...


class QgsMapLayerTemporalProperties(QgsTemporalProperty):

    def __init__(self, parent: QtCore.QObject, enabled: bool = ...) -> None: ...

    def allTemporalRanges(self, layer: QgsMapLayer) -> typing.List['QgsDateTimeRange']: ...
    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def isVisibleInTemporalRange(self, range: 'QgsDateTimeRange') -> bool: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...


class QgsMapLayerUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerUtils') -> None: ...

    @staticmethod
    def launderLayerName(name: str) -> str: ...
    @staticmethod
    def sortLayersByType(layers: typing.Iterable[QgsMapLayer], order: typing.Iterable[Qgis.LayerType]) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def updateLayerSourcePath(layer: QgsMapLayer, newPath: str) -> bool: ...
    @staticmethod
    def layerSourceMatchesPath(layer: QgsMapLayer, path: str) -> bool: ...
    @staticmethod
    def databaseConnection(layer: QgsMapLayer) -> 'QgsAbstractDatabaseProviderConnection': ...
    @staticmethod
    def combinedExtent(layers: typing.Iterable[QgsMapLayer], crs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext') -> 'QgsRectangle': ...


class QgsLabelBlockingRegion(PyQt5.sip.wrapper):

    geometry = ... # type: 'QgsGeometry'

    @typing.overload
    def __init__(self, geometry: 'QgsGeometry') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelBlockingRegion') -> None: ...


class QgsTemporalRangeObject(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, enabled: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTemporalRangeObject') -> None: ...

    def temporalRange(self) -> 'QgsDateTimeRange': ...
    def setTemporalRange(self, range: 'QgsDateTimeRange') -> None: ...
    def isTemporal(self) -> bool: ...
    def setIsTemporal(self, enabled: bool) -> None: ...


class QgsMapSettings(QgsTemporalRangeObject):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapSettings') -> None: ...

    def updateDerived(self) -> None: ...
    def setElevationShadingRenderer(self, renderer: QgsElevationShadingRenderer) -> None: ...
    def elevationShadingRenderer(self) -> QgsElevationShadingRenderer: ...
    def setCurrentFrame(self, frame: int) -> None: ...
    def currentFrame(self) -> int: ...
    def setFrameRate(self, rate: float) -> None: ...
    def frameRate(self) -> float: ...
    def setRendererUsage(self, rendererUsage: Qgis.RendererUsage) -> None: ...
    def rendererUsage(self) -> Qgis.RendererUsage: ...
    def setZRange(self, range: 'QgsDoubleRange') -> None: ...
    def zRange(self) -> 'QgsDoubleRange': ...
    def renderedFeatureHandlers(self) -> typing.List['QgsRenderedFeatureHandlerInterface']: ...
    def addRenderedFeatureHandler(self, handler: 'QgsRenderedFeatureHandlerInterface') -> None: ...
    def simplifyMethod(self) -> 'QgsVectorSimplifyMethod': ...
    def setSimplifyMethod(self, method: 'QgsVectorSimplifyMethod') -> None: ...
    def clippingRegions(self) -> typing.List[QgsMapClippingRegion]: ...
    def setClippingRegions(self, regions: typing.Iterable[QgsMapClippingRegion]) -> None: ...
    def addClippingRegion(self, region: QgsMapClippingRegion) -> None: ...
    def labelBlockingRegions(self) -> typing.List[QgsLabelBlockingRegion]: ...
    def setLabelBlockingRegions(self, regions: typing.Iterable[QgsLabelBlockingRegion]) -> None: ...
    def setLabelBoundaryGeometry(self, boundary: 'QgsGeometry') -> None: ...
    def labelBoundaryGeometry(self) -> 'QgsGeometry': ...
    def labelingEngineSettings(self) -> 'QgsLabelingEngineSettings': ...
    def setLabelingEngineSettings(self, settings: 'QgsLabelingEngineSettings') -> None: ...
    def segmentationToleranceType(self) -> 'QgsAbstractGeometry.SegmentationToleranceType': ...
    def setSegmentationToleranceType(self, type: 'QgsAbstractGeometry.SegmentationToleranceType') -> None: ...
    def segmentationTolerance(self) -> float: ...
    def setSegmentationTolerance(self, tolerance: float) -> None: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, node: QtXml.QDomNode) -> None: ...
    def fullExtent(self) -> 'QgsRectangle': ...
    def computeScaleForExtent(self, extent: 'QgsRectangle') -> float: ...
    def computeExtentForScale(self, center: 'QgsPointXY', scale: float) -> 'QgsRectangle': ...
    def layerTransform(self, layer: QgsMapLayer) -> 'QgsCoordinateTransform': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: QgsMapLayer, point: 'QgsPointXY') -> 'QgsPointXY': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: QgsMapLayer, point: 'QgsPoint') -> 'QgsPoint': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: QgsMapLayer, rect: 'QgsRectangle') -> 'QgsRectangle': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: QgsMapLayer, point: 'QgsPointXY') -> 'QgsPointXY': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: QgsMapLayer, point: 'QgsPoint') -> 'QgsPoint': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: QgsMapLayer, rect: 'QgsRectangle') -> 'QgsRectangle': ...
    def outputExtentToLayerExtent(self, layer: QgsMapLayer, extent: 'QgsRectangle') -> 'QgsRectangle': ...
    def layerExtentToOutputExtent(self, layer: QgsMapLayer, extent: 'QgsRectangle') -> 'QgsRectangle': ...
    def layerToMapUnits(self, layer: QgsMapLayer, referenceExtent: 'QgsRectangle' = ...) -> float: ...
    def mapToPixel(self) -> 'QgsMapToPixel': ...
    def setPathResolver(self, resolver: 'QgsPathResolver') -> None: ...
    def pathResolver(self) -> 'QgsPathResolver': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...
    def scale(self) -> float: ...
    def mapUnitsPerPixel(self) -> float: ...
    def visiblePolygonWithBuffer(self) -> QtGui.QPolygonF: ...
    def visiblePolygon(self) -> QtGui.QPolygonF: ...
    def visibleExtent(self) -> 'QgsRectangle': ...
    def hasValidSettings(self) -> bool: ...
    def outputImageFormat(self) -> QtGui.QImage.Format: ...
    def setOutputImageFormat(self, format: QtGui.QImage.Format) -> None: ...
    def setTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def textRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def testFlag(self, flag: Qgis.MapSettingsFlag) -> bool: ...
    def flags(self) -> Qgis.MapSettingsFlags: ...
    def setFlag(self, flag: Qgis.MapSettingsFlag, on: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.MapSettingsFlags, Qgis.MapSettingsFlag]) -> None: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def ellipsoid(self) -> str: ...
    def setEllipsoid(self, ellipsoid: str) -> bool: ...
    def mapUnits(self) -> Qgis.DistanceUnit: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def clearCustomRenderingFlag(self, flag: str) -> None: ...
    def setCustomRenderingFlag(self, flag: str, value: typing.Any) -> None: ...
    def customRenderingFlags(self) -> typing.Dict[str, typing.Any]: ...
    def setCustomRenderFlags(self, customRenderFlags: str) -> None: ...
    def customRenderFlags(self) -> str: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[str, str]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def setLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layers(self, expandGroupLayers: bool = ...) -> typing.List[QgsMapLayer]: ...
    def layerIds(self, expandGroupLayers: bool = ...) -> typing.List[str]: ...
    def magnificationFactor(self) -> float: ...
    def setMagnificationFactor(self, factor: float, center: typing.Optional['QgsPointXY'] = ...) -> None: ...
    def setDpiTarget(self, dpi: float) -> None: ...
    def dpiTarget(self) -> float: ...
    def setOutputDpi(self, dpi: float) -> None: ...
    def outputDpi(self) -> float: ...
    def setRotation(self, rotation: float) -> None: ...
    def rotation(self) -> float: ...
    def deviceOutputSize(self) -> QtCore.QSize: ...
    def setDevicePixelRatio(self, dpr: float) -> None: ...
    def devicePixelRatio(self) -> float: ...
    def setOutputSize(self, size: QtCore.QSize) -> None: ...
    def outputSize(self) -> QtCore.QSize: ...
    def setExtentBuffer(self, buffer: float) -> None: ...
    def extentBuffer(self) -> float: ...
    def setExtent(self, rect: 'QgsRectangle', magnified: bool = ...) -> None: ...
    def extent(self) -> 'QgsRectangle': ...


class QgsMapSettingsUtils(PyQt5.sip.wrapper):

    class EffectsCheckFlag(int):
        IgnoreGeoPdfSupportedEffects = ... # type: QgsMapSettingsUtils.EffectsCheckFlag

    class EffectsCheckFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapSettingsUtils.EffectsCheckFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapSettingsUtils') -> None: ...

    @staticmethod
    def worldFileContent(mapSettings: QgsMapSettings) -> str: ...
    @staticmethod
    def worldFileParameters(mapSettings: QgsMapSettings) -> typing.Tuple[float, float, float, float, float, float]: ...
    @staticmethod
    def containsAdvancedEffects(mapSettings: QgsMapSettings, flags: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag'] = ...) -> typing.List[str]: ...


class QgsMapThemeCollection(QtCore.QObject):

    class MapThemeLayerRecord(PyQt5.sip.wrapper):

        checkedLegendItems = ... # type: typing.Iterable[str]
        currentStyle = ... # type: str
        expandedLayerNode = ... # type: bool
        expandedLegendItems = ... # type: typing.Iterable[str]
        isVisible = ... # type: bool
        usingCurrentStyle = ... # type: bool
        usingLegendItems = ... # type: bool

        @typing.overload
        def __init__(self, l: typing.Optional[QgsMapLayer] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapThemeCollection.MapThemeLayerRecord') -> None: ...

        def setLayer(self, layer: QgsMapLayer) -> None: ...
        def layer(self) -> QgsMapLayer: ...

    class MapThemeRecord(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...

        def setCheckedGroupNodes(self, checkedGroupNodes: typing.Iterable[str]) -> None: ...
        def setExpandedGroupNodes(self, expandedGroupNodes: typing.Iterable[str]) -> None: ...
        def checkedGroupNodes(self) -> typing.Set[str]: ...
        def expandedGroupNodes(self) -> typing.Set[str]: ...
        def setHasCheckedStateInfo(self, hasInfo: bool) -> None: ...
        def setHasExpandedStateInfo(self, hasInfo: bool) -> None: ...
        def hasCheckedStateInfo(self) -> bool: ...
        def hasExpandedStateInfo(self) -> bool: ...
        def addLayerRecord(self, record: 'QgsMapThemeCollection.MapThemeLayerRecord') -> None: ...
        def removeLayerRecord(self, layer: QgsMapLayer) -> None: ...
        def setLayerRecords(self, records: typing.Iterable['QgsMapThemeCollection.MapThemeLayerRecord']) -> None: ...
        def layerRecords(self) -> typing.List['QgsMapThemeCollection.MapThemeLayerRecord']: ...

    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...

    def projectChanged(self) -> None: ...
    def mapThemeRenamed(self, name: str, newName: str) -> None: ...
    def mapThemeChanged(self, theme: str) -> None: ...
    def mapThemesChanged(self) -> None: ...
    def masterVisibleLayers(self) -> typing.List[QgsMapLayer]: ...
    def masterLayerOrder(self) -> typing.List[QgsMapLayer]: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def applyTheme(self, name: str, root: 'QgsLayerTreeGroup', model: 'QgsLayerTreeModel') -> None: ...
    @staticmethod
    def createThemeFromCurrentState(root: 'QgsLayerTreeGroup', model: 'QgsLayerTreeModel') -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, doc: QtXml.QDomDocument) -> None: ...
    def mapThemeStyleOverrides(self, name: str) -> typing.Dict[str, str]: ...
    def mapThemeVisibleLayers(self, name: str) -> typing.List[QgsMapLayer]: ...
    def mapThemeVisibleLayerIds(self, name: str) -> typing.List[str]: ...
    def mapThemeState(self, name: str) -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def mapThemes(self) -> typing.List[str]: ...
    def clear(self) -> None: ...
    def renameMapTheme(self, name: str, newName: str) -> bool: ...
    def removeMapTheme(self, name: str) -> None: ...
    def update(self, name: str, state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def insert(self, name: str, state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def hasMapTheme(self, name: str) -> bool: ...


class QgsMapToPixel(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, mapUnitsPerPixel: float, centerX: float, centerY: float, widthPixels: int, heightPixels: int, rotation: float) -> None: ...
    @typing.overload
    def __init__(self, mapUnitsPerPixel: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapToPixel') -> None: ...

    def yCenter(self) -> float: ...
    def xCenter(self) -> float: ...
    def showParameters(self) -> str: ...
    def setParameters(self, mapUnitsPerPixel: float, centerX: float, centerY: float, widthPixels: int, heightPixels: int, rotation: float) -> None: ...
    def mapRotation(self) -> float: ...
    def setMapRotation(self, degrees: float, cx: float, cy: float) -> None: ...
    def mapHeight(self) -> int: ...
    def mapWidth(self) -> int: ...
    def mapUnitsPerPixel(self) -> float: ...
    def setMapUnitsPerPixel(self, mapUnitsPerPixel: float) -> None: ...
    def toMapPoint(self, x: float, y: float) -> 'QgsPointXY': ...
    def toMapCoordinatesF(self, x: float, y: float) -> 'QgsPointXY': ...
    @typing.overload
    def toMapCoordinates(self, x: int, y: int) -> 'QgsPointXY': ...
    @typing.overload
    def toMapCoordinates(self, p: QtCore.QPoint) -> 'QgsPointXY': ...
    def transformInPlace(self) -> typing.Tuple[float, float]: ...
    @typing.overload
    def transform(self, p: 'QgsPointXY') -> 'QgsPointXY': ...
    @typing.overload
    def transform(self, p: 'QgsPointXY') -> None: ...
    @typing.overload
    def transform(self, x: float, y: float) -> 'QgsPointXY': ...
    @typing.overload
    def transform(self) -> QtGui.QTransform: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def fromScale(scale: float, mapUnits: Qgis.DistanceUnit, dpi: float = ...) -> 'QgsMapToPixel': ...


class QgsMapToPixelSimplifier(QgsAbstractGeometrySimplifier):

    class SimplifyFlag(int):
        NoFlags = ... # type: QgsMapToPixelSimplifier.SimplifyFlag
        SimplifyGeometry = ... # type: QgsMapToPixelSimplifier.SimplifyFlag
        SimplifyEnvelope = ... # type: QgsMapToPixelSimplifier.SimplifyFlag

    class SimplifyAlgorithm(int):
        Distance = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        SnapToGrid = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        Visvalingam = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        SnappedToGridGlobal = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm

    @typing.overload
    def __init__(self, simplifyFlags: int, tolerance: float, simplifyAlgorithm: 'QgsMapToPixelSimplifier.SimplifyAlgorithm' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapToPixelSimplifier') -> None: ...

    @typing.overload
    @staticmethod
    def isGeneralizableByMapBoundingBox(envelope: 'QgsRectangle', map2pixelTol: float) -> bool: ...
    @typing.overload
    def isGeneralizableByMapBoundingBox(self, envelope: 'QgsRectangle') -> bool: ...
    def setTolerance(self, value: float) -> None: ...
    @typing.overload
    def simplify(self, geometry: 'QgsGeometry') -> 'QgsGeometry': ...
    @typing.overload
    def simplify(self, geometry: 'QgsAbstractGeometry') -> 'QgsAbstractGeometry': ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: 'QgsMapToPixelSimplifier.SimplifyAlgorithm') -> None: ...
    def simplifyAlgorithm(self) -> 'QgsMapToPixelSimplifier.SimplifyAlgorithm': ...
    def setSimplifyFlags(self, simplifyFlags: int) -> None: ...
    def simplifyFlags(self) -> int: ...
    @staticmethod
    def equalSnapToGrid(x1: float, y1: float, x2: float, y2: float, gridOriginX: float, gridOriginY: float, gridInverseSizeXY: float) -> bool: ...
    @staticmethod
    def calculateLengthSquared2D(x1: float, y1: float, x2: float, y2: float) -> float: ...


class QgsMapUnitScale(PyQt5.sip.wrapper):

    maxScale = ... # type: float
    maxSizeMM = ... # type: float
    maxSizeMMEnabled = ... # type: bool
    minScale = ... # type: float
    minSizeMM = ... # type: float
    minSizeMMEnabled = ... # type: bool

    @typing.overload
    def __init__(self, minScale: float = ..., maxScale: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapUnitScale') -> None: ...

    def computeMapUnitsPerPixel(self, c: 'QgsRenderContext') -> float: ...


class QgsMargins(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, left: float, top: float, right: float, bottom: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMargins') -> None: ...

    def __pos__(self) -> 'QgsMargins': ...
    def __neg__(self) -> 'QgsMargins': ...
    @staticmethod
    def fromString(string: str) -> 'QgsMargins': ...
    def toString(self) -> str: ...
    def setBottom(self, bottom: float) -> None: ...
    def setRight(self, right: float) -> None: ...
    def setTop(self, top: float) -> None: ...
    def setLeft(self, left: float) -> None: ...
    def bottom(self) -> float: ...
    def right(self) -> float: ...
    def top(self) -> float: ...
    def left(self) -> float: ...
    def isNull(self) -> bool: ...


class QgsMaskIdProvider(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMaskIdProvider') -> None: ...

    def size(self) -> int: ...
    def maskId(self, labelLayerId: str = ..., labelRuleId: str = ...) -> int: ...
    def insertLabelLayer(self, layerId: str, ruleId: str, maskedSymbolLayers: typing.Iterable['QgsSymbolLayerReference']) -> int: ...


class QgsMaskPaintDevice(QtGui.QPaintDevice):

    def __init__(self, usePathStroker: bool = ...) -> None: ...

    def maskPainterPath(self) -> QtGui.QPainterPath: ...
    def metric(self, metric: QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
    def paintEngine(self) -> QtGui.QPaintEngine: ...


class QgsMessageLog(QtCore.QObject):

    def __init__(self) -> None: ...

    @typing.overload
    def messageReceived(self, message: str, tag: str, level: Qgis.MessageLevel) -> None: ...
    @typing.overload
    def messageReceived(self, received: bool) -> None: ...
    @staticmethod
    def logMessage(message: str, tag: str = ..., level: Qgis.MessageLevel = ..., notifyUser: bool = ...) -> None: ...


class QgsMessageLogNotifyBlocker(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...


class QgsMessageLogConsole(QtCore.QObject):

    def __init__(self) -> None: ...

    def logMessage(self, message: str, tag: str, level: Qgis.MessageLevel) -> None: ...
    def formatLogMessage(self, message: str, tag: str, level: Qgis.MessageLevel = ...) -> str: ...


class QgsMessageOutput(PyQt5.sip.wrapper):

    class MessageType(int):
        MessageText = ... # type: QgsMessageOutput.MessageType
        MessageHtml = ... # type: QgsMessageOutput.MessageType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMessageOutput') -> None: ...

    @staticmethod
    def createMessageOutput() -> 'QgsMessageOutput': ...
    @typing.overload
    def showMessage(self, blocking: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def showMessage(title: str, message: str, msgType: 'QgsMessageOutput.MessageType') -> None: ...
    def setTitle(self, title: str) -> None: ...
    def appendMessage(self, message: str) -> None: ...
    def setMessage(self, message: str, msgType: 'QgsMessageOutput.MessageType') -> None: ...


class QgsMessageOutputConsole(QtCore.QObject, QgsMessageOutput):

    def __init__(self) -> None: ...

    def destroyed(self) -> None: ...
    def showMessage(self, blocking: bool = ...) -> None: ...
    def setTitle(self, title: str) -> None: ...
    def appendMessage(self, message: str) -> None: ...
    def setMessage(self, message: str, msgType: QgsMessageOutput.MessageType) -> None: ...


class QgsMimeDataUtils(PyQt5.sip.wrapper):

    class Uri(PyQt5.sip.wrapper):

        filePath = ... # type: str
        layerId = ... # type: str
        layerType = ... # type: str
        name = ... # type: str
        pId = ... # type: str
        providerKey = ... # type: str
        supportedCrs = ... # type: typing.Iterable[str]
        supportedFormats = ... # type: typing.Iterable[str]
        uri = ... # type: str
        wkbType = ... # type: Qgis.WkbType

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, encData: str) -> None: ...
        @typing.overload
        def __init__(self, layer: QgsMapLayer) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMimeDataUtils.Uri') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def mapLayer(self) -> QgsMapLayer: ...
        def meshLayer(self, error: str) -> typing.Tuple['QgsMeshLayer', bool]: ...
        def rasterLayer(self, error: str) -> typing.Tuple['QgsRasterLayer', bool]: ...
        def vectorLayer(self, error: str) -> typing.Tuple[QgsVectorLayer, bool]: ...
        def data(self) -> str: ...
        def isValid(self) -> bool: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMimeDataUtils') -> None: ...

    @staticmethod
    def hasOriginatedFromCurrentAppInstance(uri: 'QgsMimeDataUtils.Uri') -> bool: ...
    @staticmethod
    def layerTreeNodesToUriList(nodes: typing.Iterable['QgsLayerTreeNode']) -> QtCore.QByteArray: ...
    @staticmethod
    def decodeUriList(data: QtCore.QMimeData) -> typing.List['QgsMimeDataUtils.Uri']: ...
    @staticmethod
    def isUriList(data: QtCore.QMimeData) -> bool: ...
    @staticmethod
    def encodeUriList(layers: typing.Iterable['QgsMimeDataUtils.Uri']) -> QtCore.QMimeData: ...


class QgsMultiRenderChecker(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiRenderChecker') -> None: ...

    @staticmethod
    def drawBackground(image: QtGui.QImage) -> None: ...
    def controlImagePath(self) -> str: ...
    def report(self) -> str: ...
    def runTest(self, testName: str, mismatchCount: int = ...) -> bool: ...
    def setSizeTolerance(self, xTolerance: int, yTolerance: int) -> None: ...
    def setColorTolerance(self, colorTolerance: int) -> None: ...
    def setMapSettings(self, mapSettings: QgsMapSettings) -> None: ...
    def setExpectFail(self, expectFail: bool) -> None: ...
    def setRenderedImage(self, renderedImagePath: str) -> None: ...
    def setControlPathPrefix(self, prefix: str) -> None: ...
    def setControlName(self, name: str) -> None: ...


class QgsLayoutChecker(QgsMultiRenderChecker):

    @typing.overload
    def __init__(self, testName: str, layout: 'QgsLayout') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutChecker') -> None: ...

    def testLayout(self, page: int = ..., pixelDiff: int = ..., createReferenceImage: bool = ...) -> typing.Tuple[bool, str]: ...
    def setSize(self, size: QtCore.QSize) -> None: ...


class QgsNullPaintDevice(QtGui.QPaintDevice):

    def __init__(self) -> None: ...

    def setOutputDpi(self, dpi: int) -> None: ...
    def setOutputSize(self, size: QtCore.QSize) -> None: ...
    def metric(self, metric: QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
    def paintEngine(self) -> QtGui.QPaintEngine: ...


class QgsObjectCustomProperties(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsObjectCustomProperties') -> None: ...

    def writeXml(self, parentNode: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, parentNode: QtXml.QDomNode, keyStartsWith: str = ...) -> None: ...
    def contains(self, key: str) -> bool: ...
    def remove(self, key: str) -> None: ...
    def value(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setValue(self, key: str, value: typing.Any) -> None: ...
    def keys(self) -> typing.List[str]: ...


class QgsOfflineEditing(QtCore.QObject):

    class ContainerType(int):
        SpatiaLite = ... # type: QgsOfflineEditing.ContainerType
        GPKG = ... # type: QgsOfflineEditing.ContainerType

    class ProgressMode(int):
        CopyFeatures = ... # type: QgsOfflineEditing.ProgressMode
        ProcessFeatures = ... # type: QgsOfflineEditing.ProgressMode
        AddFields = ... # type: QgsOfflineEditing.ProgressMode
        AddFeatures = ... # type: QgsOfflineEditing.ProgressMode
        RemoveFeatures = ... # type: QgsOfflineEditing.ProgressMode
        UpdateFeatures = ... # type: QgsOfflineEditing.ProgressMode
        UpdateGeometries = ... # type: QgsOfflineEditing.ProgressMode

    def __init__(self) -> None: ...

    def warning(self, title: str, message: str) -> None: ...
    def progressStopped(self) -> None: ...
    def progressUpdated(self, progress: int) -> None: ...
    def progressModeSet(self, mode: 'QgsOfflineEditing.ProgressMode', maximum: int) -> None: ...
    def layerProgressUpdated(self, layer: int, numLayers: int) -> None: ...
    def progressStarted(self) -> None: ...
    def synchronize(self, useTransaction: bool = ...) -> None: ...
    def isOfflineProject(self) -> bool: ...
    def convertToOfflineProject(self, offlineDataPath: str, offlineDbFile: str, layerIds: typing.Iterable[str], onlySelected: bool = ..., containerType: 'QgsOfflineEditing.ContainerType' = ..., layerNameSuffix: str = ...) -> bool: ...


class QgsOgcUtils(PyQt5.sip.wrapper):

    class FilterVersion(int):
        FILTER_OGC_1_0 = ... # type: QgsOgcUtils.FilterVersion
        FILTER_OGC_1_1 = ... # type: QgsOgcUtils.FilterVersion
        FILTER_FES_2_0 = ... # type: QgsOgcUtils.FilterVersion

    class GMLVersion(int):
        GML_2_1_2 = ... # type: QgsOgcUtils.GMLVersion
        GML_3_1_0 = ... # type: QgsOgcUtils.GMLVersion
        GML_3_2_1 = ... # type: QgsOgcUtils.GMLVersion

    class Context(PyQt5.sip.wrapper):

        layer = ... # type: QgsMapLayer
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, layer: typing.Optional[QgsMapLayer] = ..., transformContext: 'QgsCoordinateTransformContext' = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsOgcUtils.Context') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOgcUtils') -> None: ...

    @staticmethod
    def elseFilterExpression(doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionToOgcExpression(exp: 'QgsExpression', doc: QtXml.QDomDocument, errorMessage: typing.Optional[str] = ..., requiresFilterElement: bool = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionToOgcExpression(exp: 'QgsExpression', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', filterVersion: 'QgsOgcUtils.FilterVersion', geometryName: str, srsName: str, honourAxisOrientation: bool, invertAxisOrientation: bool, errorMessage: typing.Optional[str] = ..., requiresFilterElement: bool = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def expressionToOgcFilter(exp: 'QgsExpression', doc: QtXml.QDomDocument, errorMessage: typing.Optional[str] = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsExpression': ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, version: 'QgsOgcUtils.FilterVersion', layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsExpression': ...
    @staticmethod
    def colorFromOgcFill(fillElement: QtXml.QDomElement) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: 'QgsRectangle', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: 'QgsRectangle', doc: QtXml.QDomDocument, srsName: str, invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: 'QgsRectangle', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: 'QgsRectangle', doc: QtXml.QDomDocument, srsName: str, invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', srsName: str, invertAxisOrientation: bool, gmlIdBase: str, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, format: str, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def rectangleFromGMLEnvelope(envelopeNode: QtXml.QDomNode) -> 'QgsRectangle': ...
    @staticmethod
    def rectangleFromGMLBox(boxNode: QtXml.QDomNode) -> 'QgsRectangle': ...
    @typing.overload
    @staticmethod
    def geometryFromGML(xmlString: str, context: 'QgsOgcUtils.Context' = ...) -> 'QgsGeometry': ...
    @typing.overload
    @staticmethod
    def geometryFromGML(geometryNode: QtXml.QDomNode, context: 'QgsOgcUtils.Context' = ...) -> 'QgsGeometry': ...


class QgsOptionalQgsExpressionBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, data: 'QgsExpression') -> None: ...
    @typing.overload
    def __init__(self, data: 'QgsExpression', enabled: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOptionalQgsExpressionBase') -> None: ...

    def setData(self, data: 'QgsExpression') -> None: ...
    def data(self) -> 'QgsExpression': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def __int__(self) -> bool: ...


class QgsOptionalExpression(QgsOptionalQgsExpressionBase):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, expression: 'QgsExpression') -> None: ...
    @typing.overload
    def __init__(self, expression: 'QgsExpression', enabled: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOptionalExpression') -> None: ...

    def readXml(self, element: QtXml.QDomElement) -> None: ...
    def writeXml(self, element: QtXml.QDomElement) -> None: ...


class QgsOwsConnection(QtCore.QObject):

    def __init__(self, service: str, connName: str) -> None: ...

    @staticmethod
    def setSelectedConnection(service: str, name: str) -> None: ...
    @staticmethod
    def selectedConnection(service: str) -> str: ...
    @staticmethod
    def deleteConnection(service: str, name: str) -> None: ...
    @staticmethod
    def connectionList(service: str) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def addWfsConnectionSettings(uri: QgsDataSourceUri, settingsKey: str) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWfsConnectionSettings(uri: QgsDataSourceUri, service: str, connName: str) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWmsWcsConnectionSettings(uri: QgsDataSourceUri, settingsKey: str) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWmsWcsConnectionSettings(uri: QgsDataSourceUri, service: str, connName: str) -> QgsDataSourceUri: ...
    def uri(self) -> QgsDataSourceUri: ...
    def service(self) -> str: ...
    def connectionInfo(self) -> str: ...
    def connectionName(self) -> str: ...


class QgsPaintEngineHack(QtGui.QPaintEngine):

    def __init__(self) -> None: ...

    @staticmethod
    def fixEngineFlags(engine: QtGui.QPaintEngine) -> None: ...
    def fixFlags(self) -> None: ...


class QgsPainting(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPainting') -> None: ...

    @staticmethod
    def isClippingMode(mode: Qgis.BlendMode) -> bool: ...
    @staticmethod
    def getBlendModeEnum(blendMode: QtGui.QPainter.CompositionMode) -> Qgis.BlendMode: ...
    @staticmethod
    def getCompositionMode(blendMode: Qgis.BlendMode) -> QtGui.QPainter.CompositionMode: ...


class QgsPathResolver(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, baseFileName: str = ..., attachmentDir: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPathResolver') -> None: ...

    @staticmethod
    def removePathWriter(id: str) -> None: ...
    @staticmethod
    def setPathWriter(a0: typing.Callable[..., None]) -> str: ...
    @staticmethod
    def removePathPreprocessor(id: str) -> None: ...
    @staticmethod
    def setPathPreprocessor(a0: typing.Callable[..., None]) -> str: ...
    def readPath(self, filename: str) -> str: ...
    def writePath(self, filename: str) -> str: ...


class QgsPluginLayer(QgsMapLayer):

    def __init__(self, layerType: str, layerName: str = ...) -> None: ...

    def dataProvider(self) -> 'QgsDataProvider': ...
    def setSource(self, source: str) -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def pluginLayerType(self) -> str: ...
    def clone(self) -> 'QgsPluginLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsPluginLayerType(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPluginLayerType') -> None: ...

    def showLayerProperties(self, layer: QgsPluginLayer) -> bool: ...
    @typing.overload
    def createLayer(self) -> QgsPluginLayer: ...
    @typing.overload
    def createLayer(self, uri: str) -> QgsPluginLayer: ...
    def name(self) -> str: ...


class QgsPluginLayerRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def createLayer(self, typeName: str, uri: str = ...) -> QgsPluginLayer: ...
    def pluginLayerType(self, typeName: str) -> QgsPluginLayerType: ...
    def removePluginLayerType(self, typeName: str) -> bool: ...
    def addPluginLayerType(self, pluginLayerType: QgsPluginLayerType) -> bool: ...
    def pluginLayerTypes(self) -> typing.List[str]: ...


class QgsPointLocator(QtCore.QObject):

    class Type(int):
        Invalid = ... # type: QgsPointLocator.Type
        Vertex = ... # type: QgsPointLocator.Type
        Edge = ... # type: QgsPointLocator.Type
        Area = ... # type: QgsPointLocator.Type
        Centroid = ... # type: QgsPointLocator.Type
        MiddleOfSegment = ... # type: QgsPointLocator.Type
        LineEndpoint = ... # type: QgsPointLocator.Type
        All = ... # type: QgsPointLocator.Type

    class Types(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointLocator.Types') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsPointLocator.Types': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class Match(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, t: 'QgsPointLocator.Type', vl: QgsVectorLayer, fid: int, dist: float, pt: 'QgsPointXY', vertexIndex: int = ..., edgePoints: typing.Optional['QgsPointXY'] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointLocator.Match') -> None: ...

        def interpolatedPoint(self, destinationCrs: 'QgsCoordinateReferenceSystem' = ...) -> 'QgsPoint': ...
        def edgePoints(self) -> typing.Tuple['QgsPointXY', 'QgsPointXY']: ...
        def featureId(self) -> int: ...
        def layer(self) -> QgsVectorLayer: ...
        def vertexIndex(self) -> int: ...
        def point(self) -> 'QgsPointXY': ...
        def distance(self) -> float: ...
        def hasLineEndpoint(self) -> bool: ...
        def hasMiddleSegment(self) -> bool: ...
        def hasArea(self) -> bool: ...
        def hasCentroid(self) -> bool: ...
        def hasEdge(self) -> bool: ...
        def hasVertex(self) -> bool: ...
        def isValid(self) -> bool: ...
        def type(self) -> 'QgsPointLocator.Type': ...

    class MatchFilter(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointLocator.MatchFilter') -> None: ...

        def acceptMatch(self, match: 'QgsPointLocator.Match') -> bool: ...

    def __init__(self, layer: QgsVectorLayer, destinationCrs: 'QgsCoordinateReferenceSystem' = ..., transformContext: 'QgsCoordinateTransformContext' = ..., extent: typing.Optional['QgsRectangle'] = ...) -> None: ...

    def destroyIndex(self) -> None: ...
    def rebuildIndex(self, maxFeaturesToIndex: int = ...) -> bool: ...
    def initFinished(self, ok: bool) -> None: ...
    def waitForIndexingFinished(self) -> None: ...
    def isIndexing(self) -> bool: ...
    def cachedGeometryCount(self) -> int: ...
    def pointInPolygon(self, point: 'QgsPointXY', relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def verticesInRect(self, rect: 'QgsRectangle', filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def verticesInRect(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def edgesInRect(self, rect: 'QgsRectangle', filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def edgesInRect(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    def nearestArea(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestEdge(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestLineEndpoints(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestMiddleOfSegment(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestCentroid(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestVertex(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def hasIndex(self) -> bool: ...
    def init(self, maxFeaturesToIndex: int = ..., relaxed: bool = ...) -> bool: ...
    def setRenderContext(self, context: 'QgsRenderContext') -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def layer(self) -> QgsVectorLayer: ...


class QgsPointXY(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p: 'QgsPointXY') -> None: ...
    @typing.overload
    def __init__(self, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    @typing.overload
    def __init__(self, point: QtCore.QPoint) -> None: ...
    @typing.overload
    def __init__(self, point: 'QgsPoint') -> None: ...

    def __hash__(self) -> int: ...
    def __getitem__(self, a0: int) -> typing.Any: ...
    def __len__(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def multiply(self, scalar: float) -> None: ...
    def compare(self, other: 'QgsPointXY', epsilon: float = ...) -> bool: ...
    def isEmpty(self) -> bool: ...
    def project(self, distance: float, bearing: float) -> 'QgsPointXY': ...
    def azimuth(self, other: 'QgsPointXY') -> float: ...
    def sqrDistToSegment(self, x1: float, y1: float, x2: float, y2: float, epsilon: float = ...) -> typing.Tuple[float, 'QgsPointXY']: ...
    @typing.overload
    def distance(self, x: float, y: float) -> float: ...
    @typing.overload
    def distance(self, other: 'QgsPointXY') -> float: ...
    @typing.overload
    def sqrDist(self, x: float, y: float) -> float: ...
    @typing.overload
    def sqrDist(self, other: 'QgsPointXY') -> float: ...
    def asWkt(self) -> str: ...
    def toString(self, precision: int = ...) -> str: ...
    def toQPointF(self) -> QtCore.QPointF: ...
    def y(self) -> float: ...
    def x(self) -> float: ...
    def set(self, x: float, y: float) -> None: ...
    def setY(self, y: float) -> None: ...
    def setX(self, x: float) -> None: ...


class QgsPostgresStringUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPostgresStringUtils') -> None: ...

    @staticmethod
    def buildArray(list: typing.Iterable[typing.Any]) -> str: ...
    @staticmethod
    def parseArray(string: str) -> typing.List[typing.Any]: ...


class QgsPropertyDefinition(PyQt5.sip.wrapper):

    class DataType(int):
        DataTypeString = ... # type: QgsPropertyDefinition.DataType
        DataTypeNumeric = ... # type: QgsPropertyDefinition.DataType
        DataTypeBoolean = ... # type: QgsPropertyDefinition.DataType

    class StandardPropertyTemplate(int):
        Boolean = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Integer = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        IntegerPositive = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        IntegerPositiveGreaterZero = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Double = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        DoublePositive = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Double0To1 = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Rotation = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        String = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Opacity = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        RenderUnits = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        ColorWithAlpha = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        ColorNoAlpha = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        PenJoinStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        BlendMode = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Point = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Size = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Size2D = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        LineStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        StrokeWidth = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        FillStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        CapStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        HorizontalAnchor = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        VerticalAnchor = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        SvgPath = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Offset = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        DateTime = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Custom = ... # type: QgsPropertyDefinition.StandardPropertyTemplate

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, description: str, type: 'QgsPropertyDefinition.StandardPropertyTemplate', origin: str = ..., comment: str = ...) -> None: ...
    @typing.overload
    def __init__(self, name: str, dataType: 'QgsPropertyDefinition.DataType', description: str, helpText: str, origin: str = ..., comment: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPropertyDefinition') -> None: ...

    def supportsAssistant(self) -> bool: ...
    def standardTemplate(self) -> 'QgsPropertyDefinition.StandardPropertyTemplate': ...
    def dataType(self) -> 'QgsPropertyDefinition.DataType': ...
    def setDataType(self, type: 'QgsPropertyDefinition.DataType') -> None: ...
    def helpText(self) -> str: ...
    def setComment(self, comment: str) -> None: ...
    def comment(self) -> str: ...
    def description(self) -> str: ...
    def setOrigin(self, origin: str) -> None: ...
    def origin(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsProperty(PyQt5.sip.wrapper):

    class Type(int):
        InvalidProperty = ... # type: QgsProperty.Type
        StaticProperty = ... # type: QgsProperty.Type
        FieldBasedProperty = ... # type: QgsProperty.Type
        ExpressionBasedProperty = ... # type: QgsProperty.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProperty') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def convertToTransformer(self) -> bool: ...
    def transformer(self) -> 'QgsPropertyTransformer': ...
    def setTransformer(self, transformer: 'QgsPropertyTransformer') -> None: ...
    def loadVariant(self, property: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def valueAsBool(self, context: QgsExpressionContext, defaultValue: bool = ...) -> typing.Tuple[bool, bool]: ...
    def valueAsInt(self, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, bool]: ...
    def valueAsDouble(self, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, bool]: ...
    def valueAsColor(self, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    def valueAsString(self, context: QgsExpressionContext, defaultString: str = ...) -> typing.Tuple[str, bool]: ...
    def valueAsDateTime(self, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, bool]: ...
    def value(self, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Tuple[typing.Any, bool]: ...
    def isProjectColor(self) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def asExpression(self) -> str: ...
    def expressionString(self) -> str: ...
    def setExpressionString(self, expression: str) -> None: ...
    def field(self) -> str: ...
    def setField(self, field: str) -> None: ...
    def staticValue(self) -> typing.Any: ...
    def setStaticValue(self, value: typing.Any) -> None: ...
    def setActive(self, active: bool) -> None: ...
    def isStaticValueInContext(self, context: QgsExpressionContext) -> typing.Tuple[bool, typing.Any]: ...
    def isActive(self) -> bool: ...
    def propertyType(self) -> 'QgsProperty.Type': ...
    def __int__(self) -> bool: ...
    @staticmethod
    def fromValue(value: typing.Any, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def fromField(fieldName: str, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def fromExpression(expression: str, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def variantMapToPropertyMap(variantMap: typing.Dict[str, typing.Any]) -> typing.Dict[str, 'QgsProperty']: ...
    @staticmethod
    def propertyMapToVariantMap(propertyMap: typing.Dict[str, 'QgsProperty']) -> typing.Dict[str, typing.Any]: ...


class QgsAbstractPropertyCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractPropertyCollection') -> None: ...

    def loadVariant(self, configuration: typing.Any, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def toVariant(self, definitions: typing.Dict[int, QgsPropertyDefinition]) -> typing.Any: ...
    def readXml(self, collectionElem: QtXml.QDomElement, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def writeXml(self, collectionElem: QtXml.QDomElement, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def hasDynamicProperties(self) -> bool: ...
    def hasActiveProperties(self) -> bool: ...
    def isActive(self, key: int) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def valueAsBool(self, key: int, context: QgsExpressionContext, defaultValue: bool = ...) -> typing.Tuple[bool, bool]: ...
    def valueAsInt(self, key: int, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, bool]: ...
    def valueAsDouble(self, key: int, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, bool]: ...
    def valueAsColor(self, key: int, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    def valueAsString(self, key: int, context: QgsExpressionContext, defaultString: str = ...) -> typing.Tuple[str, bool]: ...
    def valueAsDateTime(self, key: int, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, bool]: ...
    def value(self, key: int, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Any: ...
    def property(self, key: int) -> QgsProperty: ...
    def hasProperty(self, key: int) -> bool: ...
    def clear(self) -> None: ...
    def propertyKeys(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsPropertyCollection(QgsAbstractPropertyCollection):

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPropertyCollection') -> None: ...

    @typing.overload
    def setProperty(self, key: int, property: QgsProperty) -> None: ...
    @typing.overload
    def setProperty(self, key: int, value: typing.Any) -> None: ...
    def loadVariant(self, configuration: typing.Any, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def toVariant(self, definitions: typing.Dict[int, QgsPropertyDefinition]) -> typing.Any: ...
    def hasDynamicProperties(self) -> bool: ...
    def hasActiveProperties(self) -> bool: ...
    def isActive(self, key: int) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def value(self, key: int, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Any: ...
    def property(self, key: int) -> QgsProperty: ...
    def hasProperty(self, key: int) -> bool: ...
    def clear(self) -> None: ...
    def propertyKeys(self) -> typing.Any: ...
    def count(self) -> int: ...


class QgsPropertyCollectionStack(QgsAbstractPropertyCollection):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPropertyCollectionStack') -> None: ...

    def loadVariant(self, collection: typing.Any, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def toVariant(self, definitions: typing.Dict[int, QgsPropertyDefinition]) -> typing.Any: ...
    def hasProperty(self, key: int) -> bool: ...
    def propertyKeys(self) -> typing.Any: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def value(self, key: int, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Any: ...
    def property(self, key: int) -> QgsProperty: ...
    def isActive(self, key: int) -> bool: ...
    def hasDynamicProperties(self) -> bool: ...
    def hasActiveProperties(self) -> bool: ...
    def collection(self, name: str) -> QgsPropertyCollection: ...
    def at(self, index: int) -> QgsPropertyCollection: ...
    def appendCollection(self, collection: QgsPropertyCollection) -> None: ...
    def clear(self) -> None: ...
    def count(self) -> int: ...


class QgsCurveTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, controlPoints: typing.Iterable[QgsPointXY]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsCurveTransform') -> None: ...

    def loadVariant(self, transformer: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def writeXml(self, transformElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    @typing.overload
    def y(self, x: float) -> float: ...
    @typing.overload
    def y(self, x: typing.Iterable[float]) -> typing.List[float]: ...
    def removeControlPoint(self, x: float, y: float) -> None: ...
    def addControlPoint(self, x: float, y: float) -> None: ...
    def setControlPoints(self, points: typing.Iterable[QgsPointXY]) -> None: ...
    def controlPoints(self) -> typing.List[QgsPointXY]: ...


class QgsPropertyTransformer(PyQt5.sip.wrapper):

    class Type(int):
        GenericNumericTransformer = ... # type: QgsPropertyTransformer.Type
        SizeScaleTransformer = ... # type: QgsPropertyTransformer.Type
        ColorRampTransformer = ... # type: QgsPropertyTransformer.Type

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPropertyTransformer') -> None: ...

    def transformNumeric(self, input: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsPropertyTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def setCurveTransform(self, transform: QgsCurveTransform) -> None: ...
    def curveTransform(self) -> QgsCurveTransform: ...
    def setMaxValue(self, max: float) -> None: ...
    def maxValue(self) -> float: ...
    def setMinValue(self, min: float) -> None: ...
    def minValue(self) -> float: ...
    def toVariant(self) -> typing.Any: ...
    def loadVariant(self, transformer: typing.Any) -> bool: ...
    def clone(self) -> 'QgsPropertyTransformer': ...
    def transformerType(self) -> 'QgsPropertyTransformer.Type': ...
    @staticmethod
    def create(type: 'QgsPropertyTransformer.Type') -> 'QgsPropertyTransformer': ...


class QgsGenericNumericTransformer(QgsPropertyTransformer):

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ..., minOutput: float = ..., maxOutput: float = ..., nullOutput: float = ..., exponent: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGenericNumericTransformer') -> None: ...

    def setExponent(self, exponent: float) -> None: ...
    def exponent(self) -> float: ...
    def setNullOutputValue(self, size: float) -> None: ...
    def nullOutputValue(self) -> float: ...
    def setMaxOutputValue(self, size: float) -> None: ...
    def maxOutputValue(self) -> float: ...
    def setMinOutputValue(self, size: float) -> None: ...
    def minOutputValue(self) -> float: ...
    def value(self, input: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsGenericNumericTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsGenericNumericTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsSizeScaleTransformer(QgsPropertyTransformer):

    class ScaleType(int):
        Linear = ... # type: QgsSizeScaleTransformer.ScaleType
        Area = ... # type: QgsSizeScaleTransformer.ScaleType
        Flannery = ... # type: QgsSizeScaleTransformer.ScaleType
        Exponential = ... # type: QgsSizeScaleTransformer.ScaleType

    @typing.overload
    def __init__(self, type: 'QgsSizeScaleTransformer.ScaleType' = ..., minValue: float = ..., maxValue: float = ..., minSize: float = ..., maxSize: float = ..., nullSize: float = ..., exponent: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSizeScaleTransformer') -> None: ...

    def setType(self, type: 'QgsSizeScaleTransformer.ScaleType') -> None: ...
    def type(self) -> 'QgsSizeScaleTransformer.ScaleType': ...
    def setExponent(self, exponent: float) -> None: ...
    def exponent(self) -> float: ...
    def setNullSize(self, size: float) -> None: ...
    def nullSize(self) -> float: ...
    def setMaxSize(self, size: float) -> None: ...
    def maxSize(self) -> float: ...
    def setMinSize(self, size: float) -> None: ...
    def minSize(self) -> float: ...
    def size(self, value: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsSizeScaleTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsSizeScaleTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsColorRampTransformer(QgsPropertyTransformer):

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ..., ramp: typing.Optional[QgsColorRamp] = ..., nullColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampTransformer') -> None: ...

    def setRampName(self, name: str) -> None: ...
    def rampName(self) -> str: ...
    def setNullColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def nullColor(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsColorRampTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsProviderConnectionModel(QtCore.QAbstractItemModel):

    class Role(int):
        RoleConnectionName = ... # type: QgsProviderConnectionModel.Role
        RoleUri = ... # type: QgsProviderConnectionModel.Role
        RoleConfiguration = ... # type: QgsProviderConnectionModel.Role
        RoleEmpty = ... # type: QgsProviderConnectionModel.Role

    def __init__(self, provider: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def index(self, row: int, column: int, parent: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def allowEmptyConnection(self) -> bool: ...
    def setAllowEmptyConnection(self, allowEmpty: bool) -> None: ...


class QgsProxyFeatureSink(QgsFeatureSink):

    @typing.overload
    def __init__(self, sink: QgsFeatureSink) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProxyFeatureSink') -> None: ...

    def destinationSink(self) -> QgsFeatureSink: ...
    def lastError(self) -> str: ...
    @typing.overload
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeatures(self, iterator: QgsFeatureIterator, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...


class QgsProxyProgressTask(QgsTask):

    def __init__(self, description: str, canCancel: bool = ...) -> None: ...

    def canceled(self) -> None: ...
    def cancel(self) -> None: ...
    def setProxyProgress(self, progress: float) -> None: ...
    def run(self) -> bool: ...
    def finalize(self, result: bool) -> None: ...


class QgsScopedProxyProgressTask(PyQt5.sip.wrapper):

    def __init__(self, description: str) -> None: ...

    def setProgress(self, progress: float) -> None: ...


class QgsPythonRunner(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPythonRunner') -> None: ...

    def evalCommand(self, command: str, result: str) -> bool: ...
    def runCommand(self, command: str, messageOnError: str = ...) -> bool: ...
    @staticmethod
    def setInstance(runner: 'QgsPythonRunner') -> None: ...
    @staticmethod
    def eval(command: str) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def run(command: str, messageOnError: str = ...) -> bool: ...
    @staticmethod
    def isValid() -> bool: ...


class QgsQueryResultModel(QtCore.QAbstractTableModel):

    def __init__(self, queryResult: 'QgsAbstractDatabaseProviderConnection.QueryResult', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def fetchingStarted(self) -> None: ...
    def fetchMoreRows(self, maxRows: int) -> None: ...
    def fetchingComplete(self) -> None: ...
    def cancel(self) -> None: ...
    def rowsReady(self, rows: typing.Any) -> None: ...
    def queryResult(self) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
    def columns(self) -> typing.List[str]: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...


class QgsRangedoubleBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, lower: float, upper: float, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRangedoubleBase') -> None: ...

    def overlaps(self, other: 'QgsRangedoubleBase') -> bool: ...
    @typing.overload
    def contains(self, other: 'QgsRangedoubleBase') -> bool: ...
    @typing.overload
    def contains(self, element: float) -> bool: ...
    def isSingleton(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def includeUpper(self) -> bool: ...
    def includeLower(self) -> bool: ...
    def upper(self) -> float: ...
    def lower(self) -> float: ...


class QgsDoubleRange(QgsRangedoubleBase):

    @typing.overload
    def __init__(self, lower: float, upper: float, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDoubleRange') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def isInfinite(self) -> bool: ...


class QgsRangeintBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, lower: int, upper: int, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRangeintBase') -> None: ...

    def overlaps(self, other: 'QgsRangeintBase') -> bool: ...
    @typing.overload
    def contains(self, other: 'QgsRangeintBase') -> bool: ...
    @typing.overload
    def contains(self, element: int) -> bool: ...
    def isSingleton(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def includeUpper(self) -> bool: ...
    def includeLower(self) -> bool: ...
    def upper(self) -> int: ...
    def lower(self) -> int: ...


class QgsIntRange(QgsRangeintBase):

    @typing.overload
    def __init__(self, lower: int, upper: int, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsIntRange') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def isInfinite(self) -> bool: ...


class QgsDateRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, begin: typing.Union[QtCore.QDate, datetime.date], end: typing.Union[QtCore.QDate, datetime.date], includeBeginning: bool = ..., includeEnd: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDateRange') -> None: ...

    def extend(self, other: 'QgsDateRange') -> bool: ...
    def overlaps(self, other: 'QgsDateRange') -> bool: ...
    @typing.overload
    def contains(self, other: 'QgsDateRange') -> bool: ...
    @typing.overload
    def contains(self, element: typing.Union[QtCore.QDate, datetime.date]) -> bool: ...
    def isEmpty(self) -> bool: ...
    def isInfinite(self) -> bool: ...
    def isInstant(self) -> bool: ...
    def includeEnd(self) -> bool: ...
    def includeBeginning(self) -> bool: ...
    def end(self) -> QtCore.QDate: ...
    def begin(self) -> QtCore.QDate: ...


class QgsDateTimeRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, begin: typing.Union[QtCore.QDateTime, datetime.datetime], end: typing.Union[QtCore.QDateTime, datetime.datetime], includeBeginning: bool = ..., includeEnd: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDateTimeRange') -> None: ...

    def extend(self, other: 'QgsDateTimeRange') -> bool: ...
    def overlaps(self, other: 'QgsDateTimeRange') -> bool: ...
    @typing.overload
    def contains(self, other: 'QgsDateTimeRange') -> bool: ...
    @typing.overload
    def contains(self, element: typing.Union[QtCore.QDateTime, datetime.datetime]) -> bool: ...
    def isEmpty(self) -> bool: ...
    def isInfinite(self) -> bool: ...
    def isInstant(self) -> bool: ...
    def includeEnd(self) -> bool: ...
    def includeBeginning(self) -> bool: ...
    def end(self) -> QtCore.QDateTime: ...
    def begin(self) -> QtCore.QDateTime: ...


class QgsReadWriteContext(PyQt5.sip.wrapper):

    class ReadWriteMessage(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, message: str = ..., level: Qgis.MessageLevel = ..., categories: typing.Iterable[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsReadWriteContext.ReadWriteMessage') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def categories(self) -> typing.List[str]: ...
        def level(self) -> Qgis.MessageLevel: ...
        def message(self) -> str: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReadWriteContext') -> None: ...

    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def setProjectTranslator(self, projectTranslator: 'QgsProjectTranslator') -> None: ...
    def projectTranslator(self) -> 'QgsProjectTranslator': ...
    def takeMessages(self) -> typing.List['QgsReadWriteContext.ReadWriteMessage']: ...
    def _enterCategory(self, category: str, details: str = ...) -> 'QgsReadWriteContextCategoryPopper': ...
    def pushMessage(self, message: str, level: Qgis.MessageLevel = ...) -> None: ...
    def setPathResolver(self, resolver: QgsPathResolver) -> None: ...
    def pathResolver(self) -> QgsPathResolver: ...


class QgsReadWriteContextCategoryPopper(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReadWriteContextCategoryPopper') -> None: ...


class QgsReadWriteLocker(PyQt5.sip.wrapper):

    class Mode(int):
        Read = ... # type: QgsReadWriteLocker.Mode
        Write = ... # type: QgsReadWriteLocker.Mode
        Unlocked = ... # type: QgsReadWriteLocker.Mode

    @typing.overload
    def __init__(self, lock: QtCore.QReadWriteLock, mode: 'QgsReadWriteLocker.Mode') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReadWriteLocker') -> None: ...

    def unlock(self) -> None: ...
    def changeMode(self, mode: 'QgsReadWriteLocker.Mode') -> None: ...


class QgsRecentStyleHandler(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def recentSymbol(self, identifier: str) -> 'QgsSymbol': ...
    def pushRecentSymbol(self, identifier: str, symbol: 'QgsSymbol') -> None: ...


class QgsRelation(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: 'QgsRelationContext') -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsRelation') -> None: ...

    @staticmethod
    def strengthToDisplayString(strength: Qgis.RelationshipStrength) -> str: ...
    @staticmethod
    def cardinalityToDisplayString(cardinality: Qgis.RelationshipCardinality) -> str: ...
    def type(self) -> Qgis.RelationshipType: ...
    def polymorphicRelation(self) -> 'QgsPolymorphicRelation': ...
    def polymorphicRelationId(self) -> str: ...
    def setPolymorphicRelationId(self, polymorphicRelationId: str) -> None: ...
    def updateRelationStatus(self) -> None: ...
    def resolveReferencingField(self, referencedField: str) -> str: ...
    def resolveReferencedField(self, referencingField: str) -> str: ...
    def hasEqualDefinition(self, other: 'QgsRelation') -> bool: ...
    def validationError(self) -> str: ...
    def isValid(self) -> bool: ...
    def referencingFields(self) -> typing.List[int]: ...
    def referencedFields(self) -> typing.List[int]: ...
    def fieldPairs(self) -> typing.Dict[str, str]: ...
    def referencedLayer(self) -> QgsVectorLayer: ...
    def referencedLayerId(self) -> str: ...
    def referencingLayer(self) -> QgsVectorLayer: ...
    def referencingLayerId(self) -> str: ...
    def generateId(self) -> None: ...
    def id(self) -> str: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def name(self) -> str: ...
    def getReferencedFeature(self, feature: QgsFeature) -> QgsFeature: ...
    @typing.overload
    def getReferencedFeatureRequest(self, attributes: typing.Any) -> QgsFeatureRequest: ...
    @typing.overload
    def getReferencedFeatureRequest(self, feature: QgsFeature) -> QgsFeatureRequest: ...
    def getRelatedFeaturesFilter(self, feature: QgsFeature) -> str: ...
    def getRelatedFeaturesRequest(self, feature: QgsFeature) -> QgsFeatureRequest: ...
    def getRelatedFeatures(self, feature: QgsFeature) -> QgsFeatureIterator: ...
    def addFieldPair(self, referencingField: str, referencedField: str) -> None: ...
    def setReferencedLayer(self, id: str) -> None: ...
    def setReferencingLayer(self, id: str) -> None: ...
    def setStrength(self, strength: Qgis.RelationshipStrength) -> None: ...
    def setName(self, name: str) -> None: ...
    def setId(self, id: str) -> None: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def createFromXml(node: QtXml.QDomNode, context: QgsReadWriteContext, relationContext: 'QgsRelationContext' = ...) -> 'QgsRelation': ...


class QgsPolymorphicRelation(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, context: 'QgsRelationContext') -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPolymorphicRelation') -> None: ...

    def setRelationStrength(self, relationStrength: Qgis.RelationshipStrength) -> None: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def layerRepresentation(self, layer: QgsVectorLayer) -> str: ...
    def generateRelations(self) -> typing.List[QgsRelation]: ...
    def referencedLayerIds(self) -> typing.List[str]: ...
    def setReferencedLayerIds(self, childRelationIds: typing.Iterable[str]) -> None: ...
    def referencedLayerExpression(self) -> str: ...
    def setReferencedLayerExpression(self, expression: str) -> None: ...
    def referencedLayerField(self) -> str: ...
    def setReferencedLayerField(self, referencedLayerField: str) -> None: ...
    def updateRelationStatus(self) -> None: ...
    def hasEqualDefinition(self, other: 'QgsPolymorphicRelation') -> bool: ...
    def isValid(self) -> bool: ...
    def referencingFields(self) -> typing.List[int]: ...
    def referencedFields(self, layerId: str) -> typing.List[int]: ...
    def fieldPairs(self) -> typing.Dict[str, str]: ...
    def referencingLayer(self) -> QgsVectorLayer: ...
    def referencingLayerId(self) -> str: ...
    def generateId(self) -> None: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def addFieldPair(self, referencingField: str, referencedField: str) -> None: ...
    def setReferencingLayer(self, id: str) -> None: ...
    def setName(self, name: str) -> None: ...
    def setId(self, id: str) -> None: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def createFromXml(node: QtXml.QDomNode, context: QgsReadWriteContext, relationContext: 'QgsRelationContext' = ...) -> 'QgsPolymorphicRelation': ...


class QgsRelationContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsRelationContext') -> None: ...

    def project(self) -> 'QgsProject': ...


class QgsRemappingSinkDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRemappingSinkDefinition') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setDestinationFields(self, fields: QgsFields) -> None: ...
    def destinationFields(self) -> QgsFields: ...
    def setDestinationWkbType(self, type: Qgis.WkbType) -> None: ...
    def destinationWkbType(self) -> Qgis.WkbType: ...
    def setDestinationCrs(self, destination: 'QgsCoordinateReferenceSystem') -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setSourceCrs(self, source: 'QgsCoordinateReferenceSystem') -> None: ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def addMappedField(self, destinationField: str, property: QgsProperty) -> None: ...
    def setFieldMap(self, map: typing.Dict[str, QgsProperty]) -> None: ...
    def fieldMap(self) -> typing.Dict[str, QgsProperty]: ...


class QgsRemappingProxyFeatureSink(QgsFeatureSink):

    @typing.overload
    def __init__(self, mappingDefinition: QgsRemappingSinkDefinition, sink: QgsFeatureSink) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRemappingProxyFeatureSink') -> None: ...

    def destinationSink(self) -> QgsFeatureSink: ...
    def lastError(self) -> str: ...
    @typing.overload
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeatures(self, iterator: QgsFeatureIterator, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def remapFeature(self, feature: QgsFeature) -> typing.List[QgsFeature]: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...


class QgsWeakRelation(PyQt5.sip.wrapper):

    class WeakRelationType(int):
        Referencing = ... # type: QgsWeakRelation.WeakRelationType
        Referenced = ... # type: QgsWeakRelation.WeakRelationType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, relationId: str, relationName: str, strength: Qgis.RelationshipStrength, referencingLayerId: str, referencingLayerName: str, referencingLayerSource: str, referencingLayerProviderKey: str, referencedLayerId: str, referencedLayerName: str, referencedLayerSource: str, referencedLayerProviderKey: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsWeakRelation') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def writeXml(layer: QgsVectorLayer, type: 'QgsWeakRelation.WeakRelationType', relation: QgsRelation, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def readXml(layer: QgsVectorLayer, type: 'QgsWeakRelation.WeakRelationType', node: QtXml.QDomNode, resolver: QgsPathResolver) -> 'QgsWeakRelation': ...
    def setRelatedTableType(self, type: str) -> None: ...
    def relatedTableType(self) -> str: ...
    def setBackwardPathLabel(self, label: str) -> None: ...
    def setForwardPathLabel(self, label: str) -> None: ...
    def backwardPathLabel(self) -> str: ...
    def forwardPathLabel(self) -> str: ...
    def setCardinality(self, cardinality: Qgis.RelationshipCardinality) -> None: ...
    def cardinality(self) -> Qgis.RelationshipCardinality: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def setMappingReferencedLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def mappingReferencedLayerFields(self) -> typing.List[str]: ...
    def setReferencedLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def referencedLayerFields(self) -> typing.List[str]: ...
    def setMappingReferencingLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def mappingReferencingLayerFields(self) -> typing.List[str]: ...
    def setReferencingLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def referencingLayerFields(self) -> typing.List[str]: ...
    def mappingTableName(self) -> str: ...
    def mappingTableProvider(self) -> str: ...
    def mappingTableSource(self) -> str: ...
    def referencedLayerName(self) -> str: ...
    def referencedLayerProvider(self) -> str: ...
    def referencedLayerSource(self) -> str: ...
    def referencingLayerName(self) -> str: ...
    def referencingLayerProvider(self) -> str: ...
    def referencingLayerSource(self) -> str: ...
    def name(self) -> str: ...
    def id(self) -> str: ...
    def resolvedRelations(self, project: 'QgsProject') -> typing.List[QgsRelation]: ...


class QgsRelationManager(QtCore.QObject):

    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...

    def updateRelationsStatus(self) -> None: ...
    def changed(self) -> None: ...
    def relationsLoaded(self) -> None: ...
    def setPolymorphicRelations(self, relations: typing.Iterable[QgsPolymorphicRelation]) -> None: ...
    def removePolymorphicRelation(self, polymorphicRelationId: str) -> None: ...
    def addPolymorphicRelation(self, polymorphicRelation: QgsPolymorphicRelation) -> None: ...
    def polymorphicRelation(self, polymorphicRelationId: str) -> QgsPolymorphicRelation: ...
    def polymorphicRelations(self) -> typing.Dict[str, QgsPolymorphicRelation]: ...
    @staticmethod
    def discoverRelations(existingRelations: typing.Iterable[QgsRelation], layers: typing.Iterable[QgsVectorLayer]) -> typing.List[QgsRelation]: ...
    def referencedRelations(self, layer: typing.Optional[QgsVectorLayer] = ...) -> typing.List[QgsRelation]: ...
    def referencingRelations(self, layer: typing.Optional[QgsVectorLayer] = ..., fieldIdx: int = ...) -> typing.List[QgsRelation]: ...
    def clear(self) -> None: ...
    def relationsByName(self, name: str) -> typing.List[QgsRelation]: ...
    def relation(self, id: str) -> QgsRelation: ...
    @typing.overload
    def removeRelation(self, id: str) -> None: ...
    @typing.overload
    def removeRelation(self, relation: QgsRelation) -> None: ...
    def addRelation(self, relation: QgsRelation) -> None: ...
    def relations(self) -> typing.Dict[str, QgsRelation]: ...
    def setRelations(self, relations: typing.Iterable[QgsRelation]) -> None: ...
    def context(self) -> QgsRelationContext: ...


class QgsRenderChecker(PyQt5.sip.wrapper):

    class Flag(int):
        AvoidExportingRenderedImage = ... # type: QgsRenderChecker.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRenderChecker.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsRenderChecker.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRenderChecker') -> None: ...

    def dartMeasurements(self) -> typing.List[QgsDartMeasurement]: ...
    def enableDashBuffering(self, enable: bool) -> None: ...
    def expectedImageFile(self) -> str: ...
    @staticmethod
    def drawBackground(image: QtGui.QImage) -> None: ...
    def isKnownAnomaly(self, diffImageFile: str) -> bool: ...
    @typing.overload
    def compareImages(self, testName: str, mismatchCount: int = ..., renderedImageFile: str = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    @typing.overload
    def compareImages(self, testName: str, referenceImageFile: str, renderedImageFile: str, mismatchCount: int = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    def runTest(self, testName: str, mismatchCount: int = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    def setSizeTolerance(self, xTolerance: int, yTolerance: int) -> None: ...
    def setColorTolerance(self, colorTolerance: int) -> None: ...
    def setMapSettings(self, mapSettings: QgsMapSettings) -> None: ...
    def renderedImage(self) -> str: ...
    def setExpectFail(self, expectFail: bool) -> None: ...
    def setRenderedImage(self, imageFileName: str) -> None: ...
    def imageToHash(self, imageFile: str) -> str: ...
    def setControlPathSuffix(self, name: str) -> None: ...
    def setControlPathPrefix(self, name: str) -> None: ...
    def setControlExtension(self, extension: str) -> None: ...
    def setControlName(self, name: str) -> None: ...
    def setElapsedTimeTarget(self, target: int) -> None: ...
    def elapsedTime(self) -> int: ...
    def matchTarget(self) -> int: ...
    def mismatchCount(self) -> int: ...
    def matchPercent(self) -> float: ...
    def report(self, ignoreSuccess: bool = ...) -> str: ...
    def setControlImagePath(self, path: str) -> None: ...
    def controlImagePath(self) -> str: ...
    @staticmethod
    def shouldGenerateReport() -> bool: ...
    @staticmethod
    def testReportDir() -> QtCore.QDir: ...


class QgsRenderContext(QgsTemporalRangeObject):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, rh: 'QgsRenderContext') -> None: ...

    def setElevationMap(self, map: QgsElevationMap) -> None: ...
    def elevationMap(self) -> QgsElevationMap: ...
    def setCurrentFrame(self, frame: int) -> None: ...
    def currentFrame(self) -> int: ...
    def setFrameRate(self, rate: float) -> None: ...
    def frameRate(self) -> float: ...
    def setRendererUsage(self, usage: Qgis.RendererUsage) -> None: ...
    def rendererUsage(self) -> Qgis.RendererUsage: ...
    def imageFormat(self) -> QtGui.QImage.Format: ...
    def setImageFormat(self, format: QtGui.QImage.Format) -> None: ...
    def deviceOutputSize(self) -> QtCore.QSize: ...
    def setDevicePixelRatio(self, ratio: float) -> None: ...
    def devicePixelRatio(self) -> float: ...
    def setOutputSize(self, size: QtCore.QSize) -> None: ...
    def outputSize(self) -> QtCore.QSize: ...
    def setZRange(self, range: QgsDoubleRange) -> None: ...
    def zRange(self) -> QgsDoubleRange: ...
    def symbolLayerClipPaths(self, symbolLayerId: str) -> typing.List[QtGui.QPainterPath]: ...
    def addSymbolLayerClipPath(self, symbolLayerId: str, path: QtGui.QPainterPath) -> None: ...
    def setTextureOrigin(self, origin: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def textureOrigin(self) -> QtCore.QPointF: ...
    def setFeatureClipGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def featureClipGeometry(self) -> 'QgsGeometry': ...
    def clippingRegions(self) -> typing.List[QgsMapClippingRegion]: ...
    def clearCustomRenderingFlag(self, flag: str) -> None: ...
    def setCustomRenderingFlag(self, flag: str, value: typing.Any) -> None: ...
    def customRenderingFlags(self) -> typing.Dict[str, typing.Any]: ...
    def isGuiPreview(self) -> bool: ...
    def setIsGuiPreview(self, preview: bool) -> None: ...
    def currentMaskId(self) -> int: ...
    def setCurrentMaskId(self, id: int) -> None: ...
    def maskIdProvider(self) -> QgsMaskIdProvider: ...
    def setMaskIdProvider(self, provider: QgsMaskIdProvider) -> None: ...
    def hasRenderedFeatureHandlers(self) -> bool: ...
    def renderedFeatureHandlers(self) -> typing.List['QgsRenderedFeatureHandlerInterface']: ...
    def setTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def textRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def convertMetersToMapUnits(self, meters: float) -> float: ...
    def convertFromMapUnits(self, sizeInMapUnits: float, outputUnit: Qgis.RenderUnit) -> float: ...
    def convertToMapUnits(self, size: float, unit: Qgis.RenderUnit, scale: QgsMapUnitScale = ...) -> float: ...
    def convertToPainterUnits(self, size: float, unit: Qgis.RenderUnit, scale: QgsMapUnitScale = ..., property: Qgis.RenderSubcomponentProperty = ...) -> float: ...
    def segmentationToleranceType(self) -> 'QgsAbstractGeometry.SegmentationToleranceType': ...
    def setSegmentationToleranceType(self, type: 'QgsAbstractGeometry.SegmentationToleranceType') -> None: ...
    def segmentationTolerance(self) -> float: ...
    def setSegmentationTolerance(self, tolerance: float) -> None: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def setFeatureFilterProvider(self, ffp: QgsFeatureFilterProvider) -> None: ...
    def setGeometry(self, geometry: 'QgsAbstractGeometry') -> None: ...
    def geometry(self) -> 'QgsAbstractGeometry': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...
    def setVectorSimplifyMethod(self, simplifyMethod: 'QgsVectorSimplifyMethod') -> None: ...
    def vectorSimplifyMethod(self) -> 'QgsVectorSimplifyMethod': ...
    def setUseRenderingOptimization(self, enabled: bool) -> None: ...
    def useRenderingOptimization(self) -> bool: ...
    def setShowSelection(self, showSelection: bool) -> None: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setForceVectorOutput(self, force: bool) -> None: ...
    def setMaskPainter(self, p: QtGui.QPainter, id: int = ...) -> None: ...
    def setPainter(self, p: QtGui.QPainter) -> None: ...
    def setSymbologyReferenceScale(self, scale: float) -> None: ...
    def setRendererScale(self, scale: float) -> None: ...
    def setDpiTarget(self, dpi: float) -> None: ...
    def setScaleFactor(self, factor: float) -> None: ...
    def setDistanceArea(self, distanceArea: QgsDistanceArea) -> None: ...
    def setRenderingStopped(self, stopped: bool) -> None: ...
    def setDrawEditingInformation(self, b: bool) -> None: ...
    def setMapExtent(self, extent: 'QgsRectangle') -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def setMapToPixel(self, mtp: QgsMapToPixel) -> None: ...
    def setCoordinateTransform(self, t: 'QgsCoordinateTransform') -> None: ...
    def showSelection(self) -> bool: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def symbologyReferenceScale(self) -> float: ...
    def rendererScale(self) -> float: ...
    def drawEditingInformation(self) -> bool: ...
    def setUseAdvancedEffects(self, enabled: bool) -> None: ...
    def useAdvancedEffects(self) -> bool: ...
    def forceVectorOutput(self) -> bool: ...
    def feedback(self) -> QgsFeedback: ...
    def setFeedback(self, feedback: QgsFeedback) -> None: ...
    def renderingStopped(self) -> bool: ...
    def dpiTarget(self) -> float: ...
    def scaleFactor(self) -> float: ...
    def mapToPixel(self) -> QgsMapToPixel: ...
    def mapExtent(self) -> 'QgsRectangle': ...
    def extent(self) -> 'QgsRectangle': ...
    def setPathResolver(self, resolver: QgsPathResolver) -> None: ...
    def pathResolver(self) -> QgsPathResolver: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def distanceArea(self) -> QgsDistanceArea: ...
    def coordinateTransform(self) -> 'QgsCoordinateTransform': ...
    def isSymbolLayerEnabled(self, layer: 'QgsSymbolLayer') -> bool: ...
    def disabledSymbolLayersV2(self) -> typing.Set[str]: ...
    def disabledSymbolLayers(self) -> typing.Set['QgsSymbolLayer']: ...
    def setDisabledSymbolLayersV2(self, symbolLayers: typing.Iterable[str]) -> None: ...
    def setDisabledSymbolLayers(self, symbolLayers: typing.Iterable['QgsSymbolLayer']) -> None: ...
    def maskPainter(self, id: int = ...) -> QtGui.QPainter: ...
    def setPainterFlagsUsingContext(self, painter: typing.Optional[QtGui.QPainter] = ...) -> None: ...
    def painter(self) -> QtGui.QPainter: ...
    @staticmethod
    def fromQPainter(painter: QtGui.QPainter) -> 'QgsRenderContext': ...
    @staticmethod
    def fromMapSettings(mapSettings: QgsMapSettings) -> 'QgsRenderContext': ...
    def testFlag(self, flag: Qgis.RenderContextFlag) -> bool: ...
    def flags(self) -> Qgis.RenderContextFlags: ...
    def setFlag(self, flag: Qgis.RenderContextFlag, on: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.RenderContextFlags, Qgis.RenderContextFlag]) -> None: ...


class QgsRenderedFeatureHandlerInterface(PyQt5.sip.wrapper):

    class RenderedFeatureContext(PyQt5.sip.wrapper):

        renderContext = ... # type: QgsRenderContext

        @typing.overload
        def __init__(self, renderContext: QgsRenderContext) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRenderedFeatureHandlerInterface.RenderedFeatureContext') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRenderedFeatureHandlerInterface') -> None: ...

    def usedAttributes(self, layer: QgsVectorLayer, context: QgsRenderContext) -> typing.Set[str]: ...
    def handleRenderedFeature(self, feature: QgsFeature, renderedBounds: 'QgsGeometry', context: 'QgsRenderedFeatureHandlerInterface.RenderedFeatureContext') -> None: ...


class QgsRenderedItemDetails(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layerId: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRenderedItemDetails') -> None: ...

    def setBoundingBox(self, bounds: 'QgsRectangle') -> None: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def layerId(self) -> str: ...


class QgsRunProcess(QtCore.QObject):

    def dialogGone(self) -> None: ...
    def processExit(self, a0: int, a1: QtCore.QProcess.ExitStatus) -> None: ...
    def processError(self, a0: QtCore.QProcess.ProcessError) -> None: ...
    def stderrAvailable(self) -> None: ...
    def stdoutAvailable(self) -> None: ...
    @staticmethod
    def splitCommand(command: str) -> typing.List[str]: ...
    @staticmethod
    def create(action: str, capture: bool) -> 'QgsRunProcess': ...


class QgsBlockingProcess(QtCore.QObject):

    def __init__(self, program: str, arguments: typing.Iterable[str]) -> None: ...

    def processError(self) -> QtCore.QProcess.ProcessError: ...
    def exitStatus(self) -> QtCore.QProcess.ExitStatus: ...
    def run(self, feedback: typing.Optional[QgsFeedback] = ...) -> int: ...
    def setStdErrHandler(self, a0: typing.Callable[..., None]) -> None: ...
    def setStdOutHandler(self, a0: typing.Callable[..., None]) -> None: ...


class QgsRuntimeProfiler(QtCore.QAbstractItemModel):

    def __init__(self) -> None: ...

    def groupAdded(self, group: str) -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    @staticmethod
    def translateGroupName(group: str) -> str: ...
    def groupIsActive(self, group: str) -> bool: ...
    def groups(self) -> typing.Set[str]: ...
    def totalTime(self, group: str = ...) -> float: ...
    def clear(self, group: str = ...) -> None: ...
    def profileTime(self, name: str, group: str = ...) -> float: ...
    def end(self, group: str = ...) -> None: ...
    def start(self, name: str, group: str = ...) -> None: ...
    def childGroups(self, parent: str = ..., group: str = ...) -> typing.List[str]: ...
    def endGroup(self) -> None: ...
    def beginGroup(self, name: str) -> None: ...


class QgsScopedRuntimeProfile(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, group: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScopedRuntimeProfile') -> None: ...

    def switchTask(self, name: str) -> None: ...


class QgsScaleCalculator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, dpi: float = ..., mapUnits: Qgis.DistanceUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScaleCalculator') -> None: ...

    def calculateGeographicDistance(self, mapExtent: 'QgsRectangle') -> float: ...
    def calculateImageSize(self, mapExtent: 'QgsRectangle', scale: float) -> QtCore.QSizeF: ...
    def calculate(self, mapExtent: 'QgsRectangle', canvasWidth: float) -> float: ...
    def mapUnits(self) -> Qgis.DistanceUnit: ...
    def setMapUnits(self, mapUnits: Qgis.DistanceUnit) -> None: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...


class QgsScaleUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScaleUtils') -> None: ...

    @staticmethod
    def loadScaleList(fileName: str, scales: typing.Iterable[str], errorMessage: str) -> bool: ...
    @staticmethod
    def saveScaleList(fileName: str, scales: typing.Iterable[str], errorMessage: str) -> bool: ...


class QgsScreenProperties(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, screen: QtGui.QScreen) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScreenProperties') -> None: ...

    def updateRenderContextForScreen(self, context: QgsRenderContext) -> None: ...
    def setPhysicalDpi(self, dpi: float) -> None: ...
    def physicalDpi(self) -> float: ...
    def setDevicePixelRatio(self, ratio: float) -> None: ...
    def devicePixelRatio(self) -> float: ...
    def isValid(self) -> bool: ...


class QgsSelectionContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSelectionContext') -> None: ...

    def setScale(self, scale: float) -> None: ...
    def scale(self) -> float: ...


class QgsSimplifyMethod(PyQt5.sip.wrapper):

    class MethodType(int):
        NoSimplification = ... # type: QgsSimplifyMethod.MethodType
        OptimizeForRendering = ... # type: QgsSimplifyMethod.MethodType
        PreserveTopology = ... # type: QgsSimplifyMethod.MethodType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSimplifyMethod') -> None: ...

    @staticmethod
    def createGeometrySimplifier(simplifyMethod: 'QgsSimplifyMethod') -> QgsAbstractGeometrySimplifier: ...
    def forceLocalOptimization(self) -> bool: ...
    def setForceLocalOptimization(self, localOptimization: bool) -> None: ...
    def threshold(self) -> float: ...
    def setThreshold(self, threshold: float) -> None: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def methodType(self) -> 'QgsSimplifyMethod.MethodType': ...
    def setMethodType(self, methodType: 'QgsSimplifyMethod.MethodType') -> None: ...


class QgsSingleItemModel(QtCore.QAbstractItemModel):

    @typing.overload
    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., text: str = ..., data: typing.Dict[int, typing.Any] = ..., flags: typing.Union[QtCore.Qt.ItemFlags, QtCore.Qt.ItemFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: QtCore.QObject, columnData: typing.Any, flags: typing.Union[QtCore.Qt.ItemFlags, QtCore.Qt.ItemFlag] = ...) -> None: ...

    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsSldExportContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSldExportContext') -> None: ...
    @typing.overload
    def __init__(self, options: typing.Union[Qgis.SldExportOptions, Qgis.SldExportOption], vendorExtension: Qgis.SldExportVendorExtension, filePath: str) -> None: ...

    def setExportFilePath(self, exportFilePath: str) -> None: ...
    def exportFilePath(self) -> str: ...
    def setVendorExtension(self, vendorExtension: Qgis.SldExportVendorExtension) -> None: ...
    def vendorExtensions(self) -> Qgis.SldExportVendorExtension: ...
    def setExportOptions(self, exportOptions: typing.Union[Qgis.SldExportOptions, Qgis.SldExportOption]) -> None: ...
    def exportOptions(self) -> Qgis.SldExportOptions: ...


class QgsSnappingConfig(PyQt5.sip.wrapper):

    class ScaleDependencyMode(int):
        Disabled = ... # type: QgsSnappingConfig.ScaleDependencyMode
        Global = ... # type: QgsSnappingConfig.ScaleDependencyMode
        PerLayer = ... # type: QgsSnappingConfig.ScaleDependencyMode

    class SnappingType(int):
        Vertex = ... # type: QgsSnappingConfig.SnappingType
        VertexAndSegment = ... # type: QgsSnappingConfig.SnappingType
        Segment = ... # type: QgsSnappingConfig.SnappingType

    class IndividualLayerSettings(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, enabled: bool, type: 'QgsSnappingConfig.SnappingType', tolerance: float, units: Qgis.MapToolUnit) -> None: ...
        @typing.overload
        def __init__(self, enabled: bool, type: typing.Union[Qgis.SnappingTypes, Qgis.SnappingType], tolerance: float, units: Qgis.MapToolUnit, minScale: float = ..., maxScale: float = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSnappingConfig.IndividualLayerSettings') -> None: ...

        def setMaximumScale(self, maxScale: float) -> None: ...
        def maximumScale(self) -> float: ...
        def setMinimumScale(self, minScale: float) -> None: ...
        def minimumScale(self) -> float: ...
        def setUnits(self, units: Qgis.MapToolUnit) -> None: ...
        def units(self) -> Qgis.MapToolUnit: ...
        def setTolerance(self, tolerance: float) -> None: ...
        def tolerance(self) -> float: ...
        def setTypeFlag(self, type: typing.Union[Qgis.SnappingTypes, Qgis.SnappingType]) -> None: ...
        def setType(self, type: 'QgsSnappingConfig.SnappingType') -> None: ...
        def type(self) -> 'QgsSnappingConfig.SnappingType': ...
        def typeFlag(self) -> Qgis.SnappingTypes: ...
        def setEnabled(self, enabled: bool) -> None: ...
        def enabled(self) -> bool: ...
        def valid(self) -> bool: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSnappingConfig') -> None: ...

    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def removeLayers(self, layers: typing.Iterable[QgsMapLayer]) -> bool: ...
    def addLayers(self, layers: typing.Iterable[QgsMapLayer]) -> bool: ...
    def writeProject(self, doc: QtXml.QDomDocument) -> None: ...
    def readProject(self, doc: QtXml.QDomDocument) -> None: ...
    def clearIndividualLayerSettings(self) -> None: ...
    def setIndividualLayerSettings(self, vl: QgsVectorLayer, individualLayerSettings: 'QgsSnappingConfig.IndividualLayerSettings') -> None: ...
    @typing.overload
    def individualLayerSettings(self) -> typing.Dict: ...
    @typing.overload
    def individualLayerSettings(self, vl: QgsVectorLayer) -> 'QgsSnappingConfig.IndividualLayerSettings': ...
    def setSelfSnapping(self, enabled: bool) -> None: ...
    def selfSnapping(self) -> bool: ...
    def setIntersectionSnapping(self, enabled: bool) -> None: ...
    def intersectionSnapping(self) -> bool: ...
    def setUnits(self, units: Qgis.MapToolUnit) -> None: ...
    def units(self) -> Qgis.MapToolUnit: ...
    def scaleDependencyMode(self) -> 'QgsSnappingConfig.ScaleDependencyMode': ...
    def setScaleDependencyMode(self, mode: 'QgsSnappingConfig.ScaleDependencyMode') -> None: ...
    def setMaximumScale(self, maxScale: float) -> None: ...
    def maximumScale(self) -> float: ...
    def setMinimumScale(self, minScale: float) -> None: ...
    def minimumScale(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def tolerance(self) -> float: ...
    def setTypeFlag(self, type: typing.Union[Qgis.SnappingTypes, Qgis.SnappingType]) -> None: ...
    def setType(self, type: 'QgsSnappingConfig.SnappingType') -> None: ...
    def type(self) -> 'QgsSnappingConfig.SnappingType': ...
    def typeFlag(self) -> Qgis.SnappingTypes: ...
    def setMode(self, mode: Qgis.SnappingMode) -> None: ...
    def mode(self) -> Qgis.SnappingMode: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def reset(self) -> None: ...
    @staticmethod
    def snappingTypeFlagToIcon(type: Qgis.SnappingType) -> QtGui.QIcon: ...
    @staticmethod
    def snappingTypeToIcon(type: Qgis.SnappingType) -> QtGui.QIcon: ...
    @staticmethod
    def snappingTypeFlagToString(type: Qgis.SnappingType) -> str: ...
    @staticmethod
    def snappingTypeToString(type: Qgis.SnappingType) -> str: ...


class QgsSnappingUtils(QtCore.QObject):

    class IndexingStrategy(int):
        IndexAlwaysFull = ... # type: QgsSnappingUtils.IndexingStrategy
        IndexNeverFull = ... # type: QgsSnappingUtils.IndexingStrategy
        IndexHybrid = ... # type: QgsSnappingUtils.IndexingStrategy
        IndexExtent = ... # type: QgsSnappingUtils.IndexingStrategy

    class LayerConfig(PyQt5.sip.wrapper):

        layer = ... # type: QgsVectorLayer
        tolerance = ... # type: float
        type = ... # type: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type]
        unit = ... # type: Qgis.MapToolUnit

        @typing.overload
        def __init__(self, l: QgsVectorLayer, t: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type], tol: float, u: Qgis.MapToolUnit) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSnappingUtils.LayerConfig') -> None: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enableSnappingForInvisibleFeature: bool = ...) -> None: ...

    def clearAllLocators(self) -> None: ...
    def prepareIndexProgress(self, index: int) -> None: ...
    def prepareIndexStarting(self, count: int) -> None: ...
    def configChanged(self, snappingConfig: QgsSnappingConfig) -> None: ...
    def toggleEnabled(self) -> None: ...
    def setConfig(self, snappingConfig: QgsSnappingConfig) -> None: ...
    def getExtraSnapLayers(self) -> typing.Set[QgsVectorLayer]: ...
    def removeExtraSnapLayer(self, vl: QgsVectorLayer) -> None: ...
    def addExtraSnapLayer(self, vl: QgsVectorLayer) -> None: ...
    def setEnableSnappingForInvisibleFeature(self, enable: bool) -> None: ...
    def config(self) -> QgsSnappingConfig: ...
    def dump(self) -> str: ...
    def layers(self) -> typing.List['QgsSnappingUtils.LayerConfig']: ...
    def indexingStrategy(self) -> 'QgsSnappingUtils.IndexingStrategy': ...
    def setIndexingStrategy(self, strategy: 'QgsSnappingUtils.IndexingStrategy') -> None: ...
    def currentLayer(self) -> QgsVectorLayer: ...
    def setCurrentLayer(self, layer: QgsVectorLayer) -> None: ...
    def mapSettings(self) -> QgsMapSettings: ...
    def setMapSettings(self, settings: QgsMapSettings) -> None: ...
    def snapToCurrentLayer(self, point: QtCore.QPoint, type: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type], filter: typing.Optional[QgsPointLocator.MatchFilter] = ...) -> QgsPointLocator.Match: ...
    @typing.overload
    def snapToMap(self, point: QtCore.QPoint, filter: typing.Optional[QgsPointLocator.MatchFilter] = ..., relaxed: bool = ...) -> QgsPointLocator.Match: ...
    @typing.overload
    def snapToMap(self, pointMap: QgsPointXY, filter: typing.Optional[QgsPointLocator.MatchFilter] = ..., relaxed: bool = ...) -> QgsPointLocator.Match: ...
    def locatorForLayer(self, vl: QgsVectorLayer) -> QgsPointLocator: ...


class QgsSpatialIndex(QgsFeatureSink):

    class Flag(int):
        FlagStoreFeatureGeometries = ... # type: QgsSpatialIndex.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSpatialIndex.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsSpatialIndex.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, flags: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag'] = ...) -> None: ...
    @typing.overload
    def __init__(self, fi: QgsFeatureIterator, feedback: typing.Optional[QgsFeedback] = ..., flags: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag'] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsFeatureSource, feedback: typing.Optional[QgsFeedback] = ..., flags: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag'] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSpatialIndex') -> None: ...

    def refs(self) -> int: ...
    def geometry(self, id: int) -> 'QgsGeometry': ...
    @typing.overload
    def nearestNeighbor(self, point: QgsPointXY, neighbors: int = ..., maxDistance: float = ...) -> typing.List[int]: ...
    @typing.overload
    def nearestNeighbor(self, geometry: 'QgsGeometry', neighbors: int = ..., maxDistance: float = ...) -> typing.List[int]: ...
    def intersects(self, rectangle: 'QgsRectangle') -> typing.List[int]: ...
    def deleteFeature(self, feature: QgsFeature) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeature(self, id: int, bounds: 'QgsRectangle') -> bool: ...
    @typing.overload
    def insertFeature(self, feature: QgsFeature) -> bool: ...
    @typing.overload
    def insertFeature(self, id: int, bounds: 'QgsRectangle') -> bool: ...


class QgsSpatialIndexKDBush(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, fi: QgsFeatureIterator, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsFeatureSource, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSpatialIndexKDBush') -> None: ...

    def size(self) -> int: ...
    def within(self, point: QgsPointXY, radius: float) -> typing.List['QgsSpatialIndexKDBushData']: ...
    def intersects(self, rectangle: 'QgsRectangle') -> typing.List['QgsSpatialIndexKDBushData']: ...


class QgsSpatialIndexKDBushData(PyQt5.sip.wrapper):

    id = ... # type: int

    @typing.overload
    def __init__(self, id: int, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSpatialIndexKDBushData') -> None: ...

    def point(self) -> QgsPointXY: ...


class QgsSourceCache(QgsAbstractContentCacheBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def remoteSourceFetched(self, url: str) -> None: ...
    def localFilePath(self, path: str, blocking: bool = ...) -> str: ...


class QgsSqliteUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSqliteUtils') -> None: ...

    @staticmethod
    def systemTables() -> typing.List[str]: ...
    @staticmethod
    def quotedValue(value: typing.Any) -> str: ...
    @staticmethod
    def quotedIdentifier(identifier: str) -> str: ...
    @staticmethod
    def quotedString(value: str) -> str: ...


class QgsSQLStatement(PyQt5.sip.wrapper):

    class NodeType(int):
        ntUnaryOperator = ... # type: QgsSQLStatement.NodeType
        ntBinaryOperator = ... # type: QgsSQLStatement.NodeType
        ntInOperator = ... # type: QgsSQLStatement.NodeType
        ntBetweenOperator = ... # type: QgsSQLStatement.NodeType
        ntFunction = ... # type: QgsSQLStatement.NodeType
        ntLiteral = ... # type: QgsSQLStatement.NodeType
        ntColumnRef = ... # type: QgsSQLStatement.NodeType
        ntSelectedColumn = ... # type: QgsSQLStatement.NodeType
        ntSelect = ... # type: QgsSQLStatement.NodeType
        ntTableDef = ... # type: QgsSQLStatement.NodeType
        ntJoin = ... # type: QgsSQLStatement.NodeType
        ntColumnSorted = ... # type: QgsSQLStatement.NodeType
        ntCast = ... # type: QgsSQLStatement.NodeType

    class JoinType(int):
        jtDefault = ... # type: QgsSQLStatement.JoinType
        jtLeft = ... # type: QgsSQLStatement.JoinType
        jtLeftOuter = ... # type: QgsSQLStatement.JoinType
        jtRight = ... # type: QgsSQLStatement.JoinType
        jtRightOuter = ... # type: QgsSQLStatement.JoinType
        jtCross = ... # type: QgsSQLStatement.JoinType
        jtInner = ... # type: QgsSQLStatement.JoinType
        jtFull = ... # type: QgsSQLStatement.JoinType

    class BinaryOperator(int):
        boOr = ... # type: QgsSQLStatement.BinaryOperator
        boAnd = ... # type: QgsSQLStatement.BinaryOperator
        boEQ = ... # type: QgsSQLStatement.BinaryOperator
        boNE = ... # type: QgsSQLStatement.BinaryOperator
        boLE = ... # type: QgsSQLStatement.BinaryOperator
        boGE = ... # type: QgsSQLStatement.BinaryOperator
        boLT = ... # type: QgsSQLStatement.BinaryOperator
        boGT = ... # type: QgsSQLStatement.BinaryOperator
        boLike = ... # type: QgsSQLStatement.BinaryOperator
        boNotLike = ... # type: QgsSQLStatement.BinaryOperator
        boILike = ... # type: QgsSQLStatement.BinaryOperator
        boNotILike = ... # type: QgsSQLStatement.BinaryOperator
        boIs = ... # type: QgsSQLStatement.BinaryOperator
        boIsNot = ... # type: QgsSQLStatement.BinaryOperator
        boPlus = ... # type: QgsSQLStatement.BinaryOperator
        boMinus = ... # type: QgsSQLStatement.BinaryOperator
        boMul = ... # type: QgsSQLStatement.BinaryOperator
        boDiv = ... # type: QgsSQLStatement.BinaryOperator
        boIntDiv = ... # type: QgsSQLStatement.BinaryOperator
        boMod = ... # type: QgsSQLStatement.BinaryOperator
        boPow = ... # type: QgsSQLStatement.BinaryOperator
        boConcat = ... # type: QgsSQLStatement.BinaryOperator

    class UnaryOperator(int):
        uoNot = ... # type: QgsSQLStatement.UnaryOperator
        uoMinus = ... # type: QgsSQLStatement.UnaryOperator

    class Node(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.Node') -> None: ...

        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...

    class NodeList(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeList') -> None: ...

        def dump(self) -> str: ...
        def clone(self) -> 'QgsSQLStatement.NodeList': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def count(self) -> int: ...
        def list(self) -> typing.List['QgsSQLStatement.Node']: ...
        def append(self, node: 'QgsSQLStatement.Node') -> None: ...

    class NodeUnaryOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, op: 'QgsSQLStatement.UnaryOperator', operand: 'QgsSQLStatement.Node') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def operand(self) -> 'QgsSQLStatement.Node': ...
        def op(self) -> 'QgsSQLStatement.UnaryOperator': ...

    class NodeBinaryOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, op: 'QgsSQLStatement.BinaryOperator', opLeft: 'QgsSQLStatement.Node', opRight: 'QgsSQLStatement.Node') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...

        def leftAssociative(self) -> bool: ...
        def precedence(self) -> int: ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def opRight(self) -> 'QgsSQLStatement.Node': ...
        def opLeft(self) -> 'QgsSQLStatement.Node': ...
        def op(self) -> 'QgsSQLStatement.BinaryOperator': ...

    class NodeInOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: 'QgsSQLStatement.Node', list: 'QgsSQLStatement.NodeList', notin: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeInOperator') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def list(self) -> 'QgsSQLStatement.NodeList': ...
        def isNotIn(self) -> bool: ...
        def node(self) -> 'QgsSQLStatement.Node': ...

    class NodeBetweenOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: 'QgsSQLStatement.Node', minVal: 'QgsSQLStatement.Node', maxVal: 'QgsSQLStatement.Node', notBetween: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def maxVal(self) -> 'QgsSQLStatement.Node': ...
        def minVal(self) -> 'QgsSQLStatement.Node': ...
        def isNotBetween(self) -> bool: ...
        def node(self) -> 'QgsSQLStatement.Node': ...

    class NodeFunction('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: str, args: 'QgsSQLStatement.NodeList') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeFunction') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def args(self) -> 'QgsSQLStatement.NodeList': ...
        def name(self) -> str: ...

    class NodeLiteral('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, value: typing.Any) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeLiteral') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def value(self) -> typing.Any: ...

    class NodeColumnRef('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: str, star: bool) -> None: ...
        @typing.overload
        def __init__(self, tableName: str, name: str, star: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeColumnRef') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeColumnRef': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def distinct(self) -> bool: ...
        def star(self) -> bool: ...
        def name(self) -> str: ...
        def tableName(self) -> str: ...
        def setDistinct(self, distinct: bool = ...) -> None: ...

    class NodeSelectedColumn('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: 'QgsSQLStatement.Node') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeSelectedColumn': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def alias(self) -> str: ...
        def column(self) -> 'QgsSQLStatement.Node': ...
        def setAlias(self, alias: str) -> None: ...

    class NodeCast('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: 'QgsSQLStatement.Node', type: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeCast') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def type(self) -> str: ...
        def node(self) -> 'QgsSQLStatement.Node': ...

    class NodeTableDef('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: str) -> None: ...
        @typing.overload
        def __init__(self, name: str, alias: str) -> None: ...
        @typing.overload
        def __init__(self, schema: str, name: str, alias: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeTableDef') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeTableDef': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def alias(self) -> str: ...
        def schema(self) -> str: ...
        def name(self) -> str: ...

    class NodeJoin('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, tabledef: 'QgsSQLStatement.NodeTableDef', onExpr: 'QgsSQLStatement.Node', type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, tabledef: 'QgsSQLStatement.NodeTableDef', usingColumns: typing.Iterable[str], type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeJoin') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeJoin': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def type(self) -> 'QgsSQLStatement.JoinType': ...
        def usingColumns(self) -> typing.List[str]: ...
        def onExpr(self) -> 'QgsSQLStatement.Node': ...
        def tableDef(self) -> 'QgsSQLStatement.NodeTableDef': ...

    class NodeColumnSorted('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, column: 'QgsSQLStatement.NodeColumnRef', asc: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeColumnSorted') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeColumnSorted': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def ascending(self) -> bool: ...
        def column(self) -> 'QgsSQLStatement.NodeColumnRef': ...

    class NodeSelect('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, tableList: typing.Iterable['QgsSQLStatement.NodeTableDef'], columns: typing.Iterable['QgsSQLStatement.NodeSelectedColumn'], distinct: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeSelect') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def orderBy(self) -> typing.List['QgsSQLStatement.NodeColumnSorted']: ...
        def where(self) -> 'QgsSQLStatement.Node': ...
        def joins(self) -> typing.List['QgsSQLStatement.NodeJoin']: ...
        def distinct(self) -> bool: ...
        def columns(self) -> typing.List['QgsSQLStatement.NodeSelectedColumn']: ...
        def tables(self) -> typing.List['QgsSQLStatement.NodeTableDef']: ...
        def setOrderBy(self, orderBy: typing.Iterable['QgsSQLStatement.NodeColumnSorted']) -> None: ...
        def setWhere(self, where: 'QgsSQLStatement.Node') -> None: ...
        def appendJoin(self, join: 'QgsSQLStatement.NodeJoin') -> None: ...
        def setJoins(self, joins: typing.Iterable['QgsSQLStatement.NodeJoin']) -> None: ...

    class Visitor(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.Visitor') -> None: ...

        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeInOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeFunction') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeLiteral') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnRef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeTableDef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelect') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeJoin') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnSorted') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeCast') -> None: ...

    class RecursiveVisitor('QgsSQLStatement.Visitor'):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.RecursiveVisitor') -> None: ...

        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeInOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeFunction') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeLiteral') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeColumnRef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeTableDef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelect') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeJoin') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnSorted') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeCast') -> None: ...

    @typing.overload
    def __init__(self, statement: str) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSQLStatement') -> None: ...
    @typing.overload
    def __init__(self, statement: str, allowFragments: bool) -> None: ...

    def acceptVisitor(self, v: 'QgsSQLStatement.Visitor') -> None: ...
    @staticmethod
    def quotedString(text: str) -> str: ...
    @staticmethod
    def stripMsQuotedIdentifier(text: str) -> str: ...
    @staticmethod
    def stripQuotedIdentifier(text: str) -> str: ...
    @staticmethod
    def quotedIdentifierIfNeeded(name: str) -> str: ...
    @staticmethod
    def quotedIdentifier(name: str) -> str: ...
    def dump(self) -> str: ...
    def statement(self) -> str: ...
    def rootNode(self) -> 'QgsSQLStatement.Node': ...
    def doBasicValidationChecks(self) -> typing.Tuple[bool, str]: ...
    def parserErrorString(self) -> str: ...
    def hasParserError(self) -> bool: ...


class QgsSQLStatementFragment(QgsSQLStatement):

    @typing.overload
    def __init__(self, fragment: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSQLStatementFragment') -> None: ...


class QgsStatisticalSummary(PyQt5.sip.wrapper):

    class Statistic(int):
        Count = ... # type: QgsStatisticalSummary.Statistic
        CountMissing = ... # type: QgsStatisticalSummary.Statistic
        Sum = ... # type: QgsStatisticalSummary.Statistic
        Mean = ... # type: QgsStatisticalSummary.Statistic
        Median = ... # type: QgsStatisticalSummary.Statistic
        StDev = ... # type: QgsStatisticalSummary.Statistic
        StDevSample = ... # type: QgsStatisticalSummary.Statistic
        Min = ... # type: QgsStatisticalSummary.Statistic
        Max = ... # type: QgsStatisticalSummary.Statistic
        Range = ... # type: QgsStatisticalSummary.Statistic
        Minority = ... # type: QgsStatisticalSummary.Statistic
        Majority = ... # type: QgsStatisticalSummary.Statistic
        Variety = ... # type: QgsStatisticalSummary.Statistic
        FirstQuartile = ... # type: QgsStatisticalSummary.Statistic
        ThirdQuartile = ... # type: QgsStatisticalSummary.Statistic
        InterQuartileRange = ... # type: QgsStatisticalSummary.Statistic
        First = ... # type: QgsStatisticalSummary.Statistic
        Last = ... # type: QgsStatisticalSummary.Statistic
        All = ... # type: QgsStatisticalSummary.Statistic

    class Statistics(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsStatisticalSummary.Statistics', 'QgsStatisticalSummary.Statistic']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStatisticalSummary.Statistics') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsStatisticalSummary.Statistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, stats: typing.Union['QgsStatisticalSummary.Statistics', 'QgsStatisticalSummary.Statistic'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStatisticalSummary') -> None: ...

    @staticmethod
    def shortName(statistic: 'QgsStatisticalSummary.Statistic') -> str: ...
    @staticmethod
    def displayName(statistic: 'QgsStatisticalSummary.Statistic') -> str: ...
    def interQuartileRange(self) -> float: ...
    def thirdQuartile(self) -> float: ...
    def firstQuartile(self) -> float: ...
    def majority(self) -> float: ...
    def minority(self) -> float: ...
    def variety(self) -> int: ...
    def sampleStDev(self) -> float: ...
    def stDev(self) -> float: ...
    def last(self) -> float: ...
    def first(self) -> float: ...
    def range(self) -> float: ...
    def max(self) -> float: ...
    def min(self) -> float: ...
    def median(self) -> float: ...
    def mean(self) -> float: ...
    def sum(self) -> float: ...
    def countMissing(self) -> int: ...
    def count(self) -> int: ...
    def statistic(self, stat: 'QgsStatisticalSummary.Statistic') -> float: ...
    def finalize(self) -> None: ...
    def addVariant(self, value: typing.Any) -> None: ...
    def addValue(self, value: float) -> None: ...
    def calculate(self, values: typing.Iterable[float]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union['QgsStatisticalSummary.Statistics', 'QgsStatisticalSummary.Statistic']) -> None: ...
    def statistics(self) -> 'QgsStatisticalSummary.Statistics': ...


class QgsStoredExpression(PyQt5.sip.wrapper):

    class Category(int):
        FilterExpression = ... # type: QgsStoredExpression.Category
        DefaultValueExpression = ... # type: QgsStoredExpression.Category
        All = ... # type: QgsStoredExpression.Category

    expression = ... # type: str
    id = ... # type: str
    name = ... # type: str
    tag = ... # type: 'QgsStoredExpression.Category'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStoredExpression') -> None: ...


class QgsStoredExpressionManager(QtCore.QObject):

    def __init__(self) -> None: ...

    def readXml(self, layerNode: QtXml.QDomNode) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode) -> bool: ...
    def clearStoredExpressions(self) -> None: ...
    def findStoredExpressionByExpression(self, expression: str, tag: QgsStoredExpression.Category = ...) -> QgsStoredExpression: ...
    def storedExpression(self, id: str) -> QgsStoredExpression: ...
    def storedExpressions(self, tag: QgsStoredExpression.Category = ...) -> typing.List[QgsStoredExpression]: ...
    def addStoredExpressions(self, storedExpressions: typing.Iterable[QgsStoredExpression]) -> None: ...
    def updateStoredExpression(self, id: str, name: str, expression: str, tag: QgsStoredExpression.Category) -> None: ...
    def removeStoredExpression(self, id: str) -> None: ...
    def addStoredExpression(self, name: str, expression: str, tag: QgsStoredExpression.Category = ...) -> str: ...


class QgsStringStatisticalSummary(PyQt5.sip.wrapper):

    class Statistic(int):
        Count = ... # type: QgsStringStatisticalSummary.Statistic
        CountDistinct = ... # type: QgsStringStatisticalSummary.Statistic
        CountMissing = ... # type: QgsStringStatisticalSummary.Statistic
        Min = ... # type: QgsStringStatisticalSummary.Statistic
        Max = ... # type: QgsStringStatisticalSummary.Statistic
        MinimumLength = ... # type: QgsStringStatisticalSummary.Statistic
        MaximumLength = ... # type: QgsStringStatisticalSummary.Statistic
        MeanLength = ... # type: QgsStringStatisticalSummary.Statistic
        Minority = ... # type: QgsStringStatisticalSummary.Statistic
        Majority = ... # type: QgsStringStatisticalSummary.Statistic
        All = ... # type: QgsStringStatisticalSummary.Statistic

    class Statistics(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsStringStatisticalSummary.Statistics', 'QgsStringStatisticalSummary.Statistic']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStringStatisticalSummary.Statistics') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsStringStatisticalSummary.Statistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, stats: typing.Union['QgsStringStatisticalSummary.Statistics', 'QgsStringStatisticalSummary.Statistic'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringStatisticalSummary') -> None: ...

    @staticmethod
    def displayName(statistic: 'QgsStringStatisticalSummary.Statistic') -> str: ...
    def majority(self) -> str: ...
    def minority(self) -> str: ...
    def meanLength(self) -> float: ...
    def maxLength(self) -> int: ...
    def minLength(self) -> int: ...
    def max(self) -> str: ...
    def min(self) -> str: ...
    def countMissing(self) -> int: ...
    def distinctValues(self) -> typing.Set[str]: ...
    def countDistinct(self) -> int: ...
    def count(self) -> int: ...
    def statistic(self, stat: 'QgsStringStatisticalSummary.Statistic') -> typing.Any: ...
    def finalize(self) -> None: ...
    def addValue(self, value: typing.Any) -> None: ...
    def addString(self, string: str) -> None: ...
    def calculateFromVariants(self, values: typing.Iterable[typing.Any]) -> None: ...
    def calculate(self, values: typing.Iterable[str]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union['QgsStringStatisticalSummary.Statistics', 'QgsStringStatisticalSummary.Statistic']) -> None: ...
    def statistics(self) -> 'QgsStringStatisticalSummary.Statistics': ...


class QgsStringReplacement(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, match: str, replacement: str, caseSensitive: bool = ..., wholeWordOnly: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringReplacement') -> None: ...

    @staticmethod
    def fromProperties(properties: typing.Dict[str, str]) -> 'QgsStringReplacement': ...
    def properties(self) -> typing.Dict[str, str]: ...
    def process(self, input: str) -> str: ...
    def wholeWordOnly(self) -> bool: ...
    def caseSensitive(self) -> bool: ...
    def replacement(self) -> str: ...
    def match(self) -> str: ...


class QgsStringReplacementCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, replacements: typing.Iterable[QgsStringReplacement] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringReplacementCollection') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> None: ...
    def process(self, input: str) -> str: ...
    def setReplacements(self, replacements: typing.Iterable[QgsStringReplacement]) -> None: ...
    def replacements(self) -> typing.List[QgsStringReplacement]: ...


class QgsStringUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringUtils') -> None: ...

    @staticmethod
    def truncateMiddleOfString(string: str, maxLength: int) -> str: ...
    @staticmethod
    def qRegExpEscape(string: str) -> str: ...
    @staticmethod
    def htmlToMarkdown(html: str) -> str: ...
    @staticmethod
    def substituteVerticalCharacters(string: str) -> str: ...
    @staticmethod
    def wordWrap(string: str, length: int, useMaxLineLength: bool = ..., customDelimiter: str = ...) -> str: ...
    @staticmethod
    def isUrl(string: str) -> bool: ...
    @staticmethod
    def insertLinks(string: str) -> typing.Tuple[str, bool]: ...
    @staticmethod
    def fuzzyScore(candidate: str, search: str) -> float: ...
    @staticmethod
    def soundex(string: str) -> str: ...
    @staticmethod
    def hammingDistance(string1: str, string2: str, caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def longestCommonSubstring(string1: str, string2: str, caseSensitive: bool = ...) -> str: ...
    @staticmethod
    def levenshteinDistance(string1: str, string2: str, caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def ampersandEncode(string: str) -> str: ...
    @staticmethod
    def capitalize(string: str, capitalization: Qgis.Capitalization) -> str: ...


class QgsTableCell(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, content: typing.Any = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTableCell') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setProperties(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def setVerticalAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def verticalAlignment(self) -> QtCore.Qt.Alignment: ...
    def setHorizontalAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def horizontalAlignment(self) -> QtCore.Qt.Alignment: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setForegroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def foregroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setContent(self, content: typing.Any) -> None: ...
    def content(self) -> typing.Any: ...


class QgsTaskManager(QtCore.QObject):

    class TaskDefinition(PyQt5.sip.wrapper):

        dependentTasks = ... # type: typing.Iterable[QgsTask]
        task = ... # type: QgsTask

        @typing.overload
        def __init__(self, task: QgsTask, dependentTasks: typing.Iterable[QgsTask] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTaskManager.TaskDefinition') -> None: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def taskTriggered(self, task: QgsTask) -> None: ...
    def countActiveTasksChanged(self, count: int) -> None: ...
    def allTasksFinished(self) -> None: ...
    def taskAboutToBeDeleted(self, taskId: int) -> None: ...
    def taskAdded(self, taskId: int) -> None: ...
    def statusChanged(self, taskId: int, status: int) -> None: ...
    def finalTaskProgressChanged(self, progress: float) -> None: ...
    def progressChanged(self, taskId: int, progress: float) -> None: ...
    def triggerTask(self, task: QgsTask) -> None: ...
    def countActiveTasks(self, includeHidden: bool = ...) -> int: ...
    def activeTasks(self) -> typing.List[QgsTask]: ...
    def tasksDependentOnLayer(self, layer: QgsMapLayer) -> typing.List[QgsTask]: ...
    def dependentLayers(self, taskId: int) -> typing.List[QgsMapLayer]: ...
    def dependenciesSatisfied(self, taskId: int) -> bool: ...
    def cancelAll(self) -> None: ...
    def taskId(self, task: QgsTask) -> int: ...
    def count(self) -> int: ...
    def tasks(self) -> typing.List[QgsTask]: ...
    def task(self, id: int) -> QgsTask: ...
    @typing.overload
    def addTask(self, task: QgsTask, priority: int = ...) -> int: ...
    @typing.overload
    def addTask(self, task: 'QgsTaskManager.TaskDefinition', priority: int = ...) -> int: ...


class QgsTemporalController(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def updateTemporalRange(self, range: QgsDateTimeRange) -> None: ...


class QgsTemporalNavigationObject(QgsTemporalController, QgsExpressionContextScopeGenerator):

    class AnimationState(int):
        Forward = ... # type: QgsTemporalNavigationObject.AnimationState
        Reverse = ... # type: QgsTemporalNavigationObject.AnimationState
        Idle = ... # type: QgsTemporalNavigationObject.AnimationState

    class NavigationMode(int):
        NavigationOff = ... # type: QgsTemporalNavigationObject.NavigationMode
        Animated = ... # type: QgsTemporalNavigationObject.NavigationMode
        FixedRange = ... # type: QgsTemporalNavigationObject.NavigationMode

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def skipToEnd(self) -> None: ...
    def rewindToStart(self) -> None: ...
    def previous(self) -> None: ...
    def next(self) -> None: ...
    def playBackward(self) -> None: ...
    def playForward(self) -> None: ...
    def pause(self) -> None: ...
    def play(self) -> None: ...
    def temporalFrameDurationChanged(self, interval: QgsInterval) -> None: ...
    def temporalExtentsChanged(self, extent: QgsDateTimeRange) -> None: ...
    def navigationModeChanged(self, mode: 'QgsTemporalNavigationObject.NavigationMode') -> None: ...
    def stateChanged(self, state: 'QgsTemporalNavigationObject.AnimationState') -> None: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def findBestFrameNumberForFrameStart(self, frameStart: typing.Union[QtCore.QDateTime, datetime.datetime]) -> int: ...
    def setLooping(self, loop: bool) -> None: ...
    def isLooping(self) -> bool: ...
    def totalFrameCount(self) -> int: ...
    def temporalRangeCumulative(self) -> bool: ...
    def setTemporalRangeCumulative(self, state: bool) -> None: ...
    def framesPerSecond(self) -> float: ...
    def setFramesPerSecond(self, rate: float) -> None: ...
    def dateTimeRangeForFrameNumber(self, frame: int) -> QgsDateTimeRange: ...
    def frameDuration(self) -> QgsInterval: ...
    def setFrameDuration(self, duration: QgsInterval) -> None: ...
    def currentFrameNumber(self) -> int: ...
    def setCurrentFrameNumber(self, frame: int) -> None: ...
    def availableTemporalRanges(self) -> typing.List[QgsDateTimeRange]: ...
    def setAvailableTemporalRanges(self, ranges: typing.Iterable[QgsDateTimeRange]) -> None: ...
    def temporalExtents(self) -> QgsDateTimeRange: ...
    def setTemporalExtents(self, extents: QgsDateTimeRange) -> None: ...
    def navigationMode(self) -> 'QgsTemporalNavigationObject.NavigationMode': ...
    def setNavigationMode(self, mode: 'QgsTemporalNavigationObject.NavigationMode') -> None: ...
    def animationState(self) -> 'QgsTemporalNavigationObject.AnimationState': ...
    def setAnimationState(self, state: 'QgsTemporalNavigationObject.AnimationState') -> None: ...


class QgsTemporalUtils(PyQt5.sip.wrapper):

    class AnimationExportSettings(PyQt5.sip.wrapper):

        animationRange = ... # type: QgsDateTimeRange
        availableTemporalRanges = ... # type: typing.Iterable[QgsDateTimeRange]
        decorations = ... # type: typing.Iterable[QgsMapDecoration]
        fileNameTemplate = ... # type: str
        frameDuration = ... # type: QgsInterval
        frameRate = ... # type: float
        outputDirectory = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTemporalUtils.AnimationExportSettings') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTemporalUtils') -> None: ...

    @staticmethod
    def calculateDateTimesFromISO8601(string: str, maxValues: int = ...) -> typing.Tuple[typing.List[QtCore.QDateTime], bool, bool]: ...
    @staticmethod
    def calculateDateTimesUsingDuration(start: typing.Union[QtCore.QDateTime, datetime.datetime], end: typing.Union[QtCore.QDateTime, datetime.datetime], duration: str, maxValues: int = ...) -> typing.Tuple[typing.List[QtCore.QDateTime], bool, bool]: ...
    @staticmethod
    def calculateFrameTime(start: typing.Union[QtCore.QDateTime, datetime.datetime], frame: int, interval: QgsInterval) -> QtCore.QDateTime: ...
    @staticmethod
    def exportAnimation(mapSettings: QgsMapSettings, settings: 'QgsTemporalUtils.AnimationExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def usedTemporalRangesForProject(project: 'QgsProject') -> typing.List[QgsDateTimeRange]: ...
    @staticmethod
    def calculateTemporalRangeForProject(project: 'QgsProject') -> QgsDateTimeRange: ...


class QgsTessellator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, originX: float, originY: float, addNormals: bool, invertNormals: bool = ..., addBackFaces: bool = ..., noZ: bool = ..., addTextureCoords: bool = ..., facade: int = ..., textureRotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, bounds: 'QgsRectangle', addNormals: bool, invertNormals: bool = ..., addBackFaces: bool = ..., noZ: bool = ..., addTextureCoords: bool = ..., facade: int = ..., textureRotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTessellator') -> None: ...

    def zMaximum(self) -> float: ...
    def zMinimum(self) -> float: ...
    def stride(self) -> int: ...
    def dataVerticesCount(self) -> int: ...
    def data(self) -> typing.List[float]: ...
    def addPolygon(self, polygon: 'QgsPolygon', extrusionHeight: float) -> None: ...


class QgsTestUtils(PyQt5.sip.simplewrapper):

    def testProviderIteratorThreadSafety(self, provider: 'QgsVectorDataProvider', request: QgsFeatureRequest = ...) -> bool: ...


class QgsTileXYZ(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, tc: int = ..., tr: int = ..., tz: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTileXYZ') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def toString(self) -> str: ...
    def zoomLevel(self) -> int: ...
    def row(self) -> int: ...
    def column(self) -> int: ...


class QgsTileRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, c1: int = ..., c2: int = ..., r1: int = ..., r2: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTileRange') -> None: ...

    def endRow(self) -> int: ...
    def startRow(self) -> int: ...
    def endColumn(self) -> int: ...
    def startColumn(self) -> int: ...
    def isValid(self) -> bool: ...


class QgsTileMatrix(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTileMatrix') -> None: ...

    def isRootTileMatrix(self) -> bool: ...
    def mapToTileCoordinates(self, mapPoint: QgsPointXY) -> QtCore.QPointF: ...
    def tileRangeFromExtent(self, mExtent: 'QgsRectangle') -> QgsTileRange: ...
    def tileCenter(self, id: QgsTileXYZ) -> QgsPointXY: ...
    def tileExtent(self, id: QgsTileXYZ) -> 'QgsRectangle': ...
    def setScale(self, scale: float) -> None: ...
    def scale(self) -> float: ...
    def extent(self) -> 'QgsRectangle': ...
    def matrixHeight(self) -> int: ...
    def matrixWidth(self) -> int: ...
    def setZoomLevel(self, level: int) -> None: ...
    def zoomLevel(self) -> int: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromTileMatrix(zoomLevel: int, tileMatrix: 'QgsTileMatrix') -> 'QgsTileMatrix': ...
    @staticmethod
    def fromCustomDef(zoomLevel: int, crs: 'QgsCoordinateReferenceSystem', z0TopLeftPoint: QgsPointXY, z0Dimension: float, z0MatrixWidth: int = ..., z0MatrixHeight: int = ...) -> 'QgsTileMatrix': ...
    @staticmethod
    def fromWebMercator(zoomLevel: int) -> 'QgsTileMatrix': ...


class QgsTileMatrixSet(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTileMatrixSet') -> None: ...

    def tilesInRange(self, range: QgsTileRange, zoomLevel: int) -> typing.List[QgsTileXYZ]: ...
    def setScaleToTileZoomMethod(self, method: Qgis.ScaleToTileZoomLevelMethod) -> None: ...
    def scaleToTileZoomMethod(self) -> Qgis.ScaleToTileZoomLevelMethod: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def calculateTileScaleForMap(self, actualMapScale: float, mapCrs: 'QgsCoordinateReferenceSystem', mapExtent: 'QgsRectangle', mapSize: QtCore.QSize, mapDpi: float) -> float: ...
    def scaleForRenderContext(self, context: QgsRenderContext) -> float: ...
    def scaleToZoomLevel(self, scale: float, clamp: bool = ...) -> int: ...
    def scaleToZoom(self, scale: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def tileAvailability(self, id: QgsTileXYZ) -> Qgis.TileAvailability: ...
    def dropMatricesOutsideZoomRange(self, minimumZoom: int, maximumZoom: int) -> None: ...
    def maximumZoom(self) -> int: ...
    def minimumZoom(self) -> int: ...
    def addMatrix(self, matrix: QgsTileMatrix) -> None: ...
    def setRootMatrix(self, matrix: QgsTileMatrix) -> None: ...
    def rootMatrix(self) -> QgsTileMatrix: ...
    def tileMatrix(self, zoom: int) -> QgsTileMatrix: ...
    def addGoogleCrs84QuadTiles(self, minimumZoom: int = ..., maximumZoom: int = ...) -> None: ...
    def isEmpty(self) -> bool: ...


class QgsTolerance(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTolerance') -> None: ...

    @staticmethod
    def toleranceInMapUnits(tolerance: float, layer: QgsMapLayer, mapSettings: QgsMapSettings, units: Qgis.MapToolUnit = ...) -> float: ...
    @staticmethod
    def toleranceInProjectUnits(tolerance: float, layer: QgsMapLayer, mapSettings: QgsMapSettings, units: Qgis.MapToolUnit) -> float: ...
    @staticmethod
    def defaultTolerance(layer: QgsMapLayer, mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(layer: QgsMapLayer, mapSettings: QgsMapSettings) -> float: ...


class QgsTracer(QtCore.QObject):

    class PathError(int):
        ErrNone = ... # type: QgsTracer.PathError
        ErrTooManyFeatures = ... # type: QgsTracer.PathError
        ErrPoint1 = ... # type: QgsTracer.PathError
        ErrPoint2 = ... # type: QgsTracer.PathError
        ErrNoPath = ... # type: QgsTracer.PathError

    def __init__(self) -> None: ...

    def invalidateGraph(self) -> None: ...
    def configure(self) -> None: ...
    def isPointSnapped(self, pt: QgsPointXY) -> bool: ...
    def findShortestPath(self, p1: QgsPointXY, p2: QgsPointXY) -> typing.Tuple[typing.List[QgsPointXY], 'QgsTracer.PathError']: ...
    def hasTopologyProblem(self) -> bool: ...
    def isInitialized(self) -> bool: ...
    def init(self) -> bool: ...
    def setMaxFeatureCount(self, count: int) -> None: ...
    def maxFeatureCount(self) -> int: ...
    def setOffsetParameters(self, quadSegments: int, joinStyle: int, miterLimit: float) -> None: ...
    def offsetParameters(self) -> typing.Tuple[int, int, float]: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def setRenderContext(self, renderContext: QgsRenderContext) -> None: ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext') -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setLayers(self, layers: typing.Iterable[QgsVectorLayer]) -> None: ...
    def layers(self) -> typing.List[QgsVectorLayer]: ...


class QgsVectorLayerTools(QtCore.QObject):

    def __init__(self) -> None: ...

    def setForceSuppressFormPopup(self, forceSuppressFormPopup: bool) -> None: ...
    def forceSuppressFormPopup(self) -> bool: ...
    def copyMoveFeatures(self, layer: QgsVectorLayer, request: QgsFeatureRequest, dx: float = ..., dy: float = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, QgsFeatureRequest, str]: ...
    def saveEdits(self, layer: QgsVectorLayer) -> bool: ...
    def stopEditing(self, layer: QgsVectorLayer, allowCancel: bool = ...) -> bool: ...
    def startEditing(self, layer: QgsVectorLayer) -> bool: ...
    def addFeature(self, layer: QgsVectorLayer, defaultValues: typing.Dict[int, typing.Any] = ..., defaultGeometry: 'QgsGeometry' = ..., parentWidget: typing.Optional[QtWidgets.QWidget] = ..., showModal: bool = ..., hideParent: bool = ...) -> typing.Tuple[bool, QgsFeature]: ...


class QgsTrackedVectorLayerTools(QgsVectorLayerTools):

    def __init__(self) -> None: ...

    def rollback(self) -> None: ...
    def setVectorLayerTools(self, tools: QgsVectorLayerTools) -> None: ...
    def copyMoveFeatures(self, layer: QgsVectorLayer, request: QgsFeatureRequest, dx: float = ..., dy: float = ..., errorMsg: typing.Optional[str] = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ...) -> bool: ...
    def saveEdits(self, layer: QgsVectorLayer) -> bool: ...
    def stopEditing(self, layer: QgsVectorLayer, allowCancel: bool) -> bool: ...
    def startEditing(self, layer: QgsVectorLayer) -> bool: ...
    def addFeature(self, layer: QgsVectorLayer, defaultValues: typing.Dict[int, typing.Any], defaultGeometry: 'QgsGeometry', feature: QgsFeature, parentWidget: typing.Optional[QtWidgets.QWidget] = ..., showModal: bool = ..., hideParent: bool = ...) -> bool: ...


class QgsTransaction(QtCore.QObject):

    def __init__(self) -> None: ...

    def dirtied(self, sql: str, name: str) -> None: ...
    def afterRollback(self) -> None: ...
    def lastSavePointIsDirty(self) -> bool: ...
    def savePoints(self) -> typing.List[str]: ...
    def dirtyLastSavePoint(self) -> None: ...
    def rollbackToSavepoint(self, name: str) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def createSavepoint(self) -> typing.Tuple[str, str]: ...
    @typing.overload
    def createSavepoint(self, savePointId: str) -> typing.Tuple[str, str]: ...
    @staticmethod
    def supportsTransaction(layer: QgsVectorLayer) -> bool: ...
    def executeSql(self, sql: str, isDirty: bool = ..., name: str = ...) -> typing.Tuple[bool, str]: ...
    def rollback(self) -> typing.Tuple[bool, str]: ...
    def commit(self) -> typing.Tuple[bool, str]: ...
    def begin(self, statementTimeout: int = ...) -> typing.Tuple[bool, str]: ...
    def addLayer(self, layer: QgsVectorLayer, addLayersInEditMode: bool = ...) -> bool: ...
    def connectionString(self) -> str: ...
    @typing.overload
    @staticmethod
    def create(connString: str, providerKey: str) -> 'QgsTransaction': ...
    @typing.overload
    @staticmethod
    def create(layers: typing.Iterable[QgsVectorLayer]) -> 'QgsTransaction': ...


class QgsTransactionGroup(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def commitError(self, msg: str) -> None: ...
    def isEmpty(self) -> bool: ...
    def providerKey(self) -> str: ...
    def connString(self) -> str: ...
    def modified(self) -> bool: ...
    def layers(self) -> typing.Set[QgsVectorLayer]: ...
    def addLayer(self, layer: QgsVectorLayer) -> bool: ...


class QgsTranslationContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTranslationContext') -> None: ...

    def writeTsFile(self, locale: str) -> None: ...
    def registerTranslation(self, context: str, source: str) -> None: ...
    def setFileName(self, fileName: str) -> None: ...
    def fileName(self) -> str: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...


class QgsUnitTypes(PyQt5.sip.wrapper):

    class DistanceValue(PyQt5.sip.wrapper):

        unit = ... # type: Qgis.DistanceUnit
        value = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsUnitTypes.DistanceValue') -> None: ...

    class AreaValue(PyQt5.sip.wrapper):

        unit = ... # type: Qgis.AreaUnit
        value = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsUnitTypes.AreaValue') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUnitTypes') -> None: ...

    @staticmethod
    def decodeLayoutUnit(string: str) -> typing.Tuple[Qgis.LayoutUnit, bool]: ...
    @staticmethod
    def decodeRenderUnit(string: str) -> typing.Tuple[Qgis.RenderUnit, bool]: ...
    @staticmethod
    def formatArea(area: float, decimals: int, unit: Qgis.AreaUnit, keepBaseUnit: bool = ...) -> str: ...
    @staticmethod
    def formatDistance(distance: float, decimals: int, unit: Qgis.DistanceUnit, keepBaseUnit: bool = ...) -> str: ...
    @staticmethod
    def scaledArea(area: float, unit: Qgis.AreaUnit, decimals: int, keepBaseUnit: bool = ...) -> 'QgsUnitTypes.AreaValue': ...
    @staticmethod
    def scaledDistance(distance: float, unit: Qgis.DistanceUnit, decimals: int, keepBaseUnit: bool = ...) -> 'QgsUnitTypes.DistanceValue': ...
    @staticmethod
    def formatAngle(angle: float, decimals: int, unit: Qgis.AngleUnit) -> str: ...
    @staticmethod
    def decodeAngleUnit(string: str) -> typing.Tuple[Qgis.AngleUnit, bool]: ...
    @staticmethod
    def volumeToDistanceUnit(volumeUnit: Qgis.VolumeUnit) -> Qgis.DistanceUnit: ...
    @staticmethod
    def distanceToVolumeUnit(distanceUnit: Qgis.DistanceUnit) -> Qgis.VolumeUnit: ...
    @staticmethod
    def stringToVolumeUnit(string: str) -> typing.Tuple[Qgis.VolumeUnit, bool]: ...
    @staticmethod
    def decodeVolumeUnit(string: str) -> typing.Tuple[Qgis.VolumeUnit, bool]: ...
    @staticmethod
    def stringToTemporalUnit(string: str) -> typing.Tuple[Qgis.TemporalUnit, bool]: ...
    @staticmethod
    def decodeTemporalUnit(string: str) -> typing.Tuple[Qgis.TemporalUnit, bool]: ...
    @staticmethod
    def areaToDistanceUnit(areaUnit: Qgis.AreaUnit) -> Qgis.DistanceUnit: ...
    @staticmethod
    def distanceToAreaUnit(distanceUnit: Qgis.DistanceUnit) -> Qgis.AreaUnit: ...
    @staticmethod
    def stringToAreaUnit(string: str) -> typing.Tuple[Qgis.AreaUnit, bool]: ...
    @staticmethod
    def decodeAreaUnit(string: str) -> typing.Tuple[Qgis.AreaUnit, bool]: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: Qgis.DistanceUnit, toUnit: Qgis.DistanceUnit) -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: Qgis.AreaUnit, toUnit: Qgis.AreaUnit) -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: Qgis.TemporalUnit, toUnit: Qgis.TemporalUnit) -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: Qgis.VolumeUnit, toUnit: Qgis.VolumeUnit) -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: Qgis.AngleUnit, toUnit: Qgis.AngleUnit) -> float: ...
    @staticmethod
    def stringToDistanceUnit(string: str) -> typing.Tuple[Qgis.DistanceUnit, bool]: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.DistanceUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.AreaUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.TemporalUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.VolumeUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.RenderUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: Qgis.LayoutUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.DistanceUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.AreaUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.TemporalUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.VolumeUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.AngleUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.RenderUnit) -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: Qgis.LayoutUnit) -> str: ...
    @staticmethod
    def decodeDistanceUnit(string: str) -> typing.Tuple[Qgis.DistanceUnit, bool]: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.DistanceUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.AreaUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.TemporalUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.VolumeUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.AngleUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.RenderUnit) -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: Qgis.LayoutUnit) -> str: ...
    @typing.overload
    @staticmethod
    def unitType(unit: Qgis.DistanceUnit) -> Qgis.DistanceUnitType: ...
    @typing.overload
    @staticmethod
    def unitType(unit: Qgis.AreaUnit) -> Qgis.DistanceUnitType: ...
    @typing.overload
    @staticmethod
    def unitType(unit: Qgis.VolumeUnit) -> Qgis.DistanceUnitType: ...
    @typing.overload
    @staticmethod
    def unitType(units: Qgis.LayoutUnit) -> Qgis.LayoutUnitType: ...
    @staticmethod
    def decodeUnitType(string: str) -> typing.Tuple[Qgis.UnitType, bool]: ...
    @staticmethod
    def encodeUnitType(type: Qgis.UnitType) -> str: ...


class QgsUnsetAttributeValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, defaultValueClause: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUnsetAttributeValue') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def defaultValueClause(self) -> str: ...


class QgsUserProfile(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, folder: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUserProfile') -> None: ...

    def icon(self) -> QtGui.QIcon: ...
    def setAlias(self, alias: str) -> QgsError: ...
    def alias(self) -> str: ...
    def initSettings(self) -> None: ...
    def name(self) -> str: ...
    def validate(self) -> QgsError: ...
    def folder(self) -> str: ...


class QgsUserProfileManager(QtCore.QObject):

    def __init__(self, rootLocation: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def profilesChanged(self) -> None: ...
    def loadUserProfile(self, name: str) -> None: ...
    def setActiveUserProfile(self, profile: str) -> None: ...
    def userProfile(self) -> QgsUserProfile: ...
    def deleteProfile(self, name: str) -> QgsError: ...
    def createUserProfile(self, name: str) -> QgsError: ...
    def profileForName(self, name: str) -> QgsUserProfile: ...
    def setUserProfileSelectionPolicy(self, policy: Qgis.UserProfileSelectionPolicy) -> None: ...
    def userProfileSelectionPolicy(self) -> Qgis.UserProfileSelectionPolicy: ...
    def lastProfileName(self) -> str: ...
    def setDefaultFromActive(self) -> None: ...
    def setDefaultProfileName(self, name: str) -> None: ...
    def defaultProfileName(self) -> str: ...
    def profileExists(self, name: str) -> bool: ...
    def allProfiles(self) -> typing.List[str]: ...
    def rootLocationIsSet(self) -> bool: ...
    def isNewProfileNotificationEnabled(self) -> bool: ...
    def setNewProfileNotificationEnabled(self, enabled: bool) -> None: ...
    def rootLocation(self) -> str: ...
    def setRootLocation(self, rootProfileLocation: str) -> None: ...
    def getProfile(self, defaultProfile: str = ..., createNew: bool = ..., initSettings: bool = ...) -> QgsUserProfile: ...
    @staticmethod
    def resolveProfilesFolder(basePath: str = ...) -> str: ...


class QgsVariantUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVariantUtils') -> None: ...

    @staticmethod
    def isNull(variant: typing.Any) -> bool: ...
    @staticmethod
    def typeToDisplayString(type: QtCore.QVariant.Type, subType: QtCore.QVariant.Type = ...) -> str: ...


class QgsVector(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVector') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def toString(self, precision: int = ...) -> str: ...
    def normalized(self) -> 'QgsVector': ...
    def rotateBy(self, rot: float) -> 'QgsVector': ...
    def crossProduct(self, v: 'QgsVector') -> float: ...
    @typing.overload
    def angle(self) -> float: ...
    @typing.overload
    def angle(self, v: 'QgsVector') -> float: ...
    def perpVector(self) -> 'QgsVector': ...
    def y(self) -> float: ...
    def x(self) -> float: ...
    def lengthSquared(self) -> float: ...
    def length(self) -> float: ...
    def __neg__(self) -> 'QgsVector': ...


class QgsVector3D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, x: float, y: float, z: float) -> None: ...
    @typing.overload
    def __init__(self, v: QtGui.QVector3D) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVector3D') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def toVector3D(self) -> QtGui.QVector3D: ...
    def toString(self, precision: int = ...) -> str: ...
    @staticmethod
    def perpendicularPoint(v1: 'QgsVector3D', v2: 'QgsVector3D', vp: 'QgsVector3D') -> 'QgsVector3D': ...
    def distance(self, other: 'QgsVector3D') -> float: ...
    def normalize(self) -> None: ...
    def length(self) -> float: ...
    @staticmethod
    def crossProduct(v1: 'QgsVector3D', v2: 'QgsVector3D') -> 'QgsVector3D': ...
    @staticmethod
    def dotProduct(v1: 'QgsVector3D', v2: 'QgsVector3D') -> float: ...
    def set(self, x: float, y: float, z: float) -> None: ...
    def z(self) -> float: ...
    def y(self) -> float: ...
    def x(self) -> float: ...
    def isNull(self) -> bool: ...


class QgsVectorFileWriter(QgsFeatureSink):

    class ActionOnExistingFile(int):
        CreateOrOverwriteFile = ... # type: QgsVectorFileWriter.ActionOnExistingFile
        CreateOrOverwriteLayer = ... # type: QgsVectorFileWriter.ActionOnExistingFile
        AppendToLayerNoNewFields = ... # type: QgsVectorFileWriter.ActionOnExistingFile
        AppendToLayerAddFields = ... # type: QgsVectorFileWriter.ActionOnExistingFile

    class EditionCapability(int):
        CanAddNewLayer = ... # type: QgsVectorFileWriter.EditionCapability
        CanAppendToExistingLayer = ... # type: QgsVectorFileWriter.EditionCapability
        CanAddNewFieldsToExistingLayer = ... # type: QgsVectorFileWriter.EditionCapability
        CanDeleteLayer = ... # type: QgsVectorFileWriter.EditionCapability

    class VectorFormatOption(int):
        SortRecommended = ... # type: QgsVectorFileWriter.VectorFormatOption
        SkipNonSpatialFormats = ... # type: QgsVectorFileWriter.VectorFormatOption
        SupportsMultipleLayers = ... # type: QgsVectorFileWriter.VectorFormatOption

    class FieldNameSource(int):
        Original = ... # type: QgsVectorFileWriter.FieldNameSource
        PreferAlias = ... # type: QgsVectorFileWriter.FieldNameSource

    class WriterError(int):
        NoError = ... # type: QgsVectorFileWriter.WriterError
        ErrDriverNotFound = ... # type: QgsVectorFileWriter.WriterError
        ErrCreateDataSource = ... # type: QgsVectorFileWriter.WriterError
        ErrCreateLayer = ... # type: QgsVectorFileWriter.WriterError
        ErrAttributeTypeUnsupported = ... # type: QgsVectorFileWriter.WriterError
        ErrAttributeCreationFailed = ... # type: QgsVectorFileWriter.WriterError
        ErrProjection = ... # type: QgsVectorFileWriter.WriterError
        ErrFeatureWriteFailed = ... # type: QgsVectorFileWriter.WriterError
        ErrInvalidLayer = ... # type: QgsVectorFileWriter.WriterError
        ErrSavingMetadata = ... # type: QgsVectorFileWriter.WriterError
        Canceled = ... # type: QgsVectorFileWriter.WriterError

    class OptionType(int):
        Set = ... # type: QgsVectorFileWriter.OptionType
        String = ... # type: QgsVectorFileWriter.OptionType
        Int = ... # type: QgsVectorFileWriter.OptionType
        Hidden = ... # type: QgsVectorFileWriter.OptionType

    class Option(PyQt5.sip.wrapper):

        docString = ... # type: str
        type = ... # type: 'QgsVectorFileWriter.OptionType'

        @typing.overload
        def __init__(self, docString: str, type: 'QgsVectorFileWriter.OptionType') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.Option') -> None: ...

    class SetOption('QgsVectorFileWriter.Option'):

        allowNone = ... # type: bool
        defaultValue = ... # type: str
        values = ... # type: typing.Iterable[str]

        @typing.overload
        def __init__(self, docString: str, values: typing.Iterable[str], defaultValue: str, allowNone: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.SetOption') -> None: ...

    class StringOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: str

        @typing.overload
        def __init__(self, docString: str, defaultValue: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.StringOption') -> None: ...

    class IntOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: int

        @typing.overload
        def __init__(self, docString: str, defaultValue: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.IntOption') -> None: ...

    class BoolOption('QgsVectorFileWriter.SetOption'):

        @typing.overload
        def __init__(self, docString: str, defaultValue: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.BoolOption') -> None: ...

    class HiddenOption('QgsVectorFileWriter.Option'):

        mValue = ... # type: str

        @typing.overload
        def __init__(self, value: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.HiddenOption') -> None: ...

    class MetaData(PyQt5.sip.wrapper):

        compulsoryEncoding = ... # type: str
        driverOptions = ... # type: typing.Any
        ext = ... # type: str
        glob = ... # type: str
        layerOptions = ... # type: typing.Any
        longName = ... # type: str
        trLongName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, longName: str, trLongName: str, glob: str, ext: str, driverOptions: typing.Any, layerOptions: typing.Any, compulsoryEncoding: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.MetaData') -> None: ...

    class VectorFormatOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.VectorFormatOptions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FieldValueConverter(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.FieldValueConverter') -> None: ...

        def clone(self) -> 'QgsVectorFileWriter.FieldValueConverter': ...
        def convert(self, fieldIdxInLayer: int, value: typing.Any) -> typing.Any: ...
        def fieldDefinition(self, field: QgsField) -> QgsField: ...

    class EditionCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.EditionCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SaveVectorOptions(PyQt5.sip.wrapper):

        actionOnExistingFile = ... # type: 'QgsVectorFileWriter.ActionOnExistingFile'
        attributes = ... # type: typing.Iterable[int]
        attributesExportNames = ... # type: typing.Iterable[str]
        ct = ... # type: 'QgsCoordinateTransform'
        datasourceOptions = ... # type: typing.Iterable[str]
        driverName = ... # type: str
        feedback = ... # type: QgsFeedback
        fieldNameSource = ... # type: 'QgsVectorFileWriter.FieldNameSource'
        fieldValueConverter = ... # type: 'QgsVectorFileWriter.FieldValueConverter'
        fileEncoding = ... # type: str
        filterExtent = ... # type: 'QgsRectangle'
        forceMulti = ... # type: bool
        includeZ = ... # type: bool
        layerMetadata = ... # type: 'QgsLayerMetadata'
        layerName = ... # type: str
        layerOptions = ... # type: typing.Iterable[str]
        onlySelectedFeatures = ... # type: bool
        overrideGeometryType = ... # type: Qgis.WkbType
        saveMetadata = ... # type: bool
        skipAttributeCreation = ... # type: bool
        symbologyExport = ... # type: Qgis.FeatureSymbologyExport
        symbologyScale = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.SaveVectorOptions') -> None: ...

    class FilterFormatDetails(PyQt5.sip.wrapper):

        driverName = ... # type: str
        filterString = ... # type: str
        globs = ... # type: typing.Iterable[str]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.FilterFormatDetails') -> None: ...

    class DriverDetails(PyQt5.sip.wrapper):

        driverName = ... # type: str
        longName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.DriverDetails') -> None: ...

    def __init__(self, vectorFileName: str, fileEncoding: str, fields: QgsFields, geometryType: Qgis.WkbType, srs: 'QgsCoordinateReferenceSystem' = ..., driverName: str = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ..., newFilename: typing.Optional[str] = ..., symbologyExport: Qgis.FeatureSymbologyExport = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> None: ...

    @staticmethod
    def areThereNewFieldsToCreate(datasetName: str, layerName: str, layer: QgsVectorLayer, attributes: typing.Iterable[int]) -> bool: ...
    @staticmethod
    def targetLayerExists(datasetName: str, layerName: str) -> bool: ...
    @staticmethod
    def editionCapabilities(datasetName: str) -> 'QgsVectorFileWriter.EditionCapabilities': ...
    @staticmethod
    def defaultLayerOptions(driverName: str) -> typing.List[str]: ...
    @staticmethod
    def defaultDatasetOptions(driverName: str) -> typing.List[str]: ...
    @staticmethod
    def driverMetadata(driverName: str, driverMetadata: 'QgsVectorFileWriter.MetaData') -> bool: ...
    def setSymbologyScale(self, scale: float) -> None: ...
    def symbologyScale(self) -> float: ...
    def setSymbologyExport(self, symExport: Qgis.FeatureSymbologyExport) -> None: ...
    def symbologyExport(self) -> Qgis.FeatureSymbologyExport: ...
    @staticmethod
    def deleteShapeFile(fileName: str) -> bool: ...
    def addFeatureWithStyle(self, feature: QgsFeature, renderer: 'QgsFeatureRenderer', outputUnit: Qgis.DistanceUnit = ...) -> bool: ...
    def lastError(self) -> str: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def capabilities(self) -> Qgis.VectorFileWriterCapabilities: ...
    def driverLongName(self) -> str: ...
    def driver(self) -> str: ...
    def errorMessage(self) -> str: ...
    def hasError(self) -> 'QgsVectorFileWriter.WriterError': ...
    @staticmethod
    def convertCodecNameForEncodingOption(codecName: str) -> str: ...
    @staticmethod
    def filterForDriver(driverName: str) -> str: ...
    @staticmethod
    def fileFilterString(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> str: ...
    @staticmethod
    def driverForExtension(extension: str) -> str: ...
    @staticmethod
    def ogrDriverList(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List['QgsVectorFileWriter.DriverDetails']: ...
    @staticmethod
    def supportsFeatureStyles(driverName: str) -> bool: ...
    @staticmethod
    def supportedFormatExtensions(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List[str]: ...
    @staticmethod
    def supportedFiltersAndFormats(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List['QgsVectorFileWriter.FilterFormatDetails']: ...
    @staticmethod
    def writeAsVectorFormatV3(layer: QgsVectorLayer, fileName: str, transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions') -> typing.Tuple['QgsVectorFileWriter.WriterError', str, str, str]: ...
    @staticmethod
    def writeAsVectorFormatV2(layer: QgsVectorLayer, fileName: str, transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[str] = ..., newLayer: typing.Optional[str] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @staticmethod
    def create(fileName: str, fields: QgsFields, geometryType: Qgis.WkbType, srs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., newFilename: typing.Optional[str] = ..., newLayer: typing.Optional[str] = ...) -> 'QgsVectorFileWriter': ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, fileEncoding: str, destCRS: 'QgsCoordinateReferenceSystem' = ..., driverName: str = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[str] = ..., symbologyExport: Qgis.FeatureSymbologyExport = ..., symbologyScale: float = ..., filterExtent: typing.Optional['QgsRectangle'] = ..., overrideGeometryType: Qgis.WkbType = ..., forceMulti: bool = ..., includeZ: bool = ..., attributes: typing.Iterable[int] = ..., fieldValueConverter: typing.Optional['QgsVectorFileWriter.FieldValueConverter'] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, fileEncoding: str, ct: 'QgsCoordinateTransform', driverName: str = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[str] = ..., symbologyExport: Qgis.FeatureSymbologyExport = ..., symbologyScale: float = ..., filterExtent: typing.Optional['QgsRectangle'] = ..., overrideGeometryType: Qgis.WkbType = ..., forceMulti: bool = ..., includeZ: bool = ..., attributes: typing.Iterable[int] = ..., fieldValueConverter: typing.Optional['QgsVectorFileWriter.FieldValueConverter'] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[str] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...


class QgsVectorFileWriterTask(QgsTask):

    def __init__(self, layer: QgsVectorLayer, fileName: str, options: QgsVectorFileWriter.SaveVectorOptions) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def errorOccurred(self, error: int, errorMessage: str) -> None: ...
    def writeComplete(self, newFilename: str) -> None: ...
    def cancel(self) -> None: ...


class QgsVectorSimplifyMethod(PyQt5.sip.wrapper):

    class SimplifyAlgorithm(int):
        Distance = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        SnapToGrid = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        Visvalingam = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        SnappedToGridGlobal = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm

    class SimplifyHint(int):
        NoSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        GeometrySimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        AntialiasingSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        FullSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint

    class SimplifyHints(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorSimplifyMethod.SimplifyHints', 'QgsVectorSimplifyMethod.SimplifyHint']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorSimplifyMethod.SimplifyHints') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsVectorSimplifyMethod.SimplifyHints': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorSimplifyMethod') -> None: ...

    def maximumScale(self) -> float: ...
    def setMaximumScale(self, maximumScale: float) -> None: ...
    def forceLocalOptimization(self) -> bool: ...
    def setForceLocalOptimization(self, localOptimization: bool) -> None: ...
    def threshold(self) -> float: ...
    def setThreshold(self, threshold: float) -> None: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def simplifyAlgorithm(self) -> 'QgsVectorSimplifyMethod.SimplifyAlgorithm': ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: 'QgsVectorSimplifyMethod.SimplifyAlgorithm') -> None: ...
    def simplifyHints(self) -> 'QgsVectorSimplifyMethod.SimplifyHints': ...
    def setSimplifyHints(self, simplifyHints: typing.Union['QgsVectorSimplifyMethod.SimplifyHints', 'QgsVectorSimplifyMethod.SimplifyHint']) -> None: ...


class QgsVirtualLayerDefinition(PyQt5.sip.wrapper):

    class SourceLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, name: str, ref: str) -> None: ...
        @typing.overload
        def __init__(self, name: str, source: str, provider: str, encoding: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVirtualLayerDefinition.SourceLayer') -> None: ...

        def encoding(self) -> str: ...
        def source(self) -> str: ...
        def provider(self) -> str: ...
        def name(self) -> str: ...
        def reference(self) -> str: ...
        def isReferenced(self) -> bool: ...

    @typing.overload
    def __init__(self, filePath: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVirtualLayerDefinition') -> None: ...

    def setSubsetString(self, subsetString: str) -> None: ...
    def subsetString(self) -> str: ...
    def hasDefinedGeometry(self) -> bool: ...
    def hasReferencedLayers(self) -> bool: ...
    def hasSourceLayer(self, name: str) -> bool: ...
    def setFields(self, fields: QgsFields) -> None: ...
    def fields(self) -> QgsFields: ...
    def setGeometrySrid(self, srid: int) -> None: ...
    def geometrySrid(self) -> int: ...
    def setGeometryWkbType(self, t: Qgis.WkbType) -> None: ...
    def geometryWkbType(self) -> Qgis.WkbType: ...
    def setGeometryField(self, geometryField: str) -> None: ...
    def geometryField(self) -> str: ...
    def isLazy(self) -> bool: ...
    def setLazy(self, lazy: bool) -> None: ...
    def setUid(self, uid: str) -> None: ...
    def uid(self) -> str: ...
    def setFilePath(self, filePath: str) -> None: ...
    def filePath(self) -> str: ...
    def setQuery(self, query: str) -> None: ...
    def query(self) -> str: ...
    def sourceLayers(self) -> typing.List['QgsVirtualLayerDefinition.SourceLayer']: ...
    @typing.overload
    def addSource(self, name: str, ref: str) -> None: ...
    @typing.overload
    def addSource(self, name: str, source: str, provider: str, encoding: str = ...) -> None: ...
    def toString(self) -> str: ...
    def toUrl(self) -> QtCore.QUrl: ...
    @staticmethod
    def fromUrl(url: QtCore.QUrl) -> 'QgsVirtualLayerDefinition': ...


class QgsVirtualLayerDefinitionUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVirtualLayerDefinitionUtils') -> None: ...

    @staticmethod
    def fromJoinedLayer(joinedLayer: QgsVectorLayer) -> QgsVirtualLayerDefinition: ...


class QgsVirtualLayerTask(QgsTask):

    def __init__(self, definition: QgsVirtualLayerDefinition) -> None: ...

    def setExceptionText(self, exceptionText: str) -> None: ...
    def exceptionText(self) -> str: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...
    def definition(self) -> QgsVirtualLayerDefinition: ...
    def takeLayer(self) -> QgsVectorLayer: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsXmlUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsXmlUtils') -> None: ...

    @staticmethod
    def readVariant(element: QtXml.QDomElement) -> typing.Any: ...
    @staticmethod
    def writeVariant(value: typing.Any, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def writeRectangle(rect: 'QgsRectangle', doc: QtXml.QDomDocument, elementName: str = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def writeMapUnits(units: Qgis.DistanceUnit, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def readRectangle(element: QtXml.QDomElement) -> 'QgsRectangle': ...
    @staticmethod
    def readMapUnits(element: QtXml.QDomElement) -> Qgis.DistanceUnit: ...


class QgsZipUtils(PyQt5.sip.simplewrapper):

    def files(self, zip: str) -> typing.List[str]: ...
    def zip(self, zip: str, files: typing.Iterable[str]) -> bool: ...
    def unzip(self, zip: str, dir: str, checkConsistency: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def isZipFile(self, filename: str) -> bool: ...


class Qgs3DRendererAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgs3DRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsAbstract3DRenderer': ...
    def type(self) -> str: ...


class Qgs3DRendererRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgs3DRendererRegistry') -> None: ...

    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, type: str) -> Qgs3DRendererAbstractMetadata: ...
    def removeRenderer(self, type: str) -> None: ...
    def addRenderer(self, metadata: Qgs3DRendererAbstractMetadata) -> None: ...


class Qgs3DSymbolAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: str, visibleName: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgs3DSymbolAbstractMetadata') -> None: ...

    def create(self) -> 'QgsAbstract3DSymbol': ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class Qgs3DSymbolRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def defaultSymbolForGeometryType(self, type: Qgis.GeometryType) -> 'QgsAbstract3DSymbol': ...
    def createSymbol(self, type: str) -> 'QgsAbstract3DSymbol': ...
    def addSymbolType(self, metadata: Qgs3DSymbolAbstractMetadata) -> bool: ...
    def symbolTypes(self) -> typing.List[str]: ...
    def symbolMetadata(self, type: str) -> Qgs3DSymbolAbstractMetadata: ...


class QgsAbstract3DSymbol(PyQt5.sip.wrapper):

    class Property(int):
        PropertyHeight = ... # type: QgsAbstract3DSymbol.Property
        PropertyExtrusionHeight = ... # type: QgsAbstract3DSymbol.Property

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstract3DSymbol') -> None: ...

    def copyBaseSettings(self, destination: 'QgsAbstract3DSymbol') -> None: ...
    def setDefaultPropertiesFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def compatibleGeometryTypes(self) -> typing.List[Qgis.GeometryType]: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsAbstract3DSymbol': ...
    def type(self) -> str: ...


class QgsAbstract3DRenderer(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsAbstract3DRenderer': ...
    def type(self) -> str: ...


class QgsAbstractPointCloud3DRenderer(QgsAbstract3DRenderer):

    def __init__(self) -> None: ...

    def convertFrom2DRenderer(self, renderer: 'QgsPointCloudRenderer') -> bool: ...


class QgsAction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.AttributeActionType, description: str, command: str, capture: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.AttributeActionType, description: str, action: str, icon: str, capture: bool, shortTitle: str = ..., actionScopes: typing.Iterable[str] = ..., notificationMessage: str = ...) -> None: ...
    @typing.overload
    def __init__(self, id: QtCore.QUuid, type: Qgis.AttributeActionType, description: str, action: str, icon: str, capture: bool, shortTitle: str = ..., actionScopes: typing.Iterable[str] = ..., notificationMessage: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAction') -> None: ...

    def setCommand(self, newCommand: str) -> None: ...
    def html(self) -> str: ...
    def expressionContextScope(self) -> QgsExpressionContextScope: ...
    def setExpressionContextScope(self, scope: QgsExpressionContextScope) -> None: ...
    def writeXml(self, actionsNode: QtXml.QDomNode) -> None: ...
    def readXml(self, actionNode: QtXml.QDomNode) -> None: ...
    def setActionScopes(self, actionScopes: typing.Iterable[str]) -> None: ...
    def actionScopes(self) -> typing.Set[str]: ...
    @typing.overload
    def run(self, layer: QgsVectorLayer, feature: QgsFeature, expressionContext: QgsExpressionContext) -> None: ...
    @typing.overload
    def run(self, expressionContext: QgsExpressionContext) -> None: ...
    def runable(self) -> bool: ...
    def setEnabledOnlyWhenEditable(self, enable: bool) -> None: ...
    def isEnabledOnlyWhenEditable(self) -> bool: ...
    def capture(self) -> bool: ...
    def type(self) -> Qgis.AttributeActionType: ...
    def notificationMessage(self) -> str: ...
    def command(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def iconPath(self) -> str: ...
    def isValid(self) -> bool: ...
    def id(self) -> QtCore.QUuid: ...
    def shortTitle(self) -> str: ...
    def name(self) -> str: ...


class QgsActionManager(QtCore.QObject):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def defaultAction(self, actionScope: str) -> QgsAction: ...
    def setDefaultAction(self, actionScope: str, actionId: QtCore.QUuid) -> None: ...
    @typing.overload
    def action(self, id: QtCore.QUuid) -> QgsAction: ...
    @typing.overload
    def action(self, id: str) -> QgsAction: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def layer(self) -> QgsVectorLayer: ...
    def actions(self, actionScope: str = ...) -> typing.List[QgsAction]: ...
    def clearActions(self) -> None: ...
    def doAction(self, actionId: QtCore.QUuid, feature: QgsFeature, context: QgsExpressionContext) -> None: ...
    def doActionFeature(self, actionId: QtCore.QUuid, feature: QgsFeature, defaultValueIndex: int = ..., scope: QgsExpressionContextScope = ...) -> None: ...
    def removeAction(self, actionId: QtCore.QUuid) -> None: ...
    @typing.overload
    def addAction(self, type: Qgis.AttributeActionType, name: str, command: str, capture: bool = ...) -> QtCore.QUuid: ...
    @typing.overload
    def addAction(self, type: Qgis.AttributeActionType, name: str, command: str, icon: str, capture: bool = ...) -> QtCore.QUuid: ...
    @typing.overload
    def addAction(self, action: QgsAction) -> None: ...


class QgsActionScope(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, id: str, title: str, description: str, expressionContextScope: QgsExpressionContextScope = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsActionScope') -> None: ...

    def __hash__(self) -> int: ...
    def isValid(self) -> bool: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def title(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...
    def setExpressionContextScope(self, expressionContextScope: QgsExpressionContextScope) -> None: ...
    def expressionContextScope(self) -> QgsExpressionContextScope: ...


class QgsActionScopeRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def actionScopesChanged(self) -> None: ...
    def actionScope(self, id: str) -> QgsActionScope: ...
    def unregisterActionScope(self, actionScope: QgsActionScope) -> None: ...
    def registerActionScope(self, actionScope: QgsActionScope) -> None: ...
    def actionScopes(self) -> typing.Set[QgsActionScope]: ...


class QgsAnnotation(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def copyCommonProperties(self, target: 'QgsAnnotation') -> None: ...
    def _readXml(self, annotationElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _writeXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def minimumFrameSize(self) -> QtCore.QSizeF: ...
    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    def mapLayerChanged(self) -> None: ...
    def moved(self) -> None: ...
    def appearanceChanged(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def setAssociatedFeature(self, feature: QgsFeature) -> None: ...
    def associatedFeature(self) -> QgsFeature: ...
    def setMapLayer(self, layer: QgsMapLayer) -> None: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def markerSymbol(self) -> 'QgsMarkerSymbol': ...
    def setMarkerSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def render(self, context: QgsRenderContext) -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def contentsMargin(self) -> QgsMargins: ...
    def setContentsMargin(self, margins: QgsMargins) -> None: ...
    def frameSizeMm(self) -> QtCore.QSizeF: ...
    def setFrameSizeMm(self, size: QtCore.QSizeF) -> None: ...
    def frameSize(self) -> QtCore.QSizeF: ...
    def setFrameSize(self, size: QtCore.QSizeF) -> None: ...
    def frameOffsetFromReferencePointMm(self) -> QtCore.QPointF: ...
    def setFrameOffsetFromReferencePointMm(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def frameOffsetFromReferencePoint(self) -> QtCore.QPointF: ...
    def setFrameOffsetFromReferencePoint(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def setRelativePosition(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def relativePosition(self) -> QtCore.QPointF: ...
    def setMapPositionCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def mapPositionCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setMapPosition(self, position: QgsPointXY) -> None: ...
    def mapPosition(self) -> QgsPointXY: ...
    def setHasFixedMapPosition(self, fixed: bool) -> None: ...
    def hasFixedMapPosition(self) -> bool: ...
    def setVisible(self, visible: bool) -> None: ...
    def isVisible(self) -> bool: ...
    def clone(self) -> 'QgsAnnotation': ...


class QgsAnnotationItem(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def readCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def copyCommonProperties(self, other: 'QgsAnnotationItem') -> None: ...
    def setSymbologyReferenceScale(self, scale: float) -> None: ...
    def symbologyReferenceScale(self) -> float: ...
    def setUseSymbologyReferenceScale(self, enabled: bool) -> None: ...
    def useSymbologyReferenceScale(self) -> bool: ...
    def nodes(self) -> typing.List['QgsAnnotationItemNode']: ...
    def setZIndex(self, index: int) -> None: ...
    def zIndex(self) -> int: ...
    def transientEditResults(self, operation: 'QgsAbstractAnnotationItemEditOperation') -> 'QgsAnnotationItemEditOperationTransientResults': ...
    def applyEdit(self, operation: 'QgsAbstractAnnotationItemEditOperation') -> Qgis.AnnotationItemEditOperationResult: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsAnnotationItem': ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAbstractAnnotationItemEditOperation(PyQt5.sip.wrapper):

    class Type(int):
        MoveNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        DeleteNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        AddNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        TranslateItem = ... # type: QgsAbstractAnnotationItemEditOperation.Type

    @typing.overload
    def __init__(self, itemId: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractAnnotationItemEditOperation') -> None: ...

    def itemId(self) -> str: ...
    def type(self) -> 'QgsAbstractAnnotationItemEditOperation.Type': ...


class QgsAnnotationItemEditOperationMoveNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, nodeId: 'QgsVertexId', before: 'QgsPoint', after: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationMoveNode') -> None: ...

    def after(self) -> 'QgsPoint': ...
    def before(self) -> 'QgsPoint': ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationDeleteNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, nodeId: 'QgsVertexId', before: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationDeleteNode') -> None: ...

    def before(self) -> 'QgsPoint': ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationAddNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, point: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationAddNode') -> None: ...

    def point(self) -> 'QgsPoint': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationTranslateItem(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, translateX: float, translateY: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationTranslateItem') -> None: ...

    def translationY(self) -> float: ...
    def translationX(self) -> float: ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationTransientResults(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, representativeGeometry: 'QgsGeometry') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationTransientResults') -> None: ...

    def representativeGeometry(self) -> 'QgsGeometry': ...


class QgsAnnotationItemNode(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, id: 'QgsVertexId', point: QgsPointXY, type: Qgis.AnnotationItemNodeType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemNode') -> None: ...

    def setType(self, type: Qgis.AnnotationItemNodeType) -> None: ...
    def type(self) -> Qgis.AnnotationItemNodeType: ...
    def setPoint(self, point: QgsPointXY) -> None: ...
    def point(self) -> QgsPointXY: ...
    def id(self) -> 'QgsVertexId': ...
    def __repr__(self) -> typing.Any: ...


class QgsAnnotationItemAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: str, visibleName: str, visiblePluralName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemAbstractMetadata') -> None: ...

    def createItem(self) -> QgsAnnotationItem: ...
    def visiblePluralName(self) -> str: ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class QgsAnnotationItemRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def typeAdded(self, type: str, name: str) -> None: ...
    def itemTypes(self) -> typing.Dict[str, str]: ...
    def createItem(self, type: str) -> QgsAnnotationItem: ...
    def addItemType(self, metadata: QgsAnnotationItemAbstractMetadata) -> bool: ...
    def itemMetadata(self, type: str) -> QgsAnnotationItemAbstractMetadata: ...
    def populate(self) -> bool: ...


class QgsAnnotationLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAnnotationLayer.LayerOptions') -> None: ...

    def __init__(self, name: str, options: 'QgsAnnotationLayer.LayerOptions') -> None: ...

    def setPaintEffect(self, effect: 'QgsPaintEffect') -> None: ...
    def paintEffect(self) -> 'QgsPaintEffect': ...
    def htmlMetadata(self) -> str: ...
    def dataProvider(self) -> 'QgsDataProvider': ...
    def supportsEditing(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory]) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory]) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, a3: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def clone(self) -> 'QgsAnnotationLayer': ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def itemsInBounds(self, bounds: 'QgsRectangle', context: QgsRenderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[str]: ...
    def item(self, id: str) -> QgsAnnotationItem: ...
    def items(self) -> typing.Any: ...
    def isEmpty(self) -> bool: ...
    def clear(self) -> None: ...
    def removeItem(self, id: str) -> bool: ...
    def replaceItem(self, id: str, item: QgsAnnotationItem) -> None: ...
    def addItem(self, item: QgsAnnotationItem) -> str: ...
    def reset(self) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsAnnotationLineItem(QgsAnnotationItem):

    def __init__(self, curve: 'QgsCurve') -> None: ...

    def setSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def symbol(self) -> 'QgsLineSymbol': ...
    def setGeometry(self, geometry: 'QgsCurve') -> None: ...
    def geometry(self) -> 'QgsCurve': ...
    def clone(self) -> 'QgsAnnotationLineItem': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationLineItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationLineTextItem(QgsAnnotationItem):

    def __init__(self, text: str, curve: 'QgsCurve') -> None: ...

    def offsetFromLineMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetFromLineMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetFromLineUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetFromLineUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setOffsetFromLine(self, distance: float) -> None: ...
    def offsetFromLine(self) -> float: ...
    def setFormat(self, format: 'QgsTextFormat') -> None: ...
    def format(self) -> 'QgsTextFormat': ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def setGeometry(self, geometry: 'QgsCurve') -> None: ...
    def geometry(self) -> 'QgsCurve': ...
    def clone(self) -> 'QgsAnnotationLineTextItem': ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationLineTextItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAnnotationMarkerItem(QgsAnnotationItem):

    def __init__(self, point: 'QgsPoint') -> None: ...

    def setSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def symbol(self) -> 'QgsMarkerSymbol': ...
    def setGeometry(self, geometry: 'QgsPoint') -> None: ...
    def geometry(self) -> QgsPointXY: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationMarkerItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationMarkerItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationManager(QtCore.QObject):

    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...

    def annotationAboutToBeRemoved(self, annotation: QgsAnnotation) -> None: ...
    def annotationRemoved(self) -> None: ...
    def annotationAdded(self, annotation: QgsAnnotation) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def cloneAnnotations(self) -> typing.List[QgsAnnotation]: ...
    def annotations(self) -> typing.List[QgsAnnotation]: ...
    def clear(self) -> None: ...
    def removeAnnotation(self, annotation: QgsAnnotation) -> bool: ...
    def addAnnotation(self, annotation: QgsAnnotation) -> bool: ...


class QgsAnnotationPointTextItem(QgsAnnotationItem):

    def __init__(self, text: str, point: QgsPointXY) -> None: ...

    def setRotationMode(self, mode: Qgis.SymbolRotationMode) -> None: ...
    def rotationMode(self) -> Qgis.SymbolRotationMode: ...
    def setAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def alignment(self) -> QtCore.Qt.Alignment: ...
    def setAngle(self, angle: float) -> None: ...
    def angle(self) -> float: ...
    def setFormat(self, format: 'QgsTextFormat') -> None: ...
    def format(self) -> 'QgsTextFormat': ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def setPoint(self, point: QgsPointXY) -> None: ...
    def point(self) -> QgsPointXY: ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationPointTextItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationPointTextItem': ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAnnotationPolygonItem(QgsAnnotationItem):

    def __init__(self, polygon: 'QgsCurvePolygon') -> None: ...

    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def setGeometry(self, geometry: 'QgsCurvePolygon') -> None: ...
    def geometry(self) -> 'QgsCurvePolygon': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationPolygonItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationPolygonItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsHtmlAnnotation(QgsAnnotation):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsHtmlAnnotation': ...
    def setAssociatedFeature(self, feature: QgsFeature) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def htmlSource(self) -> str: ...
    def setHtmlSource(self, htmlSource: str) -> None: ...
    def sourceFile(self) -> str: ...
    def setSourceFile(self, htmlFile: str) -> None: ...
    def minimumFrameSize(self) -> QtCore.QSizeF: ...
    def clone(self) -> 'QgsHtmlAnnotation': ...


class QgsRenderedAnnotationItemDetails(QgsRenderedItemDetails):

    @typing.overload
    def __init__(self, layerId: str, itemId: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRenderedAnnotationItemDetails') -> None: ...

    def itemId(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsSvgAnnotation(QgsAnnotation):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsSvgAnnotation': ...
    def filePath(self) -> str: ...
    def setFilePath(self, file: str) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsSvgAnnotation': ...


class QgsTextAnnotation(QgsAnnotation):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsTextAnnotation': ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def setDocument(self, doc: QtGui.QTextDocument) -> None: ...
    def document(self) -> QtGui.QTextDocument: ...
    def clone(self) -> 'QgsTextAnnotation': ...


class QgsAuthCertUtils(PyQt5.sip.wrapper):

    class ConstraintGroup(int):
        KeyUsage = ... # type: QgsAuthCertUtils.ConstraintGroup
        ExtendedKeyUsage = ... # type: QgsAuthCertUtils.ConstraintGroup

    class CertUsageType(int):
        UndeterminedUsage = ... # type: QgsAuthCertUtils.CertUsageType
        AnyOrUnspecifiedUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CertAuthorityUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CertIssuerUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsServerUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsServerEvUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsClientUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CodeSigningUsage = ... # type: QgsAuthCertUtils.CertUsageType
        EmailProtectionUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TimeStampingUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CRLSigningUsage = ... # type: QgsAuthCertUtils.CertUsageType

    class CertTrustPolicy(int):
        DefaultTrust = ... # type: QgsAuthCertUtils.CertTrustPolicy
        Trusted = ... # type: QgsAuthCertUtils.CertTrustPolicy
        Untrusted = ... # type: QgsAuthCertUtils.CertTrustPolicy
        NoPolicy = ... # type: QgsAuthCertUtils.CertTrustPolicy

    class CaCertSource(int):
        SystemRoot = ... # type: QgsAuthCertUtils.CaCertSource
        FromFile = ... # type: QgsAuthCertUtils.CaCertSource
        InDatabase = ... # type: QgsAuthCertUtils.CaCertSource
        Connection = ... # type: QgsAuthCertUtils.CaCertSource

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAuthCertUtils') -> None: ...

    @staticmethod
    def validatePKIBundle(bundle: 'QgsPkiBundle', useIntermediates: bool = ..., trustRootCa: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def validateCertChain(certificateChain: typing.Iterable[QtNetwork.QSslCertificate], hostName: str = ..., trustRootCa: bool = ...) -> typing.List[QtNetwork.QSslError]: ...
    @staticmethod
    def certIsViable(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certViabilityErrors(cert: QtNetwork.QSslCertificate) -> typing.List[QtNetwork.QSslError]: ...
    @staticmethod
    def certIsCurrent(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def sslErrorEnumString(errenum: QtNetwork.QSslError.SslError) -> str: ...
    @staticmethod
    def certificateIsSslClient(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsSslServer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsAuthorityOrIssuer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsIssuer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsAuthority(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateUsageTypes(cert: QtNetwork.QSslCertificate) -> typing.List['QgsAuthCertUtils.CertUsageType']: ...
    @staticmethod
    def shaHexForCert(cert: QtNetwork.QSslCertificate, formatted: bool = ...) -> str: ...
    @staticmethod
    def getColonDelimited(txt: str) -> str: ...
    @staticmethod
    def getCertTrustName(trust: 'QgsAuthCertUtils.CertTrustPolicy') -> str: ...
    @staticmethod
    def resolvedCertName(cert: QtNetwork.QSslCertificate, issuer: bool = ...) -> str: ...
    @staticmethod
    def getCaSourceName(source: 'QgsAuthCertUtils.CaCertSource', single: bool = ...) -> str: ...
    @staticmethod
    def pemTextToTempFile(name: str, pemtext: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> str: ...
    @staticmethod
    def certsToPemText(certs: typing.Iterable[QtNetwork.QSslCertificate]) -> QtCore.QByteArray: ...
    @staticmethod
    def pkcs12BundleCas(bundlepath: str, bundlepass: str = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def pkcs12BundleToPem(bundlepath: str, bundlepass: str = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def pemIsPkcs8(keyPemTxt: str) -> bool: ...
    @staticmethod
    def certKeyBundleToPem(certpath: str, keypath: str, keypass: str = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def casRemoveSelfSigned(caList: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromString(pemtext: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def keyFromFile(keypath: str, keypass: str = ..., algtype: typing.Optional[str] = ...) -> QtNetwork.QSslKey: ...
    @staticmethod
    def casMerge(bundle1: typing.Iterable[QtNetwork.QSslCertificate], bundle2: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certFromFile(certpath: str) -> QtNetwork.QSslCertificate: ...
    @staticmethod
    def casFromFile(certspath: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromFile(certspath: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def fileData(path: str) -> QtCore.QByteArray: ...
    @staticmethod
    def mapDigestToSslConfigs(configs: typing.Iterable['QgsAuthConfigSslServer']) -> typing.Dict[str, 'QgsAuthConfigSslServer']: ...
    @staticmethod
    def mapDigestToCerts(certs: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.Dict[str, QtNetwork.QSslCertificate]: ...
    @staticmethod
    def getSslProtocolName(protocol: QtNetwork.QSsl.SslProtocol) -> str: ...


class QgsAuthMethodConfig(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, method: str = ..., version: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAuthMethodConfig') -> None: ...

    def readXml(self, element: QtXml.QDomElement) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    @staticmethod
    def uriToResource(accessurl: str, resource: str, withpath: bool = ...) -> bool: ...
    def clearConfigMap(self) -> None: ...
    def hasConfig(self, key: str) -> bool: ...
    def configList(self, key: str) -> typing.List[str]: ...
    def config(self, key: str, defaultvalue: str = ...) -> str: ...
    def removeConfig(self, key: str) -> int: ...
    def setConfigList(self, key: str, value: typing.Iterable[str]) -> None: ...
    def setConfig(self, key: str, value: str) -> None: ...
    def setConfigMap(self, map: typing.Dict[str, str]) -> None: ...
    def configMap(self) -> typing.Dict[str, str]: ...
    def loadConfigString(self, configstr: str) -> None: ...
    def configString(self) -> str: ...
    def isValid(self, validateid: bool = ...) -> bool: ...
    def setVersion(self, version: int) -> None: ...
    def version(self) -> int: ...
    def setMethod(self, method: str) -> None: ...
    def method(self) -> str: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...


class QgsPkiBundle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, clientCert: QtNetwork.QSslCertificate = ..., clientKey: QtNetwork.QSslKey = ..., caChain: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPkiBundle') -> None: ...

    def setCaChain(self, cachain: typing.Iterable[QtNetwork.QSslCertificate]) -> None: ...
    def caChain(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def setClientKey(self, certkey: QtNetwork.QSslKey) -> None: ...
    def clientKey(self) -> QtNetwork.QSslKey: ...
    def setClientCert(self, cert: QtNetwork.QSslCertificate) -> None: ...
    def clientCert(self) -> QtNetwork.QSslCertificate: ...
    def certId(self) -> str: ...
    def isValid(self) -> bool: ...
    def isNull(self) -> bool: ...
    @staticmethod
    def fromPkcs12Paths(bundlepath: str, bundlepass: str = ...) -> 'QgsPkiBundle': ...
    @staticmethod
    def fromPemPaths(certPath: str, keyPath: str, keyPass: str = ..., caChain: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> 'QgsPkiBundle': ...


class QgsPkiConfigBundle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, config: QgsAuthMethodConfig, cert: QtNetwork.QSslCertificate, certkey: QtNetwork.QSslKey, cachain: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPkiConfigBundle') -> None: ...

    def setCaChain(self, caChain: typing.Iterable[QtNetwork.QSslCertificate]) -> None: ...
    def caChain(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def setClientCertKey(self, certkey: QtNetwork.QSslKey) -> None: ...
    def clientCertKey(self) -> QtNetwork.QSslKey: ...
    def setClientCert(self, cert: QtNetwork.QSslCertificate) -> None: ...
    def clientCert(self) -> QtNetwork.QSslCertificate: ...
    def setConfig(self, config: QgsAuthMethodConfig) -> None: ...
    def config(self) -> QgsAuthMethodConfig: ...
    def isValid(self) -> bool: ...


class QgsAuthConfigSslServer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAuthConfigSslServer') -> None: ...

    def isNull(self) -> bool: ...
    def loadConfigString(self, config: str = ...) -> None: ...
    def configString(self) -> str: ...
    def setQtVersion(self, version: int) -> None: ...
    def qtVersion(self) -> int: ...
    def setVersion(self, version: int) -> None: ...
    def version(self) -> int: ...
    def setSslPeerVerifyDepth(self, depth: int) -> None: ...
    def sslPeerVerifyDepth(self) -> int: ...
    def setSslPeerVerifyMode(self, mode: QtNetwork.QSslSocket.PeerVerifyMode) -> None: ...
    def sslPeerVerifyMode(self) -> QtNetwork.QSslSocket.PeerVerifyMode: ...
    def setSslIgnoredErrorEnums(self, errors: typing.Any) -> None: ...
    def sslIgnoredErrorEnums(self) -> typing.Any: ...
    def sslIgnoredErrors(self) -> typing.List[QtNetwork.QSslError]: ...
    def setSslProtocol(self, protocol: QtNetwork.QSsl.SslProtocol) -> None: ...
    def sslProtocol(self) -> QtNetwork.QSsl.SslProtocol: ...
    def setSslHostPort(self, hostport: str) -> None: ...
    def sslHostPort(self) -> str: ...
    def setSslCertificate(self, cert: QtNetwork.QSslCertificate) -> None: ...
    def sslCertificate(self) -> QtNetwork.QSslCertificate: ...


class QgsAuthManager(QtCore.QObject):

    class MessageLevel(int):
        INFO = ... # type: QgsAuthManager.MessageLevel
        WARNING = ... # type: QgsAuthManager.MessageLevel
        CRITICAL = ... # type: QgsAuthManager.MessageLevel

    AUTH_MAN_TAG = ... # type: str
    AUTH_PASSWORD_HELPER_DISPLAY_NAME = ... # type: str

    def __init__(self) -> None: ...

    def clearCachedConfig(self, authcfg: str) -> None: ...
    def clearAllCachedConfigs(self) -> None: ...
    def authDatabaseChanged(self) -> None: ...
    def authDatabaseEraseRequested(self) -> None: ...
    def masterPasswordVerified(self, verified: bool) -> None: ...
    def passwordHelperMessageOut(self, message: str, tag: str = ..., level: 'QgsAuthManager.MessageLevel' = ...) -> None: ...
    def messageOut(self, message: str, tag: str = ..., level: 'QgsAuthManager.MessageLevel' = ...) -> None: ...
    def passwordHelperSuccess(self) -> None: ...
    def passwordHelperFailure(self) -> None: ...
    def passwordHelperSync(self) -> bool: ...
    def setPasswordHelperEnabled(self, enabled: bool) -> None: ...
    def passwordHelperEnabled(self) -> bool: ...
    def trustedCaCertsPemText(self) -> QtCore.QByteArray: ...
    def trustedCaCertsCache(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def rebuildTrustedCaCertsCache(self) -> bool: ...
    def untrustedCaCerts(self, trustedCAs: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    def trustedCaCerts(self, includeinvalid: bool = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    def rebuildCertTrustCache(self) -> bool: ...
    def certTrustCache(self) -> typing.Dict[QgsAuthCertUtils.CertTrustPolicy, typing.List[str]]: ...
    def defaultCertTrustPolicy(self) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def setDefaultCertTrustPolicy(self, policy: QgsAuthCertUtils.CertTrustPolicy) -> bool: ...
    def certificateTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def removeCertTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def removeCertTrustPolicies(self, certs: typing.Iterable[QtNetwork.QSslCertificate]) -> bool: ...
    def certTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def storeCertTrustPolicy(self, cert: QtNetwork.QSslCertificate, policy: QgsAuthCertUtils.CertTrustPolicy) -> bool: ...
    def rebuildCaCertsCache(self) -> bool: ...
    def mappedDatabaseCAs(self) -> typing.Dict[str, QtNetwork.QSslCertificate]: ...
    def databaseCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def extraFileCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def systemRootCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def removeCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def existsCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def certAuthority(self, id: str) -> QtNetwork.QSslCertificate: ...
    def storeCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def storeCertAuthorities(self, certs: typing.Iterable[QtNetwork.QSslCertificate]) -> bool: ...
    def rebuildIgnoredSslErrorCache(self) -> bool: ...
    def updateIgnoredSslErrorsCache(self, shahostport: str, errors: typing.Iterable[QtNetwork.QSslError]) -> bool: ...
    def updateIgnoredSslErrorsCacheFromConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def dumpIgnoredSslErrorsCache_(self) -> None: ...
    def removeSslCertCustomConfig(self, id: str, hostport: str) -> bool: ...
    def existsSslCertCustomConfig(self, id: str, hostport: str) -> bool: ...
    def sslCertCustomConfigs(self) -> typing.List[QgsAuthConfigSslServer]: ...
    def sslCertCustomConfigByHost(self, hostport: str) -> QgsAuthConfigSslServer: ...
    def sslCertCustomConfig(self, id: str, hostport: str) -> QgsAuthConfigSslServer: ...
    def storeSslCertCustomConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def removeCertIdentity(self, id: str) -> bool: ...
    def existsCertIdentity(self, id: str) -> bool: ...
    def certIdentityIds(self) -> typing.List[str]: ...
    def certIdentities(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def certIdentityBundleToPem(self, id: str) -> typing.List[str]: ...
    def certIdentity(self, id: str) -> QtNetwork.QSslCertificate: ...
    def storeCertIdentity(self, cert: QtNetwork.QSslCertificate, key: QtNetwork.QSslKey) -> bool: ...
    def initSslCaches(self) -> bool: ...
    def removeAuthSetting(self, key: str) -> bool: ...
    def existsAuthSetting(self, key: str) -> bool: ...
    def authSetting(self, key: str, defaultValue: typing.Any = ..., decrypt: bool = ...) -> typing.Any: ...
    def storeAuthSetting(self, key: str, value: typing.Any, encrypt: bool = ...) -> bool: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, QtNetwork.QNetworkProxy]: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[str], authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def updateNetworkReply(self, reply: QtNetwork.QNetworkReply, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, QtNetwork.QNetworkRequest]: ...
    def eraseAuthenticationDatabase(self, backup: bool, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def backupAuthenticationDatabase(self, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def removeAllAuthenticationConfigs(self) -> bool: ...
    def importAuthenticationConfigsFromXml(self, filename: str, password: str = ..., overwrite: bool = ...) -> bool: ...
    def exportAuthenticationConfigsToXml(self, filename: str, authcfgs: typing.Iterable[str], password: str = ...) -> bool: ...
    def removeAuthenticationConfig(self, authcfg: str) -> bool: ...
    def loadAuthenticationConfig(self, authcfg: str, mconfig: QgsAuthMethodConfig, full: bool = ...) -> typing.Tuple[bool, QgsAuthMethodConfig]: ...
    def updateAuthenticationConfig(self, config: QgsAuthMethodConfig) -> bool: ...
    def storeAuthenticationConfig(self, mconfig: QgsAuthMethodConfig, overwrite: bool = ...) -> typing.Tuple[bool, QgsAuthMethodConfig]: ...
    def configIds(self) -> typing.List[str]: ...
    def configIdRegex(self) -> str: ...
    def hasConfigId(self, txt: str) -> bool: ...
    def configIdUnique(self, id: str) -> bool: ...
    def uniqueConfigId(self) -> str: ...
    def supportedAuthMethodExpansions(self, authcfg: str) -> 'QgsAuthMethod.Expansions': ...
    def authMethodEditWidget(self, authMethodKey: str, parent: QtWidgets.QWidget) -> QtWidgets.QWidget: ...
    def authMethod(self, authMethodKey: str) -> 'QgsAuthMethod': ...
    def authMethodsKeys(self, dataprovider: str = ...) -> typing.List[str]: ...
    def configAuthMethodKey(self, authcfg: str) -> str: ...
    def configAuthMethod(self, authcfg: str) -> 'QgsAuthMethod': ...
    def updateConfigAuthMethods(self) -> None: ...
    def availableAuthMethodConfigs(self, dataprovider: str = ...) -> typing.Dict[str, QgsAuthMethodConfig]: ...
    def registerCoreAuthMethods(self) -> bool: ...
    def authManTag(self) -> str: ...
    def setScheduledAuthDatabaseEraseRequestEmitted(self, emitted: bool) -> None: ...
    def resetMasterPassword(self, newpass: str, oldpass: str, keepbackup: bool, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def masterPasswordSame(self, pass_: str) -> bool: ...
    def clearMasterPassword(self) -> None: ...
    def masterPasswordHashInDatabase(self) -> bool: ...
    def masterPasswordIsSet(self) -> bool: ...
    def verifyMasterPassword(self, compare: str = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, verify: bool = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, pass_: str, verify: bool = ...) -> bool: ...
    def authenticationDatabasePath(self) -> str: ...
    def disabledMessage(self) -> str: ...
    def isDisabled(self) -> bool: ...
    def authDatabaseServersTable(self) -> str: ...
    def authDatabaseConfigTable(self) -> str: ...
    def authDatabaseConnection(self) -> QtSql.QSqlDatabase: ...
    def init(self, pluginPath: str = ..., authDatabasePath: str = ...) -> bool: ...


class QgsAuthMethod(QtCore.QObject):

    class Expansion(int):
        NetworkRequest = ... # type: QgsAuthMethod.Expansion
        NetworkReply = ... # type: QgsAuthMethod.Expansion
        DataSourceUri = ... # type: QgsAuthMethod.Expansion
        GenericDataSourceUri = ... # type: QgsAuthMethod.Expansion
        NetworkProxy = ... # type: QgsAuthMethod.Expansion
        All = ... # type: QgsAuthMethod.Expansion

    class Expansions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAuthMethod.Expansions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAuthMethod.Expansions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self) -> None: ...

    def setDataProviders(self, dataproviders: typing.Iterable[str]) -> None: ...
    def setExpansions(self, expansions: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> None: ...
    def setVersion(self, version: int) -> None: ...
    @staticmethod
    def authMethodTag() -> str: ...
    def updateMethodConfig(self, mconfig: QgsAuthMethodConfig) -> None: ...
    def clearCachedConfig(self, authcfg: str) -> None: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[str], authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkReply(self, reply: QtNetwork.QNetworkReply, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: str, dataprovider: str = ...) -> bool: ...
    def supportedDataProviders(self) -> typing.List[str]: ...
    def supportedExpansions(self) -> 'QgsAuthMethod.Expansions': ...
    def editWidget(self, parent: QtWidgets.QWidget) -> QtWidgets.QWidget: ...
    def version(self) -> int: ...
    def displayDescription(self) -> str: ...
    def description(self) -> str: ...
    def key(self) -> str: ...


class QgsBrowserModel(QtCore.QAbstractItemModel):

    class ItemDataRole(int):
        PathRole = ... # type: QgsBrowserModel.ItemDataRole
        CommentRole = ... # type: QgsBrowserModel.ItemDataRole
        SortRole = ... # type: QgsBrowserModel.ItemDataRole
        ProviderKeyRole = ... # type: QgsBrowserModel.ItemDataRole
        LayerMetadataRole = ... # type: QgsBrowserModel.ItemDataRole

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def removeRootItems(self) -> None: ...
    def addRootItems(self) -> None: ...
    def initialize(self) -> None: ...
    def hidePath(self, item: 'QgsDataItem') -> None: ...
    def updateProjectHome(self) -> None: ...
    def removeFavorite(self, index: QtCore.QModelIndex) -> None: ...
    def addFavoriteDirectory(self, directory: str, name: str = ...) -> None: ...
    def itemStateChanged(self, item: 'QgsDataItem', oldState: Qgis.BrowserItemState) -> None: ...
    def itemDataChanged(self, item: 'QgsDataItem') -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def refreshDrives(self) -> None: ...
    def reload(self) -> None: ...
    def connectionsChanged(self, providerKey: str) -> None: ...
    def stateChanged(self, index: QtCore.QModelIndex, oldState: Qgis.BrowserItemState) -> None: ...
    def rootItems(self) -> typing.List['QgsDataItem']: ...
    def driveItems(self) -> typing.Any: ...
    def initialized(self) -> bool: ...
    def connectItem(self, item: 'QgsDataItem') -> None: ...
    def findUri(self, uri: str, index: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def findPath(self, path: str, matchFlag: QtCore.Qt.MatchFlag = ...) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: str) -> None: ...
    @typing.overload
    def refresh(self, index: QtCore.QModelIndex = ...) -> None: ...
    def dataItem(self, idx: QtCore.QModelIndex) -> 'QgsDataItem': ...
    def findItem(self, item: 'QgsDataItem', parent: typing.Optional['QgsDataItem'] = ...) -> QtCore.QModelIndex: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...


class QgsBrowserProxyModel(QtCore.QSortFilterProxyModel):

    class FilterSyntax(int):
        Normal = ... # type: QgsBrowserProxyModel.FilterSyntax
        Wildcards = ... # type: QgsBrowserProxyModel.FilterSyntax
        RegularExpression = ... # type: QgsBrowserProxyModel.FilterSyntax

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setShowLayers(self, showLayers: bool) -> None: ...
    def showLayers(self) -> bool: ...
    def setShownDataItemProviderKeyFilter(self, shownItemsFilter: typing.Iterable[str]) -> None: ...
    def setHiddenDataItemProviderKeyFilter(self, hiddenItemsFilter: typing.Iterable[str]) -> None: ...
    def setLayerType(self, type: Qgis.LayerType) -> None: ...
    def layerType(self) -> Qgis.LayerType: ...
    def setFilterByLayerType(self, enabled: bool) -> None: ...
    def filterByLayerType(self) -> bool: ...
    def caseSensitivity(self) -> QtCore.Qt.CaseSensitivity: ...
    def setFilterCaseSensitivity(self, sensitivity: QtCore.Qt.CaseSensitivity) -> None: ...
    def filterString(self) -> str: ...
    def setFilterString(self, filter: str) -> None: ...
    def filterSyntax(self) -> 'QgsBrowserProxyModel.FilterSyntax': ...
    def setFilterSyntax(self, syntax: 'QgsBrowserProxyModel.FilterSyntax') -> None: ...
    def dataItem(self, index: QtCore.QModelIndex) -> 'QgsDataItem': ...
    def browserModel(self) -> QgsBrowserModel: ...
    def setBrowserModel(self, model: QgsBrowserModel) -> None: ...


class QgsDataItem(QtCore.QObject):

    def __init__(self, type: Qgis.BrowserItemType, parent: 'QgsDataItem', name: str, path: str, providerKey: str = ...) -> None: ...

    def updateIcon(self) -> None: ...
    def connectionsChanged(self, providerKey: str = ...) -> None: ...
    def stateChanged(self, item: 'QgsDataItem', oldState: Qgis.BrowserItemState) -> None: ...
    def dataChanged(self, item: 'QgsDataItem') -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def childrenCreated(self) -> None: ...
    def refreshConnections(self, providerKey: str = ...) -> None: ...
    def depopulate(self) -> None: ...
    def deferredDelete(self) -> bool: ...
    @typing.overload
    def refresh(self, children: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def refresh(self) -> None: ...
    @typing.overload
    def populate(self, children: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def populate(self, foreground: bool = ...) -> None: ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    def moveToThread(self, targetThread: QtCore.QThread) -> None: ...
    @typing.overload
    @staticmethod
    def deleteLater(items: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def deleteLater(self) -> None: ...
    def toolTip(self) -> str: ...
    def setToolTip(self, msg: str) -> None: ...
    def setIconName(self, iconName: str) -> None: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def setSortKey(self, key: typing.Any) -> None: ...
    def sortKey(self) -> typing.Any: ...
    @staticmethod
    def pathComponent(component: str) -> str: ...
    def setProviderKey(self, value: str) -> None: ...
    def providerKey(self) -> str: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def children(self) -> typing.List['QgsDataItem']: ...
    def setParent(self, parent: 'QgsDataItem') -> None: ...
    def parent(self) -> 'QgsDataItem': ...
    def type(self) -> Qgis.BrowserItemType: ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsDataItem'], item: 'QgsDataItem') -> int: ...
    def setCapabilities(self, capabilities: int) -> None: ...
    def setCapabilitiesV2(self, capabilities: typing.Union[Qgis.BrowserItemCapabilities, Qgis.BrowserItemCapability]) -> None: ...
    def capabilities2(self) -> Qgis.BrowserItemCapabilities: ...
    def rename(self, name: str) -> bool: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> bool: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def mimeUri(self) -> QgsMimeDataUtils.Uri: ...
    def hasDragEnabled(self) -> bool: ...
    def handleDoubleClick(self) -> bool: ...
    def handleDrop(self, a0: QtCore.QMimeData, a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def menus(self, parent: QtWidgets.QWidget) -> typing.List[QtWidgets.QMenu]: ...
    def actions(self, parent: QtWidgets.QWidget) -> typing.List[QtWidgets.QAction]: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    def equal(self, other: 'QgsDataItem') -> bool: ...
    def removeChildItem(self, child: 'QgsDataItem') -> 'QgsDataItem': ...
    def deleteChildItem(self, child: 'QgsDataItem') -> None: ...
    def addChildItem(self, child: 'QgsDataItem', refresh: bool = ...) -> None: ...
    def setState(self, state: Qgis.BrowserItemState) -> None: ...
    def state(self) -> Qgis.BrowserItemState: ...
    def createChildren(self) -> typing.List['QgsDataItem']: ...
    def rowCount(self) -> int: ...
    def layerCollection(self) -> bool: ...
    def hasChildren(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsDataCollectionItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str = ..., providerKey: str = ...) -> None: ...

    @staticmethod
    def homeDirIcon(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def openDirIcon(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    @staticmethod
    def iconDataCollection() -> QtGui.QIcon: ...
    @staticmethod
    def iconDir(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    def addChild(self, item: QgsDataItem) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsConnectionsRootItem(QgsDataCollectionItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str = ..., providerKey: str = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsDatabaseSchemaItem(QgsDataCollectionItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str = ..., providerKey: str = ...) -> None: ...

    @staticmethod
    def iconDataCollection() -> QtGui.QIcon: ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    def __repr__(self) -> typing.Any: ...


class QgsErrorItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, error: str, path: str) -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsDataItemProvider(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDataItemProvider') -> None: ...

    def handlesDirectoryPath(self, path: str) -> bool: ...
    def createDataItems(self, path: str, parentItem: QgsDataItem) -> typing.List[QgsDataItem]: ...
    def createDataItem(self, path: str, parentItem: QgsDataItem) -> QgsDataItem: ...
    def capabilities(self) -> int: ...
    def dataProviderKey(self) -> str: ...
    def name(self) -> str: ...


class QgsDataItemProviderRegistry(QtCore.QObject):

    def __init__(self) -> None: ...

    def providerWillBeRemoved(self, provider: QgsDataItemProvider) -> None: ...
    def providerAdded(self, provider: QgsDataItemProvider) -> None: ...
    def dataProviderKey(self, dataItemProviderName: str) -> str: ...
    def removeProvider(self, provider: QgsDataItemProvider) -> None: ...
    def addProvider(self, provider: QgsDataItemProvider) -> None: ...
    def provider(self, providerName: str) -> QgsDataItemProvider: ...
    def providers(self) -> typing.List[QgsDataItemProvider]: ...


class QgsDirectoryItem(QgsDataCollectionItem):

    @typing.overload
    def __init__(self, parent: QgsDataItem, name: str, path: str) -> None: ...
    @typing.overload
    def __init__(self, parent: QgsDataItem, name: str, dirPath: str, path: str, providerKey: str = ...) -> None: ...

    def directoryChanged(self) -> None: ...
    def childrenCreated(self) -> None: ...
    def setMonitoring(self, monitoring: Qgis.BrowserDirectoryMonitoring) -> None: ...
    def monitoring(self) -> Qgis.BrowserDirectoryMonitoring: ...
    def isMonitored(self) -> bool: ...
    @staticmethod
    def pathShouldByMonitoredByDefault(path: str) -> bool: ...
    @staticmethod
    def monitoringForPath(path: str) -> Qgis.BrowserDirectoryMonitoring: ...
    @staticmethod
    def hiddenPath(path: str) -> bool: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    @staticmethod
    def setCustomColor(directory: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setIconColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def iconColor(self) -> QtGui.QColor: ...
    def icon(self) -> QtGui.QIcon: ...
    def equal(self, other: QgsDataItem) -> bool: ...
    def dirPath(self) -> str: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def setState(self, state: Qgis.BrowserItemState) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsDirectoryParamWidget(QtWidgets.QTreeWidget):

    def __init__(self, path: str, parent: typing.Optional[QtWidgets.QWidget] = ...) -> None: ...

    def showHideColumn(self) -> None: ...
    def mousePressEvent(self, event: QtGui.QMouseEvent) -> None: ...


class QgsFavoritesItem(QgsDataCollectionItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str = ...) -> None: ...

    def sortKey(self) -> typing.Any: ...
    @staticmethod
    def iconFavorites() -> QtGui.QIcon: ...
    def renameFavorite(self, path: str, name: str) -> None: ...
    def removeDirectory(self, item: QgsDirectoryItem) -> None: ...
    def addDirectory(self, directory: str, name: str = ...) -> None: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldDomainsItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, path: str, connectionUri: str, providerKey: str) -> None: ...

    def connectionUri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldDomainItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, domain: 'QgsFieldDomain') -> None: ...

    def fieldDomain(self) -> 'QgsFieldDomain': ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldsItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, path: str, connectionUri: str, providerKey: str, schema: str, tableName: str) -> None: ...

    def canRenameFields(self) -> bool: ...
    def tableProperty(self) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
    def layer(self) -> QgsVectorLayer: ...
    def connectionUri(self) -> str: ...
    def tableName(self) -> str: ...
    def schema(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, field: QgsField) -> None: ...

    def equal(self, other: QgsDataItem) -> bool: ...
    def field(self) -> QgsField: ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str, uri: str, layerType: Qgis.BrowserLayerType, providerKey: str) -> None: ...

    def setLayerMetadata(self, metadata: 'QgsLayerMetadata') -> None: ...
    def layerMetadata(self) -> 'QgsLayerMetadata': ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    def layerName(self) -> str: ...
    @staticmethod
    def iconPointCloud() -> QtGui.QIcon: ...
    @staticmethod
    def iconVectorTile() -> QtGui.QIcon: ...
    @staticmethod
    def iconMesh() -> QtGui.QIcon: ...
    @staticmethod
    def iconDefault() -> QtGui.QIcon: ...
    @staticmethod
    def iconRaster() -> QtGui.QIcon: ...
    @staticmethod
    def iconTable() -> QtGui.QIcon: ...
    @staticmethod
    def iconPolygon() -> QtGui.QIcon: ...
    @staticmethod
    def iconLine() -> QtGui.QIcon: ...
    @staticmethod
    def iconPoint() -> QtGui.QIcon: ...
    @staticmethod
    def iconForWkbType(type: Qgis.WkbType) -> QtGui.QIcon: ...
    def deleteLayer(self) -> bool: ...
    @staticmethod
    def iconName(layerType: Qgis.BrowserLayerType) -> str: ...
    @staticmethod
    def layerTypeAsString(layerType: Qgis.BrowserLayerType) -> str: ...
    def comments(self) -> str: ...
    def supportedFormats(self) -> typing.List[str]: ...
    def supportedCrs(self) -> typing.List[str]: ...
    def providerKey(self) -> str: ...
    def uri(self) -> str: ...
    @staticmethod
    def typeFromMapLayer(layer: QgsMapLayer) -> Qgis.BrowserLayerType: ...
    def mapLayerType(self) -> Qgis.LayerType: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def equal(self, other: QgsDataItem) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsProjectItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, name: str, path: str, providerKey: str = ...) -> None: ...

    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsRelationshipsItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, path: str, connectionUri: str, providerKey: str, schema: str = ..., tableName: str = ...) -> None: ...

    def tableName(self) -> str: ...
    def schema(self) -> str: ...
    def connectionUri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsRelationshipItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, relation: QgsWeakRelation) -> None: ...

    def relation(self) -> QgsWeakRelation: ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsZipItem(QgsDataCollectionItem):

    sProviderNames = ... # type: typing.Iterable[str]

    @typing.overload
    def __init__(self, parent: QgsDataItem, name: str, path: str) -> None: ...
    @typing.overload
    def __init__(self, parent: QgsDataItem, name: str, filePath: str, path: str, providerKey: str = ...) -> None: ...

    @staticmethod
    def iconZip() -> QtGui.QIcon: ...
    @staticmethod
    def itemFromFilePath(parent: QgsDataItem, filePath: str, name: str, path: str) -> QgsDataItem: ...
    @staticmethod
    def itemFromPath(parent: QgsDataItem, path: str, name: str) -> QgsDataItem: ...
    @staticmethod
    def vsiPrefix(uri: str) -> str: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def getZipFileList(self) -> typing.List[str]: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsCallout(PyQt5.sip.wrapper):

    class LabelAnchorPoint(int):
        LabelPointOnExterior = ... # type: QgsCallout.LabelAnchorPoint
        LabelCentroid = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopMiddle = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopRight = ... # type: QgsCallout.LabelAnchorPoint
        LabelMiddleLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelMiddleRight = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomMiddle = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomRight = ... # type: QgsCallout.LabelAnchorPoint

    class AnchorPoint(int):
        PoleOfInaccessibility = ... # type: QgsCallout.AnchorPoint
        PointOnExterior = ... # type: QgsCallout.AnchorPoint
        PointOnSurface = ... # type: QgsCallout.AnchorPoint
        Centroid = ... # type: QgsCallout.AnchorPoint

    class DrawOrder(int):
        OrderBelowAllLabels = ... # type: QgsCallout.DrawOrder
        OrderBelowIndividualLabels = ... # type: QgsCallout.DrawOrder

    class Property(int):
        MinimumCalloutLength = ... # type: QgsCallout.Property
        OffsetFromAnchor = ... # type: QgsCallout.Property
        OffsetFromLabel = ... # type: QgsCallout.Property
        DrawCalloutToAllParts = ... # type: QgsCallout.Property
        AnchorPointPosition = ... # type: QgsCallout.Property
        LabelAnchorPointPosition = ... # type: QgsCallout.Property
        OriginX = ... # type: QgsCallout.Property
        OriginY = ... # type: QgsCallout.Property
        DestinationX = ... # type: QgsCallout.Property
        DestinationY = ... # type: QgsCallout.Property
        Curvature = ... # type: QgsCallout.Property
        Orientation = ... # type: QgsCallout.Property
        Margins = ... # type: QgsCallout.Property
        WedgeWidth = ... # type: QgsCallout.Property
        CornerRadius = ... # type: QgsCallout.Property
        BlendMode = ... # type: QgsCallout.Property

    class QgsCalloutContext(PyQt5.sip.wrapper):

        allFeaturePartsLabeled = ... # type: bool
        originalFeatureCrs = ... # type: 'QgsCoordinateReferenceSystem'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCallout.QgsCalloutContext') -> None: ...

        def positions(self) -> typing.List['QgsCalloutPosition']: ...
        def addCalloutPosition(self, position: 'QgsCalloutPosition') -> None: ...
        def originalFeatureToMapTransform(self, renderContext: QgsRenderContext) -> 'QgsCoordinateTransform': ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCallout') -> None: ...

    def calloutLineToPart(self, labelGeometry: 'QgsGeometry', partGeometry: 'QgsAbstractGeometry', context: QgsRenderContext, calloutContext: 'QgsCallout.QgsCalloutContext') -> typing.Tuple['QgsGeometry', bool]: ...
    def calloutLabelPoint(self, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsCallout.LabelAnchorPoint', context: QgsRenderContext, calloutContext: 'QgsCallout.QgsCalloutContext') -> typing.Tuple['QgsGeometry', bool]: ...
    def labelAnchorGeometry(self, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsCallout.LabelAnchorPoint') -> 'QgsGeometry': ...
    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: 'QgsCallout.QgsCalloutContext') -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    @staticmethod
    def decodeLabelAnchorPoint(name: str) -> typing.Tuple['QgsCallout.LabelAnchorPoint', bool]: ...
    @staticmethod
    def encodeLabelAnchorPoint(anchor: 'QgsCallout.LabelAnchorPoint') -> str: ...
    def setLabelAnchorPoint(self, anchor: 'QgsCallout.LabelAnchorPoint') -> None: ...
    def labelAnchorPoint(self) -> 'QgsCallout.LabelAnchorPoint': ...
    @staticmethod
    def decodeAnchorPoint(name: str) -> typing.Tuple['QgsCallout.AnchorPoint', bool]: ...
    @staticmethod
    def encodeAnchorPoint(anchor: 'QgsCallout.AnchorPoint') -> str: ...
    def setAnchorPoint(self, anchor: 'QgsCallout.AnchorPoint') -> None: ...
    def anchorPoint(self) -> 'QgsCallout.AnchorPoint': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def render(self, context: QgsRenderContext, rect: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: 'QgsCallout.QgsCalloutContext') -> None: ...
    def drawOrder(self) -> 'QgsCallout.DrawOrder': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def containsAdvancedEffects(self) -> bool: ...
    def restoreProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsCallout': ...
    def type(self) -> str: ...


class QgsSimpleLineCallout(QgsCallout):

    def __init__(self) -> None: ...

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> None: ...
    def setDrawCalloutToAllParts(self, drawToAllParts: bool) -> None: ...
    def drawCalloutToAllParts(self) -> bool: ...
    def offsetFromLabelMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetFromLabelMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetFromLabelUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetFromLabelUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setOffsetFromLabel(self, distance: float) -> None: ...
    def offsetFromLabel(self) -> float: ...
    def offsetFromAnchorMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetFromAnchorMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetFromAnchorUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetFromAnchorUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setOffsetFromAnchor(self, distance: float) -> None: ...
    def offsetFromAnchor(self) -> float: ...
    def minimumLengthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setMinimumLengthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def minimumLengthUnit(self) -> Qgis.RenderUnit: ...
    def setMinimumLengthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setMinimumLength(self, length: float) -> None: ...
    def minimumLength(self) -> float: ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsSimpleLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsManhattanLineCallout(QgsSimpleLineCallout):

    def __init__(self) -> None: ...

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def clone(self) -> 'QgsManhattanLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsCurvedLineCallout(QgsSimpleLineCallout):

    class Orientation(int):
        Automatic = ... # type: QgsCurvedLineCallout.Orientation
        Clockwise = ... # type: QgsCurvedLineCallout.Orientation
        CounterClockwise = ... # type: QgsCurvedLineCallout.Orientation

    def __init__(self) -> None: ...

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def setOrientation(self, orientation: 'QgsCurvedLineCallout.Orientation') -> None: ...
    def orientation(self) -> 'QgsCurvedLineCallout.Orientation': ...
    def setCurvature(self, curvature: float) -> None: ...
    def curvature(self) -> float: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsCurvedLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsBalloonCallout(QgsCallout):

    def __init__(self) -> None: ...

    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> None: ...
    def cornerRadiusMapUnitScale(self) -> QgsMapUnitScale: ...
    def setCornerRadiusMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def cornerRadiusUnit(self) -> Qgis.RenderUnit: ...
    def setCornerRadiusUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setCornerRadius(self, radius: float) -> None: ...
    def cornerRadius(self) -> float: ...
    def wedgeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setWedgeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def wedgeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setWedgeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setWedgeWidth(self, width: float) -> None: ...
    def wedgeWidth(self) -> float: ...
    def marginsUnit(self) -> Qgis.RenderUnit: ...
    def setMarginsUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setMargins(self, margins: QgsMargins) -> None: ...
    def margins(self) -> QgsMargins: ...
    def offsetFromAnchorMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetFromAnchorMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetFromAnchorUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetFromAnchorUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setOffsetFromAnchor(self, distance: float) -> None: ...
    def offsetFromAnchor(self) -> float: ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsBalloonCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsCalloutAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str, icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCalloutAbstractMetadata') -> None: ...

    def createCalloutWidget(self, a0: QgsVectorLayer) -> QgsCalloutWidget: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsCallout: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsCalloutMetadata(QgsCalloutAbstractMetadata):

    def __init__(self, a0: 'QgsCalloutMetadata') -> None: ...

    def createCalloutWidget(self, vl: QgsVectorLayer) -> QgsCalloutWidget: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsCallout: ...


class QgsCalloutRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def defaultCallout() -> QgsCallout: ...
    def calloutTypes(self) -> typing.List[str]: ...
    @typing.overload
    def createCallout(self, type: str, properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...
    @typing.overload
    def createCallout(self, type: str, element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsCallout: ...
    def addCalloutType(self, metadata: QgsCalloutAbstractMetadata) -> bool: ...
    def calloutMetadata(self, type: str) -> QgsCalloutAbstractMetadata: ...


class QgsClassificationMethod(PyQt5.sip.wrapper):

    class ClassPosition(int):
        LowerBound = ... # type: QgsClassificationMethod.ClassPosition
        Inner = ... # type: QgsClassificationMethod.ClassPosition
        UpperBound = ... # type: QgsClassificationMethod.ClassPosition

    class MethodProperty(int):
        NoFlag = ... # type: QgsClassificationMethod.MethodProperty
        ValuesNotRequired = ... # type: QgsClassificationMethod.MethodProperty
        SymmetricModeAvailable = ... # type: QgsClassificationMethod.MethodProperty
        IgnoresClassCount = ... # type: QgsClassificationMethod.MethodProperty

    class MethodProperties(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsClassificationMethod.MethodProperties') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsClassificationMethod.MethodProperties': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    MAX_PRECISION = ... # type: int
    MIN_PRECISION = ... # type: int

    @typing.overload
    def __init__(self, properties: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty'] = ..., codeComplexity: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationMethod') -> None: ...

    def addParameter(self, definition: 'QgsProcessingParameterDefinition') -> None: ...
    def formatNumber(self, value: float) -> str: ...
    def copyBase(self, c: 'QgsClassificationMethod') -> None: ...
    def parameterValues(self) -> typing.Dict[str, typing.Any]: ...
    def setParameterValues(self, values: typing.Dict[str, typing.Any]) -> None: ...
    def parameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def parameterDefinition(self, parameterName: str) -> 'QgsProcessingParameterDefinition': ...
    @staticmethod
    def makeBreaksSymmetric(breaks: typing.Iterable[float], symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsClassificationMethod': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @typing.overload
    def classes(self, layer: QgsVectorLayer, expression: str, nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @typing.overload
    def classes(self, values: typing.Iterable[float], nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @typing.overload
    def classes(self, minimum: float, maximum: float, nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @staticmethod
    def rangesToBreaks(classes: typing.Iterable['QgsClassificationRange']) -> typing.List[float]: ...
    def setLabelTrimTrailingZeroes(self, trimTrailingZeroes: bool) -> None: ...
    def labelTrimTrailingZeroes(self) -> bool: ...
    def setLabelPrecision(self, labelPrecision: int) -> None: ...
    def labelPrecision(self) -> int: ...
    def setLabelFormat(self, format: str) -> None: ...
    def labelFormat(self) -> str: ...
    def setSymmetricMode(self, enabled: bool, symmetryPoint: float = ..., symmetryAstride: bool = ...) -> None: ...
    def symmetryAstride(self) -> bool: ...
    def symmetryPoint(self) -> float: ...
    def symmetricModeEnabled(self) -> bool: ...
    def symmetricModeAvailable(self) -> bool: ...
    def codeComplexity(self) -> int: ...
    def valuesRequired(self) -> bool: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    def labelForRange(self, lowerValue: float, upperValue: float, position: 'QgsClassificationMethod.ClassPosition' = ...) -> str: ...
    @typing.overload
    def labelForRange(self, range: 'QgsRendererRange', position: 'QgsClassificationMethod.ClassPosition' = ...) -> str: ...
    def flags(self) -> 'QgsClassificationMethod.MethodProperties': ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsClassificationMethod': ...


class QgsClassificationCustom(QgsClassificationMethod):

    METHOD_ID = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationCustom') -> None: ...

    def valuesRequired(self) -> bool: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationEqualInterval(QgsClassificationMethod):

    METHOD_ID = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationEqualInterval') -> None: ...

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationFixedInterval(QgsClassificationMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationFixedInterval') -> None: ...

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationJenks(QgsClassificationMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationJenks') -> None: ...

    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationLogarithmic(QgsClassificationMethod):

    class NegativeValueHandling(int):
        NoHandling = ... # type: QgsClassificationLogarithmic.NegativeValueHandling
        Discard = ... # type: QgsClassificationLogarithmic.NegativeValueHandling
        PrependBreak = ... # type: QgsClassificationLogarithmic.NegativeValueHandling

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationLogarithmic') -> None: ...

    def valuesRequired(self) -> bool: ...
    def labelForRange(self, lowerValue: float, upperValue: float, position: QgsClassificationMethod.ClassPosition) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, label: str, lowerBound: float, upperBound: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationRange') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def label(self) -> str: ...
    def upperBound(self) -> float: ...
    def lowerBound(self) -> float: ...


class QgsClassificationMethodRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationMethodRegistry') -> None: ...

    def icon(self, id: str) -> QtGui.QIcon: ...
    def methodNames(self) -> typing.Dict[str, str]: ...
    def method(self, id: str) -> QgsClassificationMethod: ...
    def addMethod(self, method: QgsClassificationMethod) -> bool: ...


class QgsClassificationPrettyBreaks(QgsClassificationMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationPrettyBreaks') -> None: ...

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationQuantile(QgsClassificationMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationQuantile') -> None: ...

    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationStandardDeviation(QgsClassificationMethod):

    METHOD_ID = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationStandardDeviation') -> None: ...

    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def labelForRange(self, lowerValue: float, upperValue: float, position: QgsClassificationMethod.ClassPosition) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsDiagram(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsDiagram') -> None: ...

    def sizeForValue(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def scaledFont(self, s: QgsDiagramSettings, c: QgsRenderContext) -> QtGui.QFont: ...
    @typing.overload
    def sizePainterUnits(self, size: QtCore.QSizeF, s: QgsDiagramSettings, c: QgsRenderContext) -> QtCore.QSizeF: ...
    @typing.overload
    def sizePainterUnits(self, l: float, s: QgsDiagramSettings, c: QgsRenderContext) -> float: ...
    def setPenWidth(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor], s: QgsDiagramSettings, c: QgsRenderContext) -> None: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def diagramName(self) -> str: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def getExpression(self, expression: str, context: QgsExpressionContext) -> 'QgsExpression': ...
    def clearCache(self) -> None: ...
    def clone(self) -> 'QgsDiagram': ...


class QgsHistogramDiagram(QgsDiagram):

    def __init__(self) -> None: ...

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsHistogramDiagram': ...


class QgsPieDiagram(QgsDiagram):

    def __init__(self) -> None: ...

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsPieDiagram': ...


class QgsStackedBarDiagram(QgsDiagram):

    def __init__(self) -> None: ...

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsStackedBarDiagram': ...


class QgsTextDiagram(QgsDiagram):

    class Orientation(int):
        Horizontal = ... # type: QgsTextDiagram.Orientation
        Vertical = ... # type: QgsTextDiagram.Orientation

    class Shape(int):
        Circle = ... # type: QgsTextDiagram.Shape
        Rectangle = ... # type: QgsTextDiagram.Shape
        Triangle = ... # type: QgsTextDiagram.Shape

    def __init__(self) -> None: ...

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsTextDiagram': ...


class QgsDxfExport(PyQt5.sip.wrapper):

    class DxfPolylineFlag(int):
        Closed = ... # type: QgsDxfExport.DxfPolylineFlag
        Curve = ... # type: QgsDxfExport.DxfPolylineFlag
        Spline = ... # type: QgsDxfExport.DxfPolylineFlag
        Is3DPolyline = ... # type: QgsDxfExport.DxfPolylineFlag
        Is3DPolygonMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        PolygonMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        PolyfaceMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        ContinuousPattern = ... # type: QgsDxfExport.DxfPolylineFlag

    class HAlign(int):
        HLeft = ... # type: QgsDxfExport.HAlign
        HCenter = ... # type: QgsDxfExport.HAlign
        HRight = ... # type: QgsDxfExport.HAlign
        HAligned = ... # type: QgsDxfExport.HAlign
        HMiddle = ... # type: QgsDxfExport.HAlign
        HFit = ... # type: QgsDxfExport.HAlign
        Undefined = ... # type: QgsDxfExport.HAlign

    class VAlign(int):
        VBaseLine = ... # type: QgsDxfExport.VAlign
        VBottom = ... # type: QgsDxfExport.VAlign
        VMiddle = ... # type: QgsDxfExport.VAlign
        VTop = ... # type: QgsDxfExport.VAlign
        Undefined = ... # type: QgsDxfExport.VAlign

    class ExportResult(int):
        Success = ... # type: QgsDxfExport.ExportResult
        InvalidDeviceError = ... # type: QgsDxfExport.ExportResult
        DeviceNotWritableError = ... # type: QgsDxfExport.ExportResult
        EmptyExtentError = ... # type: QgsDxfExport.ExportResult

    class Flag(int):
        FlagNoMText = ... # type: QgsDxfExport.Flag

    class DxfLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, vl: QgsVectorLayer, layerOutputAttributeIndex: int = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDxfExport.DxfLayer') -> None: ...

        def splitLayerAttribute(self) -> str: ...
        def layerOutputAttributeIndex(self) -> int: ...
        def layer(self) -> QgsVectorLayer: ...

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDxfExport.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDxfExport.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class DxfPolylineFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDxfExport.DxfPolylineFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self) -> None: ...

    def registerDxfLayer(self, layerId: str, fid: int, layer: str) -> None: ...
    @staticmethod
    def encodings() -> typing.List[str]: ...
    @staticmethod
    def dxfEncoding(name: str) -> str: ...
    @staticmethod
    def dxfLayerName(name: str) -> str: ...
    def clipValueToMapUnitScale(self, scale: QgsMapUnitScale, pixelToMMFactor: float) -> float: ...
    @staticmethod
    def mapUnitScaleFactor(scale: float, symbolUnits: Qgis.RenderUnit, mapUnits: Qgis.DistanceUnit, mapUnitsPerPixel: float = ...) -> float: ...
    def writeMText(self, layer: str, text: str, pt: 'QgsPoint', width: float, angle: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def writeTextV2(self, layer: str, text: str, pt: 'QgsPoint', size: float, angle: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], hali: 'QgsDxfExport.HAlign' = ..., vali: 'QgsDxfExport.VAlign' = ...) -> None: ...
    def writeCircleV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float, lineStyleName: str, width: float) -> None: ...
    def writeFillCircleV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float) -> None: ...
    def writePointV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint') -> None: ...
    def writeLine(self, pt1: 'QgsPoint', pt2: 'QgsPoint', layer: str, lineStyleName: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], width: float = ...) -> None: ...
    def writeHandle(self, code: int = ..., handle: int = ...) -> int: ...
    def writeString(self, s: str) -> None: ...
    def writeDouble(self, d: float) -> None: ...
    def writeInt(self, i: int) -> None: ...
    def writeGroupCode(self, code: int) -> None: ...
    def writeGroupPointV2(self, code: int, p: 'QgsPoint') -> None: ...
    @typing.overload
    def writeGroup(self, code: int, s: str) -> None: ...
    @typing.overload
    def writeGroup(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], exactMatch: int = ..., rgbCode: int = ..., transparencyCode: int = ...) -> None: ...
    def writeGroupDouble(self, code: int, d: float) -> None: ...
    def writeGroupLong(self, code: int, i: int) -> None: ...
    def writeGroupInt(self, code: int, i: int) -> None: ...
    @typing.overload
    def layerName(self, id: str, f: QgsFeature) -> str: ...
    @typing.overload
    def layerName(self, vl: QgsVectorLayer) -> str: ...
    @staticmethod
    def closestColorMatch(color: int) -> int: ...
    def force2d(self) -> bool: ...
    def setForce2d(self, force2d: bool) -> None: ...
    def layerTitleAsName(self) -> bool: ...
    def setLayerTitleAsName(self, layerTitleAsName: bool) -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def setExtent(self, r: 'QgsRectangle') -> None: ...
    def symbologyExport(self) -> Qgis.FeatureSymbologyExport: ...
    def setSymbologyExport(self, e: Qgis.FeatureSymbologyExport) -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def mapUnits(self) -> Qgis.DistanceUnit: ...
    def symbologyScale(self) -> float: ...
    def setSymbologyScale(self, scale: float) -> None: ...
    def writeToFile(self, d: QtCore.QIODevice, codec: str) -> 'QgsDxfExport.ExportResult': ...
    def addLayers(self, layers: typing.Iterable['QgsDxfExport.DxfLayer']) -> None: ...
    def flags(self) -> 'QgsDxfExport.Flags': ...
    def setFlags(self, flags: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> None: ...
    def setMapSettings(self, settings: QgsMapSettings) -> None: ...


class QgsEditFormConfig(PyQt5.sip.wrapper):

    class DataDefinedProperty(int):
        NoProperty = ... # type: QgsEditFormConfig.DataDefinedProperty
        AllProperties = ... # type: QgsEditFormConfig.DataDefinedProperty
        Alias = ... # type: QgsEditFormConfig.DataDefinedProperty
        Editable = ... # type: QgsEditFormConfig.DataDefinedProperty

    class GroupData(PyQt5.sip.wrapper):

        mFields = ... # type: typing.Iterable[str]
        mName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, name: str, fields: typing.Iterable[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEditFormConfig.GroupData') -> None: ...

    class TabData(PyQt5.sip.wrapper):

        mFields = ... # type: typing.Iterable[str]
        mGroups = ... # type: typing.Iterable['QgsEditFormConfig.GroupData']
        mName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, name: str, fields: typing.Iterable[str], groups: typing.Iterable['QgsEditFormConfig.GroupData']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEditFormConfig.TabData') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, o: 'QgsEditFormConfig') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def dataDefinedFieldProperties(self, fieldName: str) -> QgsPropertyCollection: ...
    def setDataDefinedFieldProperties(self, fieldName: str, properties: QgsPropertyCollection) -> None: ...
    def attributeEditorElementFromDomElement(self, elem: QtXml.QDomElement, parent: 'QgsAttributeEditorElement', layerId: str = ..., context: QgsReadWriteContext = ...) -> 'QgsAttributeEditorElement': ...
    def writeXml(self, node: QtXml.QDomNode, context: QgsReadWriteContext) -> None: ...
    def readXml(self, node: QtXml.QDomNode, context: QgsReadWriteContext) -> None: ...
    def setSuppress(self, s: Qgis.AttributeFormSuppression) -> None: ...
    def suppress(self) -> Qgis.AttributeFormSuppression: ...
    def setInitCodeSource(self, initCodeSource: Qgis.AttributeFormPythonInitCodeSource) -> None: ...
    def initCodeSource(self) -> Qgis.AttributeFormPythonInitCodeSource: ...
    def setInitFilePath(self, filePath: str) -> None: ...
    def initFilePath(self) -> str: ...
    def setInitCode(self, code: str) -> None: ...
    def initCode(self) -> str: ...
    def setInitFunction(self, function: str) -> None: ...
    def initFunction(self) -> str: ...
    def setReuseLastValue(self, index: int, reuse: bool) -> None: ...
    def reuseLastValue(self, index: int) -> bool: ...
    def setLabelOnTop(self, idx: int, onTop: bool) -> None: ...
    def labelOnTop(self, idx: int) -> bool: ...
    def setReadOnly(self, idx: int, readOnly: bool = ...) -> None: ...
    def readOnly(self, idx: int) -> bool: ...
    def removeWidgetConfig(self, widgetName: str) -> bool: ...
    def widgetConfig(self, widgetName: str) -> typing.Dict[str, typing.Any]: ...
    def setWidgetConfig(self, widgetName: str, config: typing.Dict[str, typing.Any]) -> bool: ...
    def setUiForm(self, ui: str) -> None: ...
    def uiForm(self) -> str: ...
    def setLayout(self, editorLayout: Qgis.AttributeFormLayout) -> None: ...
    def layout(self) -> Qgis.AttributeFormLayout: ...
    def invisibleRootContainer(self) -> 'QgsAttributeEditorContainer': ...
    def clearTabs(self) -> None: ...
    def tabs(self) -> typing.List['QgsAttributeEditorElement']: ...
    def addTab(self, data: 'QgsAttributeEditorElement') -> None: ...


class QgsAttributeEditorElement(PyQt5.sip.wrapper):

    class LabelStyle(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        font = ... # type: QtGui.QFont
        overrideColor = ... # type: bool
        overrideFont = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAttributeEditorElement.LabelStyle') -> None: ...

    @typing.overload
    def __init__(self, type: Qgis.AttributeEditorType, name: str, parent: typing.Optional['QgsAttributeEditorElement'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorElement') -> None: ...

    def setLabelStyle(self, labelStyle: 'QgsAttributeEditorElement.LabelStyle') -> None: ...
    def labelStyle(self) -> 'QgsAttributeEditorElement.LabelStyle': ...
    def setVerticalStretch(self, stretch: int) -> None: ...
    def verticalStretch(self) -> int: ...
    def setHorizontalStretch(self, stretch: int) -> None: ...
    def horizontalStretch(self) -> int: ...
    def setShowLabel(self, showLabel: bool) -> None: ...
    def showLabel(self) -> bool: ...
    def clone(self, parent: 'QgsAttributeEditorElement') -> 'QgsAttributeEditorElement': ...
    def toDomElement(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def parent(self) -> 'QgsAttributeEditorElement': ...
    def type(self) -> Qgis.AttributeEditorType: ...
    def name(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, layerId: str, fields: QgsFields, context: QgsReadWriteContext, parent: typing.Optional['QgsAttributeEditorElement'] = ...) -> 'QgsAttributeEditorElement': ...


class QgsAttributeEditorAction(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, action: QgsAction, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, uuid: QtCore.QUuid, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorAction') -> None: ...

    def setAction(self, newAction: QgsAction) -> None: ...
    def action(self, layer: QgsVectorLayer) -> QgsAction: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...


class QgsAttributeEditorContainer(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorContainer') -> None: ...

    def setBackgroundColor(self, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setVisibilityExpression(self, visibilityExpression: QgsOptionalExpression) -> None: ...
    def visibilityExpression(self) -> QgsOptionalExpression: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def setColumnCount(self, columnCount: int) -> None: ...
    def columnCount(self) -> int: ...
    def setName(self, name: str) -> None: ...
    def clear(self) -> None: ...
    def findElements(self, type: Qgis.AttributeEditorType) -> typing.List[QgsAttributeEditorElement]: ...
    def children(self) -> typing.List[QgsAttributeEditorElement]: ...
    def setCollapsed(self, collapsed: bool) -> None: ...
    def collapsed(self) -> bool: ...
    def isGroupBox(self) -> bool: ...
    def setIsGroupBox(self, isGroupBox: bool) -> None: ...
    def type(self) -> Qgis.AttributeEditorContainerType: ...
    def setType(self, type: Qgis.AttributeEditorContainerType) -> None: ...
    def addChildElement(self, element: QgsAttributeEditorElement) -> None: ...


class QgsAttributeEditorField(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, idx: int, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorField') -> None: ...

    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def idx(self) -> int: ...


class QgsAttributeEditorRelation(QgsAttributeEditorElement):

    class Button(int):
        Link = ... # type: QgsAttributeEditorRelation.Button
        Unlink = ... # type: QgsAttributeEditorRelation.Button
        SaveChildEdits = ... # type: QgsAttributeEditorRelation.Button
        AddChildFeature = ... # type: QgsAttributeEditorRelation.Button
        DuplicateChildFeature = ... # type: QgsAttributeEditorRelation.Button
        DeleteChildFeature = ... # type: QgsAttributeEditorRelation.Button
        ZoomToChildFeature = ... # type: QgsAttributeEditorRelation.Button
        AllButtons = ... # type: QgsAttributeEditorRelation.Button

    class Buttons(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAttributeEditorRelation.Buttons') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, name: str, relationId: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, name: str, relation: QgsRelation, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, relationId: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, relation: QgsRelation, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorRelation') -> None: ...

    def setRelationEditorConfiguration(self, config: typing.Dict[str, typing.Any]) -> None: ...
    def relationEditorConfiguration(self) -> typing.Dict[str, typing.Any]: ...
    def setRelationWidgetTypeId(self, relationWidgetTypeId: str) -> None: ...
    def relationWidgetTypeId(self) -> str: ...
    def setLabel(self, label: str = ...) -> None: ...
    def label(self) -> str: ...
    def setNmRelationId(self, nmRelationId: typing.Any = ...) -> None: ...
    def nmRelationId(self) -> typing.Any: ...
    def setForceSuppressFormPopup(self, forceSuppressFormPopup: bool) -> None: ...
    def forceSuppressFormPopup(self) -> bool: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def init(self, relManager: QgsRelationManager) -> bool: ...
    def relation(self) -> QgsRelation: ...


class QgsAttributeEditorHtmlElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorHtmlElement') -> None: ...

    def setHtmlCode(self, htmlCode: str) -> None: ...
    def htmlCode(self) -> str: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...


class QgsAttributeEditorTextElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorTextElement') -> None: ...

    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...


class QgsAttributeEditorQmlElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorQmlElement') -> None: ...

    def setQmlCode(self, qmlCode: str) -> None: ...
    def qmlCode(self) -> str: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...


class QgsAttributeEditorSpacerElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorSpacerElement') -> None: ...

    def setDrawLine(self, drawLine: bool) -> None: ...
    def drawLine(self) -> bool: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...


class QgsProfileRenderContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, context: QgsRenderContext) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileRenderContext') -> None: ...

    def setElevationRange(self, range: QgsDoubleRange) -> None: ...
    def elevationRange(self) -> QgsDoubleRange: ...
    def setDistanceRange(self, range: QgsDoubleRange) -> None: ...
    def distanceRange(self) -> QgsDoubleRange: ...
    def setWorldTransform(self, transform: QtGui.QTransform) -> None: ...
    def worldTransform(self) -> QtGui.QTransform: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsProfileIdentifyContext(PyQt5.sip.wrapper):

    displayRatioElevationVsDistance = ... # type: float
    maximumPointDistanceDelta = ... # type: float
    maximumPointElevationDelta = ... # type: float
    maximumSurfaceDistanceDelta = ... # type: float
    maximumSurfaceElevationDelta = ... # type: float
    project = ... # type: 'QgsProject'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileIdentifyContext') -> None: ...


class QgsProfileIdentifyResults(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: typing.Optional[QgsMapLayer] = ..., results: typing.Iterable[typing.Dict[str, typing.Any]] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileIdentifyResults') -> None: ...

    def results(self) -> typing.List[typing.Dict[str, typing.Any]]: ...
    def layer(self) -> QgsMapLayer: ...


class QgsAbstractProfileResults(PyQt5.sip.wrapper):

    class Feature(PyQt5.sip.wrapper):

        attributes = ... # type: typing.Dict[str, typing.Any]
        geometry = ... # type: 'QgsGeometry'
        layerIdentifier = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractProfileResults.Feature') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractProfileResults') -> None: ...

    def copyPropertiesFromGenerator(self, generator: 'QgsAbstractProfileGenerator') -> None: ...
    @typing.overload
    def identify(self, point: 'QgsProfilePoint', context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    @typing.overload
    def identify(self, distanceRange: QgsDoubleRange, elevationRange: QgsDoubleRange, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    def snapPoint(self, point: 'QgsProfilePoint', context: 'QgsProfileSnapContext') -> 'QgsProfileSnapResult': ...
    def zRange(self) -> QgsDoubleRange: ...
    def renderResults(self, context: QgsProfileRenderContext) -> None: ...
    def asFeatures(self, type: Qgis.ProfileExportType, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsAbstractProfileResults.Feature']: ...
    def asGeometries(self) -> typing.List['QgsGeometry']: ...
    def sampledPoints(self) -> typing.List['QgsPoint']: ...
    def distanceToHeightMap(self) -> typing.Any: ...
    def type(self) -> str: ...


class QgsProfileGenerationContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileGenerationContext') -> None: ...

    def convertDistanceToPixels(self, size: float, unit: Qgis.RenderUnit) -> float: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...
    def setElevationRange(self, range: QgsDoubleRange) -> None: ...
    def elevationRange(self) -> QgsDoubleRange: ...
    def setDistanceRange(self, range: QgsDoubleRange) -> None: ...
    def distanceRange(self) -> QgsDoubleRange: ...
    def setMapUnitsPerDistancePixel(self, units: float) -> None: ...
    def mapUnitsPerDistancePixel(self) -> float: ...
    def setMaximumErrorMapUnits(self, error: float) -> None: ...
    def maximumErrorMapUnits(self) -> float: ...


class QgsAbstractProfileGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractProfileGenerator') -> None: ...

    def takeResults(self) -> QgsAbstractProfileResults: ...
    def feedback(self) -> QgsFeedback: ...
    def generateProfile(self, context: QgsProfileGenerationContext = ...) -> bool: ...
    def flags(self) -> Qgis.ProfileGeneratorFlags: ...
    def sourceId(self) -> str: ...


class QgsProfileExporter(PyQt5.sip.wrapper):

    def __init__(self, sources: typing.Iterable[QgsAbstractProfileSource], request: 'QgsProfileRequest', type: Qgis.ProfileExportType) -> None: ...

    def toLayers(self) -> typing.List[QgsVectorLayer]: ...
    def run(self, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...


class QgsProfileExporterTask(QgsTask):

    class ExportResult(int):
        Success = ... # type: QgsProfileExporterTask.ExportResult
        Empty = ... # type: QgsProfileExporterTask.ExportResult
        DeviceError = ... # type: QgsProfileExporterTask.ExportResult
        DxfExportFailed = ... # type: QgsProfileExporterTask.ExportResult
        LayerExportFailed = ... # type: QgsProfileExporterTask.ExportResult
        Canceled = ... # type: QgsProfileExporterTask.ExportResult

    def __init__(self, sources: typing.Iterable[QgsAbstractProfileSource], request: 'QgsProfileRequest', type: Qgis.ProfileExportType, destination: str, transformContext: 'QgsCoordinateTransformContext') -> None: ...

    def error(self) -> str: ...
    def createdFiles(self) -> typing.List[str]: ...
    def result(self) -> 'QgsProfileExporterTask.ExportResult': ...
    def takeLayers(self) -> typing.List[QgsVectorLayer]: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsProfilePoint(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, distance: float, elevation: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfilePoint') -> None: ...

    def __getitem__(self, a0: int) -> typing.Any: ...
    def __len__(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def isEmpty(self) -> bool: ...
    def elevation(self) -> float: ...
    def distance(self) -> float: ...
    def setElevation(self, elevation: float) -> None: ...
    def setDistance(self, distance: float) -> None: ...


class QgsProfilePlotRenderer(QtCore.QObject):

    def __init__(self, sources: typing.Iterable[QgsAbstractProfileSource], request: 'QgsProfileRequest') -> None: ...

    def generationFinished(self) -> None: ...
    def asFeatures(self, type: Qgis.ProfileExportType, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsAbstractProfileResults.Feature]: ...
    @typing.overload
    def identify(self, point: QgsProfilePoint, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    @typing.overload
    def identify(self, distanceRange: QgsDoubleRange, elevationRange: QgsDoubleRange, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    def snapPoint(self, point: QgsProfilePoint, context: 'QgsProfileSnapContext') -> 'QgsProfileSnapResult': ...
    def render(self, context: QgsRenderContext, width: float, height: float, distanceMin: float, distanceMax: float, zMin: float, zMax: float, sourceId: str = ...) -> None: ...
    def renderToImage(self, width: int, height: int, distanceMin: float, distanceMax: float, zMin: float, zMax: float, sourceId: str = ..., devicePixelRatio: float = ...) -> QtGui.QImage: ...
    def zRange(self) -> QgsDoubleRange: ...
    def regenerateInvalidatedResults(self) -> None: ...
    def invalidateResults(self, source: QgsAbstractProfileSource) -> bool: ...
    def replaceSource(self, source: QgsAbstractProfileSource) -> None: ...
    def invalidateAllRefinableSources(self) -> None: ...
    def setContext(self, context: QgsProfileGenerationContext) -> None: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelGenerationWithoutBlocking(self) -> None: ...
    def cancelGeneration(self) -> None: ...
    def generateSynchronously(self) -> None: ...
    def startGeneration(self) -> None: ...
    def sourceIds(self) -> typing.List[str]: ...


class QgsProfileRequest(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, curve: 'QgsCurve') -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProfileRequest') -> None: ...

    def setExpressionContext(self, context: QgsExpressionContext) -> 'QgsProfileRequest': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def stepDistance(self) -> float: ...
    def setStepDistance(self, distance: float) -> 'QgsProfileRequest': ...
    def terrainProvider(self) -> 'QgsAbstractTerrainProvider': ...
    def setTerrainProvider(self, provider: 'QgsAbstractTerrainProvider') -> 'QgsProfileRequest': ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> 'QgsProfileRequest': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> 'QgsProfileRequest': ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> 'QgsProfileRequest': ...
    def profileCurve(self) -> 'QgsCurve': ...
    def setProfileCurve(self, curve: 'QgsCurve') -> 'QgsProfileRequest': ...


class QgsProfileSnapContext(PyQt5.sip.wrapper):

    displayRatioElevationVsDistance = ... # type: float
    maximumPointDistanceDelta = ... # type: float
    maximumPointElevationDelta = ... # type: float
    maximumSurfaceDistanceDelta = ... # type: float
    maximumSurfaceElevationDelta = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileSnapContext') -> None: ...


class QgsProfileSnapResult(PyQt5.sip.wrapper):

    snappedPoint = ... # type: QgsProfilePoint

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileSnapResult') -> None: ...

    def isValid(self) -> bool: ...


class QgsAbstractTerrainProvider(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def readCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    def setScale(self, scale: float) -> None: ...
    def scale(self) -> float: ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def prepare(self) -> None: ...
    def clone(self) -> 'QgsAbstractTerrainProvider': ...
    def type(self) -> str: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def equals(self, other: 'QgsAbstractTerrainProvider') -> bool: ...


class QgsFlatTerrainProvider(QgsAbstractTerrainProvider):

    def __init__(self) -> None: ...

    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def prepare(self) -> None: ...
    def clone(self) -> 'QgsFlatTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def type(self) -> str: ...


class QgsRasterDemTerrainProvider(QgsAbstractTerrainProvider):

    def __init__(self) -> None: ...

    def layer(self) -> 'QgsRasterLayer': ...
    def setLayer(self, layer: 'QgsRasterLayer') -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def clone(self) -> 'QgsRasterDemTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def type(self) -> str: ...


class QgsMeshTerrainProvider(QgsAbstractTerrainProvider):

    def __init__(self) -> None: ...

    def layer(self) -> 'QgsMeshLayer': ...
    def setLayer(self, layer: 'QgsMeshLayer') -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def clone(self) -> 'QgsMeshTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def type(self) -> str: ...


class QgsExternalStorage(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExternalStorage') -> None: ...

    def doFetch(self, url: str, authCfg: str = ...) -> 'QgsExternalStorageFetchedContent': ...
    def doStore(self, filePath: str, url: str, authCfg: str = ...) -> 'QgsExternalStorageStoredContent': ...
    def fetch(self, url: str, authCfg: str = ..., fetchingMode: Qgis.ActionStart = ...) -> 'QgsExternalStorageFetchedContent': ...
    def store(self, filePath: str, url: str, authCfg: str = ..., storingMode: Qgis.ActionStart = ...) -> 'QgsExternalStorageStoredContent': ...
    def displayName(self) -> str: ...
    def type(self) -> str: ...


class QgsExternalStorageContent(QtCore.QObject):

    def __init__(self) -> None: ...

    def setStatus(self, status: Qgis.ContentStatus) -> None: ...
    def reportError(self, errorMsg: str) -> None: ...
    def canceled(self) -> None: ...
    def progressChanged(self, progress: float) -> None: ...
    def errorOccurred(self, errorString: str) -> None: ...
    def cancel(self) -> None: ...
    def errorString(self) -> str: ...
    def status(self) -> Qgis.ContentStatus: ...


class QgsExternalStorageFetchedContent(QgsExternalStorageContent):

    def __init__(self) -> None: ...

    def fetched(self) -> None: ...
    def fetch(self) -> None: ...
    def filePath(self) -> str: ...


class QgsExternalStorageStoredContent(QgsExternalStorageContent):

    def __init__(self) -> None: ...

    def stored(self) -> None: ...
    def store(self) -> None: ...
    def url(self) -> str: ...


class QgsExternalStorageRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExternalStorageRegistry') -> None: ...

    def unregisterExternalStorage(self, storage: QgsExternalStorage) -> None: ...
    def registerExternalStorage(self, storage: QgsExternalStorage) -> None: ...
    def externalStorages(self) -> typing.List[QgsExternalStorage]: ...
    def externalStorageFromType(self, type: str) -> QgsExternalStorage: ...


class QgsPaintEffect(PyQt5.sip.wrapper):

    class DrawMode(int):
        Modifier = ... # type: QgsPaintEffect.DrawMode
        Render = ... # type: QgsPaintEffect.DrawMode
        ModifyAndRender = ... # type: QgsPaintEffect.DrawMode

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPaintEffect') -> None: ...

    def fixQPictureDpi(self, painter: QtGui.QPainter) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def imageOffset(self, context: QgsRenderContext) -> QtCore.QPointF: ...
    def sourceAsImage(self, context: QgsRenderContext) -> QtGui.QImage: ...
    def source(self) -> QtGui.QPicture: ...
    def drawSource(self, painter: QtGui.QPainter) -> None: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def setDrawMode(self, drawMode: 'QgsPaintEffect.DrawMode') -> None: ...
    def drawMode(self) -> 'QgsPaintEffect.DrawMode': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def end(self, context: QgsRenderContext) -> None: ...
    def begin(self, context: QgsRenderContext) -> None: ...
    def render(self, picture: QtGui.QPicture, context: QgsRenderContext) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> bool: ...
    @typing.overload
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def readProperties(self, element: QtXml.QDomElement) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsPaintEffect': ...
    def type(self) -> str: ...


class QgsBlurEffect(QgsPaintEffect):

    class BlurMethod(int):
        StackBlur = ... # type: QgsBlurEffect.BlurMethod
        GaussianBlur = ... # type: QgsBlurEffect.BlurMethod

    def __init__(self) -> None: ...

    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def blurMethod(self) -> 'QgsBlurEffect.BlurMethod': ...
    def setBlurMethod(self, method: 'QgsBlurEffect.BlurMethod') -> None: ...
    def blurMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurUnit(self) -> Qgis.RenderUnit: ...
    def setBlurUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def blurLevel(self) -> float: ...
    def setBlurLevel(self, level: float) -> None: ...
    def clone(self) -> 'QgsBlurEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsColorEffect(QgsPaintEffect):

    def __init__(self) -> None: ...

    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def colorizeStrength(self) -> int: ...
    def setColorizeStrength(self, colorizeStrength: int) -> None: ...
    def colorizeColor(self) -> QtGui.QColor: ...
    def setColorizeColor(self, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def colorizeOn(self) -> bool: ...
    def setColorizeOn(self, colorizeOn: bool) -> None: ...
    def grayscaleMode(self) -> 'QgsImageOperation.GrayscaleMode': ...
    def setGrayscaleMode(self, grayscaleMode: 'QgsImageOperation.GrayscaleMode') -> None: ...
    def saturation(self) -> float: ...
    def setSaturation(self, saturation: float) -> None: ...
    def contrast(self) -> int: ...
    def setContrast(self, contrast: int) -> None: ...
    def brightness(self) -> int: ...
    def setBrightness(self, brightness: int) -> None: ...
    def clone(self) -> 'QgsColorEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsEffectStack(QgsPaintEffect):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsEffectStack') -> None: ...
    @typing.overload
    def __init__(self, effect: QgsPaintEffect) -> None: ...

    def draw(self, context: QgsRenderContext) -> None: ...
    def effect(self, index: int) -> QgsPaintEffect: ...
    def count(self) -> int: ...
    def effectList(self) -> typing.List[QgsPaintEffect]: ...
    def takeEffect(self, index: int) -> QgsPaintEffect: ...
    def changeEffect(self, index: int, effect: QgsPaintEffect) -> bool: ...
    def insertEffect(self, index: int, effect: QgsPaintEffect) -> bool: ...
    def appendEffect(self, effect: QgsPaintEffect) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def readProperties(self, element: QtXml.QDomElement) -> bool: ...
    @typing.overload
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> bool: ...
    def clone(self) -> 'QgsEffectStack': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsGlowEffect(QgsPaintEffect):

    class GlowColorType(int):
        SingleColor = ... # type: QgsGlowEffect.GlowColorType
        ColorRamp = ... # type: QgsGlowEffect.GlowColorType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsGlowEffect') -> None: ...

    def shadeExterior(self) -> bool: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def colorType(self) -> 'QgsGlowEffect.GlowColorType': ...
    def setColorType(self, colorType: 'QgsGlowEffect.GlowColorType') -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def ramp(self) -> QgsColorRamp: ...
    def setRamp(self, ramp: QgsColorRamp) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def blurMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurUnit(self) -> Qgis.RenderUnit: ...
    def setBlurUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def blurLevel(self) -> float: ...
    def setBlurLevel(self, level: float) -> None: ...
    def spreadMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSpreadMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def spreadUnit(self) -> Qgis.RenderUnit: ...
    def setSpreadUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def spread(self) -> float: ...
    def setSpread(self, spread: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...


class QgsOuterGlowEffect(QgsGlowEffect):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOuterGlowEffect') -> None: ...

    def shadeExterior(self) -> bool: ...
    def clone(self) -> 'QgsOuterGlowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsInnerGlowEffect(QgsGlowEffect):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsInnerGlowEffect') -> None: ...

    def shadeExterior(self) -> bool: ...
    def clone(self) -> 'QgsInnerGlowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsImageOperation(PyQt5.sip.wrapper):

    class FlipType(int):
        FlipHorizontal = ... # type: QgsImageOperation.FlipType
        FlipVertical = ... # type: QgsImageOperation.FlipType

    class GrayscaleMode(int):
        GrayscaleLightness = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleLuminosity = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleAverage = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleOff = ... # type: QgsImageOperation.GrayscaleMode

    class DistanceTransformProperties(PyQt5.sip.wrapper):

        ramp = ... # type: QgsColorRamp
        shadeExterior = ... # type: bool
        spread = ... # type: float
        useMaxDistance = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsImageOperation.DistanceTransformProperties') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsImageOperation') -> None: ...

    @staticmethod
    def cropTransparent(image: QtGui.QImage, minSize: QtCore.QSize = ..., center: bool = ...) -> QtGui.QImage: ...
    @staticmethod
    def nonTransparentImageRect(image: QtGui.QImage, minSize: QtCore.QSize = ..., center: bool = ...) -> QtCore.QRect: ...
    @staticmethod
    def flipImage(image: QtGui.QImage, type: 'QgsImageOperation.FlipType') -> None: ...
    @staticmethod
    def gaussianBlur(image: QtGui.QImage, radius: int, feedback: typing.Optional[QgsFeedback] = ...) -> QtGui.QImage: ...
    @staticmethod
    def stackBlur(image: QtGui.QImage, radius: int, alphaOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def distanceTransform(image: QtGui.QImage, properties: 'QgsImageOperation.DistanceTransformProperties', feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def overlayColor(image: QtGui.QImage, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    @staticmethod
    def multiplyOpacity(image: QtGui.QImage, factor: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def adjustHueSaturation(image: QtGui.QImage, saturation: float, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., colorizeStrength: float = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def adjustBrightnessContrast(image: QtGui.QImage, brightness: int, contrast: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def convertToGrayscale(image: QtGui.QImage, mode: 'QgsImageOperation.GrayscaleMode' = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...


class QgsDrawSourceEffect(QgsPaintEffect):

    def __init__(self) -> None: ...

    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsDrawSourceEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsEffectPainter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, renderContext: QgsRenderContext) -> None: ...
    @typing.overload
    def __init__(self, renderContext: QgsRenderContext, effect: QgsPaintEffect) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEffectPainter') -> None: ...

    def setEffect(self, effect: QgsPaintEffect) -> None: ...


class QgsPaintEffectAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPaintEffectAbstractMetadata') -> None: ...

    def createWidget(self) -> QgsPaintEffectWidget: ...
    def createPaintEffect(self, map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsPaintEffectRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def isDefaultStack(effect: QgsPaintEffect) -> bool: ...
    @staticmethod
    def defaultStack() -> QgsPaintEffect: ...
    def effects(self) -> typing.List[str]: ...
    @typing.overload
    def createEffect(self, name: str, properties: typing.Dict[str, typing.Any] = ...) -> QgsPaintEffect: ...
    @typing.overload
    def createEffect(self, element: QtXml.QDomElement) -> QgsPaintEffect: ...
    def addEffectType(self, metadata: QgsPaintEffectAbstractMetadata) -> bool: ...
    def effectMetadata(self, name: str) -> QgsPaintEffectAbstractMetadata: ...


class QgsShadowEffect(QgsPaintEffect):

    def __init__(self) -> None: ...

    def exteriorShadow(self) -> bool: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetDistance(self) -> float: ...
    def setOffsetDistance(self, distance: float) -> None: ...
    def offsetAngle(self) -> int: ...
    def setOffsetAngle(self, angle: int) -> None: ...
    def blurMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurUnit(self) -> Qgis.RenderUnit: ...
    def setBlurUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def blurLevel(self) -> float: ...
    def setBlurLevel(self, level: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...


class QgsDropShadowEffect(QgsShadowEffect):

    def __init__(self) -> None: ...

    def exteriorShadow(self) -> bool: ...
    def clone(self) -> 'QgsDropShadowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsInnerShadowEffect(QgsShadowEffect):

    def __init__(self) -> None: ...

    def exteriorShadow(self) -> bool: ...
    def clone(self) -> 'QgsInnerShadowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsTransformEffect(QgsPaintEffect):

    def __init__(self) -> None: ...

    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def reflectY(self) -> bool: ...
    def setReflectY(self, reflectY: bool) -> None: ...
    def reflectX(self) -> bool: ...
    def setReflectX(self, reflectX: bool) -> None: ...
    def shearY(self) -> float: ...
    def setShearY(self, shearY: float) -> None: ...
    def shearX(self) -> float: ...
    def setShearX(self, shearX: float) -> None: ...
    def rotation(self) -> float: ...
    def setRotation(self, rotation: float) -> None: ...
    def scaleY(self) -> float: ...
    def setScaleY(self, scaleY: float) -> None: ...
    def scaleX(self) -> float: ...
    def setScaleX(self, scaleX: float) -> None: ...
    def translateMapUnitScale(self) -> QgsMapUnitScale: ...
    def setTranslateMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def translateUnit(self) -> Qgis.RenderUnit: ...
    def setTranslateUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def translateY(self) -> float: ...
    def setTranslateY(self, translateY: float) -> None: ...
    def translateX(self) -> float: ...
    def setTranslateX(self, translateX: float) -> None: ...
    def clone(self) -> 'QgsTransformEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsExpression(PyQt5.sip.wrapper):

    class SpatialOperator(int):
        soBbox = ... # type: QgsExpression.SpatialOperator
        soIntersects = ... # type: QgsExpression.SpatialOperator
        soContains = ... # type: QgsExpression.SpatialOperator
        soCrosses = ... # type: QgsExpression.SpatialOperator
        soEquals = ... # type: QgsExpression.SpatialOperator
        soDisjoint = ... # type: QgsExpression.SpatialOperator
        soOverlaps = ... # type: QgsExpression.SpatialOperator
        soTouches = ... # type: QgsExpression.SpatialOperator
        soWithin = ... # type: QgsExpression.SpatialOperator

    class ParserError(PyQt5.sip.wrapper):

        class ParserErrorType(int):
            Unknown = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionUnknown = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionWrongArgs = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionInvalidParams = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionNamedArgsError = ... # type: QgsExpression.ParserError.ParserErrorType

        errorMsg = ... # type: str
        errorType = ... # type: 'QgsExpression.ParserError.ParserErrorType'
        firstColumn = ... # type: int
        firstLine = ... # type: int
        lastColumn = ... # type: int
        lastLine = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpression.ParserError') -> None: ...

    @typing.overload
    def __init__(self, expr: str) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsExpression') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def attemptReduceToInClause(expressions: typing.Iterable[str]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def isFieldEqualityExpression(expression: str) -> typing.Tuple[bool, str, typing.Any]: ...
    @staticmethod
    def createFieldEqualityExpression(fieldName: str, value: typing.Any, fieldType: QtCore.QVariant.Type = ...) -> str: ...
    @staticmethod
    def formatPreviewString(value: typing.Any, htmlOutput: bool = ..., maximumPreviewLength: int = ...) -> str: ...
    @staticmethod
    def group(group: str) -> str: ...
    @staticmethod
    def formatVariableHelp(description: str, showValue: bool = ..., value: typing.Any = ...) -> str: ...
    @staticmethod
    def variableHelpText(variableName: str) -> str: ...
    @staticmethod
    def addVariableHelpText(name: str, description: str) -> bool: ...
    @staticmethod
    def tags(name: str) -> typing.List[str]: ...
    @staticmethod
    def helpText(name: str) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any, type: QtCore.QVariant.Type) -> str: ...
    @staticmethod
    def quotedString(text: str) -> str: ...
    @staticmethod
    def quotedColumnRef(name: str) -> str: ...
    @staticmethod
    def functionCount() -> int: ...
    @staticmethod
    def functionIndex(name: str) -> int: ...
    @staticmethod
    def isFunctionName(name: str) -> bool: ...
    @staticmethod
    def cleanRegisteredFunctions() -> None: ...
    @staticmethod
    def unregisterFunction(name: str) -> bool: ...
    @staticmethod
    def registerFunction(function: QgsExpressionFunction, transferOwnership: bool = ...) -> bool: ...
    @staticmethod
    def BuiltinFunctions() -> typing.List[str]: ...
    @staticmethod
    def Functions() -> typing.List[QgsExpressionFunction]: ...
    @staticmethod
    def evaluateToDouble(text: str, fallbackValue: float) -> float: ...
    @staticmethod
    def replaceExpressionText(action: str, context: QgsExpressionContext, distanceArea: typing.Optional[QgsDistanceArea] = ...) -> str: ...
    def setAreaUnits(self, unit: Qgis.AreaUnit) -> None: ...
    def areaUnits(self) -> Qgis.AreaUnit: ...
    def setDistanceUnits(self, unit: Qgis.DistanceUnit) -> None: ...
    def distanceUnits(self) -> Qgis.DistanceUnit: ...
    def setGeomCalculator(self, calc: QgsDistanceArea) -> None: ...
    def geomCalculator(self) -> QgsDistanceArea: ...
    def dump(self) -> str: ...
    def expression(self) -> str: ...
    def setExpression(self, expression: str) -> None: ...
    @staticmethod
    def checkExpression(text: str, context: QgsExpressionContext) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def quoteFieldExpression(expression: str, layer: QgsVectorLayer) -> str: ...
    @staticmethod
    def expressionToLayerFieldIndex(expression: str, layer: QgsVectorLayer) -> int: ...
    def isField(self) -> bool: ...
    def setEvalErrorString(self, str: str) -> None: ...
    def evalErrorString(self) -> str: ...
    def hasEvalError(self) -> bool: ...
    @typing.overload
    def evaluate(self) -> typing.Any: ...
    @typing.overload
    def evaluate(self, context: QgsExpressionContext) -> typing.Any: ...
    def needsGeometry(self) -> bool: ...
    def referencedAttributeIndexes(self, fields: QgsFields) -> typing.Any: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    @typing.overload
    def referencedVariables(self) -> typing.Set[str]: ...
    @typing.overload
    @staticmethod
    def referencedVariables(text: str) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext) -> bool: ...
    def rootNode(self) -> 'QgsExpressionNode': ...
    def parserErrors(self) -> typing.List['QgsExpression.ParserError']: ...
    def parserErrorString(self) -> str: ...
    def hasParserError(self) -> bool: ...
    def isValid(self) -> bool: ...


class QgsExpressionContextUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionContextUtils') -> None: ...

    @staticmethod
    def meshExpressionScope(elementType: 'QgsMesh.ElementType') -> QgsExpressionContextScope: ...
    @staticmethod
    def registerContextFunctions() -> None: ...
    @staticmethod
    def notificationScope(message: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def processingModelAlgorithmScope(model: 'QgsProcessingModelAlgorithm', parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> QgsExpressionContextScope: ...
    @staticmethod
    def processingAlgorithmScope(algorithm: 'QgsProcessingAlgorithm', parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> QgsExpressionContextScope: ...
    @staticmethod
    def createFeatureBasedContext(feature: QgsFeature, fields: QgsFields) -> QgsExpressionContext: ...
    @staticmethod
    def setLayoutMultiFrameVariables(frame: 'QgsLayoutMultiFrame', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutMultiFrameVariable(frame: 'QgsLayoutMultiFrame', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def multiFrameScope(frame: 'QgsLayoutMultiFrame') -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayoutItemVariables(item: 'QgsLayoutItem', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutItemVariable(item: 'QgsLayoutItem', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def layoutItemScope(item: 'QgsLayoutItem') -> QgsExpressionContextScope: ...
    @staticmethod
    def atlasScope(atlas: 'QgsLayoutAtlas') -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayoutVariables(layout: 'QgsLayout', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutVariable(layout: 'QgsLayout', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def layoutScope(layout: 'QgsLayout') -> QgsExpressionContextScope: ...
    @staticmethod
    def updateSymbolScope(symbol: 'QgsSymbol', symbolScope: typing.Optional[QgsExpressionContextScope] = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def mapLayerPositionScope(position: QgsPointXY) -> QgsExpressionContextScope: ...
    @staticmethod
    def mapToolCaptureScope(matches: typing.Iterable[QgsPointLocator.Match]) -> QgsExpressionContextScope: ...
    @staticmethod
    def mapSettingsScope(mapSettings: QgsMapSettings) -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayerVariables(layer: QgsMapLayer, variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayerVariable(layer: QgsMapLayer, name: str, value: typing.Any) -> None: ...
    @staticmethod
    def globalProjectLayerScopes(layer: QgsMapLayer) -> typing.List[QgsExpressionContextScope]: ...
    @staticmethod
    def layerScope(layer: QgsMapLayer) -> QgsExpressionContextScope: ...
    @staticmethod
    def removeProjectVariable(project: 'QgsProject', name: str) -> None: ...
    @staticmethod
    def setProjectVariables(project: 'QgsProject', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setProjectVariable(project: 'QgsProject', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def projectScope(project: 'QgsProject') -> QgsExpressionContextScope: ...
    @staticmethod
    def removeGlobalVariable(name: str) -> None: ...
    @staticmethod
    def setGlobalVariables(variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setGlobalVariable(name: str, value: typing.Any) -> None: ...
    @staticmethod
    def parentFormScope(formFeature: QgsFeature = ..., formMode: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def formScope(formFeature: QgsFeature = ..., formMode: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def globalScope() -> QgsExpressionContextScope: ...


class QgsExpressionNode(PyQt5.sip.wrapper):

    class NodeType(int):
        ntUnaryOperator = ... # type: QgsExpressionNode.NodeType
        ntBinaryOperator = ... # type: QgsExpressionNode.NodeType
        ntInOperator = ... # type: QgsExpressionNode.NodeType
        ntFunction = ... # type: QgsExpressionNode.NodeType
        ntLiteral = ... # type: QgsExpressionNode.NodeType
        ntColumnRef = ... # type: QgsExpressionNode.NodeType
        ntCondition = ... # type: QgsExpressionNode.NodeType
        ntIndexOperator = ... # type: QgsExpressionNode.NodeType
        ntBetweenOperator = ... # type: QgsExpressionNode.NodeType

    class NamedNode(PyQt5.sip.wrapper):

        name = ... # type: str
        node = ... # type: 'QgsExpressionNode'

        @typing.overload
        def __init__(self, name: str, node: 'QgsExpressionNode') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionNode.NamedNode') -> None: ...

    class NodeList(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionNode.NodeList') -> None: ...

        def dump(self) -> str: ...
        def clone(self) -> 'QgsExpressionNode.NodeList': ...
        def names(self) -> typing.List[str]: ...
        def at(self, i: int) -> 'QgsExpressionNode': ...
        def list(self) -> typing.List['QgsExpressionNode']: ...
        def hasNamedNodes(self) -> bool: ...
        def count(self) -> int: ...
        @typing.overload
        def append(self, node: 'QgsExpressionNode') -> None: ...
        @typing.overload
        def append(self, node: 'QgsExpressionNode.NamedNode') -> None: ...

    parserFirstColumn = ... # type: int
    parserFirstLine = ... # type: int
    parserLastColumn = ... # type: int
    parserLastLine = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsExpressionNode') -> None: ...

    def effectiveNode(self) -> 'QgsExpressionNode': ...
    def cachedStaticValue(self) -> typing.Any: ...
    def hasCachedStaticValue(self) -> bool: ...
    def prepare(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def clone(self) -> 'QgsExpressionNode': ...
    def eval(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def dump(self) -> str: ...
    def nodeType(self) -> 'QgsExpressionNode.NodeType': ...


class QgsExpressionNodeUnaryOperator(QgsExpressionNode):

    class UnaryOperator(int):
        uoNot = ... # type: QgsExpressionNodeUnaryOperator.UnaryOperator
        uoMinus = ... # type: QgsExpressionNodeUnaryOperator.UnaryOperator

    @typing.overload
    def __init__(self, op: 'QgsExpressionNodeUnaryOperator.UnaryOperator', operand: QgsExpressionNode) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeUnaryOperator') -> None: ...

    def text(self) -> str: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def operand(self) -> QgsExpressionNode: ...
    def op(self) -> 'QgsExpressionNodeUnaryOperator.UnaryOperator': ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeBinaryOperator(QgsExpressionNode):

    class BinaryOperator(int):
        boOr = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boAnd = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boEQ = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boGE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLT = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boGT = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boRegexp = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNotLike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boILike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNotILike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIs = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIsNot = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boPlus = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMinus = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMul = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boDiv = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIntDiv = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMod = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boPow = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boConcat = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator

    @typing.overload
    def __init__(self, op: 'QgsExpressionNodeBinaryOperator.BinaryOperator', opLeft: QgsExpressionNode, opRight: QgsExpressionNode) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeBinaryOperator') -> None: ...

    def text(self) -> str: ...
    def leftAssociative(self) -> bool: ...
    def precedence(self) -> int: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def opRight(self) -> QgsExpressionNode: ...
    def opLeft(self) -> QgsExpressionNode: ...
    def op(self) -> 'QgsExpressionNodeBinaryOperator.BinaryOperator': ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeIndexOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, container: QgsExpressionNode, index: QgsExpressionNode) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeIndexOperator') -> None: ...

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def index(self) -> QgsExpressionNode: ...
    def container(self) -> QgsExpressionNode: ...


class QgsExpressionNodeBetweenOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, node: QgsExpressionNode, nodeLowerBound: QgsExpressionNode, nodeHigherBound: QgsExpressionNode, negate: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeBetweenOperator') -> None: ...

    def negate(self) -> bool: ...
    def higherBound(self) -> QgsExpressionNode: ...
    def lowerBound(self) -> QgsExpressionNode: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def node(self) -> QgsExpressionNode: ...


class QgsExpressionNodeInOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, node: QgsExpressionNode, list: QgsExpressionNode.NodeList, notin: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeInOperator') -> None: ...

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def list(self) -> QgsExpressionNode.NodeList: ...
    def isNotIn(self) -> bool: ...
    def node(self) -> QgsExpressionNode: ...


class QgsExpressionNodeFunction(QgsExpressionNode):

    @typing.overload
    def __init__(self, fnIndex: int, args: QgsExpressionNode.NodeList) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeFunction') -> None: ...

    @staticmethod
    def validateParams(fnIndex: int, args: QgsExpressionNode.NodeList, error: str) -> bool: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def args(self) -> QgsExpressionNode.NodeList: ...
    def fnIndex(self) -> int: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeLiteral(QgsExpressionNode):

    @typing.overload
    def __init__(self, value: typing.Any) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeLiteral') -> None: ...

    def valueAsString(self) -> str: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def value(self) -> typing.Any: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeColumnRef(QgsExpressionNode):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeColumnRef') -> None: ...

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def name(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeCondition(QgsExpressionNode):

    class WhenThen(PyQt5.sip.wrapper):

        def __init__(self, whenExp: QgsExpressionNode, thenExp: QgsExpressionNode) -> None: ...

        def thenExp(self) -> QgsExpressionNode: ...
        def whenExp(self) -> QgsExpressionNode: ...
        def clone(self) -> 'QgsExpressionNodeCondition.WhenThen': ...

    @typing.overload
    def __init__(self, conditions: typing.Iterable['QgsExpressionNodeCondition.WhenThen'], elseExp: typing.Optional[QgsExpressionNode] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeCondition') -> None: ...

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def elseExp(self) -> QgsExpressionNode: ...
    def conditions(self) -> typing.List['QgsExpressionNodeCondition.WhenThen']: ...
    def dump(self) -> str: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...


class QgsCheckBoxFieldFormatter(QgsFieldFormatter):

    class TextDisplayMethod(int):
        ShowTrueFalse = ... # type: QgsCheckBoxFieldFormatter.TextDisplayMethod
        ShowStoredValues = ... # type: QgsCheckBoxFieldFormatter.TextDisplayMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCheckBoxFieldFormatter') -> None: ...

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsDateTimeFieldFormatter(QgsFieldFormatter):

    DATETIME_DISPLAY_FORMAT = ... # type: str
    DATETIME_FORMAT = ... # type: str
    DATE_DISPLAY_FORMAT = ... # type: str
    DATE_FORMAT = ... # type: str
    DISPLAY_FOR_ISO_FORMAT = ... # type: str
    QT_ISO_FORMAT = ... # type: str
    TIME_FORMAT = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDateTimeFieldFormatter') -> None: ...

    @staticmethod
    def defaultDisplayFormat(type: QtCore.QVariant.Type) -> str: ...
    @staticmethod
    def defaultFormat(type: QtCore.QVariant.Type) -> str: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsFallbackFieldFormatter(QgsFieldFormatter):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFallbackFieldFormatter') -> None: ...

    def id(self) -> str: ...


class QgsKeyValueFieldFormatter(QgsFieldFormatter):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsKeyValueFieldFormatter') -> None: ...

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsListFieldFormatter(QgsFieldFormatter):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsListFieldFormatter') -> None: ...

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsRangeFieldFormatter(QgsFieldFormatter):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRangeFieldFormatter') -> None: ...

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsRelationReferenceFieldFormatter(QgsFieldFormatter):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRelationReferenceFieldFormatter') -> None: ...

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    def createCache(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsValueMapFieldFormatter(QgsFieldFormatter):

    NULL_VALUE = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValueMapFieldFormatter') -> None: ...

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsValueRelationFieldFormatter(QgsFieldFormatter):

    class ValueRelationItem(PyQt5.sip.wrapper):

        description = ... # type: str
        key = ... # type: typing.Any
        value = ... # type: str

        @typing.overload
        def __init__(self, key: typing.Any, value: str, description: str = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsValueRelationFieldFormatter.ValueRelationItem') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValueRelationFieldFormatter') -> None: ...

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    @staticmethod
    def resolveLayer(config: typing.Dict[str, typing.Any], project: 'QgsProject') -> QgsVectorLayer: ...
    @staticmethod
    def expressionIsUsable(expression: str, feature: QgsFeature, parentFeature: QgsFeature = ...) -> bool: ...
    @staticmethod
    def expressionParentFormVariables(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionParentFormAttributes(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresParentFormScope(expression: str) -> bool: ...
    @staticmethod
    def expressionFormVariables(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionFormAttributes(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresFormScope(expression: str) -> bool: ...
    @staticmethod
    def valueToStringList(value: typing.Any) -> typing.List[str]: ...
    @typing.overload
    def createCache(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    @typing.overload
    @staticmethod
    def createCache(config: typing.Dict[str, typing.Any], formFeature: QgsFeature = ..., parentFormFeature: QgsFeature = ...) -> typing.List['QgsValueRelationFieldFormatter.ValueRelationItem']: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsLocatorFilter(QtCore.QObject):

    class Flag(int):
        FlagFast = ... # type: QgsLocatorFilter.Flag

    class Priority(int):
        Highest = ... # type: QgsLocatorFilter.Priority
        High = ... # type: QgsLocatorFilter.Priority
        Medium = ... # type: QgsLocatorFilter.Priority
        Low = ... # type: QgsLocatorFilter.Priority
        Lowest = ... # type: QgsLocatorFilter.Priority

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLocatorFilter.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLocatorFilter.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def resultFetched(self, result: 'QgsLocatorResult') -> None: ...
    def finished(self) -> None: ...
    def setFetchResultsDelay(self, delay: int) -> None: ...
    def fetchResultsDelay(self) -> int: ...
    def logMessage(self, message: str, level: Qgis.MessageLevel = ...) -> None: ...
    def openConfigWidget(self, parent: typing.Optional[QtWidgets.QWidget] = ...) -> None: ...
    def hasConfigWidget(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    @staticmethod
    def fuzzyScore(candidate: str, search: str) -> float: ...
    @staticmethod
    def stringMatches(candidate: str, search: str) -> bool: ...
    def activePrefix(self) -> str: ...
    def setUseWithoutPrefix(self, useWithoutPrefix: bool) -> None: ...
    def useWithoutPrefix(self) -> bool: ...
    def clearPreviousResults(self) -> None: ...
    def triggerResultFromAction(self, result: 'QgsLocatorResult', actionId: int) -> None: ...
    def triggerResult(self, result: 'QgsLocatorResult') -> None: ...
    def fetchResults(self, string: str, context: 'QgsLocatorContext', feedback: QgsFeedback) -> None: ...
    def prepare(self, string: str, context: 'QgsLocatorContext') -> typing.List[str]: ...
    def prefix(self) -> str: ...
    def priority(self) -> 'QgsLocatorFilter.Priority': ...
    def flags(self) -> 'QgsLocatorFilter.Flags': ...
    def description(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsLocatorFilter': ...


class QgsAbstractGeocoderLocatorFilter(QgsLocatorFilter):

    def __init__(self, name: str, displayName: str, prefix: str, geocoder: 'QgsGeocoderInterface', boundingBox: 'QgsRectangle' = ...) -> None: ...

    def geocoderResultToLocatorResult(self, result: 'QgsGeocoderResult') -> 'QgsLocatorResult': ...
    def locatorResultToGeocoderResult(self, result: 'QgsLocatorResult') -> 'QgsGeocoderResult': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def geocoder(self) -> 'QgsGeocoderInterface': ...
    def triggerResult(self, result: 'QgsLocatorResult') -> None: ...
    def fetchResults(self, string: str, context: 'QgsLocatorContext', feedback: QgsFeedback) -> None: ...
    def prefix(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...


class QgsGeocoderInterface(PyQt5.sip.wrapper):

    class Flag(int):
        GeocodesStrings = ... # type: QgsGeocoderInterface.Flag
        GeocodesFeatures = ... # type: QgsGeocoderInterface.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsGeocoderInterface.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsGeocoderInterface.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeocoderInterface') -> None: ...

    def geocodeString(self, string: str, context: 'QgsGeocoderContext', feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsGeocoderResult']: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def appendedFields(self) -> QgsFields: ...
    def geocodeFeature(self, feature: QgsFeature, context: 'QgsGeocoderContext', feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsGeocoderResult']: ...
    def flags(self) -> 'QgsGeocoderInterface.Flags': ...


class QgsGeocoderContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeocoderContext') -> None: ...

    def setAreaOfInterestCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def areaOfInterestCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setAreaOfInterest(self, area: 'QgsGeometry') -> None: ...
    def areaOfInterest(self) -> 'QgsGeometry': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...


class QgsGeocoderResult(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, identifier: str, geometry: 'QgsGeometry', crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeocoderResult') -> None: ...

    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setGroup(self, group: str) -> None: ...
    def group(self) -> str: ...
    def setAdditionalAttributes(self, attributes: typing.Dict[str, typing.Any]) -> None: ...
    def additionalAttributes(self) -> typing.Dict[str, typing.Any]: ...
    def setViewport(self, viewport: 'QgsRectangle') -> None: ...
    def viewport(self) -> 'QgsRectangle': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...
    def identifier(self) -> str: ...
    def error(self) -> str: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def errorResult(errorMessage: str) -> 'QgsGeocoderResult': ...


class QgsNominatimGeocoder(QgsGeocoderInterface):

    @typing.overload
    def __init__(self, countryCodes: str = ..., endpoint: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNominatimGeocoder') -> None: ...

    def setCountryCodes(self, countryCodes: str) -> None: ...
    def countryCodes(self) -> str: ...
    def setRequestsPerSecond(self, number: float) -> None: ...
    def requestsPerSecond(self) -> float: ...
    def setEndpoint(self, endpoint: str) -> None: ...
    def endpoint(self) -> str: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: str, bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: str, context: QgsGeocoderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsGeocoderResult]: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def appendedFields(self) -> QgsFields: ...
    def flags(self) -> QgsGeocoderInterface.Flags: ...


class QgsGoogleMapsGeocoder(QgsGeocoderInterface):

    @typing.overload
    def __init__(self, apiKey: str, regionBias: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGoogleMapsGeocoder') -> None: ...

    def setRegion(self, region: str) -> None: ...
    def region(self) -> str: ...
    def setApiKey(self, key: str) -> None: ...
    def apiKey(self) -> str: ...
    def setEndpoint(self, endpoint: str) -> None: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: str, bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: str, context: QgsGeocoderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsGeocoderResult]: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def appendedFields(self) -> QgsFields: ...
    def flags(self) -> QgsGeocoderInterface.Flags: ...


class QgsAbstractGeometry(PyQt5.sip.wrapper):

    class WkbFlag(int):
        FlagExportTrianglesAsPolygons = ... # type: QgsAbstractGeometry.WkbFlag
        FlagExportNanAsDoubleMin = ... # type: QgsAbstractGeometry.WkbFlag

    class AxisOrder(int):
        XY = ... # type: QgsAbstractGeometry.AxisOrder
        YX = ... # type: QgsAbstractGeometry.AxisOrder

    class SegmentationToleranceType(int):
        MaximumAngle = ... # type: QgsAbstractGeometry.SegmentationToleranceType
        MaximumDifference = ... # type: QgsAbstractGeometry.SegmentationToleranceType

    class WkbFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractGeometry.WkbFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geom: 'QgsAbstractGeometry') -> None: ...

    def clearCache(self) -> None: ...
    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def setZMTypeFromSubGeometry(self, subggeom: 'QgsAbstractGeometry', baseGeomType: Qgis.WkbType) -> None: ...
    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childGeometry(self, index: int) -> 'QgsAbstractGeometry': ...
    def childCount(self) -> int: ...
    def hasChildGeometries(self) -> bool: ...
    def compareToSameClass(self, other: 'QgsAbstractGeometry') -> int: ...
    def sortIndex(self) -> int: ...
    def createEmptyWithSameType(self) -> 'QgsAbstractGeometry': ...
    def vertices(self) -> 'QgsVertexIterator': ...
    def parts(self) -> 'QgsGeometryPartIterator': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def simplifiedTypeRef(self) -> 'QgsAbstractGeometry': ...
    def convertTo(self, type: Qgis.WkbType) -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsAbstractGeometry': ...
    def toCurveType(self) -> 'QgsAbstractGeometry': ...
    def segmentize(self, tolerance: float = ..., toleranceType: 'QgsAbstractGeometry.SegmentationToleranceType' = ...) -> 'QgsAbstractGeometry': ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def hasCurvedSegments(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def centroid(self) -> 'QgsPoint': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def area(self) -> float: ...
    def perimeter(self) -> float: ...
    def length(self) -> float: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asJson(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: 'QgsAbstractGeometry.AxisOrder' = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: 'QgsAbstractGeometry.AxisOrder' = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag'] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag'] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def normalize(self) -> None: ...
    def boundary(self) -> 'QgsAbstractGeometry': ...
    def isMeasure(self) -> bool: ...
    def is3D(self) -> bool: ...
    def wktTypeStr(self) -> str: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def geometryType(self) -> str: ...
    def dimension(self) -> int: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clear(self) -> None: ...
    def compareTo(self, other: 'QgsAbstractGeometry') -> int: ...
    def clone(self) -> 'QgsAbstractGeometry': ...


class QgsVertexIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVertexIterator') -> None: ...

    def __next__(self) -> 'QgsPoint': ...
    def __iter__(self) -> 'QgsVertexIterator': ...
    def next(self) -> 'QgsPoint': ...
    def hasNext(self) -> bool: ...


class QgsGeometryPartIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryPartIterator') -> None: ...

    def __next__(self) -> QgsAbstractGeometry: ...
    def __iter__(self) -> 'QgsGeometryPartIterator': ...
    def next(self) -> QgsAbstractGeometry: ...
    def hasNext(self) -> bool: ...


class QgsGeometryConstPartIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryConstPartIterator') -> None: ...

    def __next__(self) -> QgsAbstractGeometry: ...
    def __iter__(self) -> 'QgsGeometryConstPartIterator': ...
    def next(self) -> QgsAbstractGeometry: ...
    def hasNext(self) -> bool: ...


class QgsBox3d(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, xmin: float = ..., ymin: float = ..., zmin: float = ..., xmax: float = ..., ymax: float = ..., zmax: float = ...) -> None: ...
    @typing.overload
    def __init__(self, p1: 'QgsPoint', p2: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, rect: 'QgsRectangle') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBox3d') -> None: ...

    @typing.overload
    def scale(self, scaleFactor: float, center: 'QgsPoint' = ...) -> None: ...
    @typing.overload
    def scale(self, scaleFactor: float, centerX: float, centerY: float, centerZ: float) -> None: ...
    def distanceTo(self, point: QtGui.QVector3D) -> float: ...
    def toRectangle(self) -> 'QgsRectangle': ...
    @typing.overload
    def contains(self, other: 'QgsBox3d') -> bool: ...
    @typing.overload
    def contains(self, point: 'QgsPoint') -> bool: ...
    def intersects(self, other: 'QgsBox3d') -> bool: ...
    def is2d(self) -> bool: ...
    def intersect(self, other: 'QgsBox3d') -> 'QgsBox3d': ...
    def volume(self) -> float: ...
    def depth(self) -> float: ...
    def height(self) -> float: ...
    def width(self) -> float: ...
    def normalize(self) -> None: ...
    def zMaximum(self) -> float: ...
    def zMinimum(self) -> float: ...
    def setZMaximum(self, z: float) -> None: ...
    def setZMinimum(self, z: float) -> None: ...
    def yMaximum(self) -> float: ...
    def yMinimum(self) -> float: ...
    def setYMaximum(self, y: float) -> None: ...
    def setYMinimum(self, y: float) -> None: ...
    def xMaximum(self) -> float: ...
    def xMinimum(self) -> float: ...
    def setXMaximum(self, x: float) -> None: ...
    def setXMinimum(self, x: float) -> None: ...


class QgsEllipse(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: 'QgsPoint', semiMajorAxis: float, semiMinorAxis: float, azimuth: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEllipse') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def toString(self, pointPrecision: int = ..., axisPrecision: int = ..., azimuthPrecision: int = ...) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def orientedBoundingBox(self) -> 'QgsPolygon': ...
    def toLineString(self, segments: int = ...) -> 'QgsLineString': ...
    def toPolygon(self, segments: int = ...) -> 'QgsPolygon': ...
    def points(self, segments: int = ...) -> typing.List['QgsPoint']: ...
    def quadrant(self) -> typing.List['QgsPoint']: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def eccentricity(self) -> float: ...
    def foci(self) -> typing.List['QgsPoint']: ...
    def focusDistance(self) -> float: ...
    def setAzimuth(self, azimuth: float) -> None: ...
    def setSemiMinorAxis(self, semiMinorAxis: float) -> None: ...
    def setSemiMajorAxis(self, semiMajorAxis: float) -> None: ...
    def setCenter(self, center: 'QgsPoint') -> None: ...
    def azimuth(self) -> float: ...
    def semiMinorAxis(self) -> float: ...
    def semiMajorAxis(self) -> float: ...
    def center(self) -> 'QgsPoint': ...
    def isEmpty(self) -> bool: ...
    @staticmethod
    def fromCenter2Points(ptc: 'QgsPoint', pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsEllipse': ...
    @staticmethod
    def fromCenterPoint(ptc: 'QgsPoint', pt1: 'QgsPoint') -> 'QgsEllipse': ...
    @staticmethod
    def fromExtent(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsEllipse': ...
    @staticmethod
    def fromFoci(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint') -> 'QgsEllipse': ...


class QgsCircle(QgsEllipse):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: 'QgsPoint', radius: float, azimuth: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCircle') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def toString(self, pointPrecision: int = ..., radiusPrecision: int = ..., azimuthPrecision: int = ...) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def contains(self, point: 'QgsPoint', epsilon: float = ...) -> bool: ...
    def toCircularString(self, oriented: bool = ...) -> 'QgsCircularString': ...
    def northQuadrant(self) -> typing.List['QgsPoint']: ...
    def setRadius(self, radius: float) -> None: ...
    def radius(self) -> float: ...
    def setSemiMinorAxis(self, semiMinorAxis: float) -> None: ...
    def setSemiMajorAxis(self, semiMajorAxis: float) -> None: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def innerTangents(self, other: 'QgsCircle') -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    def outerTangents(self, other: 'QgsCircle') -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    def tangentToPoint(self, p: QgsPointXY) -> typing.Tuple[bool, QgsPointXY, QgsPointXY]: ...
    def intersections(self, other: 'QgsCircle', useZ: bool = ...) -> typing.Tuple[int, 'QgsPoint', 'QgsPoint']: ...
    @staticmethod
    def minimalCircleFrom3Points(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', epsilon: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def fromExtent(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsCircle': ...
    @staticmethod
    def from3TangentsMulti(pt1_tg1: 'QgsPoint', pt2_tg1: 'QgsPoint', pt1_tg2: 'QgsPoint', pt2_tg2: 'QgsPoint', pt1_tg3: 'QgsPoint', pt2_tg3: 'QgsPoint', epsilon: float = ..., pos: 'QgsPoint' = ...) -> typing.List['QgsCircle']: ...
    @staticmethod
    def from3Tangents(pt1_tg1: 'QgsPoint', pt2_tg1: 'QgsPoint', pt1_tg2: 'QgsPoint', pt2_tg2: 'QgsPoint', pt1_tg3: 'QgsPoint', pt2_tg3: 'QgsPoint', epsilon: float = ..., pos: 'QgsPoint' = ...) -> 'QgsCircle': ...
    @staticmethod
    def fromCenterPoint(center: 'QgsPoint', pt1: 'QgsPoint') -> 'QgsCircle': ...
    @staticmethod
    def fromCenterDiameter(center: 'QgsPoint', diameter: float, azimuth: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def from3Points(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', epsilon: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def from2Points(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsCircle': ...


class QgsCurve(QgsAbstractGeometry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCurve') -> None: ...

    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childCount(self) -> int: ...
    def clearCache(self) -> None: ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def orientation(self) -> Qgis.AngularDirection: ...
    def sinuosity(self) -> float: ...
    def straightDistance2d(self) -> float: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCurve': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def mAt(self, index: int) -> float: ...
    def zAt(self, index: int) -> float: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def normalize(self) -> None: ...
    def toCurveType(self) -> 'QgsCurve': ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsCurve': ...
    def asKml(self, precision: int = ...) -> str: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def reversed(self) -> 'QgsCurve': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def pointAt(self, node: int) -> typing.Tuple[bool, 'QgsPoint', Qgis.VertexType]: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def coordinateSequence(self) -> typing.Any: ...
    def sumUpArea(self) -> float: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def numPoints(self) -> int: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def isRing(self) -> bool: ...
    def isClosed2D(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def clone(self) -> 'QgsCurve': ...
    def equals(self, other: 'QgsCurve') -> bool: ...


class QgsCircularString(QgsCurve):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p1: 'QgsPoint', p2: 'QgsPoint', p3: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, x: typing.Iterable[float], y: typing.Iterable[float], z: typing.Iterable[float] = ..., m: typing.Iterable[float] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCircularString') -> None: ...

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCircularString': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def mAt(self, index: int) -> float: ...
    def zAt(self, index: int) -> float: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCircularString': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsCircularString': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def hasCurvedSegments(self) -> bool: ...
    def sumUpArea(self) -> float: ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCircularString': ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length(self) -> float: ...
    def append(self, string: 'QgsCircularString') -> None: ...
    def setPoints(self, points: typing.Iterable['QgsPoint']) -> None: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def pointN(self, i: int) -> 'QgsPoint': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def numPoints(self) -> int: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def isEmpty(self) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCircularString': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...
    @staticmethod
    def fromTwoPointsAndCenter(p1: 'QgsPoint', p2: 'QgsPoint', center: 'QgsPoint', useShortestArc: bool = ...) -> 'QgsCircularString': ...


class QgsCompoundCurve(QgsCurve):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, curve: 'QgsCompoundCurve') -> None: ...

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCompoundCurve': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def mAt(self, index: int) -> float: ...
    def zAt(self, index: int) -> float: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCompoundCurve': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsCompoundCurve': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def hasCurvedSegments(self) -> bool: ...
    def close(self) -> None: ...
    def sumUpArea(self) -> float: ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def toggleCircularAtVertex(self, position: 'QgsVertexId') -> bool: ...
    def condenseCurves(self) -> None: ...
    def addVertex(self, pt: 'QgsPoint') -> None: ...
    def removeCurve(self, i: int) -> None: ...
    def addCurve(self, c: QgsCurve, extendPrevious: bool = ...) -> None: ...
    def curveAt(self, i: int) -> QgsCurve: ...
    def nCurves(self) -> int: ...
    def simplifiedTypeRef(self) -> QgsAbstractGeometry: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCompoundCurve': ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def isEmpty(self) -> bool: ...
    def numPoints(self) -> int: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length(self) -> float: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCompoundCurve': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...


class QgsSurface(QgsAbstractGeometry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSurface') -> None: ...

    def clearCache(self) -> None: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...


class QgsCurvePolygon(QgsSurface):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p: 'QgsCurvePolygon') -> None: ...

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def childGeometry(self, index: int) -> QgsAbstractGeometry: ...
    def childCount(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCurvePolygon': ...
    def toCurveType(self) -> 'QgsCurvePolygon': ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> QgsAbstractGeometry: ...
    def hasCurvedSegments(self) -> bool: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def isEmpty(self) -> bool: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def forceCounterClockwise(self) -> None: ...
    def forceClockwise(self) -> None: ...
    def forceRHR(self) -> None: ...
    def removeInvalidRings(self) -> None: ...
    def removeInteriorRings(self, minimumAllowedArea: float = ...) -> None: ...
    def removeInteriorRing(self, i: int) -> bool: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def setInteriorRings(self, rings: typing.Iterable[QgsCurve]) -> None: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def toPolygon(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsPolygon': ...
    def interiorRing(self, i: int) -> QgsCurve: ...
    def exteriorRing(self) -> QgsCurve: ...
    def numInteriorRings(self) -> int: ...
    def roundness(self) -> float: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCurvePolygon': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def normalize(self) -> None: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCurvePolygon': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...


class QgsGeometryParameters(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryParameters') -> None: ...

    def setGridSize(self, size: float) -> None: ...
    def gridSize(self) -> float: ...


class QgsGeometry(PyQt5.sip.wrapper):

    class Error(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, m: str) -> None: ...
        @typing.overload
        def __init__(self, m: str, p: QgsPointXY) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsGeometry.Error') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def hasWhere(self) -> bool: ...
        def where(self) -> QgsPointXY: ...
        def what(self) -> str: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometry') -> None: ...
    @typing.overload
    def __init__(self, geom: QgsAbstractGeometry) -> None: ...

    @typing.overload
    @staticmethod
    def convertPointList(input: typing.Iterable[QgsPointXY], output: typing.Iterable['QgsPoint']) -> None: ...
    @typing.overload
    @staticmethod
    def convertPointList(input: typing.Iterable['QgsPoint'], output: typing.Iterable[QgsPointXY]) -> None: ...
    @staticmethod
    def createGeometryEngine(geometry: QgsAbstractGeometry) -> 'QgsGeometryEngine': ...
    def smooth(self, iterations: int = ..., offset: float = ..., minimumDistance: float = ..., maxAngle: float = ...) -> 'QgsGeometry': ...
    @staticmethod
    def compare(obj1: typing.Any, obj2: typing.Any, epsilon: float = ...) -> bool: ...
    @staticmethod
    def createPolygonFromQPolygonF(polygon: QtGui.QPolygonF) -> typing.Any: ...
    @staticmethod
    def createPolylineFromQPolygonF(polygon: QtGui.QPolygonF) -> typing.List[QgsPointXY]: ...
    @staticmethod
    def fromQPolygonF(polygon: QtGui.QPolygonF) -> 'QgsGeometry': ...
    @staticmethod
    def fromQPointF(point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 'QgsGeometry': ...
    def lastError(self) -> str: ...
    def vertexNrFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def vertexIdFromVertexNr(self, number: int) -> typing.Tuple[bool, 'QgsVertexId']: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def mapToPixel(self, mtp: QgsMapToPixel) -> None: ...
    def requiresConversionToStraightSegments(self) -> bool: ...
    def convertToStraightSegment(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> None: ...
    @staticmethod
    def polygonize(geometries: typing.Iterable['QgsGeometry']) -> 'QgsGeometry': ...
    @staticmethod
    def unaryUnion(geometries: typing.Iterable['QgsGeometry'], parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def normalize(self) -> None: ...
    def validateGeometry(self, method: Qgis.GeometryValidationEngine = ..., flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.List['QgsGeometry.Error']: ...
    def forcePolygonCounterClockwise(self) -> 'QgsGeometry': ...
    def forcePolygonClockwise(self) -> 'QgsGeometry': ...
    def forceRHR(self) -> 'QgsGeometry': ...
    def makeValid(self, method: Qgis.MakeValidMethod = ..., keepCollapsed: bool = ...) -> 'QgsGeometry': ...
    def avoidIntersections(self, avoidIntersectionsLayers: typing.Iterable[QgsVectorLayer]) -> int: ...
    def convertGeometryCollectionToSubclass(self, geomType: Qgis.GeometryType) -> bool: ...
    def convertToSingleType(self) -> bool: ...
    def convertToCurvedMultiType(self) -> bool: ...
    def convertToMultiType(self) -> bool: ...
    def deletePart(self, partNum: int) -> bool: ...
    def deleteRing(self, ringNum: int, partNum: int = ...) -> bool: ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def asQPointF(self) -> QtCore.QPointF: ...
    def asGeometryCollection(self) -> typing.List['QgsGeometry']: ...
    def asMultiPolygon(self) -> QgsMultiPolygonXY: ...
    def asMultiPolyline(self) -> QgsMultiPolylineXY: ...
    def asMultiPoint(self) -> QgsMultiPointXY: ...
    def asPolygon(self) -> QgsPolygonXY: ...
    def asPolyline(self) -> QgsPolylineXY: ...
    def asPoint(self) -> QgsPointXY: ...
    def convertToType(self, destType: Qgis.GeometryType, destMultipart: bool = ...) -> 'QgsGeometry': ...
    def coerceToType(self, type: Qgis.WkbType, defaultZ: float = ..., defaultM: float = ...) -> typing.List['QgsGeometry']: ...
    def asJson(self, precision: int = ...) -> str: ...
    def __repr__(self) -> typing.Any: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def randomPointsInPolygon(self, count: int, seed: int = ...) -> QgsPolylineXY: ...
    def extrude(self, x: float, y: float) -> 'QgsGeometry': ...
    def symDifference(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def difference(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def mergeLines(self) -> 'QgsGeometry': ...
    def combine(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def clipped(self, rectangle: 'QgsRectangle') -> 'QgsGeometry': ...
    def intersection(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def interpolateAngle(self, distance: float) -> float: ...
    def lineLocatePoint(self, point: 'QgsGeometry') -> float: ...
    def interpolate(self, distance: float) -> 'QgsGeometry': ...
    def subdivide(self, maxNodes: int = ..., parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def sharedPaths(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def node(self) -> 'QgsGeometry': ...
    def delaunayTriangulation(self, tolerance: float = ..., edgesOnly: bool = ...) -> 'QgsGeometry': ...
    def voronoiDiagram(self, extent: 'QgsGeometry' = ..., tolerance: float = ..., edgesOnly: bool = ...) -> 'QgsGeometry': ...
    def concaveHull(self, targetPercent: float, allowHoles: bool = ...) -> 'QgsGeometry': ...
    def convexHull(self) -> 'QgsGeometry': ...
    def minimumClearanceLine(self) -> 'QgsGeometry': ...
    def minimumClearance(self) -> float: ...
    def minimumWidth(self) -> 'QgsGeometry': ...
    def largestEmptyCircle(self, tolerance: float, boundary: 'QgsGeometry' = ...) -> 'QgsGeometry': ...
    def poleOfInaccessibility(self, precision: float) -> typing.Tuple['QgsGeometry', float]: ...
    def pointOnSurface(self) -> 'QgsGeometry': ...
    def centroid(self) -> 'QgsGeometry': ...
    def convertToCurves(self, distanceTolerance: float = ..., angleTolerance: float = ...) -> 'QgsGeometry': ...
    def densifyByDistance(self, distance: float) -> 'QgsGeometry': ...
    def densifyByCount(self, extraNodesPerSegment: int) -> 'QgsGeometry': ...
    def simplify(self, tolerance: float) -> 'QgsGeometry': ...
    def extendLine(self, startDistance: float, endDistance: float) -> 'QgsGeometry': ...
    def variableWidthBufferByM(self, segments: int) -> 'QgsGeometry': ...
    def taperedBuffer(self, startWidth: float, endWidth: float, segments: int) -> 'QgsGeometry': ...
    def singleSidedBuffer(self, distance: float, segments: int, side: Qgis.BufferSide, joinStyle: Qgis.JoinStyle = ..., miterLimit: float = ...) -> 'QgsGeometry': ...
    def offsetCurve(self, distance: float, segments: int, joinStyle: Qgis.JoinStyle, miterLimit: float) -> 'QgsGeometry': ...
    @typing.overload
    def buffer(self, distance: float, segments: int) -> 'QgsGeometry': ...
    @typing.overload
    def buffer(self, distance: float, segments: int, endCapStyle: Qgis.EndCapStyle, joinStyle: Qgis.JoinStyle, miterLimit: float) -> 'QgsGeometry': ...
    def crosses(self, geometry: 'QgsGeometry') -> bool: ...
    def within(self, geometry: 'QgsGeometry') -> bool: ...
    def overlaps(self, geometry: 'QgsGeometry') -> bool: ...
    def touches(self, geometry: 'QgsGeometry') -> bool: ...
    def disjoint(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def contains(self, p: QgsPointXY) -> bool: ...
    @typing.overload
    def contains(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def intersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def intersects(self, geometry: 'QgsGeometry') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsGeometry': ...
    def applyDashPattern(self, pattern: typing.Iterable[float], startRule: Qgis.DashPatternLineEndingRule = ..., endRule: Qgis.DashPatternLineEndingRule = ..., adjustment: Qgis.DashPatternSizeAdjustment = ..., patternOffset: float = ...) -> 'QgsGeometry': ...
    def roundWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def roundWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def squareWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def squareWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def triangularWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def triangularWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def orthogonalize(self, tolerance: float = ..., maxIterations: int = ..., angleThreshold: float = ...) -> 'QgsGeometry': ...
    def minimalEnclosingCircle(self, segments: int = ...) -> typing.Tuple['QgsGeometry', QgsPointXY, float]: ...
    def orientedMinimumBoundingBox(self) -> typing.Tuple['QgsGeometry', float, float, float, float]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def makeDifference(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def reshapeGeometry(self, reshapeLineString: 'QgsLineString') -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitGeometry(self, splitLine: typing.List[typing.Union['QgsPoint', QgsPointXY]], topological: bool, splitFeature: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Union[typing.List['QgsPoint'], typing.List[QgsPointXY]], typing.Union[typing.List['QgsPoint'], typing.List[QgsPointXY]]]: ...
    @typing.overload
    def splitGeometry(self, curve: QgsCurve, preserveCircular: bool, topological: bool, splitFeature: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List['QgsGeometry'], typing.List['QgsPoint']]: ...
    def rotate(self, rotation: float, center: QgsPointXY) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', direction: Qgis.TransformDirection = ..., transformZ: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> Qgis.GeometryOperationResult: ...
    def translate(self, dx: float, dy: float, dz: float = ..., dm: float = ...) -> Qgis.GeometryOperationResult: ...
    def removeInteriorRings(self, minimumAllowedArea: float = ...) -> 'QgsGeometry': ...
    def addPartGeometry(self, newPart: 'QgsGeometry') -> Qgis.GeometryOperationResult: ...
    def addPart(self, part: QgsAbstractGeometry, geomType: Qgis.GeometryType = ...) -> Qgis.GeometryOperationResult: ...
    def addPoints(self, points: typing.Iterable['QgsPoint'], geomType: Qgis.GeometryType = ...) -> Qgis.GeometryOperationResult: ...
    def addPointsXY(self, points: typing.Iterable[QgsPointXY], geomType: Qgis.GeometryType = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPointXY]) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addRing(self, ring: QgsCurve) -> Qgis.GeometryOperationResult: ...
    def closestSegmentWithContext(self, point: QgsPointXY, epsilon: float = ...) -> typing.Tuple[float, QgsPointXY, int, int]: ...
    def closestVertexWithContext(self, point: QgsPointXY) -> typing.Tuple[float, int]: ...
    def shortestLine(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def nearestPoint(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def sqrDistToVertexAt(self, point: QgsPointXY, atVertex: int) -> float: ...
    def vertexAt(self, atVertex: int) -> 'QgsPoint': ...
    def toggleCircularAtVertex(self, atVertex: int) -> bool: ...
    def deleteVertex(self, atVertex: int) -> bool: ...
    @typing.overload
    def moveVertex(self, x: float, y: float, atVertex: int) -> bool: ...
    @typing.overload
    def moveVertex(self, p: 'QgsPoint', atVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, x: float, y: float, beforeVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, point: 'QgsPoint', beforeVertex: int) -> bool: ...
    def adjacentVertices(self, atVertex: int) -> typing.Tuple[int, int]: ...
    def angleAtVertex(self, vertex: int) -> float: ...
    def distanceToVertex(self, vertex: int) -> float: ...
    def closestVertex(self, point: QgsPointXY) -> typing.Tuple[QgsPointXY, int, int, int, float]: ...
    def frechetDistanceDensify(self, geom: 'QgsGeometry', densifyFraction: float) -> float: ...
    def frechetDistance(self, geom: 'QgsGeometry') -> float: ...
    def hausdorffDistanceDensify(self, geom: 'QgsGeometry', densifyFraction: float) -> float: ...
    def hausdorffDistance(self, geom: 'QgsGeometry') -> float: ...
    def constParts(self) -> QgsGeometryConstPartIterator: ...
    def parts(self) -> QgsGeometryPartIterator: ...
    def vertices(self) -> QgsVertexIterator: ...
    def distance(self, geom: 'QgsGeometry') -> float: ...
    def length(self) -> float: ...
    def area(self) -> float: ...
    def isAxisParallelRectangle(self, maximumDeviation: float, simpleRectanglesOnly: bool = ...) -> bool: ...
    def isSimple(self) -> bool: ...
    def isGeosValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> bool: ...
    def isGeosEqual(self, a0: 'QgsGeometry') -> bool: ...
    def equals(self, geometry: 'QgsGeometry') -> bool: ...
    def isMultipart(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def type(self) -> Qgis.GeometryType: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def fromWkb(self, wkb: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> None: ...
    @staticmethod
    def createWedgeBuffer(center: 'QgsPoint', azimuth: float, angularWidth: float, outerRadius: float, innerRadius: float = ...) -> 'QgsGeometry': ...
    @staticmethod
    def collectGeometry(geometries: typing.Iterable['QgsGeometry']) -> 'QgsGeometry': ...
    @staticmethod
    def fromRect(rect: 'QgsRectangle') -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPolygonXY(multipoly: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolygonXY(polygon: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPolylineXY(multiline: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolyline(polyline: typing.Iterable['QgsPoint']) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolylineXY(polyline: typing.Iterable[QgsPointXY]) -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPointXY(multipoint: typing.Iterable[QgsPointXY]) -> 'QgsGeometry': ...
    @staticmethod
    def fromPointXY(point: QgsPointXY) -> 'QgsGeometry': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsGeometry': ...
    def isNull(self) -> bool: ...
    def set(self, geometry: QgsAbstractGeometry) -> None: ...
    def get(self) -> QgsAbstractGeometry: ...
    def constGet(self) -> QgsAbstractGeometry: ...


class QgsGeometryCollection(QgsAbstractGeometry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, c: 'QgsGeometryCollection') -> None: ...

    def clearCache(self) -> None: ...
    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def fromCollectionWkt(self, wkt: str, subtypes: typing.Iterable[QgsAbstractGeometry], defaultChildWkbType: str = ...) -> bool: ...
    def wktOmitChildType(self) -> bool: ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def childGeometry(self, index: int) -> QgsAbstractGeometry: ...
    def childCount(self) -> int: ...
    def createEmptyWithSameType(self) -> 'QgsGeometryCollection': ...
    def __iter__(self) -> QgsGeometryPartIterator: ...
    def __delitem__(self, index: int) -> None: ...
    def __getitem__(self, index: int) -> QgsAbstractGeometry: ...
    def simplifiedTypeRef(self) -> QgsAbstractGeometry: ...
    def toCurveType(self) -> 'QgsGeometryCollection': ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> QgsAbstractGeometry: ...
    def hasCurvedSegments(self) -> bool: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def length(self) -> float: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def normalize(self) -> None: ...
    def removeGeometry(self, nr: int) -> bool: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def reserve(self, size: int) -> None: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsGeometryCollection': ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def dimension(self) -> int: ...
    def isEmpty(self) -> bool: ...
    def geometryN(self, n: int) -> QgsAbstractGeometry: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def numGeometries(self) -> int: ...
    def clone(self) -> 'QgsGeometryCollection': ...


class QgsGeometryEngine(PyQt5.sip.wrapper):

    class EngineOperationResult(int):
        Success = ... # type: QgsGeometryEngine.EngineOperationResult
        NothingHappened = ... # type: QgsGeometryEngine.EngineOperationResult
        MethodNotImplemented = ... # type: QgsGeometryEngine.EngineOperationResult
        EngineError = ... # type: QgsGeometryEngine.EngineOperationResult
        NodedGeometryError = ... # type: QgsGeometryEngine.EngineOperationResult
        InvalidBaseGeometry = ... # type: QgsGeometryEngine.EngineOperationResult
        InvalidInput = ... # type: QgsGeometryEngine.EngineOperationResult
        SplitCannotSplitPoint = ... # type: QgsGeometryEngine.EngineOperationResult

    @typing.overload
    def __init__(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryEngine') -> None: ...

    def logError(self, engineName: str, message: str) -> None: ...
    def setLogErrors(self, enabled: bool) -> None: ...
    def offsetCurve(self, distance: float, segments: int, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def splitGeometry(self, splitLine: 'QgsLineString', topological: bool, topologyTestPoints: typing.Iterable['QgsPoint'], errorMsg: typing.Optional[str] = ..., skipIntersectionCheck: bool = ...) -> typing.Tuple['QgsGeometryEngine.EngineOperationResult', typing.List[QgsGeometry]]: ...
    def isSimple(self, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def isEmpty(self, errorMsg: str) -> bool: ...
    def isEqual(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def isValid(self, errorMsg: typing.Optional[str] = ..., allowSelfTouchingHoles: bool = ..., errorLoc: typing.Optional[QgsGeometry] = ...) -> bool: ...
    def length(self, errorMsg: typing.Optional[str] = ...) -> float: ...
    def area(self, errorMsg: typing.Optional[str] = ...) -> float: ...
    def relatePattern(self, geom: QgsAbstractGeometry, pattern: str, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def relate(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> str: ...
    def disjoint(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def contains(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def overlaps(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def within(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def crosses(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def touches(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def intersects(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def distanceWithin(self, geom: QgsAbstractGeometry, maxdistance: float, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def distance(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> float: ...
    def convexHull(self, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def pointOnSurface(self, errorMsg: typing.Optional[str] = ...) -> 'QgsPoint': ...
    def centroid(self, errorMsg: typing.Optional[str] = ...) -> 'QgsPoint': ...
    def envelope(self, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def interpolate(self, distance: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def simplify(self, tolerance: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, endCapStyle: Qgis.EndCapStyle, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def symDifference(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geomList: typing.Iterable[QgsAbstractGeometry], errorMsg: str, parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geometries: typing.Iterable[QgsGeometry], errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def difference(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def intersection(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def prepareGeometry(self) -> None: ...
    def geometryChanged(self) -> None: ...


class QgsAbstractGeometryTransformer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractGeometryTransformer') -> None: ...

    def transformPoint(self, x: float, y: float, z: float, m: float) -> typing.Tuple[bool, float, float, float, float]: ...


class QgsGeometryUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryUtils') -> None: ...

    @staticmethod
    def bisector(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float) -> typing.Tuple[bool, float, float]: ...
    @staticmethod
    def angleBisector(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float, dX: float, dY: float) -> typing.Tuple[bool, float, float, float]: ...
    @typing.overload
    @staticmethod
    def transferFirstZOrMValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @typing.overload
    @staticmethod
    def transferFirstZOrMValueToPoint(geom: QgsGeometry, point: 'QgsPoint') -> bool: ...
    @staticmethod
    def transferFirstMValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def transferFirstZValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def setZValueFromPoints(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def weightedPointInTriangle(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float, weightB: float, weightC: float) -> typing.Tuple[float, float]: ...
    @staticmethod
    def triangleArea(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float) -> float: ...
    @staticmethod
    def linesIntersection3D(La1: QgsVector3D, La2: QgsVector3D, Lb1: QgsVector3D, Lb2: QgsVector3D) -> typing.Tuple[bool, QgsVector3D]: ...
    @staticmethod
    def skewLinesProjection(P1: QgsVector3D, P12: QgsVector3D, P2: QgsVector3D, P22: QgsVector3D, epsilon: float = ...) -> typing.Tuple[bool, QgsVector3D]: ...
    @staticmethod
    def skewLinesDistance(P1: QgsVector3D, P12: QgsVector3D, P2: QgsVector3D, P22: QgsVector3D) -> float: ...
    @staticmethod
    def perpendicularCenterSegment(centerPointX: float, centerPointY: float, segmentPoint1x: float, segmentPoint1y: float, segmentPoint2x: float, segmentPoint2y: float, segmentLength: float = ...) -> typing.Tuple[float, float, float, float]: ...
    @staticmethod
    def perpendicularSegment(p: 'QgsPoint', s1: 'QgsPoint', s2: 'QgsPoint') -> 'QgsLineString': ...
    @staticmethod
    def coefficients(pt1: 'QgsPoint', pt2: 'QgsPoint') -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def gradient(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @staticmethod
    def interpolatePointOnLineByValue(x1: float, y1: float, v1: float, x2: float, y2: float, v2: float, value: float) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def interpolatePointOnLine(x1: float, y1: float, x2: float, y2: float, fraction: float) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def interpolatePointOnLine(p1: 'QgsPoint', p2: 'QgsPoint', fraction: float) -> 'QgsPoint': ...
    @staticmethod
    def midpoint(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def closestSideOfRectangle(right: float, bottom: float, left: float, top: float, x: float, y: float) -> int: ...
    @typing.overload
    @staticmethod
    def averageAngle(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @typing.overload
    @staticmethod
    def averageAngle(a1: float, a2: float) -> float: ...
    @staticmethod
    def linePerpendicularAngle(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def angleBetweenThreePoints(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def lineAngle(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def normalizedAngle(angle: float) -> float: ...
    @staticmethod
    def interpolateArcValue(angle: float, a1: float, a2: float, a3: float, zm1: float, zm2: float, zm3: float) -> float: ...
    @staticmethod
    def segmentSide(pt1: 'QgsPoint', pt3: 'QgsPoint', pt2: 'QgsPoint') -> int: ...
    @staticmethod
    def pointContinuesArc(a1: 'QgsPoint', a2: 'QgsPoint', a3: 'QgsPoint', b: 'QgsPoint', distanceTolerance: float, pointSpacingAngleTolerance: float) -> bool: ...
    @staticmethod
    def segmentizeArc(p1: 'QgsPoint', p2: 'QgsPoint', p3: 'QgsPoint', tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ..., hasZ: bool = ..., hasM: bool = ...) -> typing.List['QgsPoint']: ...
    @staticmethod
    def circleTangentDirection(tangentPoint: 'QgsPoint', cp1: 'QgsPoint', cp2: 'QgsPoint', cp3: 'QgsPoint') -> float: ...
    @staticmethod
    def segmentMidPointFromCenter(p1: 'QgsPoint', p2: 'QgsPoint', center: 'QgsPoint', useShortestArc: bool = ...) -> 'QgsPoint': ...
    @staticmethod
    def segmentMidPoint(p1: 'QgsPoint', p2: 'QgsPoint', radius: float, mousePos: 'QgsPoint') -> typing.Tuple[bool, 'QgsPoint']: ...
    @staticmethod
    def sweepAngle(centerX: float, centerY: float, x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def circleLength(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def angleOnCircle(angle: float, angle1: float, angle2: float, angle3: float) -> bool: ...
    @staticmethod
    def circleAngleBetween(angle: float, angle1: float, angle2: float, clockwise: bool) -> bool: ...
    @staticmethod
    def circleClockwise(angle1: float, angle2: float, angle3: float) -> bool: ...
    @staticmethod
    def circleCenterRadius(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint') -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def ccwAngle(dy: float, dx: float) -> float: ...
    @staticmethod
    def interpolatePointOnArc(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @staticmethod
    def perpendicularOffsetPointAlongSegment(x1: float, y1: float, x2: float, y2: float, proportion: float, offset: float) -> typing.Tuple[float, float]: ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: 'QgsPoint', directionPoint: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @typing.overload
    @staticmethod
    def leftOfLine(x: float, y: float, x1: float, y1: float, x2: float, y2: float) -> int: ...
    @typing.overload
    @staticmethod
    def leftOfLine(point: 'QgsPoint', p1: 'QgsPoint', p2: 'QgsPoint') -> int: ...
    @staticmethod
    def projectPointOnSegment(p: 'QgsPoint', s1: 'QgsPoint', s2: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def circleCircleInnerTangents(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def circleCircleOuterTangents(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def tangentPointAndCircle(center: QgsPointXY, radius: float, p: QgsPointXY) -> typing.Tuple[bool, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def circleCircleIntersections(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def lineCircleIntersection(center: QgsPointXY, radius: float, linePoint1: QgsPointXY, linePoint2: QgsPointXY, intersection: QgsPointXY) -> typing.Tuple[bool, QgsPointXY]: ...
    @staticmethod
    def segmentIntersection(p1: 'QgsPoint', p2: 'QgsPoint', q1: 'QgsPoint', q2: 'QgsPoint', tolerance: float = ..., acceptImproperIntersection: bool = ...) -> typing.Tuple[bool, 'QgsPoint', bool]: ...
    @staticmethod
    def lineIntersection(p1: 'QgsPoint', v1: QgsVector, p2: 'QgsPoint', v2: QgsVector) -> typing.Tuple[bool, 'QgsPoint']: ...
    @staticmethod
    def distToInfiniteLine(point: 'QgsPoint', linePoint1: 'QgsPoint', linePoint2: 'QgsPoint', epsilon: float = ...) -> float: ...
    @staticmethod
    def sqrDistToLine(ptX: float, ptY: float, x1: float, y1: float, x2: float, y2: float, epsilon: float) -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def sqrDistance2D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @staticmethod
    def verticesAtDistance(geometry: QgsAbstractGeometry, distance: float) -> typing.Tuple[bool, 'QgsVertexId', 'QgsVertexId']: ...
    @staticmethod
    def distanceToVertex(geom: QgsAbstractGeometry, id: 'QgsVertexId') -> float: ...
    @staticmethod
    def closestPoint(geometry: QgsAbstractGeometry, point: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def closestVertex(geom: QgsAbstractGeometry, pt: 'QgsPoint') -> typing.Tuple['QgsPoint', 'QgsVertexId']: ...
    @staticmethod
    def extractLineStrings(geom: QgsAbstractGeometry) -> typing.List['QgsLineString']: ...


class QgsLineSegment2D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, start: QgsPointXY, end: QgsPointXY) -> None: ...
    @typing.overload
    def __init__(self, x1: float, y1: float, x2: float, y2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLineSegment2D') -> None: ...

    def reverse(self) -> None: ...
    def pointLeftOfLine(self, point: QgsPointXY) -> int: ...
    def setEnd(self, end: QgsPointXY) -> None: ...
    def setStart(self, start: QgsPointXY) -> None: ...
    def setEndY(self, y: float) -> None: ...
    def setEndX(self, x: float) -> None: ...
    def setStartY(self, y: float) -> None: ...
    def setStartX(self, x: float) -> None: ...
    def end(self) -> QgsPointXY: ...
    def start(self) -> QgsPointXY: ...
    def endY(self) -> float: ...
    def endX(self) -> float: ...
    def startY(self) -> float: ...
    def startX(self) -> float: ...
    def lengthSquared(self) -> float: ...
    def length(self) -> float: ...


class QgsLineString(QgsCurve):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, points: typing.Sequence[typing.Union['QgsPoint', QgsPointXY, typing.Sequence[float]]]) -> None: ...
    @typing.overload
    def __init__(self, segment: QgsLineSegment2D) -> None: ...
    @typing.overload
    def __init__(self, x: typing.Iterable[float], y: typing.Iterable[float], z: typing.Iterable[float] = ..., m: typing.Iterable[float] = ..., is25DType: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, p1: 'QgsPoint', p2: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLineString') -> None: ...

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def calculateBoundingBox3d(self) -> QgsBox3d: ...
    def __delitem__(self, index: int) -> None: ...
    def __setitem__(self, index: int, point: 'QgsPoint') -> None: ...
    def __getitem__(self, index: int) -> 'QgsPoint': ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsLineString': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def convertTo(self, type: Qgis.WkbType) -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def sumUpArea(self) -> float: ...
    def centroid(self) -> 'QgsPoint': ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsLineString': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsLineString': ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: QgsAbstractGeometryTransformer, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def nCoordinates(self) -> int: ...
    def numPoints(self) -> int: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length3D(self) -> float: ...
    def length(self) -> float: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def collectDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> typing.List['QgsVertexId']: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def isClosed2D(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsLineString': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def isEmpty(self) -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsLineString': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def extend(self, startDistance: float, endDistance: float) -> None: ...
    def toCurveType(self) -> QgsCompoundCurve: ...
    def close(self) -> None: ...
    def addVertex(self, pt: 'QgsPoint') -> None: ...
    def append(self, line: 'QgsLineString') -> None: ...
    def setPoints(self, points: typing.Iterable['QgsPoint']) -> None: ...
    def setMAt(self, index: int, m: float) -> None: ...
    def setZAt(self, index: int, z: float) -> None: ...
    def setYAt(self, index: int, y: float) -> None: ...
    def setXAt(self, index: int, x: float) -> None: ...
    def mAt(self, index: int) -> float: ...
    def zAt(self, index: int) -> float: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def pointN(self, i: int) -> 'QgsPoint': ...
    def equals(self, other: QgsCurve) -> bool: ...
    @staticmethod
    def fromQPolygonF(polygon: QtGui.QPolygonF) -> 'QgsLineString': ...
    @staticmethod
    def fromBezierCurve(start: 'QgsPoint', controlPoint1: 'QgsPoint', controlPoint2: 'QgsPoint', end: 'QgsPoint', segments: int = ...) -> 'QgsLineString': ...


class QgsMultiCurve(QgsGeometryCollection):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiCurve') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiCurve': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def reversed(self) -> 'QgsMultiCurve': ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiCurve': ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsMultiCurve': ...
    def geometryType(self) -> str: ...
    def curveN(self, index: int) -> QgsCurve: ...


class QgsMultiLineString(QgsMultiCurve):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiLineString') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiLineString': ...
    def toCurveType(self) -> QgsMultiCurve: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsMultiLineString': ...
    def geometryType(self) -> str: ...
    def lineStringN(self, index: int) -> QgsLineString: ...


class QgsMultiPoint(QgsGeometryCollection):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiPoint') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiPoint': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def nCoordinates(self) -> int: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def clear(self) -> None: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiPoint': ...
    def clone(self) -> 'QgsMultiPoint': ...
    def geometryType(self) -> str: ...
    def pointN(self, index: int) -> 'QgsPoint': ...


class QgsMultiSurface(QgsGeometryCollection):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiSurface') -> None: ...

    def createEmptyWithSameType(self) -> 'QgsMultiSurface': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiSurface': ...
    def clone(self) -> 'QgsMultiSurface': ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def surfaceN(self, index: int) -> QgsSurface: ...


class QgsMultiPolygon(QgsMultiSurface):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiPolygon') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiPolygon': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def toCurveType(self) -> QgsMultiSurface: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def clone(self) -> 'QgsMultiPolygon': ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def polygonN(self, index: int) -> 'QgsPolygon': ...


class QgsPoint(QgsAbstractGeometry):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, x: typing.Optional[typing.Union['QgsPoint', QtCore.QPointF, QtCore.QPoint, float]] = ..., y: typing.Optional[float] = ..., z: typing.Optional[float] = ..., m: typing.Optional[float] = ..., wkbType: typing.Optional[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPoint') -> None: ...

    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childCount(self) -> int: ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsPoint': ...
    def convertTo(self, type: Qgis.WkbType) -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def toCurveType(self) -> 'QgsPoint': ...
    def vertexAt(self, a0: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, a0: int = ...) -> int: ...
    def vertexCount(self, a0: int = ..., a1: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: QgsAbstractGeometryTransformer, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, a0: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsPoint': ...
    def clone(self) -> 'QgsPoint': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def isEmpty(self) -> bool: ...
    def normalize(self) -> None: ...
    def project(self, distance: float, azimuth: float, inclination: float = ...) -> 'QgsPoint': ...
    def inclination(self, other: 'QgsPoint') -> float: ...
    def azimuth(self, other: 'QgsPoint') -> float: ...
    @typing.overload
    def distanceSquared3D(self, x: float, y: float, z: float) -> float: ...
    @typing.overload
    def distanceSquared3D(self, other: 'QgsPoint') -> float: ...
    @typing.overload
    def distance3D(self, x: float, y: float, z: float) -> float: ...
    @typing.overload
    def distance3D(self, other: 'QgsPoint') -> float: ...
    @typing.overload
    def distanceSquared(self, x: float, y: float) -> float: ...
    @typing.overload
    def distanceSquared(self, other: 'QgsPoint') -> float: ...
    @typing.overload
    def distance(self, x: float, y: float) -> float: ...
    @typing.overload
    def distance(self, other: 'QgsPoint') -> float: ...
    def toQPointF(self) -> QtCore.QPointF: ...
    def setM(self, m: float) -> None: ...
    def setZ(self, z: float) -> None: ...
    def setY(self, y: float) -> None: ...
    def setX(self, x: float) -> None: ...
    def m(self) -> float: ...
    def z(self) -> float: ...
    def y(self) -> float: ...
    def x(self) -> float: ...


class QgsPolygon(QgsCurvePolygon):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, exterior: QgsLineString, rings: typing.Iterable[QgsLineString] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPolygon') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsPolygon': ...
    def pointDistanceToBoundary(self, x: float, y: float) -> float: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def toCurveType(self) -> QgsCurvePolygon: ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsPolygon': ...
    def geometryType(self) -> str: ...


class QgsQuadrilateral(PyQt5.sip.wrapper):

    class Point(int):
        Point1 = ... # type: QgsQuadrilateral.Point
        Point2 = ... # type: QgsQuadrilateral.Point
        Point3 = ... # type: QgsQuadrilateral.Point
        Point4 = ... # type: QgsQuadrilateral.Point

    class ConstructionOption(int):
        Distance = ... # type: QgsQuadrilateral.ConstructionOption
        Projected = ... # type: QgsQuadrilateral.ConstructionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPoint, p2: QgsPoint, p3: QgsPoint, p4: QgsPoint) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPointXY, p2: QgsPointXY, p3: QgsPointXY, p4: QgsPointXY) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsQuadrilateral') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def toString(self, pointPrecision: int = ...) -> str: ...
    def toLineString(self, force2D: bool = ...) -> QgsLineString: ...
    def toPolygon(self, force2D: bool = ...) -> QgsPolygon: ...
    def points(self) -> typing.List[QgsPoint]: ...
    def setPoints(self, p1: QgsPoint, p2: QgsPoint, p3: QgsPoint, p4: QgsPoint) -> bool: ...
    def setPoint(self, newPoint: QgsPoint, index: 'QgsQuadrilateral.Point') -> bool: ...
    def isValid(self) -> bool: ...
    def equals(self, other: 'QgsQuadrilateral', epsilon: float = ...) -> bool: ...
    @staticmethod
    def fromRectangle(rectangle: 'QgsRectangle') -> 'QgsQuadrilateral': ...
    @staticmethod
    def rectangleFromCenterPoint(center: QgsPoint, point: QgsPoint) -> 'QgsQuadrilateral': ...
    @staticmethod
    def squareFromDiagonal(p1: QgsPoint, p2: QgsPoint) -> 'QgsQuadrilateral': ...
    @staticmethod
    def rectangleFromExtent(p1: QgsPoint, p2: QgsPoint) -> 'QgsQuadrilateral': ...
    @staticmethod
    def rectangleFrom3Points(p1: QgsPoint, p2: QgsPoint, p3: QgsPoint, mode: 'QgsQuadrilateral.ConstructionOption') -> 'QgsQuadrilateral': ...


class QgsRectangle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, xMin: float, yMin: float = ..., xMax: float = ..., yMax: float = ..., normalize: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPointXY, p2: QgsPointXY, normalize: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, qRectF: QtCore.QRectF) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsRectangle') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def snappedToGrid(self, spacing: float) -> 'QgsRectangle': ...
    def toBox3d(self, zMin: float, zMax: float) -> QgsBox3d: ...
    def invert(self) -> None: ...
    def isFinite(self) -> bool: ...
    def asPolygon(self) -> str: ...
    def toString(self, precision: int = ...) -> str: ...
    def toRectF(self) -> QtCore.QRectF: ...
    def asWktPolygon(self) -> str: ...
    def asWktCoordinates(self) -> str: ...
    def isNull(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def distance(self, point: QgsPointXY) -> float: ...
    @typing.overload
    def combineExtentWith(self, rect: 'QgsRectangle') -> None: ...
    @typing.overload
    def combineExtentWith(self, x: float, y: float) -> None: ...
    @typing.overload
    def combineExtentWith(self, point: QgsPointXY) -> None: ...
    @typing.overload
    def contains(self, rect: 'QgsRectangle') -> bool: ...
    @typing.overload
    def contains(self, p: QgsPointXY) -> bool: ...
    @typing.overload
    def contains(self, x: float, y: float) -> bool: ...
    def intersects(self, rect: 'QgsRectangle') -> bool: ...
    def intersect(self, rect: 'QgsRectangle') -> 'QgsRectangle': ...
    def buffered(self, width: float) -> 'QgsRectangle': ...
    def include(self, p: QgsPointXY) -> None: ...
    def grow(self, delta: float) -> None: ...
    def scaled(self, scaleFactor: float, center: typing.Optional[QgsPointXY] = ...) -> 'QgsRectangle': ...
    @typing.overload
    def scale(self, scaleFactor: float, c: typing.Optional[QgsPointXY] = ...) -> None: ...
    @typing.overload
    def scale(self, scaleFactor: float, centerX: float, centerY: float) -> None: ...
    def center(self) -> QgsPointXY: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def height(self) -> float: ...
    def width(self) -> float: ...
    def normalize(self) -> None: ...
    def yMinimum(self) -> float: ...
    def yMaximum(self) -> float: ...
    def xMinimum(self) -> float: ...
    def xMaximum(self) -> float: ...
    def setMinimal(self) -> None: ...
    def setYMaximum(self, y: float) -> None: ...
    def setYMinimum(self, y: float) -> None: ...
    def setXMaximum(self, x: float) -> None: ...
    def setXMinimum(self, x: float) -> None: ...
    @typing.overload
    def set(self, p1: QgsPointXY, p2: QgsPointXY, normalize: bool = ...) -> None: ...
    @typing.overload
    def set(self, xMin: float, yMin: float, xMax: float, yMax: float, normalize: bool = ...) -> None: ...
    @staticmethod
    def fromCenterAndSize(center: QgsPointXY, width: float, height: float) -> 'QgsRectangle': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsRectangle': ...


class QgsReferencedGeometryBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, crs: 'QgsCoordinateReferenceSystem' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedGeometryBase') -> None: ...

    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...


class QgsReferencedRectangle(QgsRectangle, QgsReferencedGeometryBase):

    @typing.overload
    def __init__(self, rectangle: QgsRectangle, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedRectangle') -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsReferencedPointXY(QgsPointXY, QgsReferencedGeometryBase):

    @typing.overload
    def __init__(self, point: QgsPointXY, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedPointXY') -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsReferencedGeometry(QgsGeometry, QgsReferencedGeometryBase):

    @typing.overload
    def __init__(self, geometry: QgsGeometry, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedGeometry') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def fromReferencedRect(rectangle: QgsReferencedRectangle) -> 'QgsReferencedGeometry': ...
    @staticmethod
    def fromReferencedPointXY(point: QgsReferencedPointXY) -> 'QgsReferencedGeometry': ...


class QgsRegularPolygon(PyQt5.sip.wrapper):

    class ConstructionOption(int):
        InscribedCircle = ... # type: QgsRegularPolygon.ConstructionOption
        CircumscribedCircle = ... # type: QgsRegularPolygon.ConstructionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: QgsPoint, radius: float, azimuth: float, numberSides: int, circle: 'QgsRegularPolygon.ConstructionOption') -> None: ...
    @typing.overload
    def __init__(self, center: QgsPoint, pt1: QgsPoint, numberSides: int, circle: 'QgsRegularPolygon.ConstructionOption') -> None: ...
    @typing.overload
    def __init__(self, pt1: QgsPoint, pt2: QgsPoint, numberSides: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRegularPolygon') -> None: ...

    def length(self) -> float: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def centralAngle(self) -> float: ...
    def interiorAngle(self) -> float: ...
    def toString(self, pointPrecision: int = ..., radiusPrecision: int = ..., anglePrecision: int = ...) -> str: ...
    def circumscribedCircle(self) -> QgsCircle: ...
    def inscribedCircle(self) -> QgsCircle: ...
    def triangulate(self) -> typing.List['QgsTriangle']: ...
    def toTriangle(self) -> 'QgsTriangle': ...
    def toLineString(self) -> QgsLineString: ...
    def toPolygon(self) -> QgsPolygon: ...
    def points(self) -> typing.List[QgsPoint]: ...
    def setNumberSides(self, numberSides: int) -> None: ...
    def setFirstVertex(self, firstVertex: QgsPoint) -> None: ...
    def setRadius(self, radius: float) -> None: ...
    def setCenter(self, center: QgsPoint) -> None: ...
    def numberSides(self) -> int: ...
    def apothem(self) -> float: ...
    def firstVertex(self) -> QgsPoint: ...
    def radius(self) -> float: ...
    def center(self) -> QgsPoint: ...
    def isEmpty(self) -> bool: ...


class QgsTriangle(QgsPolygon):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPoint, p2: QgsPoint, p3: QgsPoint) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPointXY, p2: QgsPointXY, p3: QgsPointXY) -> None: ...
    @typing.overload
    def __init__(self, p1: typing.Union[QtCore.QPointF, QtCore.QPoint, float], p2: typing.Union[QtCore.QPointF, QtCore.QPoint, float], p3: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTriangle') -> None: ...

    def createEmptyWithSameType(self) -> 'QgsTriangle': ...
    def inscribedCircle(self) -> QgsCircle: ...
    def inscribedRadius(self) -> float: ...
    def inscribedCenter(self) -> QgsPoint: ...
    def circumscribedCircle(self) -> QgsCircle: ...
    def circumscribedRadius(self) -> float: ...
    def circumscribedCenter(self) -> QgsPoint: ...
    def orthocenter(self, lengthTolerance: float = ...) -> QgsPoint: ...
    def medial(self) -> 'QgsTriangle': ...
    def bisectors(self, lengthTolerance: float = ...) -> typing.List[QgsLineString]: ...
    def medians(self) -> typing.List[QgsLineString]: ...
    def altitudes(self) -> typing.List[QgsLineString]: ...
    def isScalene(self, lengthTolerance: float = ...) -> bool: ...
    def isRight(self, angleTolerance: float = ...) -> bool: ...
    def isEquilateral(self, lengthTolerance: float = ...) -> bool: ...
    def isIsocele(self, lengthTolerance: float = ...) -> bool: ...
    def isDegenerate(self) -> bool: ...
    def angles(self) -> typing.List[float]: ...
    def lengths(self) -> typing.List[float]: ...
    def vertexAt(self, atVertex: int) -> QgsPoint: ...
    def boundary(self) -> QgsCurve: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def moveVertex(self, vId: 'QgsVertexId', newPos: QgsPoint) -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: QgsPoint) -> bool: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def toCurveType(self) -> QgsCurvePolygon: ...
    def surfaceToPolygon(self) -> QgsPolygon: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkbPtr: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsTriangle': ...
    def geometryType(self) -> str: ...


class QgsVertexId(PyQt5.sip.wrapper):

    part = ... # type: int
    ring = ... # type: int
    type = ... # type: Qgis.VertexType
    vertex = ... # type: int

    @typing.overload
    def __init__(self, _part: int = ..., _ring: int = ..., _vertex: int = ..., _type: Qgis.VertexType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVertexId') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def vertexEqual(self, o: 'QgsVertexId') -> bool: ...
    def ringEqual(self, o: 'QgsVertexId') -> bool: ...
    def partEqual(self, o: 'QgsVertexId') -> bool: ...
    @typing.overload
    def isValid(self) -> bool: ...
    @typing.overload
    def isValid(self, geom: QgsAbstractGeometry) -> bool: ...


class QgsWkbPtr(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, p: bytes) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsWkbPtr') -> None: ...


class QgsConstWkbPtr(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, p: bytes) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsConstWkbPtr') -> None: ...


class QgsWkbTypes(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsWkbTypes') -> None: ...

    @staticmethod
    def to25D(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def dropM(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def dropZ(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def addM(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def addZ(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def hasM(type: Qgis.WkbType) -> bool: ...
    @staticmethod
    def hasZ(type: Qgis.WkbType) -> bool: ...
    @staticmethod
    def geometryDisplayString(type: Qgis.GeometryType) -> str: ...
    @staticmethod
    def translatedDisplayString(type: Qgis.WkbType) -> str: ...
    @staticmethod
    def displayString(type: Qgis.WkbType) -> str: ...
    @staticmethod
    def geometryType(type: Qgis.WkbType) -> Qgis.GeometryType: ...
    @staticmethod
    def coordDimensions(type: Qgis.WkbType) -> int: ...
    @staticmethod
    def wkbDimensions(type: Qgis.WkbType) -> int: ...
    @staticmethod
    def isCurvedType(type: Qgis.WkbType) -> bool: ...
    @staticmethod
    def isMultiType(type: Qgis.WkbType) -> bool: ...
    @staticmethod
    def isSingleType(type: Qgis.WkbType) -> bool: ...
    @staticmethod
    def parseType(wktStr: str) -> Qgis.WkbType: ...
    @staticmethod
    def zmType(type: Qgis.WkbType, hasZ: bool, hasM: bool) -> Qgis.WkbType: ...
    @staticmethod
    def flatType(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def linearType(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def curveType(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def promoteNonPointTypesToMulti(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def multiType(type: Qgis.WkbType) -> Qgis.WkbType: ...
    @staticmethod
    def singleType(type: Qgis.WkbType) -> Qgis.WkbType: ...


class QgsRay3D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, origin: QtGui.QVector3D, direction: QtGui.QVector3D) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRay3D') -> None: ...

    def angleToPoint(self, point: QtGui.QVector3D) -> float: ...
    def isInFront(self, point: QtGui.QVector3D) -> bool: ...
    def projectedPoint(self, point: QtGui.QVector3D) -> QtGui.QVector3D: ...
    def setDirection(self, direction: QtGui.QVector3D) -> None: ...
    def setOrigin(self, origin: QtGui.QVector3D) -> None: ...
    def direction(self) -> QtGui.QVector3D: ...
    def origin(self) -> QtGui.QVector3D: ...


class QgsAbstractBabelFormat(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractBabelFormat') -> None: ...

    @staticmethod
    def featureTypeToArgument(type: Qgis.GpsFeatureType) -> str: ...
    def exportCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def capabilities(self) -> Qgis.BabelFormatCapabilities: ...
    def name(self) -> str: ...


class QgsBabelSimpleImportFormat(QgsAbstractBabelFormat):

    @typing.overload
    def __init__(self, format: str, description: str, capabilities: typing.Union[Qgis.BabelFormatCapabilities, Qgis.BabelFormatCapability], extensions: typing.Iterable[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBabelSimpleImportFormat') -> None: ...

    def importCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def extensions(self) -> typing.List[str]: ...
    def description(self) -> str: ...


class QgsBabelFormatRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def reloadFromSettings(self) -> None: ...
    def devices(self) -> typing.Any: ...
    def deviceFormat(self, name: str) -> 'QgsBabelGpsDeviceFormat': ...
    def deviceNames(self) -> typing.List[str]: ...
    def importFileFilter(self) -> str: ...
    def importFormatByDescription(self, description: str) -> QgsBabelSimpleImportFormat: ...
    def importFormat(self, name: str) -> QgsBabelSimpleImportFormat: ...
    def importFormatNames(self) -> typing.List[str]: ...


class QgsBabelGpsDeviceFormat(QgsAbstractBabelFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, waypointDownloadCommand: str, waypointUploadCommand: str, routeDownloadCommand: str, routeUploadCommand: str, trackDownloadCommand: str, trackUploadCommand: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBabelGpsDeviceFormat') -> None: ...

    def exportCommand(self, babel: str, type: Qgis.GpsFeatureType, in_: str, out: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: str, type: Qgis.GpsFeatureType, in_: str, out: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...


class QgsGpsConnection(QtCore.QObject):

    class Status(int):
        NotConnected = ... # type: QgsGpsConnection.Status
        Connected = ... # type: QgsGpsConnection.Status
        DataReceived = ... # type: QgsGpsConnection.Status
        GPSDataReceived = ... # type: QgsGpsConnection.Status

    def __init__(self, dev: QtCore.QIODevice) -> None: ...

    def parseData(self) -> None: ...
    def positionChanged(self, point: QgsPoint) -> None: ...
    def fixStatusChanged(self, status: Qgis.GpsFixStatus) -> None: ...
    def nmeaSentenceReceived(self, substring: str) -> None: ...
    def stateChanged(self, info: 'QgsGpsInformation') -> None: ...
    def lastValidLocation(self) -> QgsPoint: ...
    def currentGPSInformation(self) -> 'QgsGpsInformation': ...
    def status(self) -> 'QgsGpsConnection.Status': ...
    def setSource(self, source: QtCore.QIODevice) -> None: ...
    def close(self) -> bool: ...
    def connect(self) -> bool: ...


class QgsNmeaConnection(QgsGpsConnection):

    def __init__(self, device: QtCore.QIODevice) -> None: ...

    def processHchdtSentence(self, data: str, len: int) -> None: ...
    def processHchdgSentence(self, data: str, len: int) -> None: ...
    def processHdtSentence(self, data: str, len: int) -> None: ...
    def processGstSentence(self, data: str, len: int) -> None: ...
    def processGsaSentence(self, data: str, len: int) -> None: ...
    def processVtgSentence(self, data: str, len: int) -> None: ...
    def processGsvSentence(self, data: str, len: int) -> None: ...
    def processRmcSentence(self, data: str, len: int) -> None: ...
    def processGgaSentence(self, data: str, len: int) -> None: ...
    def processStringBuffer(self) -> None: ...
    def parseData(self) -> None: ...


class QgsGpsdConnection(QgsNmeaConnection):

    def __init__(self, host: str, port: int, device: str) -> None: ...


class QgsGpsDetector(QtCore.QObject):

    def __init__(self, portName: str) -> None: ...

    def detectionFailed(self) -> None: ...
    def connDestroyed(self, a0: QtCore.QObject) -> None: ...
    @typing.overload
    def detected(self, a0: 'QgsGpsInformation') -> None: ...
    @typing.overload
    def detected(self, connection: QgsGpsConnection) -> None: ...
    def advance(self) -> None: ...
    @staticmethod
    def availablePorts() -> typing.List[typing.Tuple[str, str]]: ...


class QgsGpsInformation(PyQt5.sip.wrapper):

    direction = ... # type: float
    elevation = ... # type: float
    elevation_diff = ... # type: float
    fixMode = ... # type: str
    fixType = ... # type: int
    hacc = ... # type: float
    hdop = ... # type: float
    hvacc = ... # type: float
    latitude = ... # type: float
    longitude = ... # type: float
    pdop = ... # type: float
    quality = ... # type: int
    qualityIndicator = ... # type: Qgis.GpsQualityIndicator
    satInfoComplete = ... # type: bool
    satPrn = ... # type: typing.Iterable[int]
    satellitesInView = ... # type: typing.Iterable['QgsSatelliteInfo']
    satellitesUsed = ... # type: int
    speed = ... # type: float
    status = ... # type: str
    utcDateTime = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
    utcTime = ... # type: typing.Union[QtCore.QTime, datetime.time]
    vacc = ... # type: float
    vdop = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGpsInformation') -> None: ...

    def componentValue(self, component: Qgis.GpsInformationComponent) -> typing.Any: ...
    def qualityDescription(self) -> str: ...
    def fixStatus(self) -> Qgis.GpsFixStatus: ...
    def isValid(self) -> bool: ...
    def bestFixStatus(self) -> typing.Tuple[Qgis.GpsFixStatus, Qgis.GnssConstellation]: ...
    def constellationFixStatus(self) -> typing.Dict[Qgis.GnssConstellation, Qgis.GpsFixStatus]: ...


class QgsGpsLogger(QtCore.QObject):

    def __init__(self, connection: QgsGpsConnection, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addTrackVertex(self) -> None: ...
    def distanceAreaChanged(self) -> None: ...
    def stateChanged(self, info: QgsGpsInformation) -> None: ...
    def trackVertexAdded(self, vertex: QgsPoint) -> None: ...
    def trackReset(self) -> None: ...
    def trackIsEmptyChanged(self, isEmpty: bool) -> None: ...
    def componentValue(self, component: Qgis.GpsInformationComponent) -> typing.Any: ...
    def trackDistanceFromStart(self) -> float: ...
    def totalTrackLength(self) -> float: ...
    def updateGpsSettings(self) -> None: ...
    def setAutomaticallyAddTrackVertices(self, enabled: bool) -> None: ...
    def automaticallyAddTrackVertices(self) -> bool: ...
    def resetTrack(self) -> None: ...
    def lastMValue(self) -> float: ...
    def lastElevation(self) -> float: ...
    def trackStartTime(self) -> QtCore.QDateTime: ...
    def lastTimestamp(self) -> QtCore.QDateTime: ...
    def lastPosition(self) -> QgsPointXY: ...
    def currentGeometry(self, type: Qgis.WkbType) -> typing.Tuple[QgsGeometry, str]: ...
    def currentTrack(self) -> typing.List[QgsPoint]: ...
    def distanceArea(self) -> QgsDistanceArea: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def setEllipsoid(self, ellipsoid: str) -> None: ...
    def setConnection(self, connection: QgsGpsConnection) -> None: ...
    def connection(self) -> QgsGpsConnection: ...


class QgsSatelliteInfo(PyQt5.sip.wrapper):

    azimuth = ... # type: float
    elevation = ... # type: float
    id = ... # type: int
    inUse = ... # type: bool
    satType = ... # type: str
    signal = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSatelliteInfo') -> None: ...

    def constellation(self) -> Qgis.GnssConstellation: ...


class QgsVectorLayerGpsLogger(QgsGpsLogger):

    def __init__(self, connection: QgsGpsConnection, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def endCurrentTrack(self) -> None: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def destinationField(self, component: Qgis.GpsInformationComponent) -> str: ...
    def setDestinationField(self, component: Qgis.GpsInformationComponent, field: str) -> None: ...
    def tracksLayer(self) -> QgsVectorLayer: ...
    def pointsLayer(self) -> QgsVectorLayer: ...
    def setTracksLayer(self, layer: QgsVectorLayer) -> None: ...
    def setPointsLayer(self, layer: QgsVectorLayer) -> None: ...
    def setWriteToEditBuffer(self, buffer: bool) -> None: ...
    def writeToEditBuffer(self) -> bool: ...


class QgsCalloutPosition(PyQt5.sip.wrapper):

    featureId = ... # type: int
    layerID = ... # type: str
    providerID = ... # type: str

    @typing.overload
    def __init__(self, id: int, layer: str, providerId: str = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCalloutPosition') -> None: ...

    def setDestinationIsPinned(self, pinned: bool) -> None: ...
    def destinationIsPinned(self) -> bool: ...
    def setOriginIsPinned(self, pinned: bool) -> None: ...
    def originIsPinned(self) -> bool: ...
    def setDestination(self, destination: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def destination(self) -> QtCore.QPointF: ...
    def setOrigin(self, origin: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def origin(self) -> QtCore.QPointF: ...


class QgsLabeling(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabeling') -> None: ...


class QgsLabelingEngineSettings(PyQt5.sip.wrapper):

    class Search(int):
        Chain = ... # type: QgsLabelingEngineSettings.Search
        Popmusic_Tabu = ... # type: QgsLabelingEngineSettings.Search
        Popmusic_Chain = ... # type: QgsLabelingEngineSettings.Search
        Popmusic_Tabu_Chain = ... # type: QgsLabelingEngineSettings.Search
        Falp = ... # type: QgsLabelingEngineSettings.Search

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelingEngineSettings') -> None: ...

    def setPlacementVersion(self, version: Qgis.LabelPlacementEngineVersion) -> None: ...
    def placementVersion(self) -> Qgis.LabelPlacementEngineVersion: ...
    def setUnplacedLabelColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def unplacedLabelColor(self) -> QtGui.QColor: ...
    def setDefaultTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def defaultTextRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def writeSettingsToProject(self, project: 'QgsProject') -> None: ...
    def readSettingsFromProject(self, project: 'QgsProject') -> None: ...
    def searchMethod(self) -> 'QgsLabelingEngineSettings.Search': ...
    def setSearchMethod(self, s: 'QgsLabelingEngineSettings.Search') -> None: ...
    def setNumCandidatePositions(self, candPoint: int, candLine: int, candPolygon: int) -> None: ...
    def numCandidatePositions(self) -> typing.Tuple[int, int, int]: ...
    def setMaximumPolygonCandidatesPerCmSquared(self, candidates: float) -> None: ...
    def maximumPolygonCandidatesPerCmSquared(self) -> float: ...
    def setMaximumLineCandidatesPerCm(self, candidates: float) -> None: ...
    def maximumLineCandidatesPerCm(self) -> float: ...
    def setFlag(self, f: Qgis.LabelingFlag, enabled: bool = ...) -> None: ...
    def testFlag(self, f: Qgis.LabelingFlag) -> bool: ...
    def flags(self) -> Qgis.LabelingFlags: ...
    def setFlags(self, flags: typing.Union[Qgis.LabelingFlags, Qgis.LabelingFlag]) -> None: ...
    def clear(self) -> None: ...


class QgsLabelingResults(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def setMapSettings(self, settings: QgsMapSettings) -> None: ...
    def calloutsWithinRectangle(self, rectangle: QgsRectangle) -> typing.List[QgsCalloutPosition]: ...
    def groupedLabelPositions(self, groupId: int) -> typing.List['QgsLabelPosition']: ...
    def labelsWithinRect(self, r: QgsRectangle) -> typing.List['QgsLabelPosition']: ...
    def labelsAtPosition(self, p: QgsPointXY) -> typing.List['QgsLabelPosition']: ...
    def allLabels(self) -> typing.List['QgsLabelPosition']: ...


class QgsLabelLineSettings(PyQt5.sip.wrapper):

    class AnchorTextPoint(int):
        StartOfText = ... # type: QgsLabelLineSettings.AnchorTextPoint
        CenterOfText = ... # type: QgsLabelLineSettings.AnchorTextPoint
        EndOfText = ... # type: QgsLabelLineSettings.AnchorTextPoint
        FollowPlacement = ... # type: QgsLabelLineSettings.AnchorTextPoint

    class AnchorClipping(int):
        UseVisiblePartsOfLine = ... # type: QgsLabelLineSettings.AnchorClipping
        UseEntireLine = ... # type: QgsLabelLineSettings.AnchorClipping

    class AnchorType(int):
        HintOnly = ... # type: QgsLabelLineSettings.AnchorType
        Strict = ... # type: QgsLabelLineSettings.AnchorType

    class DirectionSymbolPlacement(int):
        SymbolLeftRight = ... # type: QgsLabelLineSettings.DirectionSymbolPlacement
        SymbolAbove = ... # type: QgsLabelLineSettings.DirectionSymbolPlacement
        SymbolBelow = ... # type: QgsLabelLineSettings.DirectionSymbolPlacement

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelLineSettings') -> None: ...

    def setAnchorTextPoint(self, point: 'QgsLabelLineSettings.AnchorTextPoint') -> None: ...
    def anchorTextPoint(self) -> 'QgsLabelLineSettings.AnchorTextPoint': ...
    def setAnchorClipping(self, clipping: 'QgsLabelLineSettings.AnchorClipping') -> None: ...
    def anchorClipping(self) -> 'QgsLabelLineSettings.AnchorClipping': ...
    def setAnchorType(self, type: 'QgsLabelLineSettings.AnchorType') -> None: ...
    def anchorType(self) -> 'QgsLabelLineSettings.AnchorType': ...
    def setLineAnchorPercent(self, percent: float) -> None: ...
    def lineAnchorPercent(self) -> float: ...
    def setOverrunDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def overrunDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOverrunDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def overrunDistanceUnit(self) -> Qgis.RenderUnit: ...
    def setOverrunDistance(self, distance: float) -> None: ...
    def overrunDistance(self) -> float: ...
    def setDirectionSymbolPlacement(self, placement: 'QgsLabelLineSettings.DirectionSymbolPlacement') -> None: ...
    def directionSymbolPlacement(self) -> 'QgsLabelLineSettings.DirectionSymbolPlacement': ...
    def setReverseDirectionSymbol(self, reversed: bool) -> None: ...
    def reverseDirectionSymbol(self) -> bool: ...
    def setRightDirectionSymbol(self, symbol: str) -> None: ...
    def rightDirectionSymbol(self) -> str: ...
    def setLeftDirectionSymbol(self, symbol: str) -> None: ...
    def leftDirectionSymbol(self) -> str: ...
    def setAddDirectionSymbol(self, enabled: bool) -> None: ...
    def addDirectionSymbol(self) -> bool: ...
    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setMergeLines(self, merge: bool) -> None: ...
    def mergeLines(self) -> bool: ...
    def setPlacementFlags(self, flags: typing.Union[Qgis.LabelLinePlacementFlags, Qgis.LabelLinePlacementFlag]) -> None: ...
    def placementFlags(self) -> Qgis.LabelLinePlacementFlags: ...


class QgsLabelObstacleSettings(PyQt5.sip.wrapper):

    class ObstacleType(int):
        PolygonInterior = ... # type: QgsLabelObstacleSettings.ObstacleType
        PolygonBoundary = ... # type: QgsLabelObstacleSettings.ObstacleType
        PolygonWhole = ... # type: QgsLabelObstacleSettings.ObstacleType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelObstacleSettings') -> None: ...

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def obstacleGeometry(self) -> QgsGeometry: ...
    def setObstacleGeometry(self, obstacleGeom: QgsGeometry) -> None: ...
    def setType(self, type: 'QgsLabelObstacleSettings.ObstacleType') -> None: ...
    def type(self) -> 'QgsLabelObstacleSettings.ObstacleType': ...
    def setFactor(self, factor: float) -> None: ...
    def factor(self) -> float: ...
    def setIsObstacle(self, isObstacle: bool) -> None: ...
    def isObstacle(self) -> bool: ...


class QgsLabelPlacementSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelPlacementSettings') -> None: ...

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setAllowDegradedPlacement(self, allow: bool) -> None: ...
    def allowDegradedPlacement(self) -> bool: ...
    def setOverlapHandling(self, handling: Qgis.LabelOverlapHandling) -> None: ...
    def overlapHandling(self) -> Qgis.LabelOverlapHandling: ...


class QgsLabelPosition(PyQt5.sip.wrapper):

    cornerPoints = ... # type: typing.Iterable[QgsPointXY]
    featureId = ... # type: int
    groupedLabelId = ... # type: int
    height = ... # type: float
    isDiagram = ... # type: bool
    isPinned = ... # type: bool
    isUnplaced = ... # type: bool
    labelFont = ... # type: QtGui.QFont
    labelGeometry = ... # type: QgsGeometry
    labelRect = ... # type: QgsRectangle
    labelText = ... # type: str
    layerID = ... # type: str
    providerID = ... # type: str
    rotation = ... # type: float
    upsideDown = ... # type: bool
    width = ... # type: float

    @typing.overload
    def __init__(self, id: int, r: float, corners: typing.Iterable[QgsPointXY], rect: QgsRectangle, w: float, h: float, layer: str, labeltext: str, labelfont: QtGui.QFont, upside_down: bool, diagram: bool = ..., pinned: bool = ..., providerId: str = ..., labelGeometry: QgsGeometry = ..., isUnplaced: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelPosition') -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsLabelSearchTree(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def setMapSettings(self, settings: QgsMapSettings) -> None: ...
    def calloutsInRectangle(self, rectangle: QgsRectangle) -> typing.List[QgsCalloutPosition]: ...
    def allLabels(self) -> typing.List[QgsLabelPosition]: ...
    def clear(self) -> None: ...


class QgsLabelThinningSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelThinningSettings') -> None: ...

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setMinimumFeatureSize(self, size: float) -> None: ...
    def minimumFeatureSize(self) -> float: ...
    def setMaximumNumberLabels(self, number: int) -> None: ...
    def maximumNumberLabels(self) -> int: ...
    def setLimitNumberLabelsEnabled(self, enabled: bool) -> None: ...
    def limitNumberOfLabelsEnabled(self) -> bool: ...


class QgsPalLayerSettings(PyQt5.sip.wrapper):

    class Property(int):
        Size = ... # type: QgsPalLayerSettings.Property
        Bold = ... # type: QgsPalLayerSettings.Property
        Italic = ... # type: QgsPalLayerSettings.Property
        Underline = ... # type: QgsPalLayerSettings.Property
        Color = ... # type: QgsPalLayerSettings.Property
        Strikeout = ... # type: QgsPalLayerSettings.Property
        Family = ... # type: QgsPalLayerSettings.Property
        FontStyle = ... # type: QgsPalLayerSettings.Property
        FontSizeUnit = ... # type: QgsPalLayerSettings.Property
        FontTransp = ... # type: QgsPalLayerSettings.Property
        FontOpacity = ... # type: QgsPalLayerSettings.Property
        FontCase = ... # type: QgsPalLayerSettings.Property
        FontLetterSpacing = ... # type: QgsPalLayerSettings.Property
        FontWordSpacing = ... # type: QgsPalLayerSettings.Property
        FontBlendMode = ... # type: QgsPalLayerSettings.Property
        FontStretchFactor = ... # type: QgsPalLayerSettings.Property
        MultiLineWrapChar = ... # type: QgsPalLayerSettings.Property
        AutoWrapLength = ... # type: QgsPalLayerSettings.Property
        MultiLineHeight = ... # type: QgsPalLayerSettings.Property
        MultiLineAlignment = ... # type: QgsPalLayerSettings.Property
        TextOrientation = ... # type: QgsPalLayerSettings.Property
        DirSymbDraw = ... # type: QgsPalLayerSettings.Property
        DirSymbLeft = ... # type: QgsPalLayerSettings.Property
        DirSymbRight = ... # type: QgsPalLayerSettings.Property
        DirSymbPlacement = ... # type: QgsPalLayerSettings.Property
        DirSymbReverse = ... # type: QgsPalLayerSettings.Property
        NumFormat = ... # type: QgsPalLayerSettings.Property
        NumDecimals = ... # type: QgsPalLayerSettings.Property
        NumPlusSign = ... # type: QgsPalLayerSettings.Property
        BufferDraw = ... # type: QgsPalLayerSettings.Property
        BufferSize = ... # type: QgsPalLayerSettings.Property
        BufferUnit = ... # type: QgsPalLayerSettings.Property
        BufferColor = ... # type: QgsPalLayerSettings.Property
        BufferTransp = ... # type: QgsPalLayerSettings.Property
        BufferOpacity = ... # type: QgsPalLayerSettings.Property
        BufferJoinStyle = ... # type: QgsPalLayerSettings.Property
        BufferBlendMode = ... # type: QgsPalLayerSettings.Property
        MaskEnabled = ... # type: QgsPalLayerSettings.Property
        MaskBufferSize = ... # type: QgsPalLayerSettings.Property
        MaskBufferUnit = ... # type: QgsPalLayerSettings.Property
        MaskOpacity = ... # type: QgsPalLayerSettings.Property
        MaskJoinStyle = ... # type: QgsPalLayerSettings.Property
        ShapeDraw = ... # type: QgsPalLayerSettings.Property
        ShapeKind = ... # type: QgsPalLayerSettings.Property
        ShapeSVGFile = ... # type: QgsPalLayerSettings.Property
        ShapeSizeType = ... # type: QgsPalLayerSettings.Property
        ShapeSizeX = ... # type: QgsPalLayerSettings.Property
        ShapeSizeY = ... # type: QgsPalLayerSettings.Property
        ShapeSizeUnits = ... # type: QgsPalLayerSettings.Property
        ShapeRotationType = ... # type: QgsPalLayerSettings.Property
        ShapeRotation = ... # type: QgsPalLayerSettings.Property
        ShapeOffset = ... # type: QgsPalLayerSettings.Property
        ShapeOffsetUnits = ... # type: QgsPalLayerSettings.Property
        ShapeRadii = ... # type: QgsPalLayerSettings.Property
        ShapeRadiiUnits = ... # type: QgsPalLayerSettings.Property
        ShapeTransparency = ... # type: QgsPalLayerSettings.Property
        ShapeOpacity = ... # type: QgsPalLayerSettings.Property
        ShapeBlendMode = ... # type: QgsPalLayerSettings.Property
        ShapeFillColor = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeColor = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeWidth = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeWidthUnits = ... # type: QgsPalLayerSettings.Property
        ShapeJoinStyle = ... # type: QgsPalLayerSettings.Property
        ShadowDraw = ... # type: QgsPalLayerSettings.Property
        ShadowUnder = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetAngle = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetDist = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetUnits = ... # type: QgsPalLayerSettings.Property
        ShadowRadius = ... # type: QgsPalLayerSettings.Property
        ShadowRadiusUnits = ... # type: QgsPalLayerSettings.Property
        ShadowTransparency = ... # type: QgsPalLayerSettings.Property
        ShadowOpacity = ... # type: QgsPalLayerSettings.Property
        ShadowScale = ... # type: QgsPalLayerSettings.Property
        ShadowColor = ... # type: QgsPalLayerSettings.Property
        ShadowBlendMode = ... # type: QgsPalLayerSettings.Property
        CentroidWhole = ... # type: QgsPalLayerSettings.Property
        OffsetQuad = ... # type: QgsPalLayerSettings.Property
        OffsetXY = ... # type: QgsPalLayerSettings.Property
        OffsetUnits = ... # type: QgsPalLayerSettings.Property
        LabelDistance = ... # type: QgsPalLayerSettings.Property
        DistanceUnits = ... # type: QgsPalLayerSettings.Property
        OffsetRotation = ... # type: QgsPalLayerSettings.Property
        CurvedCharAngleInOut = ... # type: QgsPalLayerSettings.Property
        PositionX = ... # type: QgsPalLayerSettings.Property
        PositionY = ... # type: QgsPalLayerSettings.Property
        PositionPoint = ... # type: QgsPalLayerSettings.Property
        Hali = ... # type: QgsPalLayerSettings.Property
        Vali = ... # type: QgsPalLayerSettings.Property
        Rotation = ... # type: QgsPalLayerSettings.Property
        LabelRotation = ... # type: QgsPalLayerSettings.Property
        RepeatDistance = ... # type: QgsPalLayerSettings.Property
        RepeatDistanceUnit = ... # type: QgsPalLayerSettings.Property
        Priority = ... # type: QgsPalLayerSettings.Property
        PredefinedPositionOrder = ... # type: QgsPalLayerSettings.Property
        LinePlacementOptions = ... # type: QgsPalLayerSettings.Property
        OverrunDistance = ... # type: QgsPalLayerSettings.Property
        LabelAllParts = ... # type: QgsPalLayerSettings.Property
        PolygonLabelOutside = ... # type: QgsPalLayerSettings.Property
        LineAnchorPercent = ... # type: QgsPalLayerSettings.Property
        LineAnchorClipping = ... # type: QgsPalLayerSettings.Property
        LineAnchorType = ... # type: QgsPalLayerSettings.Property
        LineAnchorTextPoint = ... # type: QgsPalLayerSettings.Property
        ScaleVisibility = ... # type: QgsPalLayerSettings.Property
        MinScale = ... # type: QgsPalLayerSettings.Property
        MinimumScale = ... # type: QgsPalLayerSettings.Property
        MaxScale = ... # type: QgsPalLayerSettings.Property
        MaximumScale = ... # type: QgsPalLayerSettings.Property
        FontLimitPixel = ... # type: QgsPalLayerSettings.Property
        FontMinPixel = ... # type: QgsPalLayerSettings.Property
        FontMaxPixel = ... # type: QgsPalLayerSettings.Property
        IsObstacle = ... # type: QgsPalLayerSettings.Property
        ObstacleFactor = ... # type: QgsPalLayerSettings.Property
        ZIndex = ... # type: QgsPalLayerSettings.Property
        CalloutDraw = ... # type: QgsPalLayerSettings.Property
        AllowDegradedPlacement = ... # type: QgsPalLayerSettings.Property
        OverlapHandling = ... # type: QgsPalLayerSettings.Property
        Show = ... # type: QgsPalLayerSettings.Property
        AlwaysShow = ... # type: QgsPalLayerSettings.Property

    class ObstacleType(int):
        PolygonInterior = ... # type: QgsPalLayerSettings.ObstacleType
        PolygonBoundary = ... # type: QgsPalLayerSettings.ObstacleType
        PolygonWhole = ... # type: QgsPalLayerSettings.ObstacleType

    class DirectionSymbols(int):
        SymbolLeftRight = ... # type: QgsPalLayerSettings.DirectionSymbols
        SymbolAbove = ... # type: QgsPalLayerSettings.DirectionSymbols
        SymbolBelow = ... # type: QgsPalLayerSettings.DirectionSymbols

    class LinePlacementFlags(int):
        OnLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        AboveLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        BelowLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        MapOrientation = ... # type: QgsPalLayerSettings.LinePlacementFlags

    angleOffset = ... # type: float
    autoWrapLength = ... # type: int
    centroidInside = ... # type: bool
    centroidWhole = ... # type: bool
    ct = ... # type: 'QgsCoordinateTransform'
    decimals = ... # type: int
    dist = ... # type: float
    distMapUnitScale = ... # type: QgsMapUnitScale
    distUnits = ... # type: Qgis.RenderUnit
    drawLabels = ... # type: bool
    extentGeom = ... # type: QgsGeometry
    fieldIndex = ... # type: int
    fieldName = ... # type: str
    fitInPolygonOnly = ... # type: bool
    fontLimitPixelSize = ... # type: bool
    fontMaxPixelSize = ... # type: int
    fontMinPixelSize = ... # type: int
    formatNumbers = ... # type: bool
    geometryGenerator = ... # type: str
    geometryGeneratorEnabled = ... # type: bool
    geometryGeneratorType = ... # type: Qgis.GeometryType
    isExpression = ... # type: bool
    labelOffsetMapUnitScale = ... # type: QgsMapUnitScale
    labelPerPart = ... # type: bool
    layerType = ... # type: Qgis.GeometryType
    mCurFeat = ... # type: QgsFeature
    mCurFields = ... # type: QgsFields
    mFeatsRegPal = ... # type: int
    mFeatsSendingToPal = ... # type: int
    mFeaturesToLabel = ... # type: int
    maxCurvedCharAngleIn = ... # type: float
    maxCurvedCharAngleOut = ... # type: float
    maximumScale = ... # type: float
    minimumScale = ... # type: float
    multilineAlign = ... # type: Qgis.LabelMultiLineAlignment
    offsetType = ... # type: Qgis.LabelOffsetType
    offsetUnits = ... # type: Qgis.RenderUnit
    placement = ... # type: Qgis.LabelPlacement
    plusSign = ... # type: bool
    preserveRotation = ... # type: bool
    previewBkgrdColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    priority = ... # type: int
    ptOne = ... # type: QgsPointXY
    ptZero = ... # type: QgsPointXY
    quadOffset = ... # type: Qgis.LabelQuadrantPosition
    repeatDistance = ... # type: float
    repeatDistanceMapUnitScale = ... # type: QgsMapUnitScale
    repeatDistanceUnit = ... # type: Qgis.RenderUnit
    scaleVisibility = ... # type: bool
    substitutions = ... # type: QgsStringReplacementCollection
    upsidedownLabels = ... # type: Qgis.UpsideDownLabelHandling
    useMaxLineLengthForAutoWrap = ... # type: bool
    useSubstitutions = ... # type: bool
    wrapChar = ... # type: str
    xOffset = ... # type: float
    xform = ... # type: QgsMapToPixel
    yOffset = ... # type: float
    zIndex = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, s: 'QgsPalLayerSettings') -> None: ...

    def setUnplacedVisibility(self, visibility: Qgis.UnplacedLabelVisibility) -> None: ...
    def unplacedVisibility(self) -> Qgis.UnplacedLabelVisibility: ...
    @staticmethod
    def labelSettingsPreviewPixmap(settings: 'QgsPalLayerSettings', size: QtCore.QSize, previewText: str = ..., padding: int = ..., screen: QgsScreenProperties = ...) -> QtGui.QPixmap: ...
    def setPlacementSettings(self, settings: QgsLabelPlacementSettings) -> None: ...
    def placementSettings(self) -> QgsLabelPlacementSettings: ...
    def setThinningSettings(self, settings: QgsLabelThinningSettings) -> None: ...
    def thinningSettings(self) -> QgsLabelThinningSettings: ...
    def setObstacleSettings(self, settings: QgsLabelObstacleSettings) -> None: ...
    def obstacleSettings(self) -> QgsLabelObstacleSettings: ...
    def setLineSettings(self, settings: QgsLabelLineSettings) -> None: ...
    def lineSettings(self) -> QgsLabelLineSettings: ...
    def setCallout(self, callout: QgsCallout) -> None: ...
    def callout(self) -> QgsCallout: ...
    def setFormat(self, format: 'QgsTextFormat') -> None: ...
    def format(self) -> 'QgsTextFormat': ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def registerFeature(self, f: QgsFeature, context: QgsRenderContext) -> None: ...
    def calculateLabelSize(self, fm: QtGui.QFontMetricsF, text: str, f: typing.Optional[QgsFeature] = ..., context: typing.Optional[QgsRenderContext] = ...) -> typing.Tuple[float, float, float, float]: ...
    def legendString(self) -> str: ...
    def setLegendString(self, legendString: str) -> None: ...
    def _setDisplayAll(self, display: bool) -> None: ...
    def _getDisplayAll(self) -> bool: ...
    def _setOverrunDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def _getOverrunDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def _setOverrunDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def _getOverrunDistanceUnit(self) -> Qgis.RenderUnit: ...
    def _setOverrunDistance(self, distance: float) -> None: ...
    def _getOverrunDistance(self) -> float: ...
    def _setPlaceDirectionSymbol(self, placement: 'QgsPalLayerSettings.DirectionSymbols') -> None: ...
    def _getPlaceDirectionSymbol(self) -> 'QgsPalLayerSettings.DirectionSymbols': ...
    def _setReverseDirectionSymbol(self, reverse: bool) -> None: ...
    def _getReverseDirectionSymbol(self) -> bool: ...
    def _setRightDirectionSymbol(self, symbol: str) -> None: ...
    def _getRightDirectionSymbol(self) -> str: ...
    def _setLeftDirectionSymbol(self, symbol: str) -> None: ...
    def _getLeftDirectionSymbol(self) -> str: ...
    def _setAddDirectionSymbol(self, add: bool) -> None: ...
    def _getAddDirectionSymbol(self) -> bool: ...
    def _setMergeLines(self, merge: bool) -> None: ...
    def _getMergeLines(self) -> bool: ...
    def _setLinePlacementFlags(self, flags: int) -> None: ...
    def _getLinePlacementFlags(self) -> int: ...
    def _setObstacleType(self, type: 'QgsPalLayerSettings.ObstacleType') -> None: ...
    def _getObstacleType(self) -> 'QgsPalLayerSettings.ObstacleType': ...
    def _setObstacleFactor(self, factor: float) -> None: ...
    def _getObstacleFactor(self) -> float: ...
    def _setIsObstacle(self, obstacle: bool) -> None: ...
    def _getIsObstacle(self) -> bool: ...
    def _setMinFeatureSize(self, size: float) -> None: ...
    def _minFeatureSize(self) -> float: ...
    def _setMaxNumLabels(self, max: int) -> None: ...
    def _maxNumLabels(self) -> int: ...
    def _setLimitNumLabels(self, limit: bool) -> None: ...
    def _limitNumLabels(self) -> bool: ...
    def setRotationUnit(self, angleUnit: Qgis.AngleUnit) -> None: ...
    def rotationUnit(self) -> Qgis.AngleUnit: ...
    def setPolygonPlacementFlags(self, flags: typing.Union[Qgis.LabelPolygonPlacementFlags, Qgis.LabelPolygonPlacementFlag]) -> None: ...
    def polygonPlacementFlags(self) -> Qgis.LabelPolygonPlacementFlags: ...
    def getLabelExpression(self) -> QgsExpression: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def containsAdvancedEffects(self) -> bool: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def prepare(self, context: QgsRenderContext, attributeNames: typing.Iterable[str], fields: QgsFields, mapSettings: QgsMapSettings, crs: 'QgsCoordinateReferenceSystem') -> typing.Tuple[bool, typing.Set[str]]: ...
    @property
    def displayAll(self) -> bool: ...
    @displayAll.setter
    def displayAll(self, display: bool) -> None: ...
    @property
    def overrunDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    @overrunDistanceMapUnitScale.setter
    def overrunDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    @property
    def overrunDistanceUnit(self) -> Qgis.RenderUnit: ...
    @overrunDistanceUnit.setter
    def overrunDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    @property
    def overrunDistance(self) -> float: ...
    @overrunDistance.setter
    def overrunDistance(self, distance: float) -> None: ...
    @property
    def placeDirectionSymbol(self) -> 'QgsPalLayerSettings.DirectionSymbols': ...
    @placeDirectionSymbol.setter
    def placeDirectionSymbol(self, placement: 'QgsPalLayerSettings.DirectionSymbols') -> None: ...
    @property
    def reverseDirectionSymbol(self) -> bool: ...
    @reverseDirectionSymbol.setter
    def reverseDirectionSymbol(self, reverse: bool) -> None: ...
    @property
    def rightDirectionSymbol(self) -> str: ...
    @rightDirectionSymbol.setter
    def rightDirectionSymbol(self, symbol: str) -> None: ...
    @property
    def leftDirectionSymbol(self) -> str: ...
    @leftDirectionSymbol.setter
    def leftDirectionSymbol(self, symbol: str) -> None: ...
    @property
    def addDirectionSymbol(self) -> bool: ...
    @addDirectionSymbol.setter
    def addDirectionSymbol(self, add: bool) -> None: ...
    @property
    def mergeLines(self) -> bool: ...
    @mergeLines.setter
    def mergeLines(self, merge: bool) -> None: ...
    @property
    def placementFlags(self) -> int: ...
    @placementFlags.setter
    def placementFlags(self, flags: int) -> None: ...
    @property
    def obstacleType(self) -> 'QgsPalLayerSettings.ObstacleType': ...
    @obstacleType.setter
    def obstacleType(self, type: 'QgsPalLayerSettings.ObstacleType') -> None: ...
    @property
    def obstacleFactor(self) -> float: ...
    @obstacleFactor.setter
    def obstacleFactor(self, factor: float) -> None: ...
    @property
    def obstacle(self) -> bool: ...
    @obstacle.setter
    def obstacle(self, obstacle: bool) -> None: ...
    @property
    def minFeatureSize(self) -> float: ...
    @minFeatureSize.setter
    def minFeatureSize(self, size: float) -> None: ...
    @property
    def maxNumLabels(self) -> int: ...
    @maxNumLabels.setter
    def maxNumLabels(self, max: int) -> None: ...
    @property
    def limitNumLabels(self) -> bool: ...
    @limitNumLabels.setter
    def limitNumLabels(self, limit: bool) -> None: ...


class QgsLabelCandidate(PyQt5.sip.wrapper):

    cost = ... # type: float
    rect = ... # type: QtCore.QRectF

    @typing.overload
    def __init__(self, r: QtCore.QRectF, c: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelCandidate') -> None: ...


class QgsPalLabeling(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPalLabeling') -> None: ...

    @staticmethod
    def splitToGraphemes(text: str) -> typing.List[str]: ...
    @staticmethod
    def splitToLines(text: str, wrapCharacter: str, autoWrapLength: int = ..., useMaxLineLengthWhenAutoWrapping: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def geometryRequiresPreparation(geometry: QgsGeometry, context: QgsRenderContext, ct: 'QgsCoordinateTransform', clipGeometry: QgsGeometry = ..., mergeLines: bool = ...) -> bool: ...
    @staticmethod
    def prepareGeometry(geometry: QgsGeometry, context: QgsRenderContext, ct: 'QgsCoordinateTransform', clipGeometry: QgsGeometry = ..., mergeLines: bool = ...) -> QgsGeometry: ...
    @staticmethod
    def staticWillUseLayer(layer: QgsMapLayer) -> bool: ...


class QgsAbstractVectorLayerLabeling(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def writeTextSymbolizer(self, parent: QtXml.QDomNode, settings: QgsPalLayerSettings, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def defaultSettingsForLayer(layer: QgsVectorLayer) -> QgsPalLayerSettings: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsAbstractVectorLayerLabeling': ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: QgsPalLayerSettings, providerId: str = ...) -> None: ...
    def settings(self, providerId: str = ...) -> QgsPalLayerSettings: ...
    def subProviders(self) -> typing.List[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> 'QgsAbstractVectorLayerLabeling': ...
    def type(self) -> str: ...


class QgsRuleBasedLabeling(QgsAbstractVectorLayerLabeling):

    class Rule(PyQt5.sip.wrapper):

        class RegisterResult(int):
            Filtered = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult
            Inactive = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult
            Registered = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult

        def __init__(self, settings: QgsPalLayerSettings, maximumScale: float = ..., minimumScale: float = ..., filterExp: str = ..., description: str = ..., elseRule: bool = ...) -> None: ...

        def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
        def requiresAdvancedEffects(self) -> bool: ...
        def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
        @staticmethod
        def create(ruleElem: QtXml.QDomElement, context: QgsReadWriteContext, reuseId: bool = ...) -> 'QgsRuleBasedLabeling.Rule': ...
        def clone(self) -> 'QgsRuleBasedLabeling.Rule': ...
        def findRuleByKey(self, key: str) -> 'QgsRuleBasedLabeling.Rule': ...
        def removeChildAt(self, i: int) -> None: ...
        def insertChild(self, i: int, rule: 'QgsRuleBasedLabeling.Rule') -> None: ...
        def appendChild(self, rule: 'QgsRuleBasedLabeling.Rule') -> None: ...
        def parent(self) -> 'QgsRuleBasedLabeling.Rule': ...
        def descendants(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def children(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def setRuleKey(self, key: str) -> None: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: str) -> None: ...
        def setFilterExpression(self, filterExp: str) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setSettings(self, settings: QgsPalLayerSettings) -> None: ...
        def ruleKey(self) -> str: ...
        def isElse(self) -> bool: ...
        def active(self) -> bool: ...
        def description(self) -> str: ...
        def filterExpression(self) -> str: ...
        def minimumScale(self) -> float: ...
        def maximumScale(self) -> float: ...
        def dependsOnScale(self) -> bool: ...
        def settings(self) -> QgsPalLayerSettings: ...

    def __init__(self, root: 'QgsRuleBasedLabeling.Rule') -> None: ...

    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: QgsPalLayerSettings, providerId: str = ...) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def settings(self, providerId: str = ...) -> QgsPalLayerSettings: ...
    def subProviders(self) -> typing.List[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> 'QgsRuleBasedLabeling': ...
    def type(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsRuleBasedLabeling': ...
    def rootRule(self) -> 'QgsRuleBasedLabeling.Rule': ...


class QgsVectorLayerSimpleLabeling(QgsAbstractVectorLayerLabeling):

    def __init__(self, settings: QgsPalLayerSettings) -> None: ...

    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsVectorLayerSimpleLabeling': ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: QgsPalLayerSettings, providerId: str = ...) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def settings(self, providerId: str = ...) -> QgsPalLayerSettings: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> QgsAbstractVectorLayerLabeling: ...
    def type(self) -> str: ...


class QgsLayerTreeModelLegendNode(QtCore.QObject):

    class NodeTypes(int):
        SimpleLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        SymbolLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        RasterSymbolLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        ImageLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        WmsLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        DataDefinedSizeLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        EmbeddedWidget = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        ColorRampLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes

    class LegendNodeRoles(int):
        RuleKeyRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles
        ParentRuleKeyRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles
        NodeTypeRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles

    class ItemContext(PyQt5.sip.wrapper):

        columnLeft = ... # type: float
        columnRight = ... # type: float
        context = ... # type: QgsRenderContext
        labelXOffset = ... # type: float
        maxSiblingSymbolWidth = ... # type: float
        painter = ... # type: QtGui.QPainter
        patchShape = ... # type: 'QgsLegendPatchShape'
        patchSize = ... # type: QtCore.QSizeF
        point = ... # type: typing.Union[QtCore.QPointF, QtCore.QPoint, float]
        screenProperties = ... # type: QgsScreenProperties
        textDocument = ... # type: 'QgsTextDocument'
        textDocumentMetrics = ... # type: 'QgsTextDocumentMetrics'
        top = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeModelLegendNode.ItemContext') -> None: ...

    class ItemMetrics(PyQt5.sip.wrapper):

        labelSize = ... # type: QtCore.QSizeF
        symbolSize = ... # type: QtCore.QSizeF

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeModelLegendNode.ItemMetrics') -> None: ...

    def __init__(self, nodeL: 'QgsLayerTreeLayer', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def createTemporaryRenderContext(self) -> QgsRenderContext: ...
    def sizeChanged(self) -> None: ...
    def dataChanged(self) -> None: ...
    def toggleAllItems(self) -> None: ...
    def uncheckAllItems(self) -> None: ...
    def checkAllItems(self) -> None: ...
    def __repr__(self) -> typing.Any: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext', symbolSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext', itemHeight: float) -> QtCore.QSizeF: ...
    def exportToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def draw(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext') -> 'QgsLayerTreeModelLegendNode.ItemMetrics': ...
    def invalidateMapBasedData(self) -> None: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def columnBreak(self) -> bool: ...
    def setColumnBreak(self, breakBeforeNode: bool) -> None: ...
    def setUserPatchSize(self, size: QtCore.QSizeF) -> None: ...
    def userPatchSize(self) -> QtCore.QSizeF: ...
    def setUserLabel(self, userLabel: str) -> None: ...
    def userLabel(self) -> str: ...
    def setEmbeddedInParent(self, embedded: bool) -> None: ...
    def isEmbeddedInParent(self) -> bool: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...
    def model(self) -> 'QgsLayerTreeModel': ...
    def layerNode(self) -> 'QgsLayerTreeLayer': ...


class QgsColorRampLegendNode(QgsLayerTreeModelLegendNode):

    @typing.overload
    def __init__(self, nodeLayer: 'QgsLayerTreeLayer', ramp: QgsColorRamp, minimumLabel: str, maximumLabel: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, nodeLayer: 'QgsLayerTreeLayer', ramp: QgsColorRamp, settings: 'QgsColorRampLegendNodeSettings', minimumValue: float, maximumValue: float, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setSettings(self, settings: 'QgsColorRampLegendNodeSettings') -> None: ...
    def settings(self) -> 'QgsColorRampLegendNodeSettings': ...
    def ramp(self) -> QgsColorRamp: ...
    def iconSize(self) -> QtCore.QSize: ...
    def setIconSize(self, size: QtCore.QSize) -> None: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, symbolSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsColorRampLegendNodeSettings(PyQt5.sip.wrapper):

    class Direction(int):
        MinimumToMaximum = ... # type: QgsColorRampLegendNodeSettings.Direction
        MaximumToMinimum = ... # type: QgsColorRampLegendNodeSettings.Direction

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampLegendNodeSettings') -> None: ...

    def setUseContinuousLegend(self, useContinuousLegend: bool) -> None: ...
    def useContinuousLegend(self) -> bool: ...
    def setOrientation(self, orientation: QtCore.Qt.Orientation) -> None: ...
    def orientation(self) -> QtCore.Qt.Orientation: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setSuffix(self, suffix: str) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def prefix(self) -> str: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setMaximumLabel(self, label: str) -> None: ...
    def maximumLabel(self) -> str: ...
    def setMinimumLabel(self, label: str) -> None: ...
    def minimumLabel(self) -> str: ...
    def setDirection(self, direction: 'QgsColorRampLegendNodeSettings.Direction') -> None: ...
    def direction(self) -> 'QgsColorRampLegendNodeSettings.Direction': ...


class QgsLayerTreeNode(QtCore.QObject):

    class NodeType(int):
        NodeGroup = ... # type: QgsLayerTreeNode.NodeType
        NodeLayer = ... # type: QgsLayerTreeNode.NodeType

    @typing.overload
    def __init__(self, t: 'QgsLayerTreeNode.NodeType', checked: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLayerTreeNode') -> None: ...

    def removeChildrenPrivate(self, from_: int, count: int, destroy: bool = ...) -> None: ...
    def insertChildrenPrivate(self, index: int, nodes: typing.Iterable['QgsLayerTreeNode']) -> None: ...
    def writeCommonXml(self, element: QtXml.QDomElement) -> None: ...
    def readCommonXml(self, element: QtXml.QDomElement) -> None: ...
    def nameChanged(self, node: 'QgsLayerTreeNode', name: str) -> None: ...
    def expandedChanged(self, node: 'QgsLayerTreeNode', expanded: bool) -> None: ...
    def customPropertyChanged(self, node: 'QgsLayerTreeNode', key: str) -> None: ...
    def visibilityChanged(self, node: 'QgsLayerTreeNode') -> None: ...
    def removedChildren(self, node: 'QgsLayerTreeNode', indexFrom: int, indexTo: int) -> None: ...
    def willRemoveChildren(self, node: 'QgsLayerTreeNode', indexFrom: int, indexTo: int) -> None: ...
    def addedChildren(self, node: 'QgsLayerTreeNode', indexFrom: int, indexTo: int) -> None: ...
    def willAddChildren(self, node: 'QgsLayerTreeNode', indexFrom: int, indexTo: int) -> None: ...
    def takeChild(self, node: 'QgsLayerTreeNode') -> bool: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def setExpanded(self, expanded: bool) -> None: ...
    def isExpanded(self) -> bool: ...
    def depth(self) -> int: ...
    def checkedLayers(self) -> typing.List[QgsMapLayer]: ...
    def isItemVisibilityUncheckedRecursive(self) -> bool: ...
    def isItemVisibilityCheckedRecursive(self) -> bool: ...
    def setItemVisibilityCheckedParentRecursive(self, checked: bool) -> None: ...
    def setItemVisibilityCheckedRecursive(self, checked: bool) -> None: ...
    def setItemVisibilityChecked(self, checked: bool) -> None: ...
    def itemVisibilityChecked(self) -> bool: ...
    def isVisible(self) -> bool: ...
    def resolveReferences(self, project: 'QgsProject', looseMatching: bool = ...) -> None: ...
    def clone(self) -> 'QgsLayerTreeNode': ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTreeNode': ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: 'QgsProject') -> 'QgsLayerTreeNode': ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def children(self) -> typing.List['QgsLayerTreeNode']: ...
    def parent(self) -> 'QgsLayerTreeNode': ...
    def nodeType(self) -> 'QgsLayerTreeNode.NodeType': ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTreeGroup(QgsLayerTreeNode):

    def __init__(self, name: str = ..., checked: bool = ...) -> None: ...

    def updateChildVisibilityMutuallyExclusive(self) -> None: ...
    def nodeVisibilityChanged(self, node: QgsLayerTreeNode) -> None: ...
    def convertToGroupLayer(self, options: QgsGroupLayer.LayerOptions) -> QgsGroupLayer: ...
    def setGroupLayer(self, layer: QgsGroupLayer) -> None: ...
    def groupLayer(self) -> QgsGroupLayer: ...
    def setIsMutuallyExclusive(self, enabled: bool, initialChildIndex: int = ...) -> None: ...
    def isMutuallyExclusive(self) -> bool: ...
    def setItemVisibilityCheckedRecursive(self, checked: bool) -> None: ...
    def resolveReferences(self, project: 'QgsProject', looseMatching: bool = ...) -> None: ...
    def clone(self) -> 'QgsLayerTreeGroup': ...
    def dump(self) -> str: ...
    def readChildrenFromXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTreeGroup': ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: 'QgsProject', context: QgsReadWriteContext) -> 'QgsLayerTreeGroup': ...
    def findGroups(self, recursive: bool = ...) -> typing.List['QgsLayerTreeGroup']: ...
    def findGroup(self, name: str) -> 'QgsLayerTreeGroup': ...
    def findLayerIds(self) -> typing.List[str]: ...
    def reorderGroupLayers(self, order: typing.Iterable[QgsMapLayer]) -> None: ...
    def findLayers(self) -> typing.List['QgsLayerTreeLayer']: ...
    @typing.overload
    def findLayer(self, layer: QgsMapLayer) -> 'QgsLayerTreeLayer': ...
    @typing.overload
    def findLayer(self, layerId: str) -> 'QgsLayerTreeLayer': ...
    def removeAllChildren(self) -> None: ...
    def removeChildrenGroupWithoutLayers(self) -> None: ...
    def removeChildren(self, from_: int, count: int) -> None: ...
    def removeLayer(self, layer: QgsMapLayer) -> None: ...
    def removeChildNode(self, node: QgsLayerTreeNode) -> None: ...
    def addChildNode(self, node: QgsLayerTreeNode) -> None: ...
    def insertChildNode(self, index: int, node: QgsLayerTreeNode) -> None: ...
    def insertChildNodes(self, index: int, nodes: typing.Iterable[QgsLayerTreeNode]) -> None: ...
    def addLayer(self, layer: QgsMapLayer) -> 'QgsLayerTreeLayer': ...
    def insertLayer(self, index: int, layer: QgsMapLayer) -> 'QgsLayerTreeLayer': ...
    def addGroup(self, name: str) -> 'QgsLayerTreeGroup': ...
    def insertGroup(self, index: int, name: str) -> 'QgsLayerTreeGroup': ...
    def setName(self, n: str) -> None: ...
    def name(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTree(QgsLayerTreeGroup):

    def __init__(self) -> None: ...

    def hasCustomLayerOrderChanged(self, hasCustomLayerOrder: bool) -> None: ...
    def layerOrderChanged(self) -> None: ...
    def customLayerOrderChanged(self) -> None: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsLayerTree': ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readLayerOrderFromXml(self, doc: QtXml.QDomElement) -> None: ...
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTree': ...
    def setHasCustomLayerOrder(self, hasCustomLayerOrder: bool) -> None: ...
    def hasCustomLayerOrder(self) -> bool: ...
    def layerOrder(self) -> typing.List[QgsMapLayer]: ...
    def setCustomLayerOrderByIds(self, customLayerOrder: typing.Iterable[str]) -> None: ...
    def setCustomLayerOrder(self, customLayerOrder: typing.Iterable[QgsMapLayer]) -> None: ...
    def customLayerOrder(self) -> typing.List[QgsMapLayer]: ...
    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def isLayer(node: QgsLayerTreeNode) -> bool: ...
    @staticmethod
    def isGroup(node: QgsLayerTreeNode) -> bool: ...


class QgsLayerTreeFilterSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, settings: QgsMapSettings) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLayerTreeFilterSettings') -> None: ...

    def layers(self) -> typing.List[QgsMapLayer]: ...
    def combinedVisibleExtentForLayer(self, layer: QgsMapLayer) -> QgsGeometry: ...
    def addVisibleExtentForLayer(self, layer: QgsMapLayer, polygon: QgsReferencedGeometry) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.LayerTreeFilterFlags, Qgis.LayerTreeFilterFlag]) -> None: ...
    def flags(self) -> Qgis.LayerTreeFilterFlags: ...
    def setFilterPolygon(self, polygon: QgsGeometry) -> None: ...
    def filterPolygon(self) -> QgsGeometry: ...
    def layerFilterExpression(self, layerId: str) -> str: ...
    def setLayerFilterExpressionsFromLayerTree(self, tree: QgsLayerTree) -> None: ...
    def setLayerFilterExpressions(self, expressions: typing.Dict[str, str]) -> None: ...
    def layerFilterExpressions(self) -> typing.Dict[str, str]: ...
    def mapSettings(self) -> QgsMapSettings: ...


class QgsLayerTreeLayer(QgsLayerTreeNode):

    class LegendNodesSplitBehavior(int):
        UseDefaultLegendSetting = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior
        AllowSplittingLegendNodesOverMultipleColumns = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior
        PreventSplittingLegendNodesOverMultipleColumns = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior

    @typing.overload
    def __init__(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def __init__(self, layerId: str, name: str = ..., source: str = ..., provider: str = ...) -> None: ...

    def attachToLayer(self) -> None: ...
    def layerWillBeUnloaded(self) -> None: ...
    def layerLoaded(self) -> None: ...
    def setLegendSplitBehavior(self, behavior: 'QgsLayerTreeLayer.LegendNodesSplitBehavior') -> None: ...
    def legendSplitBehavior(self) -> 'QgsLayerTreeLayer.LegendNodesSplitBehavior': ...
    def setPatchSize(self, size: QtCore.QSizeF) -> None: ...
    def patchSize(self) -> QtCore.QSizeF: ...
    def setPatchShape(self, shape: 'QgsLegendPatchShape') -> None: ...
    def patchShape(self) -> 'QgsLegendPatchShape': ...
    def labelExpression(self) -> str: ...
    def setLabelExpression(self, expression: str) -> None: ...
    def resolveReferences(self, project: 'QgsProject', looseMatching: bool = ...) -> None: ...
    def clone(self) -> 'QgsLayerTreeLayer': ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTreeLayer': ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: 'QgsProject', context: QgsReadWriteContext) -> 'QgsLayerTreeLayer': ...
    def useLayerName(self) -> bool: ...
    def setUseLayerName(self, use: bool = ...) -> None: ...
    def setName(self, n: str) -> None: ...
    def name(self) -> str: ...
    def layer(self) -> QgsMapLayer: ...
    def layerId(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTreeModel(QtCore.QAbstractItemModel):

    class Flag(int):
        ShowLegend = ... # type: QgsLayerTreeModel.Flag
        ShowLegendAsTree = ... # type: QgsLayerTreeModel.Flag
        DeferredLegendInvalidation = ... # type: QgsLayerTreeModel.Flag
        UseEmbeddedWidgets = ... # type: QgsLayerTreeModel.Flag
        UseTextFormatting = ... # type: QgsLayerTreeModel.Flag
        AllowNodeReorder = ... # type: QgsLayerTreeModel.Flag
        AllowNodeRename = ... # type: QgsLayerTreeModel.Flag
        AllowNodeChangeVisibility = ... # type: QgsLayerTreeModel.Flag
        AllowLegendChangeState = ... # type: QgsLayerTreeModel.Flag
        ActionHierarchical = ... # type: QgsLayerTreeModel.Flag
        UseThreadedHitTest = ... # type: QgsLayerTreeModel.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeModel.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayerTreeModel.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, rootNode: QgsLayerTree, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def legendInvalidateMapBasedData(self) -> None: ...
    def legendCleanup(self) -> None: ...
    def legendIconEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> QtGui.QIcon: ...
    def legendEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> bool: ...
    def legendNodeFlags(self, node: QgsLayerTreeModelLegendNode) -> QtCore.Qt.ItemFlags: ...
    def legendNodeData(self, node: QgsLayerTreeModelLegendNode, role: int) -> typing.Any: ...
    def legendParent(self, legendNode: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    def legendNodeIndex(self, row: int, column: int, node: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    def legendRootIndex(self, row: int, column: int, nL: QgsLayerTreeLayer) -> QtCore.QModelIndex: ...
    def legendNodeRowCount(self, node: QgsLayerTreeModelLegendNode) -> int: ...
    def legendRootRowCount(self, nL: QgsLayerTreeLayer) -> int: ...
    def indexOfParentLayerTreeNode(self, parentNode: QgsLayerTreeNode) -> QtCore.QModelIndex: ...
    def filterLegendNodes(self, nodes: typing.Iterable[QgsLayerTreeModelLegendNode]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    @staticmethod
    def iconGroup() -> QtGui.QIcon: ...
    def refreshScaleBasedLayers(self, index: QtCore.QModelIndex = ..., previousScale: float = ...) -> None: ...
    def recursivelyEmitDataChanged(self, index: QtCore.QModelIndex = ...) -> None: ...
    def disconnectFromRootNode(self) -> None: ...
    def connectToRootNode(self) -> None: ...
    def disconnectFromLayers(self, parentGroup: QgsLayerTreeGroup) -> None: ...
    def connectToLayers(self, parentGroup: QgsLayerTreeGroup) -> None: ...
    def disconnectFromLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def connectToLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def addLegendToLayer(self, nodeL: QgsLayerTreeLayer) -> None: ...
    def removeLegendFromLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def invalidateLegendMapBasedData(self) -> None: ...
    def legendNodeDataChanged(self) -> None: ...
    def layerNeedsUpdate(self) -> None: ...
    def layerFlagsChanged(self) -> None: ...
    def layerLegendChanged(self) -> None: ...
    def nodeLayerWillBeUnloaded(self) -> None: ...
    def nodeLayerLoaded(self) -> None: ...
    def nodeCustomPropertyChanged(self, node: QgsLayerTreeNode, key: str) -> None: ...
    def nodeNameChanged(self, node: QgsLayerTreeNode, name: str) -> None: ...
    def nodeVisibilityChanged(self, node: QgsLayerTreeNode) -> None: ...
    def nodeRemovedChildren(self) -> None: ...
    def nodeWillRemoveChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def nodeAddedChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def nodeWillAddChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def hitTestCompleted(self) -> None: ...
    def hitTestStarted(self) -> None: ...
    def messageEmitted(self, message: str, level: Qgis.MessageLevel = ..., duration: int = ...) -> None: ...
    def hitTestInProgress(self) -> bool: ...
    def waitForHitTestBlocking(self) -> None: ...
    @staticmethod
    def scaleIconSize(standardSize: int) -> int: ...
    def targetScreenProperties(self) -> typing.Set[QgsScreenProperties]: ...
    def addTargetScreenProperties(self, properties: QgsScreenProperties) -> None: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[str, str]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def legendMapViewData(self) -> typing.Tuple[float, int, float]: ...
    def setLegendMapViewData(self, mapUnitsPerPixel: float, dpi: int, scale: float) -> None: ...
    def filterSettings(self) -> QgsLayerTreeFilterSettings: ...
    def setFilterSettings(self, settings: typing.Optional[QgsLayerTreeFilterSettings] = ...) -> None: ...
    def legendFilterMapSettings(self) -> QgsMapSettings: ...
    def setLegendFilter(self, settings: QgsMapSettings, useExtent: bool = ..., polygon: QgsGeometry = ..., useExpressions: bool = ...) -> None: ...
    def setLegendFilterByMap(self, settings: QgsMapSettings) -> None: ...
    def legendFilterByScale(self) -> float: ...
    def setLegendFilterByScale(self, scale: float) -> None: ...
    def autoCollapseLegendNodes(self) -> int: ...
    def setAutoCollapseLegendNodes(self, nodeCount: int) -> None: ...
    def layerTreeNodeFont(self, nodeType: int) -> QtGui.QFont: ...
    def setLayerTreeNodeFont(self, nodeType: int, font: QtGui.QFont) -> None: ...
    def setCurrentIndex(self, currentIndex: QtCore.QModelIndex) -> None: ...
    def currentIndex(self) -> QtCore.QModelIndex: ...
    def refreshLayerLegend(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def setRootGroup(self, newRootGroup: QgsLayerTree) -> None: ...
    def rootGroup(self) -> QgsLayerTree: ...
    def findLegendNode(self, layerId: str, ruleKey: str) -> QgsLayerTreeModelLegendNode: ...
    def legendNodeEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> QgsLayerTreeModelLegendNode: ...
    def layerOriginalLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def layerLegendNodes(self, nodeLayer: QgsLayerTreeLayer, skipNodeEmbeddedInParent: bool = ...) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendNode2index(self, legendNode: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    @staticmethod
    def index2legendNode(index: QtCore.QModelIndex) -> QgsLayerTreeModelLegendNode: ...
    def indexes2nodes(self, list: typing.Iterable[QtCore.QModelIndex], skipInternal: bool = ...) -> typing.List[QgsLayerTreeNode]: ...
    def node2index(self, node: QgsLayerTreeNode) -> QtCore.QModelIndex: ...
    def index2node(self, index: QtCore.QModelIndex) -> QgsLayerTreeNode: ...
    def testFlag(self, f: 'QgsLayerTreeModel.Flag') -> bool: ...
    def setFlag(self, f: 'QgsLayerTreeModel.Flag', on: bool = ...) -> None: ...
    def setFlags(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> None: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    @typing.overload
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    @typing.overload
    def flags(self) -> 'QgsLayerTreeModel.Flags': ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...


class QgsSymbolLegendNode(QgsLayerTreeModelLegendNode):

    MAXIMUM_SIZE = ... # type: float
    MINIMUM_SIZE = ... # type: float

    def __init__(self, nodeLayer: QgsLayerTreeLayer, item: 'QgsLegendSymbolItem', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def evaluateLabel(self, context: QgsExpressionContext = ..., label: str = ...) -> str: ...
    def setCustomSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def customSymbol(self) -> 'QgsSymbol': ...
    def setPatchShape(self, shape: 'QgsLegendPatchShape') -> None: ...
    def patchShape(self) -> 'QgsLegendPatchShape': ...
    def symbolLabel(self) -> str: ...
    def setTextOnSymbolTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textOnSymbolTextFormat(self) -> 'QgsTextFormat': ...
    def setTextOnSymbolLabel(self, label: str) -> None: ...
    def textOnSymbolLabel(self) -> str: ...
    def setSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def symbol(self) -> 'QgsSymbol': ...
    @typing.overload
    def minimumIconSize(self) -> QtCore.QSize: ...
    @typing.overload
    def minimumIconSize(self, context: QgsRenderContext) -> QtCore.QSize: ...
    def iconSize(self) -> QtCore.QSize: ...
    def setIconSize(self, sz: QtCore.QSize) -> None: ...
    def invalidateMapBasedData(self) -> None: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def setUserLabel(self, userLabel: str) -> None: ...
    def setEmbeddedInParent(self, embedded: bool) -> None: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...


class QgsSimpleLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, label: str, icon: QtGui.QIcon = ..., parent: typing.Optional[QtCore.QObject] = ..., key: str = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def data(self, role: int) -> typing.Any: ...


class QgsImageLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, img: QtGui.QImage, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsRasterSymbolLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], label: str, parent: typing.Optional[QtCore.QObject] = ..., isCheckable: bool = ..., ruleKey: str = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def isCheckable(self) -> bool: ...
    def ruleKey(self) -> str: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...


class QgsWmsLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def invalidateMapBasedData(self) -> None: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsDataDefinedSizeLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, settings: QgsDataDefinedSizeLegend, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def draw(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext) -> QgsLayerTreeModelLegendNode.ItemMetrics: ...
    def data(self, role: int) -> typing.Any: ...


class QgsVectorLabelLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, labelSettings: QgsPalLayerSettings, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsLayerTreeRegistryBridge(QtCore.QObject):

    class InsertionPoint(PyQt5.sip.wrapper):

        group = ... # type: QgsLayerTreeGroup
        position = ... # type: int

        @typing.overload
        def __init__(self, group: QgsLayerTreeGroup, position: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeRegistryBridge.InsertionPoint') -> None: ...

    def __init__(self, root: QgsLayerTreeGroup, project: 'QgsProject', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def removeLayersFromRegistry(self, layerIds: typing.Iterable[str]) -> None: ...
    def groupRemovedChildren(self) -> None: ...
    def groupWillRemoveChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def layersWillBeRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    def layersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addedLayersToLayerTree(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layerInsertionMethod(self) -> Qgis.LayerTreeInsertionMethod: ...
    def setLayerInsertionMethod(self, method: Qgis.LayerTreeInsertionMethod) -> None: ...
    @typing.overload
    def setLayerInsertionPoint(self, parentGroup: QgsLayerTreeGroup, index: int) -> None: ...
    @typing.overload
    def setLayerInsertionPoint(self, insertionPoint: 'QgsLayerTreeRegistryBridge.InsertionPoint') -> None: ...
    def newLayersVisible(self) -> bool: ...
    def setNewLayersVisible(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...


class QgsLayerTreeFilterProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setLayerChecked(self, layer: QgsMapLayer, checked: bool) -> None: ...
    def isLayerChecked(self, layer: QgsMapLayer) -> bool: ...
    def setFilterText(self, filterText: str = ...) -> None: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def sibling(self, row: int, column: int, idx: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, idx: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def setFilters(self, filters: typing.Union[QgsMapLayerProxyModel.Filters, QgsMapLayerProxyModel.Filter]) -> None: ...
    def setLayerTreeModel(self, layerTreeModel: QgsLayerTreeModel) -> None: ...
    def layerTreeModel(self) -> QgsLayerTreeModel: ...
    def mapLayer(self, idx: QtCore.QModelIndex) -> QgsMapLayer: ...
    def checkedLayers(self) -> typing.List[QgsMapLayer]: ...
    def setCheckedLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...


class QgsLayerTreeUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerTreeUtils') -> None: ...

    @staticmethod
    def insertLayerAtOptimalPlacement(group: QgsLayerTreeGroup, layer: QgsMapLayer) -> QgsLayerTreeLayer: ...
    @staticmethod
    def firstGroupWithoutCustomProperty(group: QgsLayerTreeGroup, property: str) -> QgsLayerTreeGroup: ...
    @staticmethod
    def countMapLayerInTree(tree: QgsLayerTreeNode, layer: QgsMapLayer) -> int: ...
    @staticmethod
    def collectMapLayersRecursive(nodes: typing.Iterable[QgsLayerTreeNode]) -> typing.Set[QgsMapLayer]: ...
    @staticmethod
    def insertLayerBelow(group: QgsLayerTreeGroup, refLayer: QgsMapLayer, layerToInsert: QgsMapLayer) -> QgsLayerTreeLayer: ...
    @staticmethod
    def hasLegendFilterExpression(group: QgsLayerTreeGroup) -> bool: ...
    @staticmethod
    def legendFilterByExpression(layer: QgsLayerTreeLayer) -> typing.Tuple[str, bool]: ...
    @staticmethod
    def setLegendFilterByExpression(layer: QgsLayerTreeLayer, expr: str, enabled: bool = ...) -> None: ...
    @staticmethod
    def invisibleLayerList(node: QgsLayerTreeNode) -> typing.List[str]: ...
    @staticmethod
    def updateEmbeddedGroupsProjectPath(group: QgsLayerTreeGroup, project: 'QgsProject') -> None: ...
    @staticmethod
    def replaceChildrenOfEmbeddedGroups(group: QgsLayerTreeGroup) -> None: ...
    @staticmethod
    def storeOriginalLayersProperties(group: QgsLayerTreeGroup, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def removeInvalidLayers(group: QgsLayerTreeGroup) -> None: ...
    @staticmethod
    def layersModified(layerNodes: typing.Iterable[QgsLayerTreeLayer]) -> bool: ...
    @staticmethod
    def layersEditable(layerNodes: typing.Iterable[QgsLayerTreeLayer], ignoreLayersWhichCannotBeToggled: bool = ...) -> bool: ...
    @staticmethod
    def checkStateFromXml(txt: str) -> QtCore.Qt.CheckState: ...
    @staticmethod
    def checkStateToXml(state: QtCore.Qt.CheckState) -> str: ...
    @staticmethod
    def writeOldLegend(doc: QtXml.QDomDocument, root: QgsLayerTreeGroup, hasCustomOrder: bool, order: typing.Iterable[QgsMapLayer]) -> QtXml.QDomElement: ...
    @staticmethod
    def readOldLegendLayerOrder(legendElem: QtXml.QDomElement, order: typing.Iterable[str]) -> typing.Tuple[bool, bool]: ...
    @staticmethod
    def readOldLegend(root: QgsLayerTreeGroup, legendElem: QtXml.QDomElement) -> bool: ...


class QgsLegendPatchShape(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.SymbolType, geometry: QgsGeometry, preserveAspectRatio: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLegendPatchShape') -> None: ...

    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def toQPolygonF(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> typing.Any: ...
    def scaledGeometry(self, size: QtCore.QSizeF) -> QgsGeometry: ...
    def setScaleToOutputSize(self, scale: bool) -> None: ...
    def scaleToOutputSize(self) -> bool: ...
    def setPreserveAspectRatio(self, preserve: bool) -> None: ...
    def preserveAspectRatio(self) -> bool: ...
    def setGeometry(self, geometry: QgsGeometry) -> None: ...
    def geometry(self) -> QgsGeometry: ...
    def setSymbolType(self, type: Qgis.SymbolType) -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def isNull(self) -> bool: ...


class QgsAbstractLayoutIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractLayoutIterator') -> None: ...

    def filePath(self, baseFilePath: str, extension: str) -> str: ...
    def next(self) -> bool: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def layout(self) -> 'QgsLayout': ...


class QgsReportSectionContext(PyQt5.sip.wrapper):

    currentLayer = ... # type: QgsVectorLayer
    feature = ... # type: QgsFeature
    fieldFilters = ... # type: typing.Dict[str, typing.Any]

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReportSectionContext') -> None: ...


class QgsAbstractReportSection(QgsAbstractLayoutIterator):

    class SubSection(int):
        Header = ... # type: QgsAbstractReportSection.SubSection
        Body = ... # type: QgsAbstractReportSection.SubSection
        Children = ... # type: QgsAbstractReportSection.SubSection
        Footer = ... # type: QgsAbstractReportSection.SubSection
        End = ... # type: QgsAbstractReportSection.SubSection

    def __init__(self, parentSection: typing.Optional['QgsAbstractReportSection'] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setParentSection(self, parent: 'QgsAbstractReportSection') -> None: ...
    def copyCommonProperties(self, destination: 'QgsAbstractReportSection') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def reloadSettings(self) -> None: ...
    def readXml(self, sectionElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def context(self) -> QgsReportSectionContext: ...
    def setContext(self, context: QgsReportSectionContext) -> None: ...
    def removeChildAt(self, index: int) -> None: ...
    def removeChild(self, section: 'QgsAbstractReportSection') -> None: ...
    def insertChild(self, index: int, section: 'QgsAbstractReportSection') -> None: ...
    def appendChild(self, section: 'QgsAbstractReportSection') -> None: ...
    def childSection(self, index: int) -> 'QgsAbstractReportSection': ...
    def childSections(self) -> typing.List['QgsAbstractReportSection']: ...
    def row(self) -> int: ...
    def childCount(self) -> int: ...
    def setFooter(self, footer: 'QgsLayout') -> None: ...
    def footer(self) -> 'QgsLayout': ...
    def setFooterEnabled(self, enabled: bool) -> None: ...
    def footerEnabled(self) -> bool: ...
    def setHeader(self, header: 'QgsLayout') -> None: ...
    def header(self) -> 'QgsLayout': ...
    def setHeaderEnabled(self, enabled: bool) -> None: ...
    def headerEnabled(self) -> bool: ...
    def nextBody(self) -> typing.Tuple['QgsLayout', bool]: ...
    def prepareFooter(self) -> bool: ...
    def prepareHeader(self) -> bool: ...
    def reset(self) -> None: ...
    def endRender(self) -> bool: ...
    def next(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def layout(self) -> 'QgsLayout': ...
    def filePath(self, baseFilePath: str, extension: str) -> str: ...
    def count(self) -> int: ...
    def project(self) -> 'QgsProject': ...
    def parentSection(self) -> 'QgsAbstractReportSection': ...
    def clone(self) -> 'QgsAbstractReportSection': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsLayoutUndoObjectInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutUndoObjectInterface') -> None: ...

    def createCommand(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...


class QgsLayout(QtWidgets.QGraphicsScene, QgsExpressionContextGenerator, QgsLayoutUndoObjectInterface):

    class UndoCommand(int):
        UndoLayoutDpi = ... # type: QgsLayout.UndoCommand
        UndoNone = ... # type: QgsLayout.UndoCommand

    class ZValues(int):
        ZPage = ... # type: QgsLayout.ZValues
        ZItem = ... # type: QgsLayout.ZValues
        ZGrid = ... # type: QgsLayout.ZValues
        ZGuide = ... # type: QgsLayout.ZValues
        ZSmartGuide = ... # type: QgsLayout.ZValues
        ZMouseHandles = ... # type: QgsLayout.ZValues
        ZViewTool = ... # type: QgsLayout.ZValues
        ZSnapIndicator = ... # type: QgsLayout.ZValues

    def __init__(self, project: 'QgsProject') -> None: ...

    def itemAdded(self, item: 'QgsLayoutItem') -> None: ...
    def backgroundTaskCountChanged(self, total: int) -> None: ...
    def refreshed(self) -> None: ...
    def selectedItemChanged(self, selected: 'QgsLayoutItem') -> None: ...
    def variablesChanged(self) -> None: ...
    def changed(self) -> None: ...
    def updateBounds(self) -> None: ...
    def refresh(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def ungroupItems(self, group: 'QgsLayoutItemGroup') -> typing.List['QgsLayoutItem']: ...
    def groupItems(self, items: typing.Iterable['QgsLayoutItem']) -> 'QgsLayoutItemGroup': ...
    def createCommand(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def undoStack(self) -> 'QgsLayoutUndoStack': ...
    def addItemsFromXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, position: typing.Optional[typing.Union[QtCore.QPointF, QtCore.QPoint, float]] = ..., pasteInPlace: bool = ...) -> typing.List['QgsLayoutItem']: ...
    def readXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def loadFromTemplate(self, document: QtXml.QDomDocument, context: QgsReadWriteContext, clearExisting: bool = ...) -> typing.Tuple[typing.List['QgsLayoutItem'], bool]: ...
    def saveAsTemplate(self, path: str, context: QgsReadWriteContext) -> bool: ...
    def multiFrames(self) -> typing.List['QgsLayoutMultiFrame']: ...
    def removeMultiFrame(self, multiFrame: 'QgsLayoutMultiFrame') -> None: ...
    def addMultiFrame(self, multiFrame: 'QgsLayoutMultiFrame') -> None: ...
    def removeLayoutItem(self, item: 'QgsLayoutItem') -> None: ...
    def addLayoutItem(self, item: 'QgsLayoutItem') -> None: ...
    def pageItemBounds(self, page: int, visibleOnly: bool = ...) -> QtCore.QRectF: ...
    def layoutBounds(self, ignorePages: bool = ..., margin: float = ...) -> QtCore.QRectF: ...
    def pageCollection(self) -> 'QgsLayoutPageCollection': ...
    def setReferenceMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def referenceMap(self) -> 'QgsLayoutItemMap': ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def guides(self) -> 'QgsLayoutGuideCollection': ...
    def reloadSettings(self) -> None: ...
    def gridSettings(self) -> 'QgsLayoutGridSettings': ...
    def snapper(self) -> 'QgsLayoutSnapper': ...
    def reportContext(self) -> 'QgsLayoutReportContext': ...
    def renderContext(self) -> 'QgsLayoutRenderContext': ...
    @typing.overload
    def convertFromLayoutUnits(self, length: float, unit: Qgis.LayoutUnit) -> 'QgsLayoutMeasurement': ...
    @typing.overload
    def convertFromLayoutUnits(self, size: QtCore.QSizeF, unit: Qgis.LayoutUnit) -> 'QgsLayoutSize': ...
    @typing.overload
    def convertFromLayoutUnits(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], unit: Qgis.LayoutUnit) -> 'QgsLayoutPoint': ...
    @typing.overload
    def convertToLayoutUnits(self, measurement: 'QgsLayoutMeasurement') -> float: ...
    @typing.overload
    def convertToLayoutUnits(self, size: 'QgsLayoutSize') -> QtCore.QSizeF: ...
    @typing.overload
    def convertToLayoutUnits(self, point: 'QgsLayoutPoint') -> QtCore.QPointF: ...
    def units(self) -> Qgis.LayoutUnit: ...
    def setUnits(self, units: Qgis.LayoutUnit) -> None: ...
    @typing.overload
    def layoutItemAt(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint, float], ignoreLocked: bool = ...) -> 'QgsLayoutItem': ...
    @typing.overload
    def layoutItemAt(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint, float], belowItem: 'QgsLayoutItem', ignoreLocked: bool = ...) -> 'QgsLayoutItem': ...
    def multiFrameByUuid(self, uuid: str, includeTemplateUuids: bool = ...) -> 'QgsLayoutMultiFrame': ...
    def itemById(self, id: str) -> 'QgsLayoutItem': ...
    def itemByTemplateUuid(self, uuid: str) -> 'QgsLayoutItem': ...
    def itemByUuid(self, uuid: str, includeTemplateUuids: bool = ...) -> 'QgsLayoutItem': ...
    def updateZValues(self, addUndoCommands: bool = ...) -> None: ...
    def moveItemToBottom(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def moveItemToTop(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def lowerItem(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def raiseItem(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def deselectAll(self) -> None: ...
    def setSelectedItem(self, item: 'QgsLayoutItem') -> None: ...
    def selectedLayoutItems(self, includeLockedItems: bool = ...) -> typing.List['QgsLayoutItem']: ...
    def itemsModel(self) -> 'QgsLayoutModel': ...
    def project(self) -> 'QgsProject': ...
    def clear(self) -> None: ...
    def initializeDefaults(self) -> None: ...
    def clone(self) -> 'QgsLayout': ...


class QgsLayoutAligner(PyQt5.sip.wrapper):

    class Resize(int):
        ResizeNarrowest = ... # type: QgsLayoutAligner.Resize
        ResizeWidest = ... # type: QgsLayoutAligner.Resize
        ResizeShortest = ... # type: QgsLayoutAligner.Resize
        ResizeTallest = ... # type: QgsLayoutAligner.Resize
        ResizeToSquare = ... # type: QgsLayoutAligner.Resize

    class Distribution(int):
        DistributeLeft = ... # type: QgsLayoutAligner.Distribution
        DistributeHCenter = ... # type: QgsLayoutAligner.Distribution
        DistributeHSpace = ... # type: QgsLayoutAligner.Distribution
        DistributeRight = ... # type: QgsLayoutAligner.Distribution
        DistributeTop = ... # type: QgsLayoutAligner.Distribution
        DistributeVCenter = ... # type: QgsLayoutAligner.Distribution
        DistributeVSpace = ... # type: QgsLayoutAligner.Distribution
        DistributeBottom = ... # type: QgsLayoutAligner.Distribution

    class Alignment(int):
        AlignLeft = ... # type: QgsLayoutAligner.Alignment
        AlignHCenter = ... # type: QgsLayoutAligner.Alignment
        AlignRight = ... # type: QgsLayoutAligner.Alignment
        AlignTop = ... # type: QgsLayoutAligner.Alignment
        AlignVCenter = ... # type: QgsLayoutAligner.Alignment
        AlignBottom = ... # type: QgsLayoutAligner.Alignment

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutAligner') -> None: ...

    @staticmethod
    def resizeItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], resize: 'QgsLayoutAligner.Resize') -> None: ...
    @staticmethod
    def distributeItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], distribution: 'QgsLayoutAligner.Distribution') -> None: ...
    @staticmethod
    def alignItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], alignment: 'QgsLayoutAligner.Alignment') -> None: ...


class QgsLayoutSerializableObject(QgsLayoutUndoObjectInterface):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutSerializableObject') -> None: ...

    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutAtlas(QtCore.QObject, QgsAbstractLayoutIterator, QgsLayoutSerializableObject, QgsExpressionContextGenerator):

    def __init__(self, layout: QgsLayout) -> None: ...

    def renderEnded(self) -> None: ...
    def renderBegun(self) -> None: ...
    def featureChanged(self, feature: QgsFeature) -> None: ...
    def numberFeaturesChanged(self, numFeatures: int) -> None: ...
    def messagePushed(self, message: str) -> None: ...
    def coverageLayerChanged(self, layer: QgsVectorLayer) -> None: ...
    def toggled(self, a0: bool) -> None: ...
    def changed(self) -> None: ...
    def refreshCurrentFeature(self) -> None: ...
    @typing.overload
    def seekTo(self, feature: int) -> bool: ...
    @typing.overload
    def seekTo(self, feature: QgsFeature) -> bool: ...
    def first(self) -> bool: ...
    def last(self) -> bool: ...
    def previous(self) -> bool: ...
    def next(self) -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def currentFeatureNumber(self) -> int: ...
    def filePath(self, baseFilePath: str, extension: str) -> str: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def updateFeatures(self) -> int: ...
    def setFilterExpression(self, expression: str) -> typing.Tuple[bool, str]: ...
    def filterExpression(self) -> str: ...
    def setFilterFeatures(self, filtered: bool) -> None: ...
    def filterFeatures(self) -> bool: ...
    def setSortExpression(self, expression: str) -> None: ...
    def sortExpression(self) -> str: ...
    def setSortAscending(self, ascending: bool) -> None: ...
    def sortAscending(self) -> bool: ...
    def setSortFeatures(self, enabled: bool) -> None: ...
    def sortFeatures(self) -> bool: ...
    def nameForPage(self, page: int) -> str: ...
    def setPageNameExpression(self, expression: str) -> None: ...
    def pageNameExpression(self) -> str: ...
    def setCoverageLayer(self, layer: QgsVectorLayer) -> None: ...
    def coverageLayer(self) -> QgsVectorLayer: ...
    def currentFilename(self) -> str: ...
    def setFilenameExpression(self, expression: str) -> typing.Tuple[bool, str]: ...
    def filenameExpression(self) -> str: ...
    def setHideCoverage(self, hide: bool) -> None: ...
    def hideCoverage(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutEffect(QtWidgets.QGraphicsEffect):

    def __init__(self) -> None: ...

    def draw(self, painter: QtGui.QPainter) -> None: ...
    def compositionMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setCompositionMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...


class QgsLayoutExporter(PyQt5.sip.wrapper):

    class ExportResult(int):
        Success = ... # type: QgsLayoutExporter.ExportResult
        Canceled = ... # type: QgsLayoutExporter.ExportResult
        MemoryError = ... # type: QgsLayoutExporter.ExportResult
        FileError = ... # type: QgsLayoutExporter.ExportResult
        PrintError = ... # type: QgsLayoutExporter.ExportResult
        SvgLayerError = ... # type: QgsLayoutExporter.ExportResult
        IteratorError = ... # type: QgsLayoutExporter.ExportResult

    class PageExportDetails(PyQt5.sip.wrapper):

        baseName = ... # type: str
        directory = ... # type: str
        extension = ... # type: str
        page = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PageExportDetails') -> None: ...

    class ImageExportSettings(PyQt5.sip.wrapper):

        cropMargins = ... # type: QgsMargins
        cropToContents = ... # type: bool
        dpi = ... # type: float
        exportMetadata = ... # type: bool
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        generateWorldFile = ... # type: bool
        imageSize = ... # type: QtCore.QSize
        pages = ... # type: typing.Iterable[int]
        predefinedMapScales = ... # type: typing.Iterable[float]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.ImageExportSettings') -> None: ...

    class PdfExportSettings(PyQt5.sip.wrapper):

        appendGeoreference = ... # type: bool
        dpi = ... # type: float
        exportLayersAsSeperateFiles = ... # type: bool
        exportMetadata = ... # type: bool
        exportThemes = ... # type: typing.Iterable[str]
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        forceVectorOutput = ... # type: bool
        includeGeoPdfFeatures = ... # type: bool
        predefinedMapScales = ... # type: typing.Iterable[float]
        rasterizeWholeImage = ... # type: bool
        simplifyGeometries = ... # type: bool
        textRenderFormat = ... # type: Qgis.TextRenderFormat
        useIso32000ExtensionFormatGeoreferencing = ... # type: bool
        useOgcBestPracticeFormatGeoreferencing = ... # type: bool
        writeGeoPdf = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PdfExportSettings') -> None: ...

    class PrintExportSettings(PyQt5.sip.wrapper):

        dpi = ... # type: float
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        predefinedMapScales = ... # type: typing.Iterable[float]
        rasterizeWholeImage = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PrintExportSettings') -> None: ...

    class SvgExportSettings(PyQt5.sip.wrapper):

        cropMargins = ... # type: QgsMargins
        cropToContents = ... # type: bool
        dpi = ... # type: float
        exportAsLayers = ... # type: bool
        exportLabelsToSeparateLayers = ... # type: bool
        exportMetadata = ... # type: bool
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        forceVectorOutput = ... # type: bool
        predefinedMapScales = ... # type: typing.Iterable[float]
        simplifyGeometries = ... # type: bool
        textRenderFormat = ... # type: Qgis.TextRenderFormat

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.SvgExportSettings') -> None: ...

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutExporter') -> None: ...

    def generateFileName(self, details: 'QgsLayoutExporter.PageExportDetails') -> str: ...
    @staticmethod
    def containsAdvancedEffects(layout: QgsLayout) -> bool: ...
    @staticmethod
    def requiresRasterization(layout: QgsLayout) -> bool: ...
    @typing.overload
    def computeWorldFileParameters(self, dpi: float = ...) -> typing.Tuple[float, float, float, float, float, float]: ...
    @typing.overload
    def computeWorldFileParameters(self, region: QtCore.QRectF, dpi: float = ...) -> typing.Tuple[float, float, float, float, float, float]: ...
    def georeferenceOutput(self, file: str, referenceMap: typing.Optional['QgsLayoutItemMap'] = ..., exportRegion: QtCore.QRectF = ..., dpi: float = ...) -> bool: ...
    def labelingResults(self) -> typing.Any: ...
    def errorFile(self) -> str: ...
    @typing.overload
    def exportToSvg(self, filePath: str, settings: 'QgsLayoutExporter.SvgExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToSvg(iterator: QgsAbstractLayoutIterator, baseFilePath: str, settings: 'QgsLayoutExporter.SvgExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def print(self, printer: QtPrintSupport.QPrinter, settings: 'QgsLayoutExporter.PrintExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def print(iterator: QgsAbstractLayoutIterator, printer: QtPrintSupport.QPrinter, settings: 'QgsLayoutExporter.PrintExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @staticmethod
    def exportToPdfs(iterator: QgsAbstractLayoutIterator, baseFilePath: str, settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToPdf(self, filePath: str, settings: 'QgsLayoutExporter.PdfExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToPdf(iterator: QgsAbstractLayoutIterator, fileName: str, settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToImage(self, filePath: str, settings: 'QgsLayoutExporter.ImageExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToImage(iterator: QgsAbstractLayoutIterator, baseFilePath: str, extension: str, settings: 'QgsLayoutExporter.ImageExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    def renderRegionToImage(self, region: QtCore.QRectF, imageSize: QtCore.QSize = ..., dpi: float = ...) -> QtGui.QImage: ...
    def renderRegion(self, painter: QtGui.QPainter, region: QtCore.QRectF) -> None: ...
    def renderPageToImage(self, page: int, imageSize: QtCore.QSize = ..., dpi: float = ...) -> QtGui.QImage: ...
    def renderPage(self, painter: QtGui.QPainter, page: int) -> None: ...
    def layout(self) -> QgsLayout: ...


class QgsLayoutObject(QtCore.QObject, QgsExpressionContextGenerator):

    class PropertyValueType(int):
        EvaluatedValue = ... # type: QgsLayoutObject.PropertyValueType
        OriginalValue = ... # type: QgsLayoutObject.PropertyValueType

    class DataDefinedProperty(int):
        NoProperty = ... # type: QgsLayoutObject.DataDefinedProperty
        AllProperties = ... # type: QgsLayoutObject.DataDefinedProperty
        TestProperty = ... # type: QgsLayoutObject.DataDefinedProperty
        PresetPaperSize = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        NumPages = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperOrientation = ... # type: QgsLayoutObject.DataDefinedProperty
        PageNumber = ... # type: QgsLayoutObject.DataDefinedProperty
        PositionX = ... # type: QgsLayoutObject.DataDefinedProperty
        PositionY = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemRotation = ... # type: QgsLayoutObject.DataDefinedProperty
        Transparency = ... # type: QgsLayoutObject.DataDefinedProperty
        Opacity = ... # type: QgsLayoutObject.DataDefinedProperty
        BlendMode = ... # type: QgsLayoutObject.DataDefinedProperty
        ExcludeFromExports = ... # type: QgsLayoutObject.DataDefinedProperty
        FrameColor = ... # type: QgsLayoutObject.DataDefinedProperty
        BackgroundColor = ... # type: QgsLayoutObject.DataDefinedProperty
        MarginLeft = ... # type: QgsLayoutObject.DataDefinedProperty
        MarginTop = ... # type: QgsLayoutObject.DataDefinedProperty
        MarginRight = ... # type: QgsLayoutObject.DataDefinedProperty
        MarginBottom = ... # type: QgsLayoutObject.DataDefinedProperty
        MapRotation = ... # type: QgsLayoutObject.DataDefinedProperty
        MapScale = ... # type: QgsLayoutObject.DataDefinedProperty
        MapXMin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapYMin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapXMax = ... # type: QgsLayoutObject.DataDefinedProperty
        MapYMax = ... # type: QgsLayoutObject.DataDefinedProperty
        MapAtlasMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapLayers = ... # type: QgsLayoutObject.DataDefinedProperty
        MapStylePreset = ... # type: QgsLayoutObject.DataDefinedProperty
        MapLabelMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridEnabled = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridIntervalX = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridIntervalY = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridOffsetX = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridOffsetY = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameSize = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridLabelDistance = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridCrossSize = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameLineThickness = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayLeft = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayRight = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayTop = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayBottom = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsLeft = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsRight = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsTop = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsBottom = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSource = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgBackgroundColor = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgStrokeColor = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgStrokeWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        SourceUrl = ... # type: QgsLayoutObject.DataDefinedProperty
        LegendTitle = ... # type: QgsLayoutObject.DataDefinedProperty
        LegendColumnCount = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLeftSegments = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarRightSegments = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarSegmentWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarMinimumWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarMaximumWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarRightSegmentSubdivisions = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarSubdivisionHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarFillColor = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarFillColor2 = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLineColor = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLineWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        AttributeTableSourceLayer = ... # type: QgsLayoutObject.DataDefinedProperty
        MapCrs = ... # type: QgsLayoutObject.DataDefinedProperty
        StartDateTime = ... # type: QgsLayoutObject.DataDefinedProperty
        EndDateTime = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileTolerance = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileDistanceMajorInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileDistanceMinorInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileDistanceLabelInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileElevationMajorInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileElevationMinorInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileElevationLabelInterval = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileMinimumDistance = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileMaximumDistance = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileMinimumElevation = ... # type: QgsLayoutObject.DataDefinedProperty
        ElevationProfileMaximumElevation = ... # type: QgsLayoutObject.DataDefinedProperty

    def __init__(self, layout: QgsLayout) -> None: ...

    def readObjectPropertiesFromElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeObjectPropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def changed(self) -> None: ...
    def refresh(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def layout(self) -> QgsLayout: ...
    @staticmethod
    def propertyAssociatesWithParentMultiframe(property: 'QgsLayoutObject.DataDefinedProperty') -> bool: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...


class QgsLayoutItem(QgsLayoutObject, QtWidgets.QGraphicsRectItem, QgsLayoutUndoObjectInterface):

    class ExportLayerBehavior(int):
        CanGroupWithAnyOtherItem = ... # type: QgsLayoutItem.ExportLayerBehavior
        CanGroupWithItemsOfSameType = ... # type: QgsLayoutItem.ExportLayerBehavior
        MustPlaceInOwnLayer = ... # type: QgsLayoutItem.ExportLayerBehavior
        ItemContainsSubLayers = ... # type: QgsLayoutItem.ExportLayerBehavior

    class Flag(int):
        FlagOverridesPaint = ... # type: QgsLayoutItem.Flag
        FlagProvidesClipPath = ... # type: QgsLayoutItem.Flag

    class UndoCommand(int):
        UndoNone = ... # type: QgsLayoutItem.UndoCommand
        UndoIncrementalMove = ... # type: QgsLayoutItem.UndoCommand
        UndoIncrementalResize = ... # type: QgsLayoutItem.UndoCommand
        UndoStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoStrokeWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoBackgroundColor = ... # type: QgsLayoutItem.UndoCommand
        UndoOpacity = ... # type: QgsLayoutItem.UndoCommand
        UndoMarginLeft = ... # type: QgsLayoutItem.UndoCommand
        UndoMarginTop = ... # type: QgsLayoutItem.UndoCommand
        UndoMarginBottom = ... # type: QgsLayoutItem.UndoCommand
        UndoMarginRight = ... # type: QgsLayoutItem.UndoCommand
        UndoSetId = ... # type: QgsLayoutItem.UndoCommand
        UndoRotation = ... # type: QgsLayoutItem.UndoCommand
        UndoShapeStyle = ... # type: QgsLayoutItem.UndoCommand
        UndoShapeCornerRadius = ... # type: QgsLayoutItem.UndoCommand
        UndoNodeMove = ... # type: QgsLayoutItem.UndoCommand
        UndoAtlasMargin = ... # type: QgsLayoutItem.UndoCommand
        UndoMapRotation = ... # type: QgsLayoutItem.UndoCommand
        UndoZoomContent = ... # type: QgsLayoutItem.UndoCommand
        UndoOverviewStyle = ... # type: QgsLayoutItem.UndoCommand
        UndoGridFramePenColor = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridFrameFill1Color = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridFrameFill2Color = ... # type: QgsLayoutItem.UndoCommand
        UndoMapAnnotationDistance = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridAnnotationFontColor = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridLineSymbol = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridMarkerSymbol = ... # type: QgsLayoutItem.UndoCommand
        UndoMapGridIntervalRange = ... # type: QgsLayoutItem.UndoCommand
        UndoMapLabelMargin = ... # type: QgsLayoutItem.UndoCommand
        UndoPictureRotation = ... # type: QgsLayoutItem.UndoCommand
        UndoPictureFillColor = ... # type: QgsLayoutItem.UndoCommand
        UndoPictureStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoPictureStrokeWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoPictureNorthOffset = ... # type: QgsLayoutItem.UndoCommand
        UndoLabelText = ... # type: QgsLayoutItem.UndoCommand
        UndoLabelFont = ... # type: QgsLayoutItem.UndoCommand
        UndoLabelMargin = ... # type: QgsLayoutItem.UndoCommand
        UndoLabelFontColor = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendText = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendColumnCount = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendSymbolWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendSymbolHeight = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendMaxSymbolSize = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendMinSymbolSize = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendWmsLegendWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendWmsLegendHeight = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendTitleSpaceBottom = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendGroupSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendGroupIndent = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendSubgroupIndent = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendLayerSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendSymbolSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendIconSymbolSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendFontColor = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendBoxSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendColumnSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendLineSpacing = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendRasterStrokeWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendRasterStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendTitleFont = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendGroupFont = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendLayerFont = ... # type: QgsLayoutItem.UndoCommand
        UndoLegendItemFont = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarLineWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarSegmentSize = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarSegmentsLeft = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarSegments = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarHeight = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarSubdivisions = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarSubdivisionsHeight = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarFontColor = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarFillColor = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarFillColor2 = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarUnitText = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarMapUnitsSegment = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarLabelBarSize = ... # type: QgsLayoutItem.UndoCommand
        UndoScaleBarBoxContentSpace = ... # type: QgsLayoutItem.UndoCommand
        UndoArrowStrokeWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoArrowHeadWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoArrowHeadFillColor = ... # type: QgsLayoutItem.UndoCommand
        UndoArrowHeadStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileTolerance = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileChartBackground = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileChartBorder = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileDistanceMajorGridlines = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileDistanceMinorGridlines = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileDistanceFormat = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileDistanceFont = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileDistanceLabels = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileElevationMajorGridlines = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileElevationMinorGridlines = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileElevationFormat = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileElevationFont = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileElevationLabels = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileMinimumDistance = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileMaximumDistance = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileMinimumElevation = ... # type: QgsLayoutItem.UndoCommand
        UndoElevationProfileMaximumElevation = ... # type: QgsLayoutItem.UndoCommand
        UndoCustomCommand = ... # type: QgsLayoutItem.UndoCommand

    class ReferencePoint(int):
        UpperLeft = ... # type: QgsLayoutItem.ReferencePoint
        UpperMiddle = ... # type: QgsLayoutItem.ReferencePoint
        UpperRight = ... # type: QgsLayoutItem.ReferencePoint
        MiddleLeft = ... # type: QgsLayoutItem.ReferencePoint
        Middle = ... # type: QgsLayoutItem.ReferencePoint
        MiddleRight = ... # type: QgsLayoutItem.ReferencePoint
        LowerLeft = ... # type: QgsLayoutItem.ReferencePoint
        LowerMiddle = ... # type: QgsLayoutItem.ReferencePoint
        LowerRight = ... # type: QgsLayoutItem.ReferencePoint

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutItem.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayoutItem.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ExportLayerDetail(PyQt5.sip.wrapper):

        compositionMode = ... # type: QtGui.QPainter.CompositionMode
        mapLayerId = ... # type: str
        mapTheme = ... # type: str
        name = ... # type: str
        opacity = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutItem.ExportLayerDetail') -> None: ...

    def __init__(self, layout: QgsLayout, manageZValue: bool = ...) -> None: ...

    def applyDataDefinedSize(self, size: 'QgsLayoutSize') -> 'QgsLayoutSize': ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def topLeftToReferencePoint(self, point: 'QgsLayoutPoint') -> 'QgsLayoutPoint': ...
    def positionAtReferencePoint(self, reference: 'QgsLayoutItem.ReferencePoint') -> QtCore.QPointF: ...
    def adjustPointForReferencePosition(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], size: QtCore.QSizeF, reference: 'QgsLayoutItem.ReferencePoint') -> QtCore.QPointF: ...
    def refreshBlendMode(self) -> None: ...
    def refreshBackgroundColor(self, updateItem: bool = ...) -> None: ...
    def refreshFrame(self, updateItem: bool = ...) -> None: ...
    def refreshOpacity(self, updateItem: bool = ...) -> None: ...
    def refreshItemRotation(self, origin: typing.Optional[typing.Union[QtCore.QPointF, QtCore.QPoint, float]] = ...) -> None: ...
    def refreshItemPosition(self) -> None: ...
    def refreshItemSize(self) -> None: ...
    def applyItemSizeConstraint(self, targetSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def setMinimumSize(self, size: 'QgsLayoutSize') -> None: ...
    def setFixedSize(self, size: 'QgsLayoutSize') -> None: ...
    def drawRefreshingOverlay(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem) -> None: ...
    def drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def framePath(self) -> QtGui.QPainterPath: ...
    def draw(self, context: 'QgsLayoutItemRenderContext') -> None: ...
    def drawDebugRect(self, painter: QtGui.QPainter) -> None: ...
    def clipPathChanged(self) -> None: ...
    def backgroundTaskCountChanged(self, count: int) -> None: ...
    def sizePositionChanged(self) -> None: ...
    def rotationChanged(self, newRotation: float) -> None: ...
    def lockChanged(self) -> None: ...
    def frameChanged(self) -> None: ...
    def rotateItem(self, angle: float, transformOrigin: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def setItemRotation(self, rotation: float, adjustPosition: bool = ...) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def redraw(self) -> None: ...
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    def isRefreshing(self) -> bool: ...
    def clipPath(self) -> QgsGeometry: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def shouldDrawItem(self) -> bool: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, commandText: str, command: 'QgsLayoutItem.UndoCommand' = ...) -> None: ...
    def zoomContent(self, factor: float, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def setMoveContentPreviewOffset(self, dx: float, dy: float) -> None: ...
    def moveContent(self, dx: float, dy: float) -> None: ...
    def rectWithFrame(self) -> QtCore.QRectF: ...
    def estimatedFrameBleed(self) -> float: ...
    def requiresRasterization(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    def setExcludeFromExports(self, exclude: bool) -> None: ...
    def excludeFromExports(self) -> bool: ...
    def setItemOpacity(self, opacity: float) -> None: ...
    def itemOpacity(self) -> float: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self, useDataDefined: bool = ...) -> QtGui.QColor: ...
    def setBackgroundEnabled(self, drawBackground: bool) -> None: ...
    def hasBackground(self) -> bool: ...
    def setFrameJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def frameJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def frameStrokeWidth(self) -> 'QgsLayoutMeasurement': ...
    def setFrameStrokeWidth(self, width: 'QgsLayoutMeasurement') -> None: ...
    def frameStrokeColor(self) -> QtGui.QColor: ...
    def setFrameStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setFrameEnabled(self, drawFrame: bool) -> None: ...
    def frameEnabled(self) -> bool: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def itemRotation(self) -> float: ...
    def sizeWithUnits(self) -> 'QgsLayoutSize': ...
    def pagePositionWithUnits(self) -> 'QgsLayoutPoint': ...
    def pagePos(self) -> QtCore.QPointF: ...
    def page(self) -> int: ...
    def positionWithUnits(self) -> 'QgsLayoutPoint': ...
    def attemptMoveBy(self, deltaX: float, deltaY: float) -> None: ...
    def attemptSetSceneRect(self, rect: QtCore.QRectF, includesFrame: bool = ...) -> None: ...
    def attemptMove(self, point: 'QgsLayoutPoint', useReferencePoint: bool = ..., includesFrame: bool = ..., page: int = ...) -> None: ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def referencePoint(self) -> 'QgsLayoutItem.ReferencePoint': ...
    def setReferencePoint(self, point: 'QgsLayoutItem.ReferencePoint') -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def exportLayerDetails(self) -> 'QgsLayoutItem.ExportLayerDetail': ...
    def nextExportPart(self) -> bool: ...
    def stopLayeredExport(self) -> None: ...
    def startLayeredExport(self) -> None: ...
    def numberExportLayers(self) -> int: ...
    def exportLayerBehavior(self) -> 'QgsLayoutItem.ExportLayerBehavior': ...
    def setParentGroup(self, group: 'QgsLayoutItemGroup') -> None: ...
    def parentGroup(self) -> 'QgsLayoutItemGroup': ...
    def isGroupMember(self) -> bool: ...
    def isLocked(self) -> bool: ...
    def setLocked(self, locked: bool) -> None: ...
    def setVisibility(self, visible: bool) -> None: ...
    def setSelected(self, selected: bool) -> None: ...
    def displayName(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...
    def itemFlags(self) -> 'QgsLayoutItem.Flags': ...
    def uuid(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    def cleanup(self) -> None: ...


class QgsLayoutFrame(QgsLayoutItem):

    def __init__(self, layout: QgsLayout, multiFrame: 'QgsLayoutMultiFrame') -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def draw(self, context: 'QgsLayoutItemRenderContext') -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def isEmpty(self) -> bool: ...
    def setHideBackgroundIfEmpty(self, hideBackgroundIfEmpty: bool) -> None: ...
    def hideBackgroundIfEmpty(self) -> bool: ...
    def setHidePageIfEmpty(self, hidePageIfEmpty: bool) -> None: ...
    def hidePageIfEmpty(self) -> bool: ...
    def extent(self) -> QtCore.QRectF: ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    def multiFrame(self) -> 'QgsLayoutMultiFrame': ...
    def setContentSection(self, section: QtCore.QRectF) -> None: ...
    def cleanup(self) -> None: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutFrame': ...


class QgsLayoutGridSettings(QgsLayoutSerializableObject):

    class Style(int):
        StyleLines = ... # type: QgsLayoutGridSettings.Style
        StyleDots = ... # type: QgsLayoutGridSettings.Style
        StyleCrosses = ... # type: QgsLayoutGridSettings.Style

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutGridSettings') -> None: ...

    def readXml(self, gridElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def loadFromSettings(self) -> None: ...
    def style(self) -> 'QgsLayoutGridSettings.Style': ...
    def setStyle(self, style: 'QgsLayoutGridSettings.Style') -> None: ...
    def pen(self) -> QtGui.QPen: ...
    def setPen(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def offset(self) -> 'QgsLayoutPoint': ...
    def setOffset(self, offset: 'QgsLayoutPoint') -> None: ...
    def resolution(self) -> 'QgsLayoutMeasurement': ...
    def setResolution(self, resolution: 'QgsLayoutMeasurement') -> None: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutGuide(QtCore.QObject):

    def __init__(self, orientation: QtCore.Qt.Orientation, position: 'QgsLayoutMeasurement', page: 'QgsLayoutItemPage') -> None: ...

    def positionChanged(self) -> None: ...
    def setLayoutPosition(self, position: float) -> None: ...
    def layoutPosition(self) -> float: ...
    def item(self) -> QtWidgets.QGraphicsLineItem: ...
    def update(self) -> None: ...
    def setPage(self, page: 'QgsLayoutItemPage') -> None: ...
    def page(self) -> 'QgsLayoutItemPage': ...
    def setPosition(self, position: 'QgsLayoutMeasurement') -> None: ...
    def position(self) -> 'QgsLayoutMeasurement': ...
    def orientation(self) -> QtCore.Qt.Orientation: ...
    def setLayout(self, layout: QgsLayout) -> None: ...
    def layout(self) -> QgsLayout: ...


class QgsLayoutGuideCollection(QtCore.QAbstractTableModel, QgsLayoutSerializableObject):

    class Roles(int):
        OrientationRole = ... # type: QgsLayoutGuideCollection.Roles
        PositionRole = ... # type: QgsLayoutGuideCollection.Roles
        UnitsRole = ... # type: QgsLayoutGuideCollection.Roles
        PageRole = ... # type: QgsLayoutGuideCollection.Roles
        LayoutPositionRole = ... # type: QgsLayoutGuideCollection.Roles

    def __init__(self, layout: QgsLayout, pageCollection: 'QgsLayoutPageCollection') -> None: ...

    def readXml(self, collectionElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setVisible(self, visible: bool) -> None: ...
    def visible(self) -> bool: ...
    def guidesOnPage(self, page: int) -> typing.List[QgsLayoutGuide]: ...
    @typing.overload
    def guides(self) -> typing.List[QgsLayoutGuide]: ...
    @typing.overload
    def guides(self, orientation: QtCore.Qt.Orientation, page: int = ...) -> typing.List[QgsLayoutGuide]: ...
    def update(self) -> None: ...
    def applyGuidesToAllOtherPages(self, sourcePage: int) -> None: ...
    def clear(self) -> None: ...
    def setGuideLayoutPosition(self, guide: QgsLayoutGuide, position: float) -> None: ...
    def removeGuide(self, guide: QgsLayoutGuide) -> None: ...
    def addGuide(self, guide: QgsLayoutGuide) -> None: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, a0: QtCore.QModelIndex) -> int: ...
    def rowCount(self, a0: QtCore.QModelIndex) -> int: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutGuideProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: QtCore.QObject, orientation: QtCore.Qt.Orientation, page: int) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setPage(self, page: int) -> None: ...


class QgsLayoutItemRenderContext(PyQt5.sip.wrapper):

    def __init__(self, context: QgsRenderContext, viewScaleFactor: float = ...) -> None: ...

    def viewScaleFactor(self) -> float: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsLayoutMultiFrame(QgsLayoutObject, QgsLayoutUndoObjectInterface):

    class UndoCommand(int):
        UndoHtmlBreakDistance = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoHtmlSource = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoHtmlStylesheet = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableCellStyle = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableMaximumFeatures = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableMargin = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableHeaderFontColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableContentFontColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableGridStrokeWidth = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableGridColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableBackgroundColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoNone = ... # type: QgsLayoutMultiFrame.UndoCommand

    class ResizeMode(int):
        UseExistingFrames = ... # type: QgsLayoutMultiFrame.ResizeMode
        ExtendToNextPage = ... # type: QgsLayoutMultiFrame.ResizeMode
        RepeatOnEveryPage = ... # type: QgsLayoutMultiFrame.ResizeMode
        RepeatUntilFinished = ... # type: QgsLayoutMultiFrame.ResizeMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def contentsChanged(self) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def recalculateFrameRects(self) -> None: ...
    def recalculateFrameSizes(self) -> None: ...
    def update(self) -> None: ...
    def refresh(self) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, commandText: str, command: 'QgsLayoutMultiFrame.UndoCommand' = ...) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def displayName(self) -> str: ...
    def createNewFrame(self, currentFrame: QgsLayoutFrame, pos: typing.Union[QtCore.QPointF, QtCore.QPoint, float], size: QtCore.QSizeF) -> QgsLayoutFrame: ...
    def frameIndex(self, frame: QgsLayoutFrame) -> int: ...
    def frame(self, index: int) -> QgsLayoutFrame: ...
    def frameCount(self) -> int: ...
    def frames(self) -> typing.List[QgsLayoutFrame]: ...
    def readXml(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, includeFrames: bool = ...) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, includeFrames: bool = ...) -> bool: ...
    def resizeMode(self) -> 'QgsLayoutMultiFrame.ResizeMode': ...
    def setResizeMode(self, mode: 'QgsLayoutMultiFrame.ResizeMode') -> None: ...
    def deleteFrames(self) -> None: ...
    def removeFrame(self, index: int, removeEmptyPages: bool = ...) -> None: ...
    def findNearbyPageBreak(self, yPos: float) -> float: ...
    def addFrame(self, frame: QgsLayoutFrame, recalcFrameSizes: bool = ...) -> None: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def minFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def fixedFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def uuid(self) -> str: ...


class QgsLayoutTable(QgsLayoutMultiFrame):

    class CellStyleGroup(int):
        OddColumns = ... # type: QgsLayoutTable.CellStyleGroup
        EvenColumns = ... # type: QgsLayoutTable.CellStyleGroup
        OddRows = ... # type: QgsLayoutTable.CellStyleGroup
        EvenRows = ... # type: QgsLayoutTable.CellStyleGroup
        FirstColumn = ... # type: QgsLayoutTable.CellStyleGroup
        LastColumn = ... # type: QgsLayoutTable.CellStyleGroup
        HeaderRow = ... # type: QgsLayoutTable.CellStyleGroup
        FirstRow = ... # type: QgsLayoutTable.CellStyleGroup
        LastRow = ... # type: QgsLayoutTable.CellStyleGroup

    class WrapBehavior(int):
        TruncateText = ... # type: QgsLayoutTable.WrapBehavior
        WrapText = ... # type: QgsLayoutTable.WrapBehavior

    class EmptyTableMode(int):
        HeadersOnly = ... # type: QgsLayoutTable.EmptyTableMode
        HideTable = ... # type: QgsLayoutTable.EmptyTableMode
        ShowMessage = ... # type: QgsLayoutTable.EmptyTableMode

    class HeaderMode(int):
        FirstFrame = ... # type: QgsLayoutTable.HeaderMode
        AllFrames = ... # type: QgsLayoutTable.HeaderMode
        NoHeaders = ... # type: QgsLayoutTable.HeaderMode

    class HeaderHAlignment(int):
        FollowColumn = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderLeft = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderCenter = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderRight = ... # type: QgsLayoutTable.HeaderHAlignment

    def __init__(self, layout: QgsLayout) -> None: ...

    def verticalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def horizontalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def textFormatForHeader(self, column: int) -> 'QgsTextFormat': ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def contentsContainsRow(self, contents: typing.Any, row: typing.Iterable[typing.Any]) -> bool: ...
    def recalculateTableSize(self) -> None: ...
    def drawHorizontalGridLines(self, context: QgsLayoutItemRenderContext, firstRow: int, lastRow: int, drawHeaderLines: bool) -> None: ...
    def rowRange(self, context: QgsRenderContext, frameIndex: int) -> typing.Tuple[int, int]: ...
    @typing.overload
    def rowsVisible(self, context: QgsRenderContext, frameHeight: float, firstRow: int, includeHeader: bool, includeEmptyRows: bool) -> int: ...
    @typing.overload
    def rowsVisible(self, context: QgsRenderContext, frameIndex: int, firstRow: int, includeEmptyRows: bool) -> int: ...
    def totalHeight(self) -> float: ...
    def totalWidth(self) -> float: ...
    def calculateMaxRowHeights(self) -> bool: ...
    def calculateMaxColumnWidths(self) -> bool: ...
    def recalculateFrameSizes(self) -> None: ...
    def refreshAttributes(self) -> None: ...
    def refresh(self) -> None: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def minFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def fixedFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def contents(self) -> typing.Any: ...
    def scopeForCell(self, row: int, column: int) -> QgsExpressionContextScope: ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    def getTableContents(self, contents: typing.Any) -> bool: ...
    def cellStyle(self, group: 'QgsLayoutTable.CellStyleGroup') -> 'QgsLayoutTableStyle': ...
    def setCellStyle(self, group: 'QgsLayoutTable.CellStyleGroup', style: 'QgsLayoutTableStyle') -> None: ...
    def setSortColumns(self, sortColumns: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def sortColumns(self) -> typing.List['QgsLayoutTableColumn']: ...
    def setColumns(self, columns: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def columns(self) -> typing.List['QgsLayoutTableColumn']: ...
    def wrapBehavior(self) -> 'QgsLayoutTable.WrapBehavior': ...
    def setWrapBehavior(self, behavior: 'QgsLayoutTable.WrapBehavior') -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def verticalGrid(self) -> bool: ...
    def setVerticalGrid(self, verticalGrid: bool) -> None: ...
    def horizontalGrid(self) -> bool: ...
    def setHorizontalGrid(self, horizontalGrid: bool) -> None: ...
    def gridColor(self) -> QtGui.QColor: ...
    def setGridColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def gridStrokeWidth(self) -> float: ...
    def setGridStrokeWidth(self, width: float) -> None: ...
    def showGrid(self) -> bool: ...
    def setShowGrid(self, showGrid: bool) -> None: ...
    def contentTextFormat(self) -> 'QgsTextFormat': ...
    def setContentTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def contentFontColor(self) -> QtGui.QColor: ...
    def setContentFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def contentFont(self) -> QtGui.QFont: ...
    def setContentFont(self, font: QtGui.QFont) -> None: ...
    def headerMode(self) -> 'QgsLayoutTable.HeaderMode': ...
    def setHeaderMode(self, mode: 'QgsLayoutTable.HeaderMode') -> None: ...
    def headerHAlignment(self) -> 'QgsLayoutTable.HeaderHAlignment': ...
    def setHeaderHAlignment(self, alignment: 'QgsLayoutTable.HeaderHAlignment') -> None: ...
    def headerTextFormat(self) -> 'QgsTextFormat': ...
    def setHeaderTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def headerFontColor(self) -> QtGui.QColor: ...
    def setHeaderFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def headerFont(self) -> QtGui.QFont: ...
    def setHeaderFont(self, font: QtGui.QFont) -> None: ...
    def showEmptyRows(self) -> bool: ...
    def setShowEmptyRows(self, showEmpty: bool) -> None: ...
    def emptyTableMessage(self) -> str: ...
    def setEmptyTableMessage(self, message: str) -> None: ...
    def emptyTableBehavior(self) -> 'QgsLayoutTable.EmptyTableMode': ...
    def setEmptyTableBehavior(self, mode: 'QgsLayoutTable.EmptyTableMode') -> None: ...
    def cellMargin(self) -> float: ...
    def setCellMargin(self, margin: float) -> None: ...


class QgsLayoutItemAttributeTable(QgsLayoutTable):

    class ContentSource(int):
        LayerAttributes = ... # type: QgsLayoutItemAttributeTable.ContentSource
        AtlasFeature = ... # type: QgsLayoutItemAttributeTable.ContentSource
        RelationChildren = ... # type: QgsLayoutItemAttributeTable.ContentSource

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setUseConditionalStyling(self, enabled: bool) -> None: ...
    def useConditionalStyling(self) -> bool: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def scopeForCell(self, row: int, column: int) -> QgsExpressionContextScope: ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    def getTableContents(self, contents: typing.Any) -> bool: ...
    def wrapString(self) -> str: ...
    def setWrapString(self, wrapString: str) -> None: ...
    def setDisplayedFields(self, fields: typing.Iterable[str], refresh: bool = ...) -> None: ...
    def setFeatureFilter(self, expression: str) -> None: ...
    def featureFilter(self) -> str: ...
    def setFilterFeatures(self, filter: bool) -> None: ...
    def filterFeatures(self) -> bool: ...
    def filterToAtlasFeature(self) -> bool: ...
    def setFilterToAtlasFeature(self, filterToAtlas: bool) -> None: ...
    def displayOnlyVisibleFeatures(self) -> bool: ...
    def setDisplayOnlyVisibleFeatures(self, visibleOnly: bool) -> None: ...
    def uniqueRowsOnly(self) -> bool: ...
    def setUniqueRowsOnly(self, uniqueOnly: bool) -> None: ...
    def maximumNumberOfFeatures(self) -> int: ...
    def setMaximumNumberOfFeatures(self, features: int) -> None: ...
    def map(self) -> 'QgsLayoutItemMap': ...
    def setMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def resetColumns(self) -> None: ...
    def relationId(self) -> str: ...
    def setRelationId(self, id: str) -> None: ...
    def vectorLayer(self) -> QgsVectorLayer: ...
    def setVectorLayer(self, layer: QgsVectorLayer) -> None: ...
    def sourceLayer(self) -> QgsVectorLayer: ...
    def source(self) -> 'QgsLayoutItemAttributeTable.ContentSource': ...
    def setSource(self, source: 'QgsLayoutItemAttributeTable.ContentSource') -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemAttributeTable': ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemElevationProfile(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    def setDistanceUnit(self, unit: Qgis.DistanceUnit) -> None: ...
    def distanceUnit(self) -> Qgis.DistanceUnit: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def profileRequest(self) -> QgsProfileRequest: ...
    def setAtlasDriven(self, enabled: bool) -> None: ...
    def atlasDriven(self) -> bool: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def profileCurve(self) -> QgsCurve: ...
    def setProfileCurve(self, curve: QgsCurve) -> None: ...
    def setLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layers(self) -> typing.List[QgsMapLayer]: ...
    def plot(self) -> 'Qgs2DPlot': ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemElevationProfile': ...


class QgsLayoutItemGroup(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def attemptMove(self, point: 'QgsLayoutPoint', useReferencePoint: bool = ..., includesFrame: bool = ..., page: int = ...) -> None: ...
    def setVisibility(self, visible: bool) -> None: ...
    def items(self) -> typing.List[QgsLayoutItem]: ...
    def removeItems(self) -> None: ...
    def addItem(self, item: QgsLayoutItem) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemGroup': ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...
    def cleanup(self) -> None: ...


class QgsLayoutItemHtml(QgsLayoutMultiFrame):

    class ContentMode(int):
        Url = ... # type: QgsLayoutItemHtml.ContentMode
        ManualHtml = ... # type: QgsLayoutItemHtml.ContentMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def recalculateFrameSizes(self) -> None: ...
    def loadHtml(self, useCache: bool = ..., context: typing.Optional[QgsExpressionContext] = ...) -> None: ...
    def findNearbyPageBreak(self, yPos: float) -> float: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def displayName(self) -> str: ...
    def userStylesheetEnabled(self) -> bool: ...
    def setUserStylesheetEnabled(self, enabled: bool) -> None: ...
    def userStylesheet(self) -> str: ...
    def setUserStylesheet(self, stylesheet: str) -> None: ...
    def maxBreakDistance(self) -> float: ...
    def setMaxBreakDistance(self, distance: float) -> None: ...
    def setUseSmartBreaks(self, useSmartBreaks: bool) -> None: ...
    def useSmartBreaks(self) -> bool: ...
    def setEvaluateExpressions(self, evaluateExpressions: bool) -> None: ...
    def evaluateExpressions(self) -> bool: ...
    def html(self) -> str: ...
    def setHtml(self, html: str) -> None: ...
    def url(self) -> QtCore.QUrl: ...
    def setUrl(self, url: QtCore.QUrl) -> None: ...
    def contentMode(self) -> 'QgsLayoutItemHtml.ContentMode': ...
    def setContentMode(self, mode: 'QgsLayoutItemHtml.ContentMode') -> None: ...
    @staticmethod
    def createFromLabel(label: 'QgsLayoutItemLabel') -> 'QgsLayoutItemHtml': ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemHtml': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemLabel(QgsLayoutItem):

    class Mode(int):
        ModeFont = ... # type: QgsLayoutItemLabel.Mode
        ModeHtml = ... # type: QgsLayoutItemLabel.Mode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def convertToStaticText(self) -> None: ...
    def refresh(self) -> None: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setFrameStrokeWidth(self, strokeWidth: 'QgsLayoutMeasurement') -> None: ...
    def setFrameEnabled(self, drawFrame: bool) -> None: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setMarginY(self, margin: float) -> None: ...
    def setMarginX(self, margin: float) -> None: ...
    def setMargin(self, margin: float) -> None: ...
    def marginY(self) -> float: ...
    def marginX(self) -> float: ...
    def setVAlign(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def setHAlign(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def hAlign(self) -> QtCore.Qt.AlignmentFlag: ...
    def vAlign(self) -> QtCore.Qt.AlignmentFlag: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setMode(self, mode: 'QgsLayoutItemLabel.Mode') -> None: ...
    def mode(self) -> 'QgsLayoutItemLabel.Mode': ...
    def currentText(self) -> str: ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def sizeForText(self) -> QtCore.QSizeF: ...
    def adjustSizeToText(self) -> None: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemLabel': ...


class QgsLegendModel(QgsLayerTreeModel):

    @typing.overload
    def __init__(self, rootNode: QgsLayerTree, parent: typing.Optional[QtCore.QObject] = ..., layout: typing.Optional['QgsLayoutItemLegend'] = ...) -> None: ...
    @typing.overload
    def __init__(self, rootNode: QgsLayerTree, layout: 'QgsLayoutItemLegend') -> None: ...

    def refreshLegend(self) -> None: ...
    def clearCachedData(self, node: QgsLayerTreeNode) -> None: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsLayoutItemLegend(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    def isRefreshing(self) -> bool: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def legendSettings(self) -> QgsLegendSettings: ...
    def updateFilterByMap(self, redraw: bool = ...) -> None: ...
    def updateLegend(self) -> None: ...
    def themeName(self) -> str: ...
    def filterByMapItems(self) -> typing.List['QgsLayoutItemMap']: ...
    def setFilterByMapItems(self, maps: typing.Iterable['QgsLayoutItemMap']) -> None: ...
    def linkedMap(self) -> 'QgsLayoutItemMap': ...
    def setLinkedMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def setRasterStrokeWidth(self, width: float) -> None: ...
    def rasterStrokeWidth(self) -> float: ...
    def setRasterStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def rasterStrokeColor(self) -> QtGui.QColor: ...
    def setDrawRasterStroke(self, enabled: bool) -> None: ...
    def drawRasterStroke(self) -> bool: ...
    def setEqualColumnWidth(self, equalize: bool) -> None: ...
    def equalColumnWidth(self) -> bool: ...
    def setSplitLayer(self, enabled: bool) -> None: ...
    def splitLayer(self) -> bool: ...
    def setColumnCount(self, count: int) -> None: ...
    def columnCount(self) -> int: ...
    def wrapString(self) -> str: ...
    def setWrapString(self, string: str) -> None: ...
    def setWmsLegendHeight(self, height: float) -> None: ...
    def wmsLegendHeight(self) -> float: ...
    def setWmsLegendWidth(self, width: float) -> None: ...
    def wmsLegendWidth(self) -> float: ...
    def setSymbolHeight(self, height: float) -> None: ...
    def symbolHeight(self) -> float: ...
    def symbolAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setSymbolAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def setMinimumSymbolSize(self, size: float) -> None: ...
    def minimumSymbolSize(self) -> float: ...
    def setMaximumSymbolSize(self, size: float) -> None: ...
    def maximumSymbolSize(self) -> float: ...
    def setSymbolWidth(self, width: float) -> None: ...
    def symbolWidth(self) -> float: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setColumnSpace(self, spacing: float) -> None: ...
    def columnSpace(self) -> float: ...
    def setBoxSpace(self, space: float) -> None: ...
    def boxSpace(self) -> float: ...
    def setLineSpacing(self, spacing: float) -> None: ...
    def lineSpacing(self) -> float: ...
    @typing.overload
    def setStyleMargin(self, component: QgsLegendStyle.Style, margin: float) -> None: ...
    @typing.overload
    def setStyleMargin(self, component: QgsLegendStyle.Style, side: QgsLegendStyle.Side, margin: float) -> None: ...
    def setStyleFont(self, component: QgsLegendStyle.Style, font: QtGui.QFont) -> None: ...
    def styleFont(self, component: QgsLegendStyle.Style) -> QtGui.QFont: ...
    def setStyle(self, component: QgsLegendStyle.Style, style: QgsLegendStyle) -> None: ...
    def style(self, s: QgsLegendStyle.Style) -> QgsLegendStyle: ...
    def rstyle(self, s: QgsLegendStyle.Style) -> QgsLegendStyle: ...
    def setTitleAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def titleAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def legendFilterOutAtlas(self) -> bool: ...
    def setLegendFilterOutAtlas(self, doFilter: bool) -> None: ...
    def legendFilterByMapEnabled(self) -> bool: ...
    def setLegendFilterByMapEnabled(self, enabled: bool) -> None: ...
    def autoUpdateModel(self) -> bool: ...
    def setAutoUpdateModel(self, autoUpdate: bool) -> None: ...
    def model(self) -> QgsLegendModel: ...
    def resizeToContents(self) -> bool: ...
    def setResizeToContents(self, enabled: bool) -> None: ...
    def adjustBoxSize(self) -> None: ...
    def displayName(self) -> str: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemLegend': ...


class QgsLayoutItemManualTable(QgsLayoutTable):

    def __init__(self, layout: QgsLayout) -> None: ...

    def verticalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def horizontalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def textFormatForHeader(self, column: int) -> 'QgsTextFormat': ...
    def calculateMaxRowHeights(self) -> bool: ...
    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setHeaders(self, headers: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def headers(self) -> typing.List['QgsLayoutTableColumn']: ...
    def setIncludeTableHeader(self, included: bool) -> None: ...
    def includeTableHeader(self) -> bool: ...
    def setColumnWidths(self, widths: typing.Iterable[float]) -> None: ...
    def columnWidths(self) -> typing.List[float]: ...
    def setRowHeights(self, heights: typing.Iterable[float]) -> None: ...
    def rowHeights(self) -> typing.List[float]: ...
    def tableContents(self) -> typing.Any: ...
    def setTableContents(self, contents: typing.Any) -> None: ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemManualTable': ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemMapAtlasClippingSettings(QtCore.QObject):

    def __init__(self, map: typing.Optional['QgsLayoutItemMap'] = ...) -> None: ...

    def changed(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setLayersToClip(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layersToClip(self) -> typing.List[QgsMapLayer]: ...
    def setRestrictToLayers(self, enabled: bool) -> None: ...
    def restrictToLayers(self) -> bool: ...
    def setForceLabelsInsideFeature(self, forceInside: bool) -> None: ...
    def forceLabelsInsideFeature(self) -> bool: ...
    def setFeatureClippingType(self, type: QgsMapClippingRegion.FeatureClippingType) -> None: ...
    def featureClippingType(self) -> QgsMapClippingRegion.FeatureClippingType: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...


class QgsLayoutItemMapItemClipPathSettings(QtCore.QObject):

    def __init__(self, map: typing.Optional['QgsLayoutItemMap'] = ...) -> None: ...

    def changed(self) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setForceLabelsInsideClipPath(self, forceInside: bool) -> None: ...
    def forceLabelsInsideClipPath(self) -> bool: ...
    def setFeatureClippingType(self, type: QgsMapClippingRegion.FeatureClippingType) -> None: ...
    def featureClippingType(self) -> QgsMapClippingRegion.FeatureClippingType: ...
    def sourceItem(self) -> QgsLayoutItem: ...
    def setSourceItem(self, item: QgsLayoutItem) -> None: ...
    def toMapClippingRegion(self) -> QgsMapClippingRegion: ...
    def clipPathInMapItemCoordinates(self) -> QgsGeometry: ...
    def clippedMapExtent(self) -> QgsGeometry: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def isActive(self) -> bool: ...


class QgsLayoutItemMap(QgsLayoutItem, QgsTemporalRangeObject):

    class MapItemFlag(int):
        ShowPartialLabels = ... # type: QgsLayoutItemMap.MapItemFlag
        ShowUnplacedLabels = ... # type: QgsLayoutItemMap.MapItemFlag

    class AtlasScalingMode(int):
        Fixed = ... # type: QgsLayoutItemMap.AtlasScalingMode
        Predefined = ... # type: QgsLayoutItemMap.AtlasScalingMode
        Auto = ... # type: QgsLayoutItemMap.AtlasScalingMode

    class MapItemFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutItemMap.MapItemFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, layout: QgsLayout) -> None: ...

    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def updateBoundingRect(self) -> None: ...
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    def previewRefreshed(self) -> None: ...
    def crsChanged(self) -> None: ...
    def themeChanged(self, theme: str) -> None: ...
    def layerStyleOverridesChanged(self) -> None: ...
    def preparedForAtlas(self) -> None: ...
    def mapRotationChanged(self, newRotation: float) -> None: ...
    def extentChanged(self) -> None: ...
    def requestedExtent(self) -> QgsRectangle: ...
    def mapToItemCoords(self, mapCoords: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> QtCore.QPointF: ...
    def transformedMapPolygon(self) -> QtGui.QPolygonF: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def isDrawing(self) -> bool: ...
    def framePath(self) -> QtGui.QPainterPath: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def itemClippingSettings(self) -> QgsLayoutItemMapItemClipPathSettings: ...
    def atlasClippingSettings(self) -> QgsLayoutItemMapAtlasClippingSettings: ...
    def layoutToMapCoordsTransform(self) -> QtGui.QTransform: ...
    def removeRenderedFeatureHandler(self, handler: QgsRenderedFeatureHandlerInterface) -> None: ...
    def addRenderedFeatureHandler(self, handler: QgsRenderedFeatureHandlerInterface) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def previewLabelingResults(self) -> QgsLabelingResults: ...
    def renderingErrors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def isLabelBlockingItem(self, item: QgsLayoutItem) -> bool: ...
    def removeLabelBlockingItem(self, item: QgsLayoutItem) -> None: ...
    def addLabelBlockingItem(self, item: QgsLayoutItem) -> None: ...
    def layersToRender(self, context: typing.Optional[QgsExpressionContext] = ...) -> typing.List[QgsMapLayer]: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def mapSettings(self, extent: QgsRectangle, size: QtCore.QSizeF, dpi: float, includeLayerSettings: bool) -> QgsMapSettings: ...
    def mapUnitsToLayoutUnits(self) -> float: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def setLabelMargin(self, margin: 'QgsLayoutMeasurement') -> None: ...
    def labelMargin(self) -> 'QgsLayoutMeasurement': ...
    def overview(self) -> 'QgsLayoutItemMapOverview': ...
    def overviews(self) -> 'QgsLayoutItemMapOverviewStack': ...
    def grid(self) -> 'QgsLayoutItemMapGrid': ...
    def grids(self) -> 'QgsLayoutItemMapGridStack': ...
    def setAtlasMargin(self, margin: float) -> None: ...
    def atlasMargin(self, valueType: QgsLayoutObject.PropertyValueType = ...) -> float: ...
    def setAtlasScalingMode(self, mode: 'QgsLayoutItemMap.AtlasScalingMode') -> None: ...
    def atlasScalingMode(self) -> 'QgsLayoutItemMap.AtlasScalingMode': ...
    def setAtlasDriven(self, enabled: bool) -> None: ...
    def atlasDriven(self) -> bool: ...
    def drawAnnotations(self) -> bool: ...
    def setDrawAnnotations(self, draw: bool) -> None: ...
    def mapRotation(self, valueType: QgsLayoutObject.PropertyValueType = ...) -> float: ...
    def setMapRotation(self, rotation: float) -> None: ...
    def containsAdvancedEffects(self) -> bool: ...
    def requiresRasterization(self) -> bool: ...
    def containsWmsLayer(self) -> bool: ...
    def zoomContent(self, factor: float, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def setMoveContentPreviewOffset(self, dx: float, dy: float) -> None: ...
    def moveContent(self, dx: float, dy: float) -> None: ...
    def setFollowVisibilityPresetName(self, name: str) -> None: ...
    def followVisibilityPresetName(self) -> str: ...
    def setFollowVisibilityPreset(self, follow: bool) -> None: ...
    def followVisibilityPreset(self) -> bool: ...
    def storeCurrentLayerStyles(self) -> None: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[str, str]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def setKeepLayerStyles(self, enabled: bool) -> None: ...
    def keepLayerStyles(self) -> bool: ...
    def setLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layers(self) -> typing.List[QgsMapLayer]: ...
    def setKeepLayerSet(self, enabled: bool) -> None: ...
    def keepLayerSet(self) -> bool: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def presetCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def visibleExtentPolygon(self) -> QtGui.QPolygonF: ...
    def extent(self) -> QgsRectangle: ...
    def zoomToExtent(self, extent: QgsRectangle) -> None: ...
    def setExtent(self, extent: QgsRectangle) -> None: ...
    def setScale(self, scale: float, forceUpdate: bool = ...) -> None: ...
    def scale(self) -> float: ...
    def setFrameStrokeWidth(self, width: 'QgsLayoutMeasurement') -> None: ...
    def exportLayerDetails(self) -> QgsLayoutItem.ExportLayerDetail: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def nextExportPart(self) -> bool: ...
    def stopLayeredExport(self) -> None: ...
    def startLayeredExport(self) -> None: ...
    def numberExportLayers(self) -> int: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemMap': ...
    def displayName(self) -> str: ...
    def assignFreeId(self) -> None: ...
    def setMapFlags(self, flags: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> None: ...
    def mapFlags(self) -> 'QgsLayoutItemMap.MapItemFlags': ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemMapItemStack(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapItemStack') -> None: ...

    def removeItems(self) -> None: ...
    def asList(self) -> typing.List['QgsLayoutItemMapItem']: ...
    def moveItemDown(self, itemId: str) -> None: ...
    def moveItemUp(self, itemId: str) -> None: ...
    def removeItem(self, itemId: str) -> None: ...
    def addItem(self, item: 'QgsLayoutItemMapItem') -> None: ...
    @typing.overload
    def item(self, index: int) -> 'QgsLayoutItemMapItem': ...
    @typing.overload
    def item(self, itemId: str) -> 'QgsLayoutItemMapItem': ...
    def hasEnabledItems(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    def drawItems(self, painter: QtGui.QPainter, ignoreStacking: bool = ...) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def size(self) -> int: ...


class QgsLayoutItemMapGridStack(QgsLayoutItemMapItemStack):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapGridStack') -> None: ...

    def calculateMaxGridExtension(self) -> typing.Tuple[float, float, float, float]: ...
    def maxGridExtension(self) -> float: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def asList(self) -> typing.List['QgsLayoutItemMapGrid']: ...
    def __getitem__(self, index: int) -> 'QgsLayoutItemMapGrid': ...
    @typing.overload
    def grid(self, gridId: str) -> 'QgsLayoutItemMapGrid': ...
    @typing.overload
    def grid(self, index: int) -> 'QgsLayoutItemMapGrid': ...
    def moveGridDown(self, gridId: str) -> None: ...
    def moveGridUp(self, gridId: str) -> None: ...
    def removeGrid(self, gridId: str) -> None: ...
    def addGrid(self, grid: 'QgsLayoutItemMapGrid') -> None: ...


class QgsLayoutItemMapItem(QgsLayoutObject):

    class StackingPosition(int):
        StackBelowMap = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackBelowMapLayer = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackAboveMapLayer = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackBelowMapLabels = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackAboveMapLabels = ... # type: QgsLayoutItemMapItem.StackingPosition

    def __init__(self, name: str, map: QgsLayoutItemMap) -> None: ...

    def createExpressionContext(self) -> QgsExpressionContext: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def setStackingLayer(self, layer: QgsMapLayer) -> None: ...
    def stackingLayer(self) -> QgsMapLayer: ...
    def setStackingPosition(self, position: 'QgsLayoutItemMapItem.StackingPosition') -> None: ...
    def stackingPosition(self) -> 'QgsLayoutItemMapItem.StackingPosition': ...
    def usesAdvancedEffects(self) -> bool: ...
    def enabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def name(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def id(self) -> str: ...
    def map(self) -> QgsLayoutItemMap: ...
    def setMap(self, map: QgsLayoutItemMap) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMapGrid(QgsLayoutItemMapItem):

    class AnnotationCoordinate(int):
        Longitude = ... # type: QgsLayoutItemMapGrid.AnnotationCoordinate
        Latitude = ... # type: QgsLayoutItemMapGrid.AnnotationCoordinate

    class FrameSideFlag(int):
        FrameLeft = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameRight = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameTop = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameBottom = ... # type: QgsLayoutItemMapGrid.FrameSideFlag

    class TickLengthMode(int):
        OrthogonalTicks = ... # type: QgsLayoutItemMapGrid.TickLengthMode
        NormalizedTicks = ... # type: QgsLayoutItemMapGrid.TickLengthMode

    class FrameStyle(int):
        NoFrame = ... # type: QgsLayoutItemMapGrid.FrameStyle
        Zebra = ... # type: QgsLayoutItemMapGrid.FrameStyle
        InteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        ExteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        InteriorExteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        LineBorder = ... # type: QgsLayoutItemMapGrid.FrameStyle
        LineBorderNautical = ... # type: QgsLayoutItemMapGrid.FrameStyle
        ZebraNautical = ... # type: QgsLayoutItemMapGrid.FrameStyle

    class BorderSide(int):
        Left = ... # type: QgsLayoutItemMapGrid.BorderSide
        Right = ... # type: QgsLayoutItemMapGrid.BorderSide
        Bottom = ... # type: QgsLayoutItemMapGrid.BorderSide
        Top = ... # type: QgsLayoutItemMapGrid.BorderSide

    class AnnotationFormat(int):
        Decimal = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinute = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecond = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DecimalWithSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteNoSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinutePadded = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecondNoSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecondPadded = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        CustomFormat = ... # type: QgsLayoutItemMapGrid.AnnotationFormat

    class AnnotationDirection(int):
        Horizontal = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        Vertical = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        VerticalDescending = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        BoundaryDirection = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        AboveTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        OnTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        UnderTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection

    class AnnotationPosition(int):
        InsideMapFrame = ... # type: QgsLayoutItemMapGrid.AnnotationPosition
        OutsideMapFrame = ... # type: QgsLayoutItemMapGrid.AnnotationPosition

    class DisplayMode(int):
        ShowAll = ... # type: QgsLayoutItemMapGrid.DisplayMode
        LatitudeOnly = ... # type: QgsLayoutItemMapGrid.DisplayMode
        LongitudeOnly = ... # type: QgsLayoutItemMapGrid.DisplayMode
        HideAll = ... # type: QgsLayoutItemMapGrid.DisplayMode

    class GridStyle(int):
        Solid = ... # type: QgsLayoutItemMapGrid.GridStyle
        Cross = ... # type: QgsLayoutItemMapGrid.GridStyle
        Markers = ... # type: QgsLayoutItemMapGrid.GridStyle
        FrameAnnotationsOnly = ... # type: QgsLayoutItemMapGrid.GridStyle

    class GridUnit(int):
        MapUnit = ... # type: QgsLayoutItemMapGrid.GridUnit
        MM = ... # type: QgsLayoutItemMapGrid.GridUnit
        CM = ... # type: QgsLayoutItemMapGrid.GridUnit
        DynamicPageSizeBased = ... # type: QgsLayoutItemMapGrid.GridUnit

    class FrameSideFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutItemMapGrid.FrameSideFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, name: str, map: QgsLayoutItemMap) -> None: ...

    def crsChanged(self) -> None: ...
    def refresh(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def frameFillColor2(self) -> QtGui.QColor: ...
    def setFrameFillColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def frameFillColor1(self) -> QtGui.QColor: ...
    def setFrameFillColor1(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def framePenColor(self) -> QtGui.QColor: ...
    def setFramePenColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def framePenSize(self) -> float: ...
    def setFramePenSize(self, width: float) -> None: ...
    def frameMargin(self) -> float: ...
    def setFrameMargin(self, margin: float) -> None: ...
    def rotatedAnnotationsMarginToCorner(self) -> float: ...
    def setRotatedAnnotationsMarginToCorner(self, margin: float) -> None: ...
    def rotatedAnnotationsMinimumAngle(self) -> float: ...
    def setRotatedAnnotationsMinimumAngle(self, angle: float) -> None: ...
    def rotatedAnnotationsLengthMode(self) -> 'QgsLayoutItemMapGrid.TickLengthMode': ...
    def setRotatedAnnotationsLengthMode(self, mode: 'QgsLayoutItemMapGrid.TickLengthMode') -> None: ...
    def rotatedAnnotationsEnabled(self) -> float: ...
    def setRotatedAnnotationsEnabled(self, state: bool) -> None: ...
    def rotatedTicksMarginToCorner(self) -> float: ...
    def setRotatedTicksMarginToCorner(self, margin: float) -> None: ...
    def rotatedTicksMinimumAngle(self) -> float: ...
    def setRotatedTicksMinimumAngle(self, angle: float) -> None: ...
    def rotatedTicksLengthMode(self) -> 'QgsLayoutItemMapGrid.TickLengthMode': ...
    def setRotatedTicksLengthMode(self, mode: 'QgsLayoutItemMapGrid.TickLengthMode') -> None: ...
    def rotatedTicksEnabled(self) -> float: ...
    def setRotatedTicksEnabled(self, state: bool) -> None: ...
    def frameWidth(self) -> float: ...
    def setFrameWidth(self, width: float) -> None: ...
    def testFrameSideFlag(self, flag: 'QgsLayoutItemMapGrid.FrameSideFlag') -> bool: ...
    def frameSideFlags(self) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
    def setFrameSideFlag(self, flag: 'QgsLayoutItemMapGrid.FrameSideFlag', on: bool = ...) -> None: ...
    def setFrameSideFlags(self, flags: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> None: ...
    def frameDivisions(self, side: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.DisplayMode': ...
    def setFrameDivisions(self, divisions: 'QgsLayoutItemMapGrid.DisplayMode', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def frameStyle(self) -> 'QgsLayoutItemMapGrid.FrameStyle': ...
    def setFrameStyle(self, style: 'QgsLayoutItemMapGrid.FrameStyle') -> None: ...
    def annotationExpression(self) -> str: ...
    def setAnnotationExpression(self, expression: str) -> None: ...
    def annotationFormat(self) -> 'QgsLayoutItemMapGrid.AnnotationFormat': ...
    def setAnnotationFormat(self, format: 'QgsLayoutItemMapGrid.AnnotationFormat') -> None: ...
    def annotationDirection(self, border: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.AnnotationDirection': ...
    @typing.overload
    def setAnnotationDirection(self, direction: 'QgsLayoutItemMapGrid.AnnotationDirection', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    @typing.overload
    def setAnnotationDirection(self, direction: 'QgsLayoutItemMapGrid.AnnotationDirection') -> None: ...
    def annotationFrameDistance(self) -> float: ...
    def setAnnotationFrameDistance(self, distance: float) -> None: ...
    def annotationPosition(self, side: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.AnnotationPosition': ...
    def setAnnotationPosition(self, position: 'QgsLayoutItemMapGrid.AnnotationPosition', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def annotationDisplay(self, border: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.DisplayMode': ...
    def setAnnotationDisplay(self, display: 'QgsLayoutItemMapGrid.DisplayMode', border: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def annotationPrecision(self) -> int: ...
    def setAnnotationPrecision(self, precision: int) -> None: ...
    def annotationFontColor(self) -> QtGui.QColor: ...
    def setAnnotationFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def annotationFont(self) -> QtGui.QFont: ...
    def setAnnotationFont(self, font: QtGui.QFont) -> None: ...
    def annotationTextFormat(self) -> 'QgsTextFormat': ...
    def setAnnotationTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def annotationEnabled(self) -> bool: ...
    def setAnnotationEnabled(self, enabled: bool) -> None: ...
    def markerSymbol(self) -> 'QgsMarkerSymbol': ...
    def setMarkerSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def setGridLineColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setGridLineWidth(self, width: float) -> None: ...
    def crossLength(self) -> float: ...
    def setCrossLength(self, length: float) -> None: ...
    def style(self) -> 'QgsLayoutItemMapGrid.GridStyle': ...
    def setStyle(self, style: 'QgsLayoutItemMapGrid.GridStyle') -> None: ...
    def setMaximumIntervalWidth(self, width: float) -> None: ...
    def maximumIntervalWidth(self) -> float: ...
    def setMinimumIntervalWidth(self, width: float) -> None: ...
    def minimumIntervalWidth(self) -> float: ...
    def offsetY(self) -> float: ...
    def setOffsetY(self, offset: float) -> None: ...
    def offsetX(self) -> float: ...
    def setOffsetX(self, offset: float) -> None: ...
    def intervalY(self) -> float: ...
    def setIntervalY(self, interval: float) -> None: ...
    def intervalX(self) -> float: ...
    def setIntervalX(self, interval: float) -> None: ...
    def units(self) -> 'QgsLayoutItemMapGrid.GridUnit': ...
    def setUnits(self, unit: 'QgsLayoutItemMapGrid.GridUnit') -> None: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def calculateMaxExtension(self) -> typing.Tuple[float, float, float, float]: ...
    def maxExtension(self) -> float: ...
    def usesAdvancedEffects(self) -> bool: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMapOverviewStack(QgsLayoutItemMapItemStack):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapOverviewStack') -> None: ...

    def modifyMapLayerList(self, layers: typing.Iterable[QgsMapLayer]) -> typing.List[QgsMapLayer]: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def asList(self) -> typing.List['QgsLayoutItemMapOverview']: ...
    def __getitem__(self, index: int) -> 'QgsLayoutItemMapOverview': ...
    @typing.overload
    def overview(self, overviewId: str) -> 'QgsLayoutItemMapOverview': ...
    @typing.overload
    def overview(self, index: int) -> 'QgsLayoutItemMapOverview': ...
    def moveOverviewDown(self, overviewId: str) -> None: ...
    def moveOverviewUp(self, overviewId: str) -> None: ...
    def removeOverview(self, overviewId: str) -> None: ...
    def addOverview(self, overview: 'QgsLayoutItemMapOverview') -> None: ...


class QgsLayoutItemMapOverview(QgsLayoutItemMapItem):

    def __init__(self, name: str, map: QgsLayoutItemMap) -> None: ...

    def overviewExtentChanged(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def asMapLayer(self) -> QgsVectorLayer: ...
    def connectSignals(self) -> None: ...
    def setCentered(self, centered: bool) -> None: ...
    def centered(self) -> bool: ...
    def setInverted(self, inverted: bool) -> None: ...
    def inverted(self) -> bool: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def frameSymbol(self) -> 'QgsFillSymbol': ...
    def setFrameSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def usesAdvancedEffects(self) -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMarker(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def finalizeRestoreFromXml(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def setNorthOffset(self, offset: float) -> None: ...
    def northOffset(self) -> float: ...
    def setNorthMode(self, mode: 'QgsLayoutNorthArrowHandler.NorthMode') -> None: ...
    def northMode(self) -> 'QgsLayoutNorthArrowHandler.NorthMode': ...
    def northArrowRotation(self) -> float: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def symbol(self) -> 'QgsMarkerSymbol': ...
    def setSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemMarker': ...


class QgsLayoutNodesItem(QgsLayoutItem):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def updateBoundingRect(self) -> None: ...
    def updateSceneRect(self) -> None: ...
    def computeDistance(self, pt1: typing.Union[QtCore.QPointF, QtCore.QPoint, float], pt2: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> float: ...
    def rescaleToFitBoundingBox(self) -> None: ...
    def _writeXmlStyle(self, doc: QtXml.QDomDocument, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _readXmlStyle(self, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _draw(self, context: QgsLayoutItemRenderContext, itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem] = ...) -> None: ...
    def _removeNode(self, nodeIndex: int) -> bool: ...
    def _addNode(self, nodeIndex: int, newNode: typing.Union[QtCore.QPointF, QtCore.QPoint, float], radius: float) -> bool: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def estimatedFrameBleed(self) -> float: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def deselectNode(self) -> None: ...
    def selectedNode(self) -> int: ...
    def setSelectedNode(self, index: int) -> bool: ...
    def nodesSize(self) -> int: ...
    def removeNode(self, index: int) -> bool: ...
    def nodePosition(self, index: int, position: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> bool: ...
    def nodeAtPosition(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], searchInRadius: bool = ..., radius: float = ...) -> int: ...
    def moveNode(self, index: int, node: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> bool: ...
    def setDisplayNodes(self, display: bool = ...) -> None: ...
    def addNode(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], checkArea: bool = ..., radius: float = ...) -> bool: ...
    def nodes(self) -> QtGui.QPolygonF: ...
    def setNodes(self, nodes: QtGui.QPolygonF) -> None: ...


class QgsLayoutItemPage(QgsLayoutItem):

    class UndoCommand(int):
        UndoPageSymbol = ... # type: QgsLayoutItemPage.UndoCommand

    class Orientation(int):
        Portrait = ... # type: QgsLayoutItemPage.Orientation
        Landscape = ... # type: QgsLayoutItemPage.Orientation

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def redraw(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    @staticmethod
    def decodePageOrientation(string: str) -> typing.Tuple['QgsLayoutItemPage.Orientation', bool]: ...
    def pageStyleSymbol(self) -> 'QgsFillSymbol': ...
    def setPageStyleSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def orientation(self) -> 'QgsLayoutItemPage.Orientation': ...
    def pageSize(self) -> 'QgsLayoutSize': ...
    def pageLayout(self) -> QtGui.QPageLayout: ...
    @typing.overload
    def setPageSize(self, size: 'QgsLayoutSize') -> None: ...
    @typing.overload
    def setPageSize(self, size: str, orientation: 'QgsLayoutItemPage.Orientation' = ...) -> bool: ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPage': ...


class QgsLayoutItemPicture(QgsLayoutItem):

    class NorthMode(int):
        GridNorth = ... # type: QgsLayoutItemPicture.NorthMode
        TrueNorth = ... # type: QgsLayoutItemPicture.NorthMode

    class Format(int):
        FormatSVG = ... # type: QgsLayoutItemPicture.Format
        FormatRaster = ... # type: QgsLayoutItemPicture.Format
        FormatUnknown = ... # type: QgsLayoutItemPicture.Format

    class ResizeMode(int):
        Zoom = ... # type: QgsLayoutItemPicture.ResizeMode
        Stretch = ... # type: QgsLayoutItemPicture.ResizeMode
        Clip = ... # type: QgsLayoutItemPicture.ResizeMode
        ZoomResizeFrame = ... # type: QgsLayoutItemPicture.ResizeMode
        FrameToImageSize = ... # type: QgsLayoutItemPicture.ResizeMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def applyItemSizeConstraint(self, targetSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def pictureRotationChanged(self, newRotation: float) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def recalculateSize(self) -> None: ...
    def refreshPicture(self, context: typing.Optional[QgsExpressionContext] = ...) -> None: ...
    def setResizeMode(self, mode: 'QgsLayoutItemPicture.ResizeMode') -> None: ...
    def setPictureRotation(self, rotation: float) -> None: ...
    def setSvgDynamicParameters(self, parameters: typing.Dict[str, QgsProperty]) -> None: ...
    def svgDynamicParameters(self) -> typing.Dict[str, QgsProperty]: ...
    def evaluatedPath(self) -> str: ...
    def isMissingImage(self) -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def setMode(self, mode: 'QgsLayoutItemPicture.Format') -> None: ...
    def originalMode(self) -> 'QgsLayoutItemPicture.Format': ...
    def mode(self) -> 'QgsLayoutItemPicture.Format': ...
    def setSvgStrokeWidth(self, width: float) -> None: ...
    def svgStrokeWidth(self) -> float: ...
    def setSvgStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def svgStrokeColor(self) -> QtGui.QColor: ...
    def setSvgFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def svgFillColor(self) -> QtGui.QColor: ...
    def pictureAnchor(self) -> QgsLayoutItem.ReferencePoint: ...
    def setPictureAnchor(self, anchor: QgsLayoutItem.ReferencePoint) -> None: ...
    def resizeMode(self) -> 'QgsLayoutItemPicture.ResizeMode': ...
    def setNorthOffset(self, offset: float) -> None: ...
    def northOffset(self) -> float: ...
    def setNorthMode(self, mode: 'QgsLayoutItemPicture.NorthMode') -> None: ...
    def northMode(self) -> 'QgsLayoutItemPicture.NorthMode': ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def pictureRotation(self) -> float: ...
    def picturePath(self) -> str: ...
    def setPicturePath(self, path: str, format: 'QgsLayoutItemPicture.Format' = ...) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPicture': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemPolygon(QgsLayoutNodesItem):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def _writeXmlStyle(self, doc: QtXml.QDomDocument, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _readXmlStyle(self, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _draw(self, context: QgsLayoutItemRenderContext, itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem] = ...) -> None: ...
    def _removeNode(self, nodeIndex: int) -> bool: ...
    def _addNode(self, indexPoint: int, newPoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float], radius: float) -> bool: ...
    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def clipPath(self) -> QgsGeometry: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPolygon': ...


class QgsLayoutItemPolyline(QgsLayoutNodesItem):

    class MarkerMode(int):
        NoMarker = ... # type: QgsLayoutItemPolyline.MarkerMode
        ArrowHead = ... # type: QgsLayoutItemPolyline.MarkerMode
        SvgMarker = ... # type: QgsLayoutItemPolyline.MarkerMode

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polyline: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def updateBoundingRect(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def _writeXmlStyle(self, doc: QtXml.QDomDocument, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _readXmlStyle(self, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _draw(self, context: QgsLayoutItemRenderContext, itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem] = ...) -> None: ...
    def _removeNode(self, nodeIndex: int) -> bool: ...
    def _addNode(self, indexPoint: int, newPoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float], radius: float) -> bool: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def arrowHeadStrokeWidth(self) -> float: ...
    def setArrowHeadStrokeWidth(self, width: float) -> None: ...
    def setArrowHeadFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def arrowHeadFillColor(self) -> QtGui.QColor: ...
    def setArrowHeadStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def arrowHeadStrokeColor(self) -> QtGui.QColor: ...
    def endSvgMarkerPath(self) -> str: ...
    def setEndSvgMarkerPath(self, path: str) -> None: ...
    def startSvgMarkerPath(self) -> str: ...
    def setStartSvgMarkerPath(self, path: str) -> None: ...
    def arrowHeadWidth(self) -> float: ...
    def setArrowHeadWidth(self, width: float) -> None: ...
    def setEndMarker(self, mode: 'QgsLayoutItemPolyline.MarkerMode') -> None: ...
    def endMarker(self) -> 'QgsLayoutItemPolyline.MarkerMode': ...
    def setStartMarker(self, mode: 'QgsLayoutItemPolyline.MarkerMode') -> None: ...
    def startMarker(self) -> 'QgsLayoutItemPolyline.MarkerMode': ...
    def setSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def symbol(self) -> 'QgsLineSymbol': ...
    def shape(self) -> QtGui.QPainterPath: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPolyline': ...


class QgsLayoutItemAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: int, visibleName: str, visiblePluralName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemAbstractMetadata') -> None: ...

    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createItem(self, layout: QgsLayout) -> QgsLayoutItem: ...
    def visiblePluralName(self) -> str: ...
    def visibleName(self) -> str: ...
    def type(self) -> int: ...


class QgsLayoutMultiFrameAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: int, visibleName: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutMultiFrameAbstractMetadata') -> None: ...

    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createMultiFrame(self, layout: QgsLayout) -> QgsLayoutMultiFrame: ...
    def visibleName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemRegistry(QtCore.QObject):

    class ItemType(int):
        LayoutItem = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutGroup = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPage = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutMap = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPicture = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutLabel = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutLegend = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutShape = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPolygon = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPolyline = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutScaleBar = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutFrame = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutHtml = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutAttributeTable = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutTextTable = ... # type: QgsLayoutItemRegistry.ItemType
        Layout3DMap = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutManualTable = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutMarker = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutElevationProfile = ... # type: QgsLayoutItemRegistry.ItemType
        PluginItem = ... # type: QgsLayoutItemRegistry.ItemType

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def multiFrameTypeAdded(self, type: int, name: str) -> None: ...
    def typeAdded(self, type: int, name: str) -> None: ...
    def itemTypes(self) -> typing.Dict[int, str]: ...
    def resolvePaths(self, type: int, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createMultiFrame(self, type: int, layout: QgsLayout) -> QgsLayoutMultiFrame: ...
    def createItem(self, type: int, layout: QgsLayout) -> QgsLayoutItem: ...
    def addLayoutMultiFrameType(self, metadata: QgsLayoutMultiFrameAbstractMetadata) -> bool: ...
    def addLayoutItemType(self, metadata: QgsLayoutItemAbstractMetadata) -> bool: ...
    def multiFrameMetadata(self, type: int) -> QgsLayoutMultiFrameAbstractMetadata: ...
    def itemMetadata(self, type: int) -> QgsLayoutItemAbstractMetadata: ...
    def populate(self) -> bool: ...


class QgsLayoutItemScaleBar(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def update(self) -> None: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def style(self) -> str: ...
    def setStyle(self, name: str) -> None: ...
    def resizeToMinimumWidth(self) -> None: ...
    def applyDefaultSize(self, units: Qgis.DistanceUnit = ...) -> None: ...
    def guessUnits(self) -> Qgis.DistanceUnit: ...
    def applyDefaultRendererSettings(self, renderer: 'QgsScaleBarRenderer') -> bool: ...
    def applyDefaultSettings(self) -> None: ...
    def setLineCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def lineCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setLineJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def lineJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setUnits(self, units: Qgis.DistanceUnit) -> None: ...
    def units(self) -> Qgis.DistanceUnit: ...
    def setAlignment(self, alignment: 'QgsScaleBarSettings.Alignment') -> None: ...
    def alignment(self) -> 'QgsScaleBarSettings.Alignment': ...
    def setLabelHorizontalPlacement(self, placement: 'QgsScaleBarSettings.LabelHorizontalPlacement') -> None: ...
    def labelHorizontalPlacement(self) -> 'QgsScaleBarSettings.LabelHorizontalPlacement': ...
    def setLabelVerticalPlacement(self, placement: 'QgsScaleBarSettings.LabelVerticalPlacement') -> None: ...
    def labelVerticalPlacement(self) -> 'QgsScaleBarSettings.LabelVerticalPlacement': ...
    def setBoxContentSpace(self, space: float) -> None: ...
    def boxContentSpace(self) -> float: ...
    def setLabelBarSpace(self, space: float) -> None: ...
    def labelBarSpace(self) -> float: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def brush2(self) -> QtGui.QBrush: ...
    def brush(self) -> QtGui.QBrush: ...
    def pen(self) -> QtGui.QPen: ...
    def setLineWidth(self, width: float) -> None: ...
    def lineWidth(self) -> float: ...
    def setLineColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def lineColor(self) -> QtGui.QColor: ...
    def setFillColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fillColor2(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setAlternateFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def alternateFillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setSubdivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def subdivisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setDivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def divisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setUnitLabel(self, label: str) -> None: ...
    def unitLabel(self) -> str: ...
    def setMapUnitsPerScaleBarUnit(self, units: float) -> None: ...
    def mapUnitsPerScaleBarUnit(self) -> float: ...
    def setMaximumBarWidth(self, maxWidth: float) -> None: ...
    def maximumBarWidth(self) -> float: ...
    def setMinimumBarWidth(self, minWidth: float) -> None: ...
    def minimumBarWidth(self) -> float: ...
    def setSegmentSizeMode(self, mode: 'QgsScaleBarSettings.SegmentSizeMode') -> None: ...
    def segmentSizeMode(self) -> 'QgsScaleBarSettings.SegmentSizeMode': ...
    def setUnitsPerSegment(self, units: float) -> None: ...
    def unitsPerSegment(self) -> float: ...
    def setSubdivisionsHeight(self, height: float) -> None: ...
    def subdivisionsHeight(self) -> float: ...
    def setNumberOfSubdivisions(self, subdivisions: int) -> None: ...
    def numberOfSubdivisions(self) -> int: ...
    def setNumberOfSegmentsLeft(self, segments: int) -> None: ...
    def numberOfSegmentsLeft(self) -> int: ...
    def setNumberOfSegments(self, segments: int) -> None: ...
    def numberOfSegments(self) -> int: ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemScaleBar': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemShape(QgsLayoutItem):

    class Shape(int):
        Ellipse = ... # type: QgsLayoutItemShape.Shape
        Rectangle = ... # type: QgsLayoutItemShape.Shape
        Triangle = ... # type: QgsLayoutItemShape.Shape

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def estimatedFrameBleed(self) -> float: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def clipPath(self) -> QgsGeometry: ...
    def cornerRadius(self) -> 'QgsLayoutMeasurement': ...
    def setCornerRadius(self, radius: 'QgsLayoutMeasurement') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def setShapeType(self, type: 'QgsLayoutItemShape.Shape') -> None: ...
    def shapeType(self) -> 'QgsLayoutItemShape.Shape': ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemShape': ...


class QgsLayoutItemTextTable(QgsLayoutTable):

    def __init__(self, layout: QgsLayout) -> None: ...

    def getTableContents(self, contents: typing.Any) -> bool: ...
    def setContents(self, contents: typing.Iterable[typing.Iterable[str]]) -> None: ...
    def addRow(self, row: typing.Iterable[str]) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemTextTable': ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...


class QgsLayoutManager(QtCore.QObject):

    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...

    def layoutRenamed(self, layout: 'QgsMasterLayoutInterface', newName: str) -> None: ...
    def layoutAboutToBeRemoved(self, name: str) -> None: ...
    def layoutRemoved(self, name: str) -> None: ...
    def layoutAdded(self, name: str) -> None: ...
    def layoutAboutToBeAdded(self, name: str) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def generateUniqueTitle(self, type: 'QgsMasterLayoutInterface.Type' = ...) -> str: ...
    def duplicateLayout(self, layout: 'QgsMasterLayoutInterface', newName: str) -> 'QgsMasterLayoutInterface': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def layoutByName(self, name: str) -> 'QgsMasterLayoutInterface': ...
    def printLayouts(self) -> typing.List['QgsPrintLayout']: ...
    def layouts(self) -> typing.List['QgsMasterLayoutInterface']: ...
    def clear(self) -> None: ...
    def removeLayout(self, layout: 'QgsMasterLayoutInterface') -> bool: ...
    def addLayout(self, layout: 'QgsMasterLayoutInterface') -> bool: ...


class QgsLayoutManagerModel(QtCore.QAbstractListModel):

    class Role(int):
        LayoutRole = ... # type: QgsLayoutManagerModel.Role

    def __init__(self, manager: QgsLayoutManager, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def allowEmptyLayout(self) -> bool: ...
    def setAllowEmptyLayout(self, allowEmpty: bool) -> None: ...
    def indexFromLayout(self, layout: 'QgsMasterLayoutInterface') -> QtCore.QModelIndex: ...
    def layoutFromIndex(self, index: QtCore.QModelIndex) -> 'QgsMasterLayoutInterface': ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...


class QgsLayoutManagerProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        FilterPrintLayouts = ... # type: QgsLayoutManagerProxyModel.Filter
        FilterReports = ... # type: QgsLayoutManagerProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutManagerProxyModel.Filters') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilterString(self, filter: str) -> None: ...
    def filterString(self) -> str: ...
    def setFilters(self, filters: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> None: ...
    def filters(self) -> 'QgsLayoutManagerProxyModel.Filters': ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...


class QgsLayoutMeasurement(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, length: float, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutMeasurement') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def decodeMeasurement(string: str) -> 'QgsLayoutMeasurement': ...
    def encodeMeasurement(self) -> str: ...
    def setUnits(self, units: Qgis.LayoutUnit) -> None: ...
    def units(self) -> Qgis.LayoutUnit: ...
    def setLength(self, length: float) -> None: ...
    def length(self) -> float: ...


class QgsLayoutMeasurementConverter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutMeasurementConverter') -> None: ...

    @typing.overload
    def convert(self, measurement: QgsLayoutMeasurement, targetUnits: Qgis.LayoutUnit) -> QgsLayoutMeasurement: ...
    @typing.overload
    def convert(self, size: 'QgsLayoutSize', targetUnits: Qgis.LayoutUnit) -> 'QgsLayoutSize': ...
    @typing.overload
    def convert(self, point: 'QgsLayoutPoint', targetUnits: Qgis.LayoutUnit) -> 'QgsLayoutPoint': ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...


class QgsLayoutModel(QtCore.QAbstractItemModel):

    class Columns(int):
        Visibility = ... # type: QgsLayoutModel.Columns
        LockStatus = ... # type: QgsLayoutModel.Columns
        ItemId = ... # type: QgsLayoutModel.Columns

    def __init__(self, layout: QgsLayout, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def indexForItem(self, item: QgsLayoutItem, column: int = ...) -> QtCore.QModelIndex: ...
    def itemFromIndex(self, index: QtCore.QModelIndex) -> QgsLayoutItem: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...


class QgsLayoutProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, layout: QgsLayout, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def setItemFlags(self, flags: typing.Union[QgsLayoutItem.Flags, QgsLayoutItem.Flag]) -> None: ...
    def allowEmptyItem(self) -> bool: ...
    def setAllowEmptyItem(self, allowEmpty: bool) -> None: ...
    def layout(self) -> QgsLayout: ...
    def itemFromSourceIndex(self, sourceIndex: QtCore.QModelIndex) -> QgsLayoutItem: ...
    def sourceLayerModel(self) -> QgsLayoutModel: ...
    def exceptedItemList(self) -> typing.List[QgsLayoutItem]: ...
    def setExceptedItemList(self, items: typing.Iterable[QgsLayoutItem]) -> None: ...
    def setFilterType(self, filter: QgsLayoutItemRegistry.ItemType) -> None: ...
    def filterType(self) -> QgsLayoutItemRegistry.ItemType: ...


class QgsLayoutNorthArrowHandler(QtCore.QObject):

    class NorthMode(int):
        GridNorth = ... # type: QgsLayoutNorthArrowHandler.NorthMode
        TrueNorth = ... # type: QgsLayoutNorthArrowHandler.NorthMode

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def arrowRotationChanged(self, newRotation: float) -> None: ...
    def setNorthOffset(self, offset: float) -> None: ...
    def northOffset(self) -> float: ...
    def setNorthMode(self, mode: 'QgsLayoutNorthArrowHandler.NorthMode') -> None: ...
    def northMode(self) -> 'QgsLayoutNorthArrowHandler.NorthMode': ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def arrowRotation(self) -> float: ...


class QgsLayoutPageCollection(QtCore.QObject, QgsLayoutSerializableObject):

    def __init__(self, layout: QgsLayout) -> None: ...

    def pageAboutToBeRemoved(self, pageNumber: int) -> None: ...
    def changed(self) -> None: ...
    def redraw(self) -> None: ...
    def guides(self) -> QgsLayoutGuideCollection: ...
    def readXml(self, collectionElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def resizeToContents(self, margins: QgsMargins, marginUnits: Qgis.LayoutUnit) -> None: ...
    def pageShadowWidth(self) -> float: ...
    def spaceBetweenPages(self) -> float: ...
    def positionOnPage(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> QtCore.QPointF: ...
    def pagePositionToAbsolute(self, page: int, position: 'QgsLayoutPoint') -> 'QgsLayoutPoint': ...
    def pagePositionToLayoutPosition(self, page: int, position: 'QgsLayoutPoint') -> QtCore.QPointF: ...
    def pageAtPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> QgsLayoutItemPage: ...
    def predictPageNumberForPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> int: ...
    def pageNumberForPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> int: ...
    def hasUniformPageSizes(self) -> bool: ...
    def maximumPageSize(self) -> QtCore.QSizeF: ...
    def maximumPageWidth(self) -> float: ...
    def reflow(self) -> None: ...
    def endPageSizeChange(self) -> None: ...
    def beginPageSizeChange(self) -> None: ...
    def pageStyleSymbol(self) -> 'QgsFillSymbol': ...
    def setPageStyleSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def takePage(self, page: QgsLayoutItemPage) -> QgsLayoutItemPage: ...
    def clear(self) -> None: ...
    @typing.overload
    def deletePage(self, pageNumber: int) -> None: ...
    @typing.overload
    def deletePage(self, page: QgsLayoutItemPage) -> None: ...
    def insertPage(self, page: QgsLayoutItemPage, beforePage: int) -> None: ...
    def extendByNewPage(self) -> QgsLayoutItemPage: ...
    def addPage(self, page: QgsLayoutItemPage) -> None: ...
    def shouldExportPage(self, page: int) -> bool: ...
    def itemsOnPage(self, page: int) -> typing.List[QgsLayoutItem]: ...
    def pageIsEmpty(self, page: int) -> bool: ...
    def visiblePageNumbers(self, region: QtCore.QRectF) -> typing.List[int]: ...
    def visiblePages(self, region: QtCore.QRectF) -> typing.List[QgsLayoutItemPage]: ...
    def pageNumber(self, page: QgsLayoutItemPage) -> int: ...
    def page(self, pageNumber: int) -> QgsLayoutItemPage: ...
    def pageCount(self) -> int: ...
    def pages(self) -> typing.List[QgsLayoutItemPage]: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutPoint(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, x: float, y: float, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutPoint') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def decodePoint(string: str) -> 'QgsLayoutPoint': ...
    def encodePoint(self) -> str: ...
    def toQPointF(self) -> QtCore.QPointF: ...
    def isNull(self) -> bool: ...
    def setUnits(self, units: Qgis.LayoutUnit) -> None: ...
    def units(self) -> Qgis.LayoutUnit: ...
    def setY(self, y: float) -> None: ...
    def y(self) -> float: ...
    def setX(self, x: float) -> None: ...
    def x(self) -> float: ...
    def setPoint(self, x: float, y: float) -> None: ...


class QgsLayoutRenderContext(QtCore.QObject):

    class Flag(int):
        FlagDebug = ... # type: QgsLayoutRenderContext.Flag
        FlagOutlineOnly = ... # type: QgsLayoutRenderContext.Flag
        FlagAntialiasing = ... # type: QgsLayoutRenderContext.Flag
        FlagUseAdvancedEffects = ... # type: QgsLayoutRenderContext.Flag
        FlagForceVectorOutput = ... # type: QgsLayoutRenderContext.Flag
        FlagHideCoverageLayer = ... # type: QgsLayoutRenderContext.Flag
        FlagDrawSelection = ... # type: QgsLayoutRenderContext.Flag
        FlagDisableTiledRasterLayerRenders = ... # type: QgsLayoutRenderContext.Flag
        FlagRenderLabelsByMapLayer = ... # type: QgsLayoutRenderContext.Flag
        FlagLosslessImageRendering = ... # type: QgsLayoutRenderContext.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutRenderContext.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsLayoutRenderContext.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, layout: QgsLayout) -> None: ...

    def predefinedScalesChanged(self) -> None: ...
    def dpiChanged(self) -> None: ...
    def flagsChanged(self, flags: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> None: ...
    def setFeatureFilterProvider(self, featureFilterProvider: QgsFeatureFilterProvider) -> None: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def predefinedScales(self) -> typing.List[float]: ...
    def setPredefinedScales(self, scales: typing.Iterable[float]) -> None: ...
    def setExportThemes(self, themes: typing.Iterable[str]) -> None: ...
    def exportThemes(self) -> typing.List[str]: ...
    def simplifyMethod(self) -> QgsVectorSimplifyMethod: ...
    def setSimplifyMethod(self, method: QgsVectorSimplifyMethod) -> None: ...
    def setTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def textRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def currentExportLayer(self) -> int: ...
    def setCurrentExportLayer(self, layer: int = ...) -> None: ...
    def pagesVisible(self) -> bool: ...
    def setPagesVisible(self, visible: bool) -> None: ...
    def setBoundingBoxesVisible(self, visible: bool) -> None: ...
    def boundingBoxesVisible(self) -> bool: ...
    def setGridVisible(self, visible: bool) -> None: ...
    def gridVisible(self) -> bool: ...
    def isPreviewRender(self) -> bool: ...
    def measurementConverter(self) -> QgsLayoutMeasurementConverter: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...
    def renderContextFlags(self) -> Qgis.RenderContextFlags: ...
    def testFlag(self, flag: 'QgsLayoutRenderContext.Flag') -> bool: ...
    def flags(self) -> 'QgsLayoutRenderContext.Flags': ...
    def setFlag(self, flag: 'QgsLayoutRenderContext.Flag', on: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> None: ...


class QgsLayoutReportContext(QtCore.QObject):

    def __init__(self, layout: QgsLayout) -> None: ...

    def changed(self) -> None: ...
    def layerChanged(self, layer: QgsVectorLayer) -> None: ...
    def predefinedScales(self) -> typing.List[float]: ...
    def setPredefinedScales(self, scales: typing.Iterable[float]) -> None: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def currentGeometry(self, crs: 'QgsCoordinateReferenceSystem' = ...) -> QgsGeometry: ...
    def feature(self) -> QgsFeature: ...
    def setFeature(self, feature: QgsFeature) -> None: ...


class QgsLayoutSize(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, width: float, height: float, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, size: QtCore.QSizeF, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, units: Qgis.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutSize') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def decodeSize(string: str) -> 'QgsLayoutSize': ...
    def encodeSize(self) -> str: ...
    def toQSizeF(self) -> QtCore.QSizeF: ...
    def isEmpty(self) -> bool: ...
    def setUnits(self, units: Qgis.LayoutUnit) -> None: ...
    def units(self) -> Qgis.LayoutUnit: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def width(self) -> float: ...
    def setSize(self, width: float, height: float) -> None: ...


class QgsLayoutSnapper(QgsLayoutSerializableObject):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutSnapper') -> None: ...

    def readXml(self, gridElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def snapPointsToItems(self, points: typing.Iterable[float], orientation: QtCore.Qt.Orientation, scaleFactor: float, ignoreItems: typing.Iterable[QgsLayoutItem], snapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ...) -> typing.Tuple[float, bool]: ...
    def snapPointToItems(self, original: float, orientation: QtCore.Qt.Orientation, scaleFactor: float, ignoreItems: typing.Iterable[QgsLayoutItem], snapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ...) -> typing.Tuple[float, bool]: ...
    def snapPointsToGuides(self, points: typing.Iterable[float], orientation: QtCore.Qt.Orientation, scaleFactor: float) -> typing.Tuple[float, bool]: ...
    def snapPointToGuides(self, original: float, orientation: QtCore.Qt.Orientation, scaleFactor: float) -> typing.Tuple[float, bool]: ...
    def snapPointsToGrid(self, points: typing.Iterable[typing.Union[QtCore.QPointF, QtCore.QPoint, float]], scaleFactor: float) -> typing.Tuple[QtCore.QPointF, bool, bool]: ...
    def snapPointToGrid(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], scaleFactor: float) -> typing.Tuple[QtCore.QPointF, bool, bool]: ...
    def snapRect(self, rect: QtCore.QRectF, scaleFactor: float, horizontalSnapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ..., verticalSnapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ..., ignoreItems: typing.Optional[typing.Iterable[QgsLayoutItem]] = ...) -> typing.Tuple[QtCore.QRectF, bool]: ...
    def snapPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], scaleFactor: float, horizontalSnapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ..., verticalSnapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ..., ignoreItems: typing.Optional[typing.Iterable[QgsLayoutItem]] = ...) -> typing.Tuple[QtCore.QPointF, bool]: ...
    def setSnapToItems(self, enabled: bool) -> None: ...
    def snapToItems(self) -> bool: ...
    def setSnapToGuides(self, enabled: bool) -> None: ...
    def snapToGuides(self) -> bool: ...
    def setSnapToGrid(self, enabled: bool) -> None: ...
    def snapToGrid(self) -> bool: ...
    def snapTolerance(self) -> int: ...
    def setSnapTolerance(self, snapTolerance: int) -> None: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutTableStyle(PyQt5.sip.wrapper):

    cellBackgroundColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    enabled = ... # type: bool

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutTableStyle') -> None: ...

    def readXml(self, styleElem: QtXml.QDomElement) -> bool: ...
    def writeXml(self, styleElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsLayoutTableColumn(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, heading: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutTableColumn') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def clone(self) -> 'QgsLayoutTableColumn': ...
    def setSortByRank(self, rank: int) -> None: ...
    def sortByRank(self) -> int: ...
    def setSortOrder(self, order: QtCore.Qt.SortOrder) -> None: ...
    def sortOrder(self) -> QtCore.Qt.SortOrder: ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    def setVAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def vAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setHAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def hAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setHeading(self, heading: str) -> None: ...
    def heading(self) -> str: ...
    def setWidth(self, width: float) -> None: ...
    def width(self) -> float: ...
    def readXml(self, columnElem: QtXml.QDomElement) -> bool: ...
    def writeXml(self, columnElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsAbstractLayoutUndoCommand(QtWidgets.QUndoCommand):

    def __init__(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> None: ...

    def setAfterState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def restoreState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def saveState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def containsChange(self) -> bool: ...
    def afterState(self) -> QtXml.QDomDocument: ...
    def beforeState(self) -> QtXml.QDomDocument: ...
    def saveAfterState(self) -> None: ...
    def saveBeforeState(self) -> None: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsLayoutUndoStack(QtCore.QObject):

    def __init__(self, layout: QgsLayout) -> None: ...

    def undoRedoOccurredForItems(self, itemUuids: typing.Iterable[str]) -> None: ...
    def push(self, command: QtWidgets.QUndoCommand) -> None: ...
    def isBlocked(self) -> bool: ...
    def blockCommands(self, blocked: bool) -> None: ...
    def notifyUndoRedoOccurred(self, item: QgsLayoutItem) -> None: ...
    def stack(self) -> QtWidgets.QUndoStack: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, object: QgsLayoutUndoObjectInterface, commandText: str, id: int = ...) -> None: ...
    def endMacro(self) -> None: ...
    def beginMacro(self, commandText: str) -> None: ...


class QgsLayoutUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutUtils') -> None: ...

    @staticmethod
    def predefinedScales(layout: QgsLayout) -> typing.List[float]: ...
    @staticmethod
    def itemIsAClippingSource(item: QgsLayoutItem) -> bool: ...
    @staticmethod
    def calculatePrettySize(minimumSize: float, maximumSize: float) -> float: ...
    @staticmethod
    def mapLayerFromString(string: str, project: 'QgsProject') -> QgsMapLayer: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: QtWidgets.QStyleOptionGraphicsItem) -> float: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: QtWidgets.QStyleOptionGraphicsItem, painter: QtGui.QPainter) -> float: ...
    @staticmethod
    def decodePaperOrientation(string: str) -> typing.Tuple[QgsLayoutItemPage.Orientation, bool]: ...
    @staticmethod
    def largestRotatedRectWithinBounds(originalRect: QtCore.QRectF, boundsRect: QtCore.QRectF, rotation: float) -> QtCore.QRectF: ...
    @typing.overload
    @staticmethod
    def drawText(painter: QtGui.QPainter, position: typing.Union[QtCore.QPointF, QtCore.QPoint, float], text: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(painter: QtGui.QPainter, rectangle: QtCore.QRectF, text: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., halignment: QtCore.Qt.AlignmentFlag = ..., valignment: QtCore.Qt.AlignmentFlag = ..., flags: int = ...) -> None: ...
    @staticmethod
    def textHeightMM(font: QtGui.QFont, text: str, multiLineHeight: float = ...) -> float: ...
    @staticmethod
    def textWidthMM(font: QtGui.QFont, text: str) -> float: ...
    @staticmethod
    def fontHeightCharacterMM(font: QtGui.QFont, character: str) -> float: ...
    @staticmethod
    def fontHeightMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def fontDescentMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def fontAscentMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def scaledFontPixelSize(font: QtGui.QFont) -> QtGui.QFont: ...
    @staticmethod
    def relativePosition(position: float, beforeMin: float, beforeMax: float, afterMin: float, afterMax: float) -> float: ...
    @staticmethod
    def relativeResizeRect(rectToResize: QtCore.QRectF, boundsBefore: QtCore.QRectF, boundsAfter: QtCore.QRectF) -> None: ...
    @staticmethod
    def createRenderContextForLayout(layout: QgsLayout, painter: QtGui.QPainter, dpi: float = ...) -> QgsRenderContext: ...
    @staticmethod
    def createRenderContextForMap(map: QgsLayoutItemMap, painter: QtGui.QPainter, dpi: float = ...) -> QgsRenderContext: ...
    @staticmethod
    def snappedAngle(angle: float) -> float: ...
    @staticmethod
    def normalizedAngle(angle: float, allowNegative: bool = ...) -> float: ...
    @staticmethod
    def rotate(angle: float) -> typing.Tuple[float, float]: ...


class QgsMasterLayoutInterface(PyQt5.sip.wrapper):

    class Type(int):
        PrintLayout = ... # type: QgsMasterLayoutInterface.Type
        Report = ... # type: QgsMasterLayoutInterface.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMasterLayoutInterface') -> None: ...

    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def layoutProject(self) -> 'QgsProject': ...
    def setName(self, name: str) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def name(self) -> str: ...
    def layoutType(self) -> 'QgsMasterLayoutInterface.Type': ...
    def clone(self) -> 'QgsMasterLayoutInterface': ...


class QgsPageSize(PyQt5.sip.wrapper):

    displayName = ... # type: str
    name = ... # type: str
    size = ... # type: QgsLayoutSize

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, size: QgsLayoutSize, displayName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, size: QgsLayoutSize) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPageSize') -> None: ...


class QgsPageSizeRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPageSizeRegistry') -> None: ...

    def decodePageSize(self, string: str, size: QgsPageSize) -> bool: ...
    @typing.overload
    def find(self, name: str) -> typing.List[QgsPageSize]: ...
    @typing.overload
    def find(self, size: QgsLayoutSize) -> str: ...
    def entries(self) -> typing.List[QgsPageSize]: ...
    def add(self, size: QgsPageSize) -> None: ...


class QgsPrintLayout(QgsLayout, QgsMasterLayoutInterface):

    def __init__(self, project: 'QgsProject') -> None: ...

    def nameChanged(self, name: str) -> None: ...
    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def atlas(self) -> QgsLayoutAtlas: ...
    def icon(self) -> QtGui.QIcon: ...
    def layoutType(self) -> QgsMasterLayoutInterface.Type: ...
    def layoutProject(self) -> 'QgsProject': ...
    def clone(self) -> 'QgsPrintLayout': ...


class QgsReport(QtCore.QObject, QgsAbstractReportSection, QgsMasterLayoutInterface):

    def __init__(self, project: 'QgsProject') -> None: ...

    def nameChanged(self, name: str) -> None: ...
    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsReport': ...
    def layoutProject(self) -> 'QgsProject': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...
    def layoutType(self) -> QgsMasterLayoutInterface.Type: ...


class QgsReportSectionFieldGroup(QgsAbstractReportSection):

    class SectionVisibility(int):
        IncludeWhenFeaturesFound = ... # type: QgsReportSectionFieldGroup.SectionVisibility
        AlwaysInclude = ... # type: QgsReportSectionFieldGroup.SectionVisibility

    def __init__(self, parentSection: typing.Optional[QgsAbstractReportSection] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def reloadSettings(self) -> None: ...
    def setParentSection(self, parentSection: QgsAbstractReportSection) -> None: ...
    def reset(self) -> None: ...
    def nextBody(self) -> typing.Tuple[QgsLayout, bool]: ...
    def prepareFooter(self) -> bool: ...
    def prepareHeader(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> 'QgsReportSectionFieldGroup': ...
    def setFooterVisibility(self, visibility: 'QgsReportSectionFieldGroup.SectionVisibility') -> None: ...
    def footerVisibility(self) -> 'QgsReportSectionFieldGroup.SectionVisibility': ...
    def setHeaderVisibility(self, visibility: 'QgsReportSectionFieldGroup.SectionVisibility') -> None: ...
    def headerVisibility(self) -> 'QgsReportSectionFieldGroup.SectionVisibility': ...
    def setSortAscending(self, sortAscending: bool) -> None: ...
    def sortAscending(self) -> bool: ...
    def setField(self, field: str) -> None: ...
    def field(self) -> str: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: QgsLayout) -> None: ...
    def body(self) -> QgsLayout: ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsReportSectionLayout(QgsAbstractReportSection):

    def __init__(self, parentSection: typing.Optional[QgsAbstractReportSection] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def reloadSettings(self) -> None: ...
    def nextBody(self) -> typing.Tuple[QgsLayout, bool]: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> 'QgsReportSectionLayout': ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: QgsLayout) -> None: ...
    def body(self) -> QgsLayout: ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsLocator(QtCore.QObject):

    CORE_FILTERS = ... # type: typing.Iterable[str]

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def finished(self) -> None: ...
    def searchPrepared(self) -> None: ...
    def foundResult(self, result: 'QgsLocatorResult') -> None: ...
    def completionList(self) -> typing.List[str]: ...
    def clearPreviousResults(self) -> None: ...
    def isRunning(self) -> bool: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...
    def fetchResults(self, string: str, context: 'QgsLocatorContext', feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    def prefixedFilters(self) -> typing.Any: ...
    def filters(self, prefix: str = ...) -> typing.List[QgsLocatorFilter]: ...
    def deregisterFilter(self, filter: QgsLocatorFilter) -> None: ...
    def registerFilter(self, filter: QgsLocatorFilter) -> None: ...


class QgsLocatorContext(PyQt5.sip.wrapper):

    targetExtent = ... # type: QgsRectangle
    targetExtentCrs = ... # type: 'QgsCoordinateReferenceSystem'
    transformContext = ... # type: 'QgsCoordinateTransformContext'
    usingPrefix = ... # type: bool

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocatorContext') -> None: ...


class QgsLocatorResult(PyQt5.sip.wrapper):

    class ResultAction(PyQt5.sip.wrapper):

        iconPath = ... # type: str
        id = ... # type: int
        text = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, id: int, text: str, iconPath: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLocatorResult.ResultAction') -> None: ...

    actions = ... # type: typing.Iterable['QgsLocatorResult.ResultAction']
    description = ... # type: str
    displayString = ... # type: str
    filter = ... # type: QgsLocatorFilter
    group = ... # type: str
    icon = ... # type: QtGui.QIcon
    score = ... # type: float
    userData = ... # type: typing.Any

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, filter: QgsLocatorFilter, displayString: str, userData: typing.Any = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocatorResult') -> None: ...

    def getUserData(self) -> typing.Any: ...


class QgsLocatorModel(QtCore.QAbstractTableModel):

    class Role(int):
        ResultDataRole = ... # type: QgsLocatorModel.Role
        ResultTypeRole = ... # type: QgsLocatorModel.Role
        ResultFilterPriorityRole = ... # type: QgsLocatorModel.Role
        ResultScoreRole = ... # type: QgsLocatorModel.Role
        ResultFilterNameRole = ... # type: QgsLocatorModel.Role
        ResultFilterGroupSortingRole = ... # type: QgsLocatorModel.Role
        ResultActionsRole = ... # type: QgsLocatorModel.Role

    NoGroup = ... # type: int

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addResult(self, result: QgsLocatorResult) -> None: ...
    def roleNames(self) -> typing.Dict[int, QtCore.QByteArray]: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def deferredClear(self) -> None: ...
    def clear(self) -> None: ...


class QgsLocatorAutomaticModel(QgsLocatorModel):

    def __init__(self, locator: QgsLocator) -> None: ...

    def createContext(self) -> QgsLocatorContext: ...
    def search(self, string: str) -> None: ...
    def locator(self) -> QgsLocator: ...


class QgsLocatorProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...


class QgsLocatorModelBridge(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def updateCanvasCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def updateCanvasExtent(self, extent: QgsRectangle) -> None: ...
    def invalidateResults(self) -> None: ...
    def resultsCleared(self) -> None: ...
    def isRunningChanged(self) -> None: ...
    def resultAdded(self) -> None: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def triggerResult(self, index: QtCore.QModelIndex, actionId: int = ...) -> None: ...
    def isRunning(self) -> bool: ...
    def hasQueueRequested(self) -> bool: ...
    def proxyModel(self) -> QgsLocatorProxyModel: ...
    def locator(self) -> QgsLocator: ...
    def performSearch(self, text: str) -> None: ...


class QgsMapRendererCache(QtCore.QObject):

    def __init__(self) -> None: ...

    def invalidateCacheForLayer(self, layer: QgsMapLayer) -> None: ...
    def clearCacheImage(self, cacheKey: str) -> None: ...
    def dependentLayers(self, cacheKey: str) -> typing.List[QgsMapLayer]: ...
    def transformedCacheImage(self, cacheKey: str, mtp: QgsMapToPixel) -> QtGui.QImage: ...
    def cacheImage(self, cacheKey: str) -> QtGui.QImage: ...
    def hasAnyCacheImage(self, cacheKey: str, minimumScaleThreshold: float = ..., maximumScaleThreshold: float = ...) -> bool: ...
    def hasCacheImage(self, cacheKey: str) -> bool: ...
    def setCacheImageWithParameters(self, cacheKey: str, image: QtGui.QImage, extent: QgsRectangle, mapToPixel: QgsMapToPixel, dependentLayers: typing.Iterable[QgsMapLayer] = ...) -> None: ...
    def setCacheImage(self, cacheKey: str, image: QtGui.QImage, dependentLayers: typing.Iterable[QgsMapLayer] = ...) -> None: ...
    def updateParameters(self, extent: QgsRectangle, mtp: QgsMapToPixel) -> bool: ...
    def init(self, extent: QgsRectangle, scale: float) -> bool: ...
    def clear(self) -> None: ...


class QgsMapRendererJob(QtCore.QObject):

    class Error(PyQt5.sip.wrapper):

        layerID = ... # type: str
        message = ... # type: str

        @typing.overload
        def __init__(self, lid: str, msg: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapRendererJob.Error') -> None: ...

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def finished(self) -> None: ...
    def layerRendered(self, layerId: str) -> None: ...
    def layerRenderingStarted(self, layerId: str) -> None: ...
    def renderingLayersFinished(self) -> None: ...
    def mapSettings(self) -> QgsMapSettings: ...
    def renderingTime(self) -> int: ...
    def setCache(self, cache: QgsMapRendererCache) -> None: ...
    def errors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def setFeatureFilterProvider(self, f: QgsFeatureFilterProvider) -> None: ...
    def takeRenderedItemResults(self) -> 'QgsRenderedItemResults': ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def layersRedrawnFromCache(self) -> typing.List[str]: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...
    def start(self) -> None: ...


class QgsMapRendererAbstractCustomPainterJob(QgsMapRendererJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def preparePainter(self, painter: QtGui.QPainter, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...


class QgsMapRendererCustomPainterJob(QgsMapRendererAbstractCustomPainterJob):

    def __init__(self, settings: QgsMapSettings, painter: QtGui.QPainter) -> None: ...

    def renderPrepared(self) -> None: ...
    def prepare(self) -> None: ...
    def renderSynchronously(self) -> None: ...
    def waitForFinishedWithEventLoop(self, flags: typing.Union[QtCore.QEventLoop.ProcessEventsFlags, QtCore.QEventLoop.ProcessEventsFlag] = ...) -> None: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererQImageJob(QgsMapRendererJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def renderedImage(self) -> QtGui.QImage: ...


class QgsMapRendererParallelJob(QgsMapRendererQImageJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def renderedImage(self) -> QtGui.QImage: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererSequentialJob(QgsMapRendererQImageJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def internalFinished(self) -> None: ...
    def renderedImage(self) -> QtGui.QImage: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererTask(QgsTask):

    class ErrorType(int):
        ImageAllocationFail = ... # type: QgsMapRendererTask.ErrorType
        ImageSaveFail = ... # type: QgsMapRendererTask.ErrorType
        ImageUnsupportedFormat = ... # type: QgsMapRendererTask.ErrorType

    @typing.overload
    def __init__(self, ms: QgsMapSettings, fileName: str, fileFormat: str = ..., forceRaster: bool = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ...) -> None: ...
    @typing.overload
    def __init__(self, ms: QgsMapSettings, p: QtGui.QPainter) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def errorOccurred(self, error: int) -> None: ...
    def renderingComplete(self) -> None: ...
    def cancel(self) -> None: ...
    def setExportMetadata(self, exportMetadata: bool) -> None: ...
    def setSaveWorldFile(self, save: bool) -> None: ...
    def addDecorations(self, decorations: typing.Iterable[QgsMapDecoration]) -> None: ...
    def addAnnotations(self, annotations: typing.Iterable[QgsAnnotation]) -> None: ...


class QgsRenderedItemResults(PyQt5.sip.wrapper):

    def __init__(self, extent: QgsRectangle = ...) -> None: ...

    def eraseResultsFromLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def transferResults(self, other: 'QgsRenderedItemResults', layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def transferResults(self, other: 'QgsRenderedItemResults') -> None: ...
    def appendResults(self, results: typing.Iterable[QgsRenderedItemDetails], context: QgsRenderContext) -> None: ...
    def renderedAnnotationItemsInBounds(self, bounds: QgsRectangle) -> typing.List[QgsRenderedAnnotationItemDetails]: ...
    def renderedItems(self) -> typing.List[QgsRenderedItemDetails]: ...


class QgsMesh3dAveragingMethod(PyQt5.sip.wrapper):

    class Method(int):
        MultiLevelsAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        SigmaAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        RelativeHeightAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        ElevationAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method

    @typing.overload
    def __init__(self, method: 'QgsMesh3dAveragingMethod.Method') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMesh3dAveragingMethod') -> None: ...

    def method(self) -> 'QgsMesh3dAveragingMethod.Method': ...
    def clone(self) -> 'QgsMesh3dAveragingMethod': ...
    @typing.overload
    @staticmethod
    def equals(a: 'QgsMesh3dAveragingMethod', b: 'QgsMesh3dAveragingMethod') -> bool: ...
    @typing.overload
    def equals(self, other: 'QgsMesh3dAveragingMethod') -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def createFromXml(elem: QtXml.QDomElement) -> 'QgsMesh3dAveragingMethod': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def calculate(self, block3d: 'QgsMesh3dDataBlock', feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsMeshDataBlock': ...


class QgsMeshMultiLevelsAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startLevel: int, endLevel: int, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, verticalLevel: int, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshMultiLevelsAveragingMethod') -> None: ...

    def isSingleLevel(self) -> bool: ...
    def countedFromTop(self) -> bool: ...
    def endVerticalLevel(self) -> int: ...
    def startVerticalLevel(self) -> int: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshSigmaAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startFraction: float, endFraction: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshSigmaAveragingMethod') -> None: ...

    def endFraction(self) -> float: ...
    def startFraction(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshRelativeHeightAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startHeight: float, endHeight: float, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRelativeHeightAveragingMethod') -> None: ...

    def countedFromTop(self) -> bool: ...
    def endHeight(self) -> float: ...
    def startHeight(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshElevationAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startElevation: float, endElevation: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshElevationAveragingMethod') -> None: ...

    def endElevation(self) -> float: ...
    def startElevation(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshEditingError(PyQt5.sip.wrapper):

    elementIndex = ... # type: int
    errorType = ... # type: Qgis.MeshEditingErrorType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.MeshEditingErrorType, elementIndex: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditingError') -> None: ...


class QgsMeshEditor(QtCore.QObject):

    def __init__(self, meshLayer: 'QgsMeshLayer') -> None: ...

    def meshEdited(self) -> None: ...
    def maximumVerticesPerFace(self) -> int: ...
    def validVerticesCount(self) -> int: ...
    def validFacesCount(self) -> int: ...
    def edgeIsClose(self, point: QgsPointXY, tolerance: float) -> typing.Tuple[bool, int, int]: ...
    def checkConsistency(self, error: QgsMeshEditingError) -> bool: ...
    def isVertexFree(self, vertexIndex: int) -> bool: ...
    def isVertexOnBoundary(self, vertexIndex: int) -> bool: ...
    def freeVerticesIndexes(self) -> typing.List[int]: ...
    def reindex(self, renumbering: bool) -> bool: ...
    def isModified(self) -> bool: ...
    def extent(self) -> QgsRectangle: ...
    def stopEditing(self) -> None: ...
    def advancedEdit(self, editing: 'QgsMeshAdvancedEditing') -> None: ...
    def changeCoordinates(self, verticesIndexes: typing.Iterable[int], newCoordinates: typing.Iterable[QgsPoint]) -> None: ...
    def changeXYValues(self, verticesIndexes: typing.Iterable[int], newValues: typing.Iterable[QgsPointXY]) -> None: ...
    def changeZValues(self, verticesIndexes: typing.Iterable[int], newValues: typing.Iterable[float]) -> None: ...
    def removeVerticesFillHoles(self, verticesToRemoveIndexes: typing.Iterable[int]) -> typing.List[int]: ...
    def removeVerticesWithoutFillHoles(self, verticesToRemoveIndexes: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def addPointsAsVertices(self, point: typing.Iterable[QgsPoint], tolerance: float) -> int: ...
    def splitFaces(self, faceIndexes: typing.Iterable[int]) -> int: ...
    def faceCanBeSplit(self, faceIndex: int) -> bool: ...
    def merge(self, vertexIndex1: int, vertexIndex2: int) -> None: ...
    def canBeMerged(self, vertexIndex1: int, vertexIndex2: int) -> bool: ...
    def flipEdge(self, vertexIndex1: int, vertexIndex2: int) -> None: ...
    def edgeCanBeFlipped(self, vertexIndex1: int, vertexIndex2: int) -> bool: ...
    def removeFaces(self, facesToRemove: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def addFace(self, vertexIndexes: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def isFaceGeometricallyCompatible(self, face: typing.Iterable[int]) -> bool: ...
    def faceCanBeAdded(self, face: typing.Iterable[int]) -> bool: ...
    def fixError(self, error: QgsMeshEditingError) -> bool: ...
    def initializeWithErrorsFix(self) -> QgsMeshEditingError: ...
    def initialize(self) -> QgsMeshEditingError: ...
    def createZValueDatasetGroup(self) -> 'QgsMeshDatasetGroup': ...


class QgsMesh(PyQt5.sip.wrapper):

    class ElementType(int):
        Vertex = ... # type: QgsMesh.ElementType
        Edge = ... # type: QgsMesh.ElementType
        Face = ... # type: QgsMesh.ElementType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMesh') -> None: ...

    @staticmethod
    def compareFaces(face1: typing.Iterable[int], face2: typing.Iterable[int]) -> bool: ...
    def clear(self) -> None: ...
    def edge(self, index: int) -> typing.Tuple[int, int]: ...
    def face(self, index: int) -> typing.List[int]: ...
    def vertex(self, index: int) -> QgsPoint: ...
    def edgeCount(self) -> int: ...
    def faceCount(self) -> int: ...
    def vertexCount(self) -> int: ...
    def contains(self, type: 'QgsMesh.ElementType') -> bool: ...


class QgsMeshDataSourceInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataSourceInterface') -> None: ...

    def saveMeshFrame(self, mesh: QgsMesh) -> bool: ...
    def populateMesh(self, mesh: QgsMesh) -> None: ...
    def maximumVerticesCountPerFace(self) -> int: ...
    def edgeCount(self) -> int: ...
    def faceCount(self) -> int: ...
    def vertexCount(self) -> int: ...
    def contains(self, type: QgsMesh.ElementType) -> bool: ...


class QgsMeshDatasetSourceInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetSourceInterface') -> None: ...

    def datasetIndexInTimeInterval(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], groupIndex: int, time1: int, time2: int) -> typing.List['QgsMeshDatasetIndex']: ...
    def datasetIndexAtTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], groupIndex: int, time: int, method: 'QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod') -> 'QgsMeshDatasetIndex': ...
    @typing.overload
    def persistDatasetGroup(self, path: str, meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: str, outputDriver: str, meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: str, outputDriver: str, source: 'QgsMeshDatasetSourceInterface', datasetGroupIndex: int) -> bool: ...
    def areFacesActive(self, index: 'QgsMeshDatasetIndex', faceIndex: int, count: int) -> 'QgsMeshDataBlock': ...
    def isFaceActive(self, index: 'QgsMeshDatasetIndex', faceIndex: int) -> bool: ...
    def dataset3dValues(self, index: 'QgsMeshDatasetIndex', faceIndex: int, count: int) -> 'QgsMesh3dDataBlock': ...
    def datasetValues(self, index: 'QgsMeshDatasetIndex', valueIndex: int, count: int) -> 'QgsMeshDataBlock': ...
    def datasetValue(self, index: 'QgsMeshDatasetIndex', valueIndex: int) -> 'QgsMeshDatasetValue': ...
    def datasetMetadata(self, index: 'QgsMeshDatasetIndex') -> 'QgsMeshDatasetMetadata': ...
    @typing.overload
    def datasetGroupMetadata(self, groupIndex: int) -> 'QgsMeshDatasetGroupMetadata': ...
    @typing.overload
    def datasetGroupMetadata(self, index: 'QgsMeshDatasetIndex') -> 'QgsMeshDatasetGroupMetadata': ...
    @typing.overload
    def datasetCount(self, groupIndex: int) -> int: ...
    @typing.overload
    def datasetCount(self, index: 'QgsMeshDatasetIndex') -> int: ...
    def datasetGroupCount(self) -> int: ...
    def extraDatasets(self) -> typing.List[str]: ...
    def addDataset(self, uri: str) -> bool: ...


class QgsDataProvider(QtCore.QObject):

    class ReadFlag(int):
        FlagTrustDataSource = ... # type: QgsDataProvider.ReadFlag
        SkipFeatureCount = ... # type: QgsDataProvider.ReadFlag
        FlagLoadDefaultStyle = ... # type: QgsDataProvider.ReadFlag
        SkipGetExtent = ... # type: QgsDataProvider.ReadFlag
        SkipFullScan = ... # type: QgsDataProvider.ReadFlag
        ForceReadOnly = ... # type: QgsDataProvider.ReadFlag
        SkipCredentialsRequest = ... # type: QgsDataProvider.ReadFlag

    class ProviderProperty(int):
        EvaluateDefaultValues = ... # type: QgsDataProvider.ProviderProperty
        CustomData = ... # type: QgsDataProvider.ProviderProperty

    class DataCapability(int):
        NoDataCapabilities = ... # type: QgsDataProvider.DataCapability
        File = ... # type: QgsDataProvider.DataCapability
        Dir = ... # type: QgsDataProvider.DataCapability
        Database = ... # type: QgsDataProvider.DataCapability
        Net = ... # type: QgsDataProvider.DataCapability

    class DataCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDataProvider.DataCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDataProvider.DataCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProviderOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDataProvider.ProviderOptions') -> None: ...

    class ReadFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDataProvider.ReadFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsDataProvider.ReadFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, uri: str = ..., providerOptions: 'QgsDataProvider.ProviderOptions' = ..., flags: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag'] = ...) -> None: ...

    def setError(self, error: QgsError) -> None: ...
    def appendError(self, message: QgsErrorMessage) -> None: ...
    def notify(self, msg: str) -> None: ...
    def dataChanged(self) -> None: ...
    def fullExtentCalculated(self) -> None: ...
    @staticmethod
    def sublayerSeparator() -> str: ...
    def writeLayerMetadata(self, metadata: 'QgsLayerMetadata') -> bool: ...
    def layerMetadata(self) -> 'QgsLayerMetadata': ...
    def setListening(self, isListening: bool) -> None: ...
    def providerProperty(self, property: 'QgsDataProvider.ProviderProperty', defaultValue: typing.Any = ...) -> typing.Any: ...
    def setProviderProperty(self, property: 'QgsDataProvider.ProviderProperty', value: typing.Any) -> None: ...
    def leaveUpdateMode(self) -> bool: ...
    def enterUpdateMode(self) -> bool: ...
    def invalidateConnections(self, connection: str) -> None: ...
    def error(self) -> QgsError: ...
    def dataTimestamp(self) -> QtCore.QDateTime: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def reloadData(self) -> None: ...
    def fileRasterFilters(self) -> str: ...
    def fileVectorFilters(self) -> str: ...
    def description(self) -> str: ...
    def name(self) -> str: ...
    def setSubLayerVisibility(self, name: str, vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[str]) -> None: ...
    def subLayerCount(self) -> int: ...
    def subLayerStyles(self) -> typing.List[str]: ...
    def subLayers(self) -> typing.List[str]: ...
    def subsetString(self) -> str: ...
    def supportsSubsetString(self) -> bool: ...
    def setSubsetString(self, subset: str, updateFeatureCount: bool = ...) -> bool: ...
    def updateExtents(self) -> None: ...
    def isValid(self) -> bool: ...
    def extent(self) -> QgsRectangle: ...
    def elevationProperties(self) -> QgsDataProviderElevationProperties: ...
    def temporalCapabilities(self) -> QgsDataProviderTemporalCapabilities: ...
    def flags(self) -> Qgis.DataProviderFlags: ...
    def uri(self) -> QgsDataSourceUri: ...
    def setUri(self, uri: QgsDataSourceUri) -> None: ...
    def dataComment(self) -> str: ...
    def dataSourceUri(self, expandAuthConfig: bool = ...) -> str: ...
    def setDataSourceUri(self, uri: str) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...


class QgsMeshDataProvider(QgsDataProvider, QgsMeshDataSourceInterface, QgsMeshDatasetSourceInterface):

    def __init__(self, uri: str, providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def datasetGroupsAdded(self, count: int) -> None: ...
    def close(self) -> None: ...
    def driverMetadata(self) -> 'QgsMeshDriverMetadata': ...
    def setTemporalUnit(self, unit: Qgis.TemporalUnit) -> None: ...
    def temporalCapabilities(self) -> 'QgsMeshDataProviderTemporalCapabilities': ...


class QgsMeshDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    class MatchingTemporalDatasetMethod(int):
        FindClosestDatasetBeforeStartRangeTime = ... # type: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod
        FindClosestDatasetFromStartRangeTime = ... # type: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataProviderTemporalCapabilities') -> None: ...

    def firstTimeStepDuration(self, group: int) -> int: ...
    def clear(self) -> None: ...
    def datasetTime(self, index: 'QgsMeshDatasetIndex') -> int: ...
    def temporalUnit(self) -> Qgis.TemporalUnit: ...
    def setTemporalUnit(self, temporalUnit: Qgis.TemporalUnit) -> None: ...
    @typing.overload
    def timeExtent(self) -> QgsDateTimeRange: ...
    @typing.overload
    def timeExtent(self, reference: typing.Union[QtCore.QDateTime, datetime.datetime]) -> QgsDateTimeRange: ...
    def referenceTime(self) -> QtCore.QDateTime: ...
    def hasReferenceTime(self) -> bool: ...
    def datasetIndexClosestFromRelativeTime(self, group: int, timeSinceGlobalReference: int) -> 'QgsMeshDatasetIndex': ...
    def datasetIndexClosestBeforeRelativeTime(self, group: int, timeSinceGlobalReference: int) -> 'QgsMeshDatasetIndex': ...


class QgsMeshDatasetIndex(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, group: int = ..., dataset: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetIndex') -> None: ...

    def isValid(self) -> bool: ...
    def dataset(self) -> int: ...
    def group(self) -> int: ...


class QgsMeshDatasetValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, scalar: float) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetValue') -> None: ...

    def y(self) -> float: ...
    def x(self) -> float: ...
    def scalar(self) -> float: ...
    def setY(self, y: float) -> None: ...
    def setX(self, x: float) -> None: ...
    def set(self, scalar: float) -> None: ...


class QgsMeshDataBlock(PyQt5.sip.wrapper):

    class DataType(int):
        ActiveFlagInteger = ... # type: QgsMeshDataBlock.DataType
        ScalarDouble = ... # type: QgsMeshDataBlock.DataType
        Vector2DDouble = ... # type: QgsMeshDataBlock.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: 'QgsMeshDataBlock.DataType', count: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataBlock') -> None: ...

    def setValid(self, valid: bool) -> None: ...
    def setValues(self, vals: typing.Iterable[float]) -> None: ...
    def values(self) -> typing.List[float]: ...
    def setActive(self, vals: typing.Iterable[int]) -> None: ...
    @typing.overload
    def active(self, index: int) -> bool: ...
    @typing.overload
    def active(self) -> typing.List[int]: ...
    def value(self, index: int) -> QgsMeshDatasetValue: ...
    def isValid(self) -> bool: ...
    def count(self) -> int: ...
    def type(self) -> 'QgsMeshDataBlock.DataType': ...


class QgsMesh3dDataBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, count: int, isVector: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMesh3dDataBlock') -> None: ...

    def setValues(self, doubleBuffer: typing.Iterable[float]) -> None: ...
    def value(self, volumeIndex: int) -> QgsMeshDatasetValue: ...
    def values(self) -> typing.List[float]: ...
    def setFaceToVolumeIndex(self, faceToVolumeIndex: typing.Iterable[int]) -> None: ...
    def faceToVolumeIndex(self) -> typing.List[int]: ...
    def setVerticalLevels(self, verticalLevels: typing.Iterable[float]) -> None: ...
    def verticalLevels(self) -> typing.List[float]: ...
    def setVerticalLevelsCount(self, verticalLevelsCount: typing.Iterable[int]) -> None: ...
    def verticalLevelsCount(self) -> typing.List[int]: ...
    def volumesCount(self) -> int: ...
    def lastVolumeIndex(self) -> int: ...
    def firstVolumeIndex(self) -> int: ...
    def count(self) -> int: ...
    def isVector(self) -> bool: ...
    def isValid(self) -> bool: ...
    def setValid(self, valid: bool) -> None: ...


class QgsMeshDatasetGroupMetadata(PyQt5.sip.wrapper):

    class DataType(int):
        DataOnFaces = ... # type: QgsMeshDatasetGroupMetadata.DataType
        DataOnVertices = ... # type: QgsMeshDatasetGroupMetadata.DataType
        DataOnVolumes = ... # type: QgsMeshDatasetGroupMetadata.DataType
        DataOnEdges = ... # type: QgsMeshDatasetGroupMetadata.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, uri: str, isScalar: bool, dataType: 'QgsMeshDatasetGroupMetadata.DataType', minimum: float, maximum: float, maximumVerticalLevels: int, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], isTemporal: bool, extraOptions: typing.Dict[str, str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroupMetadata') -> None: ...

    def referenceTime(self) -> QtCore.QDateTime: ...
    def maximumVerticalLevelsCount(self) -> int: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def dataType(self) -> 'QgsMeshDatasetGroupMetadata.DataType': ...
    def isTemporal(self) -> bool: ...
    def isScalar(self) -> bool: ...
    def isVector(self) -> bool: ...
    def extraOptions(self) -> typing.Dict[str, str]: ...
    def uri(self) -> str: ...
    def name(self) -> str: ...


class QgsMeshDatasetMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, time: float, isValid: bool, minimum: float, maximum: float, maximumVerticalLevels: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetMetadata') -> None: ...

    def maximumVerticalLevelsCount(self) -> int: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def isValid(self) -> bool: ...
    def time(self) -> float: ...


class QgsMeshDataset(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataset') -> None: ...

    def valuesCount(self) -> int: ...
    def metadata(self) -> QgsMeshDatasetMetadata: ...
    def isActive(self, faceIndex: int) -> bool: ...
    def areFacesActive(self, faceIndex: int, count: int) -> QgsMeshDataBlock: ...
    def datasetValues(self, isScalar: bool, valueIndex: int, count: int) -> QgsMeshDataBlock: ...
    def datasetValue(self, valueIndex: int) -> QgsMeshDatasetValue: ...


class QgsMeshDatasetGroup(PyQt5.sip.wrapper):

    class Type(int):
        None_ = ... # type: QgsMeshDatasetGroup.Type
        Persistent = ... # type: QgsMeshDatasetGroup.Type
        Memory = ... # type: QgsMeshDatasetGroup.Type
        Virtual = ... # type: QgsMeshDatasetGroup.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, name: str, dataType: QgsMeshDatasetGroupMetadata.DataType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroup') -> None: ...

    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def description(self) -> str: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def datasetGroupNamesDependentOn(self) -> typing.List[str]: ...
    def setStatisticObsolete(self) -> None: ...
    def calculateStatistic(self) -> None: ...
    def checkValueCountPerDataset(self, count: int) -> bool: ...
    def setIsScalar(self, isScalar: bool) -> None: ...
    def isScalar(self) -> bool: ...
    def extraMetadata(self) -> typing.Dict[str, str]: ...
    def addExtraMetadata(self, key: str, value: str) -> None: ...
    def setDataType(self, dataType: QgsMeshDatasetGroupMetadata.DataType) -> None: ...
    def dataType(self) -> QgsMeshDatasetGroupMetadata.DataType: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setMinimumMaximum(self, min: float, max: float) -> None: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def type(self) -> 'QgsMeshDatasetGroup.Type': ...
    def dataset(self, index: int) -> QgsMeshDataset: ...
    def datasetCount(self) -> int: ...
    def datasetMetadata(self, datasetIndex: int) -> QgsMeshDatasetMetadata: ...
    def groupMetadata(self) -> QgsMeshDatasetGroupMetadata: ...
    def initialize(self) -> None: ...


class QgsMeshDatasetGroupTreeItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, defaultName: str, sourceName: str, isVector: bool, index: int) -> None: ...
    @typing.overload
    def __init__(self, itemElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroupTreeItem') -> None: ...

    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setPersistentDatasetGroup(self, uri: str) -> None: ...
    def setDatasetGroup(self, datasetGroup: QgsMeshDatasetGroup) -> None: ...
    def description(self) -> str: ...
    def groupIndexDependencies(self) -> typing.List[int]: ...
    def datasetGroupType(self) -> QgsMeshDatasetGroup.Type: ...
    def defaultName(self) -> str: ...
    def setIsEnabled(self, isEnabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def datasetGroupIndex(self) -> int: ...
    def isVector(self) -> bool: ...
    def providerName(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def row(self) -> int: ...
    def parentItem(self) -> 'QgsMeshDatasetGroupTreeItem': ...
    def enabledDatasetGroupIndexes(self) -> typing.List[int]: ...
    def totalChildCount(self) -> int: ...
    def childCount(self) -> int: ...
    def childFromDatasetGroupIndex(self, index: int) -> 'QgsMeshDatasetGroupTreeItem': ...
    def child(self, row: int) -> 'QgsMeshDatasetGroupTreeItem': ...
    def removeChild(self, item: 'QgsMeshDatasetGroupTreeItem') -> None: ...
    def appendChild(self, item: 'QgsMeshDatasetGroupTreeItem') -> None: ...
    def clone(self) -> 'QgsMeshDatasetGroupTreeItem': ...


class QgsMeshLayer(QgsMapLayer, QgsAbstractProfileSource):

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext' = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMeshLayer.LayerOptions') -> None: ...

    def __init__(self, path: str = ..., baseName: str = ..., providerLib: str = ..., options: 'QgsMeshLayer.LayerOptions' = ...) -> None: ...

    def reloaded(self) -> None: ...
    def timeSettingsChanged(self) -> None: ...
    def activeVectorDatasetGroupChanged(self, index: int) -> None: ...
    def activeScalarDatasetGroupChanged(self, index: int) -> None: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def meshEdgeCount(self) -> int: ...
    def meshFaceCount(self) -> int: ...
    def meshVertexCount(self) -> int: ...
    def contains(self, type: QgsMesh.ElementType) -> bool: ...
    def isModified(self) -> bool: ...
    def meshEditor(self) -> QgsMeshEditor: ...
    def reindex(self, transform: 'QgsCoordinateTransform', renumber: bool) -> bool: ...
    def stopFrameEditing(self, transform: 'QgsCoordinateTransform') -> None: ...
    def rollBackFrameEditing(self, transform: 'QgsCoordinateTransform', continueEditing: bool = ...) -> bool: ...
    def commitFrameEditing(self, transform: 'QgsCoordinateTransform', continueEditing: bool = ...) -> bool: ...
    @typing.overload
    def startFrameEditing(self, transform: 'QgsCoordinateTransform') -> bool: ...
    @typing.overload
    def startFrameEditing(self, transform: 'QgsCoordinateTransform', fixErrors: bool) -> typing.Tuple[bool, QgsMeshEditingError]: ...
    def datasetRelativeTimeInMilliseconds(self, index: QgsMeshDatasetIndex) -> int: ...
    def datasetRelativeTime(self, index: QgsMeshDatasetIndex) -> QgsInterval: ...
    def firstValidTimeStep(self) -> QgsInterval: ...
    def resetDatasetGroupTreeItem(self) -> None: ...
    def setDatasetGroupTreeRootItem(self, rootItem: QgsMeshDatasetGroupTreeItem) -> None: ...
    def datasetGroupTreeRootItem(self) -> QgsMeshDatasetGroupTreeItem: ...
    def selectFacesByExpression(self, expression: QgsExpression) -> typing.List[int]: ...
    def selectVerticesByExpression(self, expression: QgsExpression) -> typing.List[int]: ...
    def snapOnElement(self, elementType: QgsMesh.ElementType, point: QgsPointXY, searchRadius: float) -> QgsPointXY: ...
    def setTemporalMatchingMethod(self, matchingMethod: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod) -> None: ...
    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def staticVectorDatasetIndex(self) -> QgsMeshDatasetIndex: ...
    def staticScalarDatasetIndex(self) -> QgsMeshDatasetIndex: ...
    def activeVectorDatasetAtTime(self, timeRange: QgsDateTimeRange) -> QgsMeshDatasetIndex: ...
    def activeScalarDatasetAtTime(self, timeRange: QgsDateTimeRange) -> QgsMeshDatasetIndex: ...
    def datasetIndexInRelativeTimeInterval(self, startRelativeTime: QgsInterval, endRelativeTime: QgsInterval, datasetGroupIndex: int) -> typing.List[QgsMeshDatasetIndex]: ...
    def datasetIndexAtRelativeTime(self, relativeTime: QgsInterval, datasetGroupIndex: int) -> QgsMeshDatasetIndex: ...
    def datasetIndexAtTime(self, timeRange: QgsDateTimeRange, datasetGroupIndex: int) -> QgsMeshDatasetIndex: ...
    def dataset1dValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY, searchRadius: float) -> QgsMeshDatasetValue: ...
    def dataset3dValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY) -> QgsMesh3dDataBlock: ...
    def areFacesActive(self, index: QgsMeshDatasetIndex, faceIndex: int, count: int) -> QgsMeshDataBlock: ...
    def isFaceActive(self, index: QgsMeshDatasetIndex, faceIndex: int) -> bool: ...
    def dataset3dValues(self, index: QgsMeshDatasetIndex, faceIndex: int, count: int) -> QgsMesh3dDataBlock: ...
    def datasetValues(self, index: QgsMeshDatasetIndex, valueIndex: int, count: int) -> QgsMeshDataBlock: ...
    @typing.overload
    def datasetValue(self, index: QgsMeshDatasetIndex, valueIndex: int) -> QgsMeshDatasetValue: ...
    @typing.overload
    def datasetValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY, searchRadius: float = ...) -> QgsMeshDatasetValue: ...
    def datasetMetadata(self, index: QgsMeshDatasetIndex) -> QgsMeshDatasetMetadata: ...
    def datasetCount(self, index: QgsMeshDatasetIndex) -> int: ...
    def datasetGroupMetadata(self, index: QgsMeshDatasetIndex) -> QgsMeshDatasetGroupMetadata: ...
    def enabledDatasetGroupsIndexes(self) -> typing.List[int]: ...
    def datasetGroupsIndexes(self) -> typing.List[int]: ...
    def extraDatasetGroupCount(self) -> int: ...
    def datasetGroupCount(self) -> int: ...
    def formatTime(self, hours: float) -> str: ...
    def setTimeSettings(self, settings: 'QgsMeshTimeSettings') -> None: ...
    def timeSettings(self) -> 'QgsMeshTimeSettings': ...
    def setRendererSettings(self, settings: 'QgsMeshRendererSettings') -> None: ...
    def rendererSettings(self) -> 'QgsMeshRendererSettings': ...
    def updateTriangularMesh(self, transform: 'QgsCoordinateTransform' = ...) -> None: ...
    def saveDataset(self, path: str, datasetGroupIndex: int, driver: str) -> bool: ...
    @typing.overload
    def addDatasets(self, path: str, defaultReferenceTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> bool: ...
    @typing.overload
    def addDatasets(self, datasetGroup: QgsMeshDatasetGroup) -> bool: ...
    def providerType(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def supportsEditing(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def htmlMetadata(self) -> str: ...
    def subLayers(self) -> typing.List[str]: ...
    def reload(self) -> None: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def temporalProperties(self) -> QgsMapLayerTemporalProperties: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> 'QgsMeshLayer': ...
    def dataProvider(self) -> QgsMeshDataProvider: ...
    def __repr__(self) -> typing.Any: ...


class QgsMeshLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setElevationLimit(self, limit: float) -> None: ...
    def elevationLimit(self) -> float: ...
    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def profileFillSymbol(self) -> 'QgsFillSymbol': ...
    def setProfileLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def profileLineSymbol(self) -> 'QgsLineSymbol': ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def clone(self) -> 'QgsMeshLayerElevationProperties': ...
    def htmlSummary(self) -> str: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsMeshUtils(PyQt5.sip.simplewrapper):

    def exportRasterBlock(self, layer: QgsMeshLayer, datasetIndex: QgsMeshDatasetIndex, destinationCrs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', mapUnitsPerPixel: float, extent: QgsRectangle, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...


class QgsMeshLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setAlwaysLoadReferenceTimeFromSource(self, autoReloadFromProvider: bool) -> None: ...
    def alwaysLoadReferenceTimeFromSource(self) -> bool: ...
    def setIsValid(self, isValid: bool) -> None: ...
    def isValid(self) -> bool: ...
    def setMatchingMethod(self, matchingMethod: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod) -> None: ...
    def matchingMethod(self) -> QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod: ...
    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def referenceTime(self) -> QtCore.QDateTime: ...
    def timeExtent(self) -> QgsDateTimeRange: ...
    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...


class QgsMeshRendererMeshSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererMeshSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def setLineWidthUnit(self, lineWidthUnit: Qgis.RenderUnit) -> None: ...
    def lineWidthUnit(self) -> Qgis.RenderUnit: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setLineWidth(self, lineWidth: float) -> None: ...
    def lineWidth(self) -> float: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...


class QgsMeshRendererScalarSettings(PyQt5.sip.wrapper):

    class DataResamplingMethod(int):
        None_ = ... # type: QgsMeshRendererScalarSettings.DataResamplingMethod
        NeighbourAverage = ... # type: QgsMeshRendererScalarSettings.DataResamplingMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererScalarSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setEdgeStrokeWidthUnit(self, edgeStrokeWidthUnit: Qgis.RenderUnit) -> None: ...
    def edgeStrokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setEdgeStrokeWidth(self, strokeWidth: 'QgsInterpolatedLineWidth') -> None: ...
    def edgeStrokeWidth(self) -> 'QgsInterpolatedLineWidth': ...
    def setDataResamplingMethod(self, dataResamplingMethod: 'QgsMeshRendererScalarSettings.DataResamplingMethod') -> None: ...
    def dataResamplingMethod(self) -> 'QgsMeshRendererScalarSettings.DataResamplingMethod': ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setClassificationMinimumMaximum(self, minimum: float, maximum: float) -> None: ...
    def classificationMaximum(self) -> float: ...
    def classificationMinimum(self) -> float: ...
    def setColorRampShader(self, shader: 'QgsColorRampShader') -> None: ...
    def colorRampShader(self) -> 'QgsColorRampShader': ...


class QgsMeshRendererVectorArrowSettings(PyQt5.sip.wrapper):

    class ArrowScalingMethod(int):
        MinMax = ... # type: QgsMeshRendererVectorArrowSettings.ArrowScalingMethod
        Scaled = ... # type: QgsMeshRendererVectorArrowSettings.ArrowScalingMethod
        Fixed = ... # type: QgsMeshRendererVectorArrowSettings.ArrowScalingMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererVectorArrowSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def setArrowHeadLengthRatio(self, arrowHeadLengthRatio: float) -> None: ...
    def arrowHeadLengthRatio(self) -> float: ...
    def setArrowHeadWidthRatio(self, arrowHeadWidthRatio: float) -> None: ...
    def arrowHeadWidthRatio(self) -> float: ...
    def setFixedShaftLength(self, fixedShaftLength: float) -> None: ...
    def fixedShaftLength(self) -> float: ...
    def setScaleFactor(self, scaleFactor: float) -> None: ...
    def scaleFactor(self) -> float: ...
    def setMaxShaftLength(self, maxShaftLength: float) -> None: ...
    def maxShaftLength(self) -> float: ...
    def setMinShaftLength(self, minShaftLength: float) -> None: ...
    def minShaftLength(self) -> float: ...
    def setShaftLengthMethod(self, shaftLengthMethod: 'QgsMeshRendererVectorArrowSettings.ArrowScalingMethod') -> None: ...
    def shaftLengthMethod(self) -> 'QgsMeshRendererVectorArrowSettings.ArrowScalingMethod': ...


class QgsMeshRendererVectorStreamlineSettings(PyQt5.sip.wrapper):

    class SeedingStartPointsMethod(int):
        MeshGridded = ... # type: QgsMeshRendererVectorStreamlineSettings.SeedingStartPointsMethod
        Random = ... # type: QgsMeshRendererVectorStreamlineSettings.SeedingStartPointsMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererVectorStreamlineSettings') -> None: ...

    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def setSeedingDensity(self, seedingDensity: float) -> None: ...
    def seedingDensity(self) -> float: ...
    def setSeedingMethod(self, seedingMethod: 'QgsMeshRendererVectorStreamlineSettings.SeedingStartPointsMethod') -> None: ...
    def seedingMethod(self) -> 'QgsMeshRendererVectorStreamlineSettings.SeedingStartPointsMethod': ...


class QgsMeshRendererVectorTracesSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererVectorTracesSettings') -> None: ...

    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def setMaximumTailLengthUnit(self, maximumTailLengthUnit: Qgis.RenderUnit) -> None: ...
    def maximumTailLengthUnit(self) -> Qgis.RenderUnit: ...
    def setParticlesCount(self, value: int) -> None: ...
    def particlesCount(self) -> int: ...
    def setMaximumTailLength(self, maximumTailLength: float) -> None: ...
    def maximumTailLength(self) -> float: ...


class QgsMeshRendererVectorSettings(PyQt5.sip.wrapper):

    class Symbology(int):
        Arrows = ... # type: QgsMeshRendererVectorSettings.Symbology
        Streamlines = ... # type: QgsMeshRendererVectorSettings.Symbology
        Traces = ... # type: QgsMeshRendererVectorSettings.Symbology

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererVectorSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setTracesSettings(self, tracesSettings: QgsMeshRendererVectorTracesSettings) -> None: ...
    def tracesSettings(self) -> QgsMeshRendererVectorTracesSettings: ...
    def setStreamLinesSettings(self, streamLinesSettings: QgsMeshRendererVectorStreamlineSettings) -> None: ...
    def streamLinesSettings(self) -> QgsMeshRendererVectorStreamlineSettings: ...
    def setArrowsSettings(self, arrowSettings: QgsMeshRendererVectorArrowSettings) -> None: ...
    def arrowSettings(self) -> QgsMeshRendererVectorArrowSettings: ...
    def vectorStrokeColoring(self) -> 'QgsInterpolatedLineColor': ...
    def setColorRampShader(self, colorRampShader: 'QgsColorRampShader') -> None: ...
    def colorRampShader(self) -> 'QgsColorRampShader': ...
    def setColoringMethod(self, coloringMethod: 'QgsInterpolatedLineColor.ColoringMethod') -> None: ...
    def coloringMethod(self) -> 'QgsInterpolatedLineColor.ColoringMethod': ...
    def setSymbology(self, symbology: 'QgsMeshRendererVectorSettings.Symbology') -> None: ...
    def symbology(self) -> 'QgsMeshRendererVectorSettings.Symbology': ...
    def setUserGridCellHeight(self, height: int) -> None: ...
    def userGridCellHeight(self) -> int: ...
    def setUserGridCellWidth(self, width: int) -> None: ...
    def userGridCellWidth(self) -> int: ...
    def setOnUserDefinedGrid(self, enabled: bool) -> None: ...
    def isOnUserDefinedGrid(self) -> bool: ...
    def setFilterMax(self, filterMax: float) -> None: ...
    def filterMax(self) -> float: ...
    def setFilterMin(self, filterMin: float) -> None: ...
    def filterMin(self) -> float: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setLineWidth(self, lineWidth: float) -> None: ...
    def lineWidth(self) -> float: ...


class QgsMeshRendererSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererSettings') -> None: ...

    def hasSettings(self, datasetGroupIndex: int) -> bool: ...
    def setActiveVectorDatasetGroup(self, activeVectorDatasetGroup: int) -> None: ...
    def activeVectorDatasetGroup(self) -> int: ...
    def setActiveScalarDatasetGroup(self, activeScalarDatasetGroup: int) -> None: ...
    def activeScalarDatasetGroup(self) -> int: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setAveragingMethod(self, method: QgsMesh3dAveragingMethod) -> None: ...
    def averagingMethod(self) -> QgsMesh3dAveragingMethod: ...
    def removeVectorSettings(self, groupIndex: int) -> bool: ...
    def hasVectorSettings(self, groupIndex: int) -> bool: ...
    def setVectorSettings(self, groupIndex: int, settings: QgsMeshRendererVectorSettings) -> None: ...
    def vectorSettings(self, groupIndex: int) -> QgsMeshRendererVectorSettings: ...
    def removeScalarSettings(self, groupIndex: int) -> bool: ...
    def hasScalarSettings(self, groupIndex: int) -> bool: ...
    def setScalarSettings(self, groupIndex: int, settings: QgsMeshRendererScalarSettings) -> None: ...
    def scalarSettings(self, groupIndex: int) -> QgsMeshRendererScalarSettings: ...
    def setEdgeMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def edgeMeshSettings(self) -> QgsMeshRendererMeshSettings: ...
    def setTriangularMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def triangularMeshSettings(self) -> QgsMeshRendererMeshSettings: ...
    def setNativeMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def nativeMeshSettings(self) -> QgsMeshRendererMeshSettings: ...


class QgsMeshSpatialIndex(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, mesh: QgsMesh, feedback: typing.Optional[QgsFeedback] = ..., elementType: QgsMesh.ElementType = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsMeshSpatialIndex') -> None: ...

    def removeFace(self, faceIndex: int, mesh: QgsMesh) -> None: ...
    def addFace(self, faceIndex: int, mesh: QgsMesh) -> None: ...
    def elementType(self) -> QgsMesh.ElementType: ...
    def nearestNeighbor(self, point: QgsPointXY, neighbors: int) -> typing.List[int]: ...
    def intersects(self, rectangle: QgsRectangle) -> typing.List[int]: ...


class QgsMeshTimeSettings(PyQt5.sip.wrapper):

    class TimeUnit(int):
        seconds = ... # type: QgsMeshTimeSettings.TimeUnit
        minutes = ... # type: QgsMeshTimeSettings.TimeUnit
        hours = ... # type: QgsMeshTimeSettings.TimeUnit
        days = ... # type: QgsMeshTimeSettings.TimeUnit

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshTimeSettings') -> None: ...

    def setAbsoluteTimeFormat(self, absoluteTimeFormat: str) -> None: ...
    def absoluteTimeFormat(self) -> str: ...
    def setRelativeTimeFormat(self, relativeTimeFormat: str) -> None: ...
    def relativeTimeFormat(self) -> str: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...


class QgsMeshVectorTraceAnimationGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: QgsMeshLayer, rendererContext: QgsRenderContext) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsMeshVectorTraceAnimationGenerator') -> None: ...

    def setTailPersitence(self, p: float) -> None: ...
    def setMinimumTailLength(self, l: int) -> None: ...
    def setTailFactor(self, fct: float) -> None: ...
    def setParticlesSize(self, width: float) -> None: ...
    def setParticlesColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setParticlesLifeTime(self, particleLifeTime: float) -> None: ...
    def setMaxSpeedPixel(self, max: int) -> None: ...
    def setFPS(self, FPS: int) -> None: ...
    def imageRendered(self) -> QtGui.QImage: ...
    def seedRandomParticles(self, count: int) -> None: ...


class QgsMeshCalculator(PyQt5.sip.wrapper):

    class Result(int):
        Success = ... # type: QgsMeshCalculator.Result
        Canceled = ... # type: QgsMeshCalculator.Result
        CreateOutputError = ... # type: QgsMeshCalculator.Result
        InputLayerError = ... # type: QgsMeshCalculator.Result
        ParserError = ... # type: QgsMeshCalculator.Result
        InvalidDatasets = ... # type: QgsMeshCalculator.Result
        EvaluateError = ... # type: QgsMeshCalculator.Result
        MemoryError = ... # type: QgsMeshCalculator.Result

    @typing.overload
    def __init__(self, formulaString: str, outputFile: str, outputExtent: QgsRectangle, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputFile: str, outputMask: QgsGeometry, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputDriver: str, outputGroupName: str, outputFile: str, outputExtent: QgsRectangle, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputDriver: str, outputGroupName: str, outputFile: str, outputMask: QgsGeometry, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputGroupName: str, outputExtent: QgsRectangle, destination: QgsMeshDatasetGroup.Type, layer: QgsMeshLayer, startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputGroupName: str, outputMask: QgsGeometry, destination: QgsMeshDatasetGroup.Type, layer: QgsMeshLayer, startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshCalculator') -> None: ...

    @staticmethod
    def expressionIsValid(formulaString: str, layer: QgsMeshLayer) -> typing.Tuple['QgsMeshCalculator.Result', 'QgsMeshDriverMetadata.MeshDriverCapability']: ...
    @staticmethod
    def expression_valid(formulaString: str, layer: QgsMeshLayer) -> 'QgsMeshCalculator.Result': ...
    def processCalculation(self, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsMeshCalculator.Result': ...


class QgsMeshAdvancedEditing(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshAdvancedEditing') -> None: ...

    def text(self) -> str: ...
    def isFinished(self) -> bool: ...
    def clear(self) -> None: ...
    def message(self) -> str: ...
    def setInputFaces(self, faceIndexes: typing.Iterable[int]) -> None: ...
    def setInputVertices(self, verticesIndexes: typing.Iterable[int]) -> None: ...


class QgsMeshEditRefineFaces(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditRefineFaces') -> None: ...

    def text(self) -> str: ...


class QgsMeshTransformVerticesByExpression(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshTransformVerticesByExpression') -> None: ...

    def transformedVertex(self, layer: QgsMeshLayer, vertexIndex: int) -> QgsPoint: ...
    def calculate(self, layer: QgsMeshLayer) -> bool: ...
    def setExpressions(self, expressionX: str, expressionY: str, expressionZ: str) -> None: ...
    def text(self) -> str: ...


class QgsMeshEditForceByLine(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditForceByLine') -> None: ...

    def setInterpolateZValueOnMesh(self, interpolateZValueOnMesh: bool) -> None: ...
    def setDefaultZValue(self, defaultZValue: float) -> None: ...
    def setAddVertexOnIntersection(self, addVertex: bool) -> None: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def setInputLine(self, pt1: QgsPoint, pt2: QgsPoint, tolerance: float, newVertexOnIntersection: bool) -> None: ...


class QgsMeshEditForceByPolylines(QgsMeshEditForceByLine):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditForceByPolylines') -> None: ...

    def addLinesFromGeometries(self, geometries: typing.Iterable[QgsGeometry]) -> None: ...
    def addLineFromGeometry(self, geom: QgsGeometry) -> None: ...
    def isFinished(self) -> bool: ...
    def text(self) -> str: ...


class QgsPlot(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPlot') -> None: ...

    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class QgsPlotAxis(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def setLabelSuffixPlacement(self, placement: Qgis.PlotAxisSuffixPlacement) -> None: ...
    def labelSuffixPlacement(self) -> Qgis.PlotAxisSuffixPlacement: ...
    def setLabelSuffix(self, suffix: str) -> None: ...
    def labelSuffix(self) -> str: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setGridMinorSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def gridMinorSymbol(self) -> 'QgsLineSymbol': ...
    def setGridMajorSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def gridMajorSymbol(self) -> 'QgsLineSymbol': ...
    def setLabelInterval(self, interval: float) -> None: ...
    def labelInterval(self) -> float: ...
    def setGridIntervalMajor(self, interval: float) -> None: ...
    def gridIntervalMajor(self) -> float: ...
    def setGridIntervalMinor(self, interval: float) -> None: ...
    def gridIntervalMinor(self) -> float: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class Qgs2DPlot(QgsPlot):

    def __init__(self) -> None: ...

    def setMargins(self, margins: QgsMargins) -> None: ...
    def margins(self) -> QgsMargins: ...
    def setChartBorderSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def chartBorderSymbol(self) -> 'QgsFillSymbol': ...
    def setChartBackgroundSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def chartBackgroundSymbol(self) -> 'QgsFillSymbol': ...
    def yAxis(self) -> QgsPlotAxis: ...
    def xAxis(self) -> QgsPlotAxis: ...
    def setYMaximum(self, maximum: float) -> None: ...
    def yMaximum(self) -> float: ...
    def setXMaximum(self, maximum: float) -> None: ...
    def xMaximum(self) -> float: ...
    def setYMinimum(self, minimum: float) -> None: ...
    def yMinimum(self) -> float: ...
    def setXMinimum(self, minimum: float) -> None: ...
    def xMinimum(self) -> float: ...
    def calculateOptimisedIntervals(self, context: QgsRenderContext) -> None: ...
    def interiorPlotArea(self, context: QgsRenderContext) -> QtCore.QRectF: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def renderContent(self, context: QgsRenderContext, plotArea: QtCore.QRectF) -> None: ...
    def render(self, context: QgsRenderContext) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class QgsPlotDefaultSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPlotDefaultSettings') -> None: ...

    @staticmethod
    def chartBorderSymbol() -> 'QgsFillSymbol': ...
    @staticmethod
    def chartBackgroundSymbol() -> 'QgsFillSymbol': ...
    @staticmethod
    def axisGridMinorSymbol() -> 'QgsLineSymbol': ...
    @staticmethod
    def axisGridMajorSymbol() -> 'QgsLineSymbol': ...
    @staticmethod
    def axisLabelNumericFormat() -> 'QgsNumericFormat': ...


class QgsPointCloudAttribute(PyQt5.sip.wrapper):

    class DataType(int):
        Char = ... # type: QgsPointCloudAttribute.DataType
        UChar = ... # type: QgsPointCloudAttribute.DataType
        Short = ... # type: QgsPointCloudAttribute.DataType
        UShort = ... # type: QgsPointCloudAttribute.DataType
        Int32 = ... # type: QgsPointCloudAttribute.DataType
        UInt32 = ... # type: QgsPointCloudAttribute.DataType
        Int64 = ... # type: QgsPointCloudAttribute.DataType
        UInt64 = ... # type: QgsPointCloudAttribute.DataType
        Float = ... # type: QgsPointCloudAttribute.DataType
        Double = ... # type: QgsPointCloudAttribute.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, type: 'QgsPointCloudAttribute.DataType') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudAttribute') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def isNumeric(type: 'QgsPointCloudAttribute.DataType') -> bool: ...
    def displayType(self) -> str: ...
    def variantType(self) -> QtCore.QVariant.Type: ...
    def type(self) -> 'QgsPointCloudAttribute.DataType': ...
    def size(self) -> int: ...
    def name(self) -> str: ...


class QgsPointCloudAttributeCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, attributes: typing.Iterable[QgsPointCloudAttribute]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudAttributeCollection') -> None: ...

    def toFields(self) -> QgsFields: ...
    def pointRecordSize(self) -> int: ...
    def indexOf(self, name: str) -> int: ...
    def find(self, attributeName: str) -> typing.Tuple[QgsPointCloudAttribute, int]: ...
    def at(self, index: int) -> QgsPointCloudAttribute: ...
    def count(self) -> int: ...
    def attributes(self) -> typing.List[QgsPointCloudAttribute]: ...
    def extend(self, otherCollection: 'QgsPointCloudAttributeCollection', matchingNames: typing.Iterable[str]) -> None: ...
    def push_back(self, attribute: QgsPointCloudAttribute) -> None: ...


class QgsPointCloudRenderer(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def saveCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def restoreCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def copyCommonProperties(self, destination: 'QgsPointCloudRenderer') -> None: ...
    def drawPoint(self, x: float, y: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def pointZ(context: 'QgsPointCloudRenderContext', ptr: str, i: int) -> float: ...
    @staticmethod
    def pointXY(context: 'QgsPointCloudRenderContext', ptr: str, i: int) -> typing.Tuple[float, float]: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def setMaximumScreenErrorUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maximumScreenErrorUnit(self) -> Qgis.RenderUnit: ...
    def setMaximumScreenError(self, error: float) -> None: ...
    def maximumScreenError(self) -> float: ...
    def setPointSymbol(self, symbol: Qgis.PointCloudSymbol) -> None: ...
    def pointSymbol(self) -> Qgis.PointCloudSymbol: ...
    def setDrawOrder2d(self, order: Qgis.PointCloudDrawOrder) -> None: ...
    def drawOrder2d(self) -> Qgis.PointCloudDrawOrder: ...
    def pointSizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setPointSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def pointSizeUnit(self) -> Qgis.RenderUnit: ...
    def setPointSizeUnit(self, units: Qgis.RenderUnit) -> None: ...
    def pointSize(self) -> float: ...
    def setPointSize(self, size: float) -> None: ...
    def checkLegendItem(self, key: str, state: bool = ...) -> None: ...
    def legendItemChecked(self, key: str) -> bool: ...
    def stopRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def startRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def load(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsPointCloudRenderer': ...
    def willRenderPoint(self, pointAttributes: typing.Dict[str, typing.Any]) -> bool: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> 'QgsPointCloudRenderer': ...
    def type(self) -> str: ...


class QgsPointCloudAttributeByRampRenderer(QgsPointCloudRenderer):

    def __init__(self) -> None: ...

    def setMaximum(self, maximum: float) -> None: ...
    def maximum(self) -> float: ...
    def setMinimum(self, minimum: float) -> None: ...
    def minimum(self) -> float: ...
    def setColorRampShader(self, shader: 'QgsColorRampShader') -> None: ...
    def colorRampShader(self) -> 'QgsColorRampShader': ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudAttributeModel(QtCore.QAbstractItemModel):

    class FieldRoles(int):
        AttributeNameRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeIndexRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeSizeRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeTypeRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        IsEmptyRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        IsNumericRole = ... # type: QgsPointCloudAttributeModel.FieldRoles

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    @staticmethod
    def iconForAttributeType(type: QgsPointCloudAttribute.DataType) -> QtGui.QIcon: ...
    @staticmethod
    def attributeToolTip(attribute: QgsPointCloudAttribute) -> str: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def allowEmptyAttributeName(self) -> bool: ...
    def indexFromName(self, name: str) -> QtCore.QModelIndex: ...
    def setAllowEmptyAttributeName(self, allowEmpty: bool) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def setAttributes(self, attributes: QgsPointCloudAttributeCollection) -> None: ...
    def layer(self) -> 'QgsPointCloudLayer': ...
    def setLayer(self, layer: 'QgsPointCloudLayer') -> None: ...


class QgsPointCloudAttributeProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        Char = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Short = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Int32 = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Float = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Double = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Numeric = ... # type: QgsPointCloudAttributeProxyModel.Filter
        AllTypes = ... # type: QgsPointCloudAttributeProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointCloudAttributeProxyModel.Filters') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, source: QgsPointCloudAttributeModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def filters(self) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
    def setFilters(self, filters: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel': ...
    def sourceAttributeModel(self) -> QgsPointCloudAttributeModel: ...


class QgsPointCloudCategory(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudCategory') -> None: ...

    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setLabel(self, label: str) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setValue(self, value: int) -> None: ...
    def label(self) -> str: ...
    def color(self) -> QtGui.QColor: ...
    def value(self) -> int: ...


class QgsPointCloudClassifiedRenderer(QgsPointCloudRenderer):

    def __init__(self, attributeName: str = ..., categories: typing.Iterable[QgsPointCloudCategory] = ...) -> None: ...

    def addCategory(self, category: QgsPointCloudCategory) -> None: ...
    def setCategories(self, categories: typing.Iterable[QgsPointCloudCategory]) -> None: ...
    def categories(self) -> typing.List[QgsPointCloudCategory]: ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def defaultCategories() -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def checkLegendItem(self, key: str, state: bool = ...) -> None: ...
    def legendItemChecked(self, key: str) -> bool: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def willRenderPoint(self, pointAttributes: typing.Dict[str, typing.Any]) -> bool: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudExtentRenderer(QgsPointCloudRenderer):

    def __init__(self, symbol: typing.Optional['QgsFillSymbol'] = ...) -> None: ...

    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    @staticmethod
    def defaultFillSymbol() -> 'QgsFillSymbol': ...
    def renderExtent(self, extent: QgsGeometry, context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def stopRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def startRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, count: int, attributes: QgsPointCloudAttributeCollection, data: typing.Union[QtCore.QByteArray, bytes, bytearray], scale: QgsVector3D, offset: QgsVector3D) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudBlock') -> None: ...

    def setPointCount(self, size: int) -> None: ...
    def offset(self) -> QgsVector3D: ...
    def scale(self) -> QgsVector3D: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def pointRecordSize(self) -> int: ...
    def pointCount(self) -> int: ...
    def data(self) -> str: ...


class QgsPointCloudLayer(QgsMapLayer, QgsAbstractProfileSource):

    class PointCloudStatisticsCalculationState(int):
        NotStarted = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState
        Calculating = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState
        Calculated = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        skipIndexGeneration = ... # type: bool
        skipStatisticsCalculation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext' = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointCloudLayer.LayerOptions') -> None: ...

    def __init__(self, uri: str = ..., baseName: str = ..., providerLib: str = ..., options: 'QgsPointCloudLayer.LayerOptions' = ...) -> None: ...

    def statisticsCalculationStateChanged(self, state: 'QgsPointCloudLayer.PointCloudStatisticsCalculationState') -> None: ...
    def raiseError(self, msg: str) -> None: ...
    def subsetStringChanged(self) -> None: ...
    def statisticsCalculationState(self) -> 'QgsPointCloudLayer.PointCloudStatisticsCalculationState': ...
    def statistics(self) -> 'QgsPointCloudStatistics': ...
    def convertRenderer3DFromRenderer2D(self) -> bool: ...
    def sync3DRendererTo2DRenderer(self) -> bool: ...
    def setSync3DRendererTo2DRenderer(self, sync: bool) -> None: ...
    def subsetString(self) -> str: ...
    def setSubsetString(self, subset: str) -> bool: ...
    def setRenderer(self, renderer: QgsPointCloudRenderer) -> None: ...
    def renderer(self) -> QgsPointCloudRenderer: ...
    def pointCount(self) -> int: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def htmlMetadata(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def decodedSource(self, source: str, dataProvider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def dataProvider(self) -> 'QgsPointCloudDataProvider': ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> 'QgsPointCloudLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsPointCloudLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setRespectLayerColors(self, enabled: bool) -> None: ...
    def respectLayerColors(self) -> bool: ...
    def pointSizeUnit(self) -> Qgis.RenderUnit: ...
    def setPointSizeUnit(self, units: Qgis.RenderUnit) -> None: ...
    def pointSize(self) -> float: ...
    def setPointSize(self, size: float) -> None: ...
    def setApplyOpacityByDistanceEffect(self, apply: bool) -> None: ...
    def applyOpacityByDistanceEffect(self) -> bool: ...
    def setPointColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def pointColor(self) -> QtGui.QColor: ...
    def setPointSymbol(self, symbol: Qgis.PointCloudSymbol) -> None: ...
    def pointSymbol(self) -> Qgis.PointCloudSymbol: ...
    def setMaximumScreenErrorUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maximumScreenErrorUnit(self) -> Qgis.RenderUnit: ...
    def setMaximumScreenError(self, error: float) -> None: ...
    def maximumScreenError(self) -> float: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsPointCloudLayerElevationProperties': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsPointCloudDataProvider(QgsDataProvider):

    class PointCloudIndexGenerationState(int):
        NotIndexed = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState
        Indexing = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState
        Indexed = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState

    class Capability(int):
        NoCapabilities = ... # type: QgsPointCloudDataProvider.Capability
        ReadLayerMetadata = ... # type: QgsPointCloudDataProvider.Capability
        WriteLayerMetadata = ... # type: QgsPointCloudDataProvider.Capability
        CreateRenderer = ... # type: QgsPointCloudDataProvider.Capability
        ContainSubIndexes = ... # type: QgsPointCloudDataProvider.Capability

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointCloudDataProvider.Capabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, uri: str, providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def indexGenerationStateChanged(self, state: 'QgsPointCloudDataProvider.PointCloudIndexGenerationState') -> None: ...
    @staticmethod
    def translatedDataFormatIds() -> typing.Dict[int, str]: ...
    @staticmethod
    def dataFormatIds() -> typing.Dict[int, str]: ...
    @staticmethod
    def translatedLasClassificationCodes() -> typing.Dict[int, str]: ...
    @staticmethod
    def lasClassificationCodes() -> typing.Dict[int, str]: ...
    def setSubsetString(self, subset: str, updateFeatureCount: bool = ...) -> bool: ...
    def subsetString(self) -> str: ...
    def supportsSubsetString(self) -> bool: ...
    def metadataStatistics(self) -> 'QgsPointCloudStatistics': ...
    def metadataClassStatistic(self, attribute: str, value: typing.Any, statistic: QgsStatisticalSummary.Statistic) -> typing.Any: ...
    def metadataClasses(self, attribute: str) -> typing.List[typing.Any]: ...
    def metadataStatistic(self, attribute: str, statistic: QgsStatisticalSummary.Statistic) -> typing.Any: ...
    def hasStatisticsMetadata(self) -> bool: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsPointCloudRenderer: ...
    def originalMetadata(self) -> typing.Dict[str, typing.Any]: ...
    def polygonBounds(self) -> QgsGeometry: ...
    def pointCount(self) -> int: ...
    def hasValidIndex(self) -> bool: ...
    def indexingState(self) -> 'QgsPointCloudDataProvider.PointCloudIndexGenerationState': ...
    def generateIndex(self) -> None: ...
    def loadIndex(self) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def capabilities(self) -> 'QgsPointCloudDataProvider.Capabilities': ...
    def identify(self, maxErrorInMapCoords: float, extentGeometry: QgsGeometry, extentZRange: QgsDoubleRange = ..., pointsLimit: int = ...) -> typing.List: ...


class QgsPointCloudRenderContext(PyQt5.sip.wrapper):

    def __init__(self, context: QgsRenderContext, scale: QgsVector3D, offset: QgsVector3D, zValueScale: float, zValueFixedOffset: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...

    def feedback(self) -> QgsFeedback: ...
    def zValueFixedOffset(self) -> float: ...
    def zValueScale(self) -> float: ...
    def zOffset(self) -> int: ...
    def yOffset(self) -> int: ...
    def xOffset(self) -> int: ...
    def pointRecordSize(self) -> int: ...
    def setAttributes(self, attributes: QgsPointCloudAttributeCollection) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def incrementPointsRendered(self, count: int) -> None: ...
    def pointsRendered(self) -> int: ...
    def setOffset(self, offset: QgsVector3D) -> None: ...
    def offset(self) -> QgsVector3D: ...
    def setScale(self, scale: QgsVector3D) -> None: ...
    def scale(self) -> QgsVector3D: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsPointCloudRendererAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str, icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsPointCloudRendererMetadata(QgsPointCloudRendererAbstractMetadata):

    def __init__(self, a0: 'QgsPointCloudRendererMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...


class QgsPointCloudRendererRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def classificationAttributeCategories(layer: QgsPointCloudLayer) -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def defaultRenderer(layer: QgsPointCloudLayer) -> QgsPointCloudRenderer: ...
    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: str) -> QgsPointCloudRendererAbstractMetadata: ...
    def removeRenderer(self, rendererName: str) -> bool: ...
    def addRenderer(self, metadata: QgsPointCloudRendererAbstractMetadata) -> bool: ...


class QgsPointCloudRgbRenderer(QgsPointCloudRenderer):

    def __init__(self) -> None: ...

    def setBlueContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def blueContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setGreenContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def greenContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setRedContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def redContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setBlueAttribute(self, attribute: str) -> None: ...
    def blueAttribute(self) -> str: ...
    def setGreenAttribute(self, attribute: str) -> None: ...
    def greenAttribute(self) -> str: ...
    def setRedAttribute(self, attribute: str) -> None: ...
    def redAttribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def usedAttributes(self, context: QgsPointCloudRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: QgsPointCloudBlock, context: QgsPointCloudRenderContext) -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudLayerExporter(PyQt5.sip.wrapper):

    class ExportFormat(int):
        Memory = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Las = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Gpkg = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Shp = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Dxf = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Csv = ... # type: QgsPointCloudLayerExporter.ExportFormat

    def __init__(self, layer: QgsPointCloudLayer) -> None: ...

    def lastError(self) -> str: ...
    def takeExportedLayer(self) -> QgsMapLayer: ...
    def doExport(self) -> None: ...
    def prepareExport(self) -> None: ...
    def setActionOnExistingFile(self, action: QgsVectorFileWriter.ActionOnExistingFile) -> None: ...
    def pointsLimit(self) -> int: ...
    def setPointsLimit(self, limit: int) -> None: ...
    def format(self) -> 'QgsPointCloudLayerExporter.ExportFormat': ...
    def setFormat(self, format: 'QgsPointCloudLayerExporter.ExportFormat') -> bool: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext' = ...) -> None: ...
    def attributes(self) -> typing.List[str]: ...
    def setAllAttributes(self) -> None: ...
    def setNoAttributes(self) -> None: ...
    def setAttributes(self, attributes: typing.Iterable[str]) -> None: ...
    def feedback(self) -> QgsFeedback: ...
    def setFeedback(self, feedback: QgsFeedback) -> None: ...
    def zRange(self) -> QgsDoubleRange: ...
    def setZRange(self, zRange: QgsDoubleRange) -> None: ...
    @typing.overload
    def setFilterGeometry(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def setFilterGeometry(self, layer: QgsMapLayer, selectedFeaturesOnly: bool = ...) -> None: ...
    def filterExtent(self) -> QgsRectangle: ...
    def setFilterExtent(self, extent: QgsRectangle) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, filename: str) -> None: ...


class QgsPointCloudLayerExporterTask(QgsTask):

    def __init__(self, exporter: QgsPointCloudLayerExporter) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def exportComplete(self) -> None: ...
    def cancel(self) -> None: ...


class QgsPointCloudAttributeStatistics(PyQt5.sip.wrapper):

    count = ... # type: int
    maximum = ... # type: float
    mean = ... # type: float
    minimum = ... # type: float
    stDev = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudAttributeStatistics') -> None: ...


class QgsPointCloudStatistics(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudStatistics') -> None: ...

    @staticmethod
    def fromStatisticsJson(stats: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> 'QgsPointCloudStatistics': ...
    def toStatisticsJson(self) -> QtCore.QByteArray: ...
    def combineWith(self, stats: 'QgsPointCloudStatistics') -> None: ...
    def stDev(self, attribute: str) -> float: ...
    def mean(self, attribute: str) -> float: ...
    def maximum(self, attribute: str) -> float: ...
    def minimum(self, attribute: str) -> float: ...
    def classesOf(self, attribute: str) -> typing.List[int]: ...
    def statisticsOf(self, attribute: str) -> QgsPointCloudAttributeStatistics: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def clear(self, attributes: typing.Iterable[QgsPointCloudAttribute]) -> None: ...
    def sampledPointsCount(self) -> int: ...


class QgsCelestialBody(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCelestialBody') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def authority(self) -> str: ...
    def name(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsCoordinateReferenceSystem(PyQt5.sip.wrapper):

    class WktVariant(int):
        WKT1_GDAL = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT1_ESRI = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2015 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2015_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2018 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2018_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2019 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2019_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED_GDAL = ... # type: QgsCoordinateReferenceSystem.WktVariant

    class IdentifierType(int):
        ShortString = ... # type: QgsCoordinateReferenceSystem.IdentifierType
        MediumString = ... # type: QgsCoordinateReferenceSystem.IdentifierType
        FullString = ... # type: QgsCoordinateReferenceSystem.IdentifierType

    class CrsType(int):
        InternalCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType
        PostgisCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType
        EpsgCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, definition: str) -> None: ...
    @typing.overload
    def __init__(self, id: int, type: 'QgsCoordinateReferenceSystem.CrsType' = ...) -> None: ...
    @typing.overload
    def __init__(self, srs: 'QgsCoordinateReferenceSystem') -> None: ...

    @staticmethod
    def invalidateCache() -> None: ...
    @staticmethod
    def clearRecentCoordinateReferenceSystems() -> None: ...
    @staticmethod
    def removeRecentCoordinateReferenceSystem(crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @staticmethod
    def pushRecentCoordinateReferenceSystem(crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @staticmethod
    def recentCoordinateReferenceSystems() -> typing.List['QgsCoordinateReferenceSystem']: ...
    @staticmethod
    def recentProjections() -> typing.List[str]: ...
    def __repr__(self) -> typing.Any: ...
    def geographicCrsAuthId(self) -> str: ...
    def toGeographicCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def nativeFormat(self) -> Qgis.CrsDefinitionFormat: ...
    def setNativeFormat(self, format: Qgis.CrsDefinitionFormat) -> None: ...
    def saveAsUserCrs(self, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> int: ...
    @staticmethod
    def syncDatabase() -> int: ...
    def validationHint(self) -> str: ...
    def setValidationHint(self, html: str) -> None: ...
    def updateDefinition(self) -> None: ...
    def toOgcUri(self) -> str: ...
    def bounds(self) -> QgsRectangle: ...
    def mapUnits(self) -> Qgis.DistanceUnit: ...
    def axisOrdering(self) -> typing.List[Qgis.CrsAxisDirection]: ...
    def hasAxisInverted(self) -> bool: ...
    def operation(self) -> 'QgsProjOperation': ...
    def factors(self, point: QgsPoint) -> 'QgsProjectionFactors': ...
    def coordinateEpoch(self) -> float: ...
    def setCoordinateEpoch(self, epoch: float) -> None: ...
    def celestialBodyName(self) -> str: ...
    def datumEnsemble(self) -> 'QgsDatumEnsemble': ...
    def isDynamic(self) -> bool: ...
    def isGeographic(self) -> bool: ...
    def toProj(self) -> str: ...
    def toProj4(self) -> str: ...
    def toWkt(self, variant: 'QgsCoordinateReferenceSystem.WktVariant' = ..., multiline: bool = ..., indentationWidth: int = ...) -> str: ...
    def ellipsoidAcronym(self) -> str: ...
    def projectionAcronym(self) -> str: ...
    def userFriendlyIdentifier(self, type: 'QgsCoordinateReferenceSystem.IdentifierType' = ...) -> str: ...
    def description(self) -> str: ...
    def authid(self) -> str: ...
    def postgisSrid(self) -> int: ...
    def srsid(self) -> int: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> bool: ...
    def readXml(self, node: QtXml.QDomNode) -> bool: ...
    def findMatchingProj(self) -> int: ...
    def validate(self) -> None: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def setupESRIWktFix() -> None: ...
    def createFromUserInput(self, definition: str) -> bool: ...
    def createFromString(self, definition: str) -> bool: ...
    def createFromProj(self, projString: str) -> bool: ...
    def createFromProj4(self, projString: str) -> bool: ...
    def createFromSrsId(self, srsId: int) -> bool: ...
    def createFromWkt(self, wkt: str) -> bool: ...
    def createFromSrid(self, srid: int) -> bool: ...
    def createFromOgcWmsCrs(self, crs: str) -> bool: ...
    def createFromId(self, id: int, type: 'QgsCoordinateReferenceSystem.CrsType' = ...) -> bool: ...
    @staticmethod
    def fromSrsId(srsId: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj(proj: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj4(proj4: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromEpsgId(epsg: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromOgcWmsCrs(ogcCrs: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def validSrsIds() -> typing.Any: ...


class QgsCoordinateReferenceSystemRegistry(QtCore.QObject):

    class UserCrsDetails(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        id = ... # type: int
        name = ... # type: str
        proj = ... # type: str
        wkt = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCoordinateReferenceSystemRegistry.UserCrsDetails') -> None: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def crsDefinitionsChanged(self) -> None: ...
    def userCrsRemoved(self, id: int) -> None: ...
    def userCrsAdded(self, id: str) -> None: ...
    def userCrsChanged(self, id: str) -> None: ...
    def celestialBodies(self) -> typing.List[QgsCelestialBody]: ...
    def projOperations(self) -> typing.Dict[str, 'QgsProjOperation']: ...
    def removeUserCrs(self, id: int) -> bool: ...
    def updateUserCrs(self, id: int, crs: QgsCoordinateReferenceSystem, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> bool: ...
    def addUserCrs(self, crs: QgsCoordinateReferenceSystem, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> int: ...
    def userCrsList(self) -> typing.List['QgsCoordinateReferenceSystemRegistry.UserCrsDetails']: ...


class QgsCoordinateReferenceSystemUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCoordinateReferenceSystemUtils') -> None: ...

    @staticmethod
    def axisDirectionToAbbreviatedString(axis: Qgis.CrsAxisDirection) -> str: ...
    @staticmethod
    def defaultCoordinateOrderForCrs(crs: QgsCoordinateReferenceSystem) -> Qgis.CoordinateOrder: ...


class QgsCoordinateTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, context: 'QgsCoordinateTransformContext', flags: typing.Union[Qgis.CoordinateTransformationFlags, Qgis.CoordinateTransformationFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, project: 'QgsProject', flags: typing.Union[Qgis.CoordinateTransformationFlags, Qgis.CoordinateTransformationFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, sourceDatumTransformId: int, destinationDatumTransformId: int) -> None: ...
    @typing.overload
    def __init__(self, o: 'QgsCoordinateTransform') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def scaleFactor(self, referenceExtent: QgsRectangle) -> float: ...
    @staticmethod
    def invalidateCache() -> None: ...
    def setDestinationDatumTransformId(self, datumId: int) -> None: ...
    def destinationDatumTransformId(self) -> int: ...
    def setSourceDatumTransformId(self, datumId: int) -> None: ...
    def sourceDatumTransformId(self) -> int: ...
    def fallbackOperationOccurred(self) -> bool: ...
    def disableFallbackOperationHandler(self, disabled: bool) -> None: ...
    def setBallparkTransformsAreAppropriate(self, appropriate: bool) -> None: ...
    def allowFallbackTransforms(self) -> bool: ...
    def setAllowFallbackTransforms(self, allowed: bool) -> None: ...
    def setCoordinateOperation(self, operation: str) -> None: ...
    def instantiatedCoordinateOperationDetails(self) -> 'QgsDatumTransform.TransformDetails': ...
    def coordinateOperation(self) -> str: ...
    def isShortCircuited(self) -> bool: ...
    def transformCoords(self, numPoint: int, direction: Qgis.TransformDirection = ...) -> typing.Tuple[float, float, float]: ...
    def transformPolygon(self, polygon: QtGui.QPolygonF, direction: Qgis.TransformDirection = ...) -> None: ...
    def transformInPlace(self, direction: Qgis.TransformDirection = ...) -> typing.Tuple[float, float, float]: ...
    def transformBoundingBox(self, rectangle: QgsRectangle, direction: Qgis.TransformDirection = ..., handle180Crossover: bool = ...) -> QgsRectangle: ...
    @typing.overload
    def transform(self, point: QgsPointXY, direction: Qgis.TransformDirection = ...) -> QgsPointXY: ...
    @typing.overload
    def transform(self, x: float, y: float, direction: Qgis.TransformDirection = ...) -> QgsPointXY: ...
    @typing.overload
    def transform(self, point: QgsVector3D, direction: Qgis.TransformDirection = ...) -> QgsVector3D: ...
    @typing.overload
    def transform(self, rectangle: QgsRectangle, direction: Qgis.TransformDirection = ...) -> QgsRectangle: ...
    def destinationCrs(self) -> QgsCoordinateReferenceSystem: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def context(self) -> 'QgsCoordinateTransformContext': ...
    def setContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def setDestinationCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def setSourceCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def isTransformationPossible(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> bool: ...


class QgsCoordinateTransformContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, rhs: 'QgsCoordinateTransformContext') -> None: ...

    def writeSettings(self) -> None: ...
    def readSettings(self) -> None: ...
    def writeXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Tuple[bool, typing.List[str]]: ...
    def mustReverseCoordinateOperation(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> bool: ...
    def allowFallbackTransform(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> bool: ...
    def calculateCoordinateOperation(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> str: ...
    def calculateDatumTransforms(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> 'QgsDatumTransform.TransformPair': ...
    def hasTransform(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> bool: ...
    def removeCoordinateOperation(self, sourceCrs: QgsCoordinateReferenceSystem, destinationCrs: QgsCoordinateReferenceSystem) -> None: ...
    def removeSourceDestinationDatumTransform(self, sourceCrs: QgsCoordinateReferenceSystem, destinationCrs: QgsCoordinateReferenceSystem) -> None: ...
    def addCoordinateOperation(self, sourceCrs: QgsCoordinateReferenceSystem, destinationCrs: QgsCoordinateReferenceSystem, coordinateOperationProjString: str, allowFallback: bool = ...) -> bool: ...
    def addSourceDestinationDatumTransform(self, sourceCrs: QgsCoordinateReferenceSystem, destinationCrs: QgsCoordinateReferenceSystem, sourceTransformId: int, destinationTransformId: int) -> bool: ...
    def coordinateOperations(self) -> typing.Any: ...
    def sourceDestinationDatumTransforms(self) -> typing.Any: ...
    def clear(self) -> None: ...


class QgsDatumEnsembleMember(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDatumEnsembleMember') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def code(self) -> str: ...
    def authority(self) -> str: ...
    def remarks(self) -> str: ...
    def scope(self) -> str: ...
    def name(self) -> str: ...


class QgsDatumEnsemble(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDatumEnsemble') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def members(self) -> typing.List[QgsDatumEnsembleMember]: ...
    def remarks(self) -> str: ...
    def scope(self) -> str: ...
    def code(self) -> str: ...
    def authority(self) -> str: ...
    def accuracy(self) -> float: ...
    def name(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsDatumTransform(PyQt5.sip.wrapper):

    class TransformPair(PyQt5.sip.wrapper):

        destinationTransformId = ... # type: int
        sourceTransformId = ... # type: int

        @typing.overload
        def __init__(self, sourceTransformId: int = ..., destinationTransformId: int = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.TransformPair') -> None: ...

    class TransformInfo(PyQt5.sip.wrapper):

        datumTransformId = ... # type: int
        deprecated = ... # type: bool
        destinationCrsAuthId = ... # type: str
        destinationCrsDescription = ... # type: str
        epsgCode = ... # type: int
        preferred = ... # type: bool
        remarks = ... # type: str
        scope = ... # type: str
        sourceCrsAuthId = ... # type: str
        sourceCrsDescription = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.TransformInfo') -> None: ...

    class GridDetails(PyQt5.sip.wrapper):

        directDownload = ... # type: bool
        fullName = ... # type: str
        isAvailable = ... # type: bool
        openLicense = ... # type: bool
        packageName = ... # type: str
        shortName = ... # type: str
        url = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.GridDetails') -> None: ...

    class SingleOperationDetails(PyQt5.sip.wrapper):

        areaOfUse = ... # type: str
        authority = ... # type: str
        code = ... # type: str
        remarks = ... # type: str
        scope = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.SingleOperationDetails') -> None: ...

    class TransformDetails(PyQt5.sip.wrapper):

        accuracy = ... # type: float
        areaOfUse = ... # type: str
        authority = ... # type: str
        bounds = ... # type: QgsRectangle
        code = ... # type: str
        grids = ... # type: typing.Iterable['QgsDatumTransform.GridDetails']
        isAvailable = ... # type: bool
        name = ... # type: str
        operationDetails = ... # type: typing.Iterable['QgsDatumTransform.SingleOperationDetails']
        proj = ... # type: str
        remarks = ... # type: str
        scope = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.TransformDetails') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDatumTransform') -> None: ...

    @staticmethod
    def datumTransformInfo(datumTransformId: int) -> 'QgsDatumTransform.TransformInfo': ...
    @staticmethod
    def projStringToDatumTransformId(string: str) -> int: ...
    @staticmethod
    def datumTransformToProj(datumTransformId: int) -> str: ...
    @staticmethod
    def datumTransformations(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> typing.List['QgsDatumTransform.TransformPair']: ...
    @staticmethod
    def operations(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, includeSuperseded: bool = ...) -> typing.List['QgsDatumTransform.TransformDetails']: ...


class QgsEllipsoidUtils(PyQt5.sip.wrapper):

    class EllipsoidParameters(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        inverseFlattening = ... # type: float
        semiMajor = ... # type: float
        semiMinor = ... # type: float
        useCustomParameters = ... # type: bool
        valid = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEllipsoidUtils.EllipsoidParameters') -> None: ...

    class EllipsoidDefinition(PyQt5.sip.wrapper):

        acronym = ... # type: str
        celestialBodyName = ... # type: str
        description = ... # type: str
        parameters = ... # type: 'QgsEllipsoidUtils.EllipsoidParameters'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEllipsoidUtils.EllipsoidDefinition') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEllipsoidUtils') -> None: ...

    @staticmethod
    def celestialBodies() -> typing.List[QgsCelestialBody]: ...
    @staticmethod
    def acronyms() -> typing.List[str]: ...
    @staticmethod
    def definitions() -> typing.List['QgsEllipsoidUtils.EllipsoidDefinition']: ...
    @staticmethod
    def ellipsoidParameters(ellipsoid: str) -> 'QgsEllipsoidUtils.EllipsoidParameters': ...


class QgsProjOperation(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjOperation') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def details(self) -> str: ...
    def description(self) -> str: ...
    def id(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsProjUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjUtils') -> None: ...

    @staticmethod
    def searchPaths() -> typing.List[str]: ...
    @staticmethod
    def ignfDatabaseDate() -> QtCore.QDate: ...
    @staticmethod
    def ignfDatabaseVersion() -> str: ...
    @staticmethod
    def esriDatabaseDate() -> QtCore.QDate: ...
    @staticmethod
    def esriDatabaseVersion() -> str: ...
    @staticmethod
    def epsgRegistryDate() -> QtCore.QDate: ...
    @staticmethod
    def epsgRegistryVersion() -> str: ...
    @staticmethod
    def projVersionMinor() -> int: ...
    @staticmethod
    def projVersionMajor() -> int: ...


class QgsProjectionFactors(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectionFactors') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def dyDphi(self) -> float: ...
    def dyDlam(self) -> float: ...
    def dxDphi(self) -> float: ...
    def dxDlam(self) -> float: ...
    def tissotSemiminor(self) -> float: ...
    def tissotSemimajor(self) -> float: ...
    def meridianConvergence(self) -> float: ...
    def meridianParallelAngle(self) -> float: ...
    def angularDistortion(self) -> float: ...
    def arealScale(self) -> float: ...
    def parallelScale(self) -> float: ...
    def meridionalScale(self) -> float: ...
    def isValid(self) -> bool: ...


class QgsAbstractMetadataBase(PyQt5.sip.wrapper):

    class Address(PyQt5.sip.wrapper):

        address = ... # type: str
        administrativeArea = ... # type: str
        city = ... # type: str
        country = ... # type: str
        postalCode = ... # type: str
        type = ... # type: str

        @typing.overload
        def __init__(self, type: str = ..., address: str = ..., city: str = ..., administrativeArea: str = ..., postalCode: str = ..., country: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Address') -> None: ...

    class Contact(PyQt5.sip.wrapper):

        addresses = ... # type: typing.Iterable['QgsAbstractMetadataBase.Address']
        email = ... # type: str
        fax = ... # type: str
        name = ... # type: str
        organization = ... # type: str
        position = ... # type: str
        role = ... # type: str
        voice = ... # type: str

        @typing.overload
        def __init__(self, name: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Contact') -> None: ...

    class Link(PyQt5.sip.wrapper):

        description = ... # type: str
        format = ... # type: str
        mimeType = ... # type: str
        name = ... # type: str
        size = ... # type: str
        type = ... # type: str
        url = ... # type: str

        @typing.overload
        def __init__(self, name: str = ..., type: str = ..., url: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Link') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractMetadataBase') -> None: ...

    def equals(self, other: 'QgsAbstractMetadataBase') -> bool: ...
    def combine(self, other: 'QgsAbstractMetadataBase') -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def setDateTime(self, type: Qgis.MetadataDateType, date: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def dateTime(self, type: Qgis.MetadataDateType) -> QtCore.QDateTime: ...
    def addLink(self, link: 'QgsAbstractMetadataBase.Link') -> None: ...
    def setLinks(self, links: typing.Iterable['QgsAbstractMetadataBase.Link']) -> None: ...
    def links(self) -> typing.List['QgsAbstractMetadataBase.Link']: ...
    def addContact(self, contact: 'QgsAbstractMetadataBase.Contact') -> None: ...
    def setContacts(self, contacts: typing.Iterable['QgsAbstractMetadataBase.Contact']) -> None: ...
    def contacts(self) -> typing.List['QgsAbstractMetadataBase.Contact']: ...
    def setCategories(self, categories: typing.Iterable[str]) -> None: ...
    def categories(self) -> typing.List[str]: ...
    def keywordVocabularies(self) -> typing.List[str]: ...
    def removeKeywords(self, vocabulary: str) -> bool: ...
    def addKeywords(self, vocabulary: str, keywords: typing.Iterable[str]) -> None: ...
    def setKeywords(self, keywords: typing.Dict[str, typing.Iterable[str]]) -> None: ...
    @typing.overload
    def keywords(self) -> typing.Dict[str, typing.List[str]]: ...
    @typing.overload
    def keywords(self, vocabulary: str) -> typing.List[str]: ...
    def addHistoryItem(self, text: str) -> None: ...
    def setHistory(self, history: typing.Iterable[str]) -> None: ...
    def history(self) -> typing.List[str]: ...
    def setAbstract(self, abstract: str) -> None: ...
    def abstract(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def title(self) -> str: ...
    def setType(self, type: str) -> None: ...
    def type(self) -> str: ...
    def setLanguage(self, language: str) -> None: ...
    def language(self) -> str: ...
    def setParentIdentifier(self, parentIdentifier: str) -> None: ...
    def parentIdentifier(self) -> str: ...
    def setIdentifier(self, identifier: str) -> None: ...
    def identifier(self) -> str: ...
    def clone(self) -> 'QgsAbstractMetadataBase': ...


class QgsLayerMetadata(QgsAbstractMetadataBase):

    class SpatialExtent(PyQt5.sip.wrapper):

        bounds = ... # type: QgsBox3d
        extentCrs = ... # type: QgsCoordinateReferenceSystem

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerMetadata.SpatialExtent') -> None: ...

    class Extent(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerMetadata.Extent') -> None: ...

        def setTemporalExtents(self, extents: typing.Iterable[QgsDateTimeRange]) -> None: ...
        def temporalExtents(self) -> typing.List[QgsDateTimeRange]: ...
        def setSpatialExtents(self, extents: typing.Iterable['QgsLayerMetadata.SpatialExtent']) -> None: ...
        def spatialExtents(self) -> typing.List['QgsLayerMetadata.SpatialExtent']: ...

    class Constraint(PyQt5.sip.wrapper):

        constraint = ... # type: str
        type = ... # type: str

        @typing.overload
        def __init__(self, constraint: str = ..., type: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerMetadata.Constraint') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadata') -> None: ...

    def matches(self, searchReList: typing.Iterable[QtCore.QRegularExpression]) -> bool: ...
    def contains(self, searchString: str) -> bool: ...
    def combine(self, other: QgsAbstractMetadataBase) -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def readFromLayer(self, layer: QgsMapLayer) -> None: ...
    def saveToLayer(self, layer: QgsMapLayer) -> None: ...
    def setCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def setExtent(self, extent: 'QgsLayerMetadata.Extent') -> None: ...
    def extent(self) -> 'QgsLayerMetadata.Extent': ...
    def setEncoding(self, encoding: str) -> None: ...
    def encoding(self) -> str: ...
    def setLicenses(self, licenses: typing.Iterable[str]) -> None: ...
    def licenses(self) -> typing.List[str]: ...
    def setRights(self, rights: typing.Iterable[str]) -> None: ...
    def rights(self) -> typing.List[str]: ...
    def setConstraints(self, constraints: typing.Iterable['QgsLayerMetadata.Constraint']) -> None: ...
    def addConstraint(self, constraint: 'QgsLayerMetadata.Constraint') -> None: ...
    def constraints(self) -> typing.List['QgsLayerMetadata.Constraint']: ...
    def setFees(self, fees: str) -> None: ...
    def fees(self) -> str: ...
    def clone(self) -> 'QgsLayerMetadata': ...


class QgsLayerMetadataFormatter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, metadata: QgsLayerMetadata) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataFormatter') -> None: ...

    def linksSectionHtml(self) -> str: ...
    def historySectionHtml(self) -> str: ...
    def identificationSectionHtml(self) -> str: ...
    def extentSectionHtml(self, showSpatialExtent: bool = ...) -> str: ...
    def contactsSectionHtml(self) -> str: ...
    def accessSectionHtml(self) -> str: ...


class QgsAbstractMetadataBaseValidator(PyQt5.sip.wrapper):

    class ValidationResult(PyQt5.sip.wrapper):

        note = ... # type: str
        section = ... # type: str

        @typing.overload
        def __init__(self, section: str, note: str, identifier: typing.Any = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBaseValidator.ValidationResult') -> None: ...

        def _setIdentifier(self, identifier: typing.Any) -> None: ...
        def _identifier(self) -> typing.Any: ...
        @property
        def identifier(self) -> typing.Any: ...
        @identifier.setter
        def identifier(self, identifier: typing.Any) -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractMetadataBaseValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List['QgsAbstractMetadataBaseValidator.ValidationResult']]: ...


class QgsNativeMetadataBaseValidator(QgsAbstractMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeMetadataBaseValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsNativeMetadataValidator(QgsNativeMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeMetadataValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsNativeProjectMetadataValidator(QgsNativeMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeProjectMetadataValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsMetadataUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMetadataUtils') -> None: ...

    @staticmethod
    def convertFromEsri(document: QtXml.QDomDocument) -> QgsLayerMetadata: ...


class QgsProjectMetadata(QgsAbstractMetadataBase):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectMetadata') -> None: ...

    def combine(self, other: QgsAbstractMetadataBase) -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def setCreationDateTime(self, creationDateTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def creationDateTime(self) -> QtCore.QDateTime: ...
    def setAuthor(self, author: str) -> None: ...
    def author(self) -> str: ...
    def clone(self) -> 'QgsProjectMetadata': ...


class QgsMetadataSearchContext(PyQt5.sip.wrapper):

    transformContext = ... # type: QgsCoordinateTransformContext

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMetadataSearchContext') -> None: ...


class QgsLayerMetadataProviderResult(QgsLayerMetadata):

    @typing.overload
    def __init__(self, metadata: QgsLayerMetadata) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataProviderResult') -> None: ...

    def setStandardUri(self, standardUri: str) -> None: ...
    def standardUri(self) -> str: ...
    def setLayerType(self, layerType: Qgis.LayerType) -> None: ...
    def layerType(self) -> Qgis.LayerType: ...
    def setDataProviderName(self, dataProviderName: str) -> None: ...
    def dataProviderName(self) -> str: ...
    def setUri(self, Uri: str) -> None: ...
    def uri(self) -> str: ...
    def setAuthid(self, authid: str) -> None: ...
    def authid(self) -> str: ...
    def setGeometryType(self, geometryType: Qgis.GeometryType) -> None: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def setGeographicExtent(self, geographicExtent: QgsPolygon) -> None: ...
    def geographicExtent(self) -> QgsPolygon: ...


class QgsLayerMetadataSearchResults(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataSearchResults') -> None: ...

    def addError(self, error: str) -> None: ...
    def errors(self) -> typing.List[str]: ...
    def addMetadata(self, metadata: QgsLayerMetadataProviderResult) -> None: ...
    def metadata(self) -> typing.List[QgsLayerMetadataProviderResult]: ...


class QgsAbstractLayerMetadataProvider(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractLayerMetadataProvider') -> None: ...

    def search(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> QgsLayerMetadataSearchResults: ...
    def id(self) -> str: ...


class QgsLayerMetadataProviderRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def search(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> QgsLayerMetadataSearchResults: ...
    def layerMetadataProviderFromId(self, id: str) -> QgsAbstractLayerMetadataProvider: ...
    def layerMetadataProviders(self) -> typing.List[QgsAbstractLayerMetadataProvider]: ...
    def unregisterLayerMetadataProvider(self, metadataProvider: QgsAbstractLayerMetadataProvider) -> None: ...
    def registerLayerMetadataProvider(self, metadataProvider: QgsAbstractLayerMetadataProvider) -> None: ...


class QgsBlockingNetworkRequest(QtCore.QObject):

    class ErrorCode(int):
        NoError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        NetworkError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        TimeoutError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        ServerExceptionError = ... # type: QgsBlockingNetworkRequest.ErrorCode

    def __init__(self) -> None: ...

    def finished(self) -> None: ...
    def uploadProgress(self, a0: int, a1: int) -> None: ...
    def downloadFinished(self) -> None: ...
    def downloadProgress(self, a0: int, a1: int) -> None: ...
    def abort(self) -> None: ...
    def setAuthCfg(self, authCfg: str) -> None: ...
    def authCfg(self) -> str: ...
    def reply(self) -> 'QgsNetworkReplyContent': ...
    def errorMessage(self) -> str: ...
    def deleteResource(self, request: QtNetwork.QNetworkRequest, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def put(self, request: QtNetwork.QNetworkRequest, data: QtCore.QIODevice, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def put(self, request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    def head(self, request: QtNetwork.QNetworkRequest, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def post(self, request: QtNetwork.QNetworkRequest, data: QtCore.QIODevice, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def post(self, request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    def get(self, request: QtNetwork.QNetworkRequest, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...


class QgsFileDownloader(QtCore.QObject):

    def __init__(self, url: QtCore.QUrl, outputFileName: str, authcfg: str = ..., delayStart: bool = ..., httpMethod: Qgis.HttpMethod = ..., data: typing.Union[QtCore.QByteArray, bytes, bytearray] = ...) -> None: ...

    def startDownload(self) -> None: ...
    def cancelDownload(self) -> None: ...
    def downloadProgress(self, bytesReceived: int, bytesTotal: int) -> None: ...
    def downloadError(self, errorMessages: typing.Iterable[str]) -> None: ...
    def downloadCanceled(self) -> None: ...
    def downloadExited(self) -> None: ...
    def downloadCompleted(self, url: QtCore.QUrl) -> None: ...


class QgsNetworkRequestParameters(PyQt5.sip.wrapper):

    class RequestAttributes(int):
        AttributeInitiatorClass = ... # type: QgsNetworkRequestParameters.RequestAttributes
        AttributeInitiatorRequestId = ... # type: QgsNetworkRequestParameters.RequestAttributes

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, operation: QtNetwork.QNetworkAccessManager.Operation, request: QtNetwork.QNetworkRequest, requestId: int, content: typing.Union[QtCore.QByteArray, bytes, bytearray] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNetworkRequestParameters') -> None: ...

    def initiatorRequestId(self) -> typing.Any: ...
    def initiatorClassName(self) -> str: ...
    def content(self) -> QtCore.QByteArray: ...
    def requestId(self) -> int: ...
    def originatingThreadId(self) -> str: ...
    def request(self) -> QtNetwork.QNetworkRequest: ...
    def operation(self) -> QtNetwork.QNetworkAccessManager.Operation: ...


class QgsNetworkAccessManager(QtNetwork.QNetworkAccessManager):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def createRequest(self, op: QtNetwork.QNetworkAccessManager.Operation, req: QtNetwork.QNetworkRequest, outgoingData: typing.Optional[QtCore.QIODevice] = ...) -> QtNetwork.QNetworkReply: ...
    def cookiesChanged(self, cookies: typing.Iterable[QtNetwork.QNetworkCookie]) -> None: ...
    def authBrowserAborted(self) -> None: ...
    def requestCreated(self, a0: QtNetwork.QNetworkReply) -> None: ...
    def requestEncounteredSslErrors(self, requestId: int, errors: typing.Iterable[QtNetwork.QSslError]) -> None: ...
    def requestAuthDetailsAdded(self, requestId: int, realm: str, user: str, password: str) -> None: ...
    def requestRequiresAuth(self, requestId: int, realm: str) -> None: ...
    def downloadProgress(self, requestId: int, bytesReceived: int, bytesTotal: int) -> None: ...
    @typing.overload
    def requestTimedOut(self, request: QgsNetworkRequestParameters) -> None: ...
    @typing.overload
    def requestTimedOut(self, a0: QtNetwork.QNetworkReply) -> None: ...
    def finished(self, reply: 'QgsNetworkReplyContent') -> None: ...
    @typing.overload
    def requestAboutToBeCreated(self, a0: QtNetwork.QNetworkAccessManager.Operation, a1: QtNetwork.QNetworkRequest, a2: QtCore.QIODevice) -> None: ...
    @typing.overload
    def requestAboutToBeCreated(self, request: QgsNetworkRequestParameters) -> None: ...
    def preprocessRequest(self, req: QtNetwork.QNetworkRequest) -> None: ...
    def abortAuthBrowser(self) -> None: ...
    def requestAuthCloseBrowser(self) -> None: ...
    def requestAuthOpenBrowser(self, url: QtCore.QUrl) -> None: ...
    @staticmethod
    def removeReplyPreprocessor(id: str) -> None: ...
    @staticmethod
    def setReplyPreprocessor(a0: typing.Callable[..., None]) -> str: ...
    @staticmethod
    def removeRequestPreprocessor(id: str) -> None: ...
    @staticmethod
    def setRequestPreprocessor(a0: typing.Callable[..., None]) -> str: ...
    @staticmethod
    def blockingPost(request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], authCfg: str = ..., forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsNetworkReplyContent': ...
    @staticmethod
    def blockingGet(request: QtNetwork.QNetworkRequest, authCfg: str = ..., forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsNetworkReplyContent': ...
    @staticmethod
    def setTimeout(time: int) -> None: ...
    @staticmethod
    def timeout() -> int: ...
    def useSystemProxy(self) -> bool: ...
    def setupDefaultProxyAndCache(self, connectionType: QtCore.Qt.ConnectionType = ...) -> None: ...
    @staticmethod
    def cacheLoadControlFromName(name: str) -> QtNetwork.QNetworkRequest.CacheLoadControl: ...
    @staticmethod
    def cacheLoadControlName(control: QtNetwork.QNetworkRequest.CacheLoadControl) -> str: ...
    def setFallbackProxyAndExcludes(self, proxy: QtNetwork.QNetworkProxy, excludes: typing.Iterable[str], noProxyURLs: typing.Iterable[str]) -> None: ...
    def noProxyList(self) -> typing.List[str]: ...
    def excludeList(self) -> typing.List[str]: ...
    def fallbackProxy(self) -> QtNetwork.QNetworkProxy: ...
    def proxyFactories(self) -> typing.List[QtNetwork.QNetworkProxyFactory]: ...
    def removeProxyFactory(self, factory: QtNetwork.QNetworkProxyFactory) -> None: ...
    def insertProxyFactory(self, factory: QtNetwork.QNetworkProxyFactory) -> None: ...
    @staticmethod
    def instance(connectionType: QtCore.Qt.ConnectionType = ...) -> 'QgsNetworkAccessManager': ...


class QgsNetworkContentFetcher(QtCore.QObject):

    def __init__(self) -> None: ...

    def errorOccurred(self, code: QtNetwork.QNetworkReply.NetworkError, errorMsg: str) -> None: ...
    def downloadProgress(self, bytesReceived: int, bytesTotal: int) -> None: ...
    def finished(self) -> None: ...
    def wasCanceled(self) -> bool: ...
    def cancel(self) -> None: ...
    def contentAsString(self) -> str: ...
    def contentDispositionFilename(self) -> str: ...
    def reply(self) -> QtNetwork.QNetworkReply: ...
    @typing.overload
    def fetchContent(self, url: QtCore.QUrl, authcfg: str = ...) -> None: ...
    @typing.overload
    def fetchContent(self, request: QtNetwork.QNetworkRequest, authcfg: str = ...) -> None: ...


class QgsFetchedContent(QtCore.QObject):

    class ContentStatus(int):
        NotStarted = ... # type: QgsFetchedContent.ContentStatus
        Downloading = ... # type: QgsFetchedContent.ContentStatus
        Finished = ... # type: QgsFetchedContent.ContentStatus
        Failed = ... # type: QgsFetchedContent.ContentStatus

    def __init__(self, url: str, file: typing.Optional[QtCore.QTemporaryFile] = ..., status: 'QgsFetchedContent.ContentStatus' = ..., authConfig: str = ...) -> None: ...

    def errorOccurred(self, code: QtNetwork.QNetworkReply.NetworkError, errorMsg: str) -> None: ...
    def fetched(self) -> None: ...
    def cancel(self) -> None: ...
    def download(self, redownload: bool = ...) -> None: ...
    def authConfig(self) -> str: ...
    def error(self) -> QtNetwork.QNetworkReply.NetworkError: ...
    def status(self) -> 'QgsFetchedContent.ContentStatus': ...
    def filePath(self) -> str: ...


class QgsNetworkContentFetcherRegistry(QtCore.QObject):

    def __init__(self) -> None: ...

    def localPath(self, filePathOrUrl: str) -> str: ...
    def fetch(self, url: str, fetchingMode: Qgis.ActionStart = ..., authConfig: str = ...) -> QgsFetchedContent: ...


class QgsNetworkContentFetcherTask(QgsTask):

    @typing.overload
    def __init__(self, url: QtCore.QUrl, authcfg: str = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, request: QtNetwork.QNetworkRequest, authcfg: str = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: str = ...) -> None: ...

    def errorOccurred(self, code: QtNetwork.QNetworkReply.NetworkError, errorMsg: str) -> None: ...
    def fetched(self) -> None: ...
    def contentAsString(self) -> str: ...
    def contentDispositionFilename(self) -> str: ...
    def reply(self) -> QtNetwork.QNetworkReply: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsNetworkReplyContent(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reply: QtNetwork.QNetworkReply) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNetworkReplyContent') -> None: ...

    @staticmethod
    def extractFileNameFromContentDispositionHeader(header: str) -> str: ...
    @staticmethod
    def extractFilenameFromContentDispositionHeader(reply: QtNetwork.QNetworkReply) -> str: ...
    def content(self) -> QtCore.QByteArray: ...
    def setContent(self, content: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> None: ...
    def request(self) -> QtNetwork.QNetworkRequest: ...
    def requestId(self) -> int: ...
    def rawHeader(self, headerName: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> QtCore.QByteArray: ...
    def rawHeaderList(self) -> typing.List[QtCore.QByteArray]: ...
    def hasRawHeader(self, headerName: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> bool: ...
    def errorString(self) -> str: ...
    def error(self) -> QtNetwork.QNetworkReply.NetworkError: ...
    def attribute(self, code: QtNetwork.QNetworkRequest.Attribute) -> typing.Any: ...
    def clear(self) -> None: ...


class QgsNewsFeedModel(QtCore.QAbstractItemModel):

    class Role(int):
        Key = ... # type: QgsNewsFeedModel.Role
        Title = ... # type: QgsNewsFeedModel.Role
        Content = ... # type: QgsNewsFeedModel.Role
        ImageUrl = ... # type: QgsNewsFeedModel.Role
        Image = ... # type: QgsNewsFeedModel.Role
        Link = ... # type: QgsNewsFeedModel.Role
        Sticky = ... # type: QgsNewsFeedModel.Role

    def __init__(self, parser: 'QgsNewsFeedParser', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsNewsFeedProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parser: 'QgsNewsFeedParser', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...


class QgsNewsFeedParser(QtCore.QObject):

    class Entry(PyQt5.sip.wrapper):

        content = ... # type: str
        expiry = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        image = ... # type: QtGui.QPixmap
        imageUrl = ... # type: str
        key = ... # type: int
        link = ... # type: QtCore.QUrl
        sticky = ... # type: bool
        title = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsNewsFeedParser.Entry') -> None: ...

    def __init__(self, feedUrl: QtCore.QUrl, authcfg: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def imageFetched(self, key: int, pixmap: QtGui.QPixmap) -> None: ...
    def entryDismissed(self, entry: 'QgsNewsFeedParser.Entry') -> None: ...
    def entryAdded(self, entry: 'QgsNewsFeedParser.Entry') -> None: ...
    def fetched(self, entries: typing.Iterable['QgsNewsFeedParser.Entry']) -> None: ...
    def fetch(self) -> None: ...
    @staticmethod
    def keyForFeed(baseUrl: str) -> str: ...
    def authcfg(self) -> str: ...
    def dismissAll(self) -> None: ...
    def dismissEntry(self, key: int) -> None: ...
    def entries(self) -> typing.List['QgsNewsFeedParser.Entry']: ...


class QgsHttpHeaders(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, headers: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsSettings', key: str = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str) -> None: ...
    @typing.overload
    def __init__(self, element: QtXml.QDomElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHttpHeaders') -> None: ...

    def toSpacedString(self) -> str: ...
    def keys(self) -> typing.List[str]: ...
    def insert(self, key: str, value: typing.Any) -> None: ...
    def __getitem__(self, key: str) -> typing.Any: ...
    def sanitizeKey(self, key: str) -> str: ...
    def setFromDomElement(self, element: QtXml.QDomElement) -> None: ...
    def setFromMap(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def setFromUrlQuery(self, uri: QtCore.QUrlQuery) -> None: ...
    def setFromSettings(self, settings: 'QgsSettings', key: str = ...) -> None: ...
    def updateDomElement(self, el: QtXml.QDomElement) -> bool: ...
    def updateMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def updateUrlQuery(self, uri: QtCore.QUrlQuery) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest) -> bool: ...
    def updateSettings(self, settings: 'QgsSettings', key: str = ...) -> bool: ...
    def headers(self) -> typing.Dict[str, typing.Any]: ...


class QgsNumericFormat(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericFormat') -> None: ...

    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> 'QgsNumericFormat': ...
    def clone(self) -> 'QgsNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsBasicNumericFormat(QgsNumericFormat):

    class RoundingType(int):
        DecimalPlaces = ... # type: QgsBasicNumericFormat.RoundingType
        SignificantFigures = ... # type: QgsBasicNumericFormat.RoundingType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBasicNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setDecimalSeparator(self, character: str) -> None: ...
    def decimalSeparator(self) -> str: ...
    def setThousandsSeparator(self, character: str) -> None: ...
    def thousandsSeparator(self) -> str: ...
    def setRoundingType(self, type: 'QgsBasicNumericFormat.RoundingType') -> None: ...
    def roundingType(self) -> 'QgsBasicNumericFormat.RoundingType': ...
    def setShowTrailingZeros(self, show: bool) -> None: ...
    def showTrailingZeros(self) -> bool: ...
    def setShowPlusSign(self, show: bool) -> None: ...
    def showPlusSign(self) -> bool: ...
    def setShowThousandsSeparator(self, show: bool) -> None: ...
    def showThousandsSeparator(self) -> bool: ...
    def setNumberDecimalPlaces(self, places: int) -> None: ...
    def numberDecimalPlaces(self) -> int: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsBearingNumericFormat(QgsBasicNumericFormat):

    class FormatDirectionOption(int):
        UseRange0To180WithEWDirectionalSuffix = ... # type: QgsBearingNumericFormat.FormatDirectionOption
        UseRangeNegative180ToPositive180 = ... # type: QgsBearingNumericFormat.FormatDirectionOption
        UseRange0To360 = ... # type: QgsBearingNumericFormat.FormatDirectionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBearingNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setDirectionFormat(self, format: 'QgsBearingNumericFormat.FormatDirectionOption') -> None: ...
    def directionFormat(self) -> 'QgsBearingNumericFormat.FormatDirectionOption': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> 'QgsBearingNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsGeographicCoordinateNumericFormat(QgsBasicNumericFormat):

    class AngleFormat(int):
        DegreesMinutesSeconds = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat
        DegreesMinutes = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat
        DecimalDegrees = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeographicCoordinateNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setShowDirectionalSuffix(self, show: bool) -> None: ...
    def showDirectionalSuffix(self) -> bool: ...
    def setShowDegreeLeadingZeros(self, show: bool) -> None: ...
    def showDegreeLeadingZeros(self) -> bool: ...
    def setShowLeadingZeros(self, show: bool) -> None: ...
    def showLeadingZeros(self) -> bool: ...
    def setAngleFormat(self, format: 'QgsGeographicCoordinateNumericFormat.AngleFormat') -> None: ...
    def angleFormat(self) -> 'QgsGeographicCoordinateNumericFormat.AngleFormat': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> 'QgsGeographicCoordinateNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsCurrencyNumericFormat(QgsBasicNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCurrencyNumericFormat') -> None: ...

    def setSuffix(self, suffix: str) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def prefix(self) -> str: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFallbackNumericFormat(QgsNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFallbackNumericFormat') -> None: ...

    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFractionNumericFormat(QgsNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFractionNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def toUnicodeSubscript(input: str) -> str: ...
    @staticmethod
    def toUnicodeSuperscript(input: str) -> str: ...
    @staticmethod
    def doubleToVulgarFraction(value: float, tolerance: float = ...) -> typing.Tuple[bool, int, int, int]: ...
    def setThousandsSeparator(self, character: str) -> None: ...
    def thousandsSeparator(self) -> str: ...
    def setShowPlusSign(self, show: bool) -> None: ...
    def showPlusSign(self) -> bool: ...
    def setShowThousandsSeparator(self, show: bool) -> None: ...
    def showThousandsSeparator(self) -> bool: ...
    def setUseUnicodeSuperSubscript(self, enabled: bool) -> None: ...
    def useUnicodeSuperSubscript(self) -> bool: ...
    def setUseDedicatedUnicodeCharacters(self, enabled: bool) -> None: ...
    def useDedicatedUnicodeCharacters(self) -> bool: ...
    def suggestSampleValue(self) -> float: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsNumericFormatContext(PyQt5.sip.wrapper):

    class Interpretation(int):
        Generic = ... # type: QgsNumericFormatContext.Interpretation
        Latitude = ... # type: QgsNumericFormatContext.Interpretation
        Longitude = ... # type: QgsNumericFormatContext.Interpretation

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericFormatContext') -> None: ...

    def setInterpretation(self, interpretation: 'QgsNumericFormatContext.Interpretation') -> None: ...
    def interpretation(self) -> 'QgsNumericFormatContext.Interpretation': ...
    def setExponential(self, character: str) -> None: ...
    def exponential(self) -> str: ...
    def setPositiveSign(self, character: str) -> None: ...
    def positiveSign(self) -> str: ...
    def setNegativeSign(self, character: str) -> None: ...
    def negativeSign(self) -> str: ...
    def setZeroDigit(self, character: str) -> None: ...
    def zeroDigit(self) -> str: ...
    def setPercent(self, character: str) -> None: ...
    def percent(self) -> str: ...
    def setDecimalSeparator(self, separator: str) -> None: ...
    def decimalSeparator(self) -> str: ...
    def setThousandsSeparator(self, separator: str) -> None: ...
    def thousandsSeparator(self) -> str: ...


class QgsNumericFormatRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericFormatRegistry') -> None: ...

    def sortKey(self, id: str) -> int: ...
    def visibleName(self, id: str) -> str: ...
    def fallbackFormat(self) -> QgsNumericFormat: ...
    def createFromXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def create(self, id: str, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def format(self, id: str) -> QgsNumericFormat: ...
    def removeFormat(self, id: str) -> None: ...
    def addFormat(self, format: QgsNumericFormat) -> None: ...
    def formats(self) -> typing.List[str]: ...


class QgsPercentageNumericFormat(QgsBasicNumericFormat):

    class InputValues(int):
        ValuesArePercentage = ... # type: QgsPercentageNumericFormat.InputValues
        ValuesAreFractions = ... # type: QgsPercentageNumericFormat.InputValues

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPercentageNumericFormat') -> None: ...

    def setInputValues(self, format: 'QgsPercentageNumericFormat.InputValues') -> None: ...
    def inputValues(self) -> 'QgsPercentageNumericFormat.InputValues': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: QgsNumericFormatContext) -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsScientificNumericFormat(QgsBasicNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScientificNumericFormat') -> None: ...

    def setNumberDecimalPlaces(self, places: int) -> None: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: QgsNumericFormatContext) -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsProcessingAlgorithm(PyQt5.sip.wrapper):

    class PropertyAvailability(int):
        NotAvailable = ... # type: QgsProcessingAlgorithm.PropertyAvailability
        Available = ... # type: QgsProcessingAlgorithm.PropertyAvailability

    class Flag(int):
        FlagHideFromToolbox = ... # type: QgsProcessingAlgorithm.Flag
        FlagHideFromModeler = ... # type: QgsProcessingAlgorithm.Flag
        FlagSupportsBatch = ... # type: QgsProcessingAlgorithm.Flag
        FlagCanCancel = ... # type: QgsProcessingAlgorithm.Flag
        FlagRequiresMatchingCrs = ... # type: QgsProcessingAlgorithm.Flag
        FlagNoThreading = ... # type: QgsProcessingAlgorithm.Flag
        FlagDisplayNameIsLiteral = ... # type: QgsProcessingAlgorithm.Flag
        FlagSupportsInPlaceEdits = ... # type: QgsProcessingAlgorithm.Flag
        FlagKnownIssues = ... # type: QgsProcessingAlgorithm.Flag
        FlagCustomException = ... # type: QgsProcessingAlgorithm.Flag
        FlagPruneModelBranchesBasedOnAlgorithmResults = ... # type: QgsProcessingAlgorithm.Flag
        FlagSkipGenericModelLogging = ... # type: QgsProcessingAlgorithm.Flag
        FlagNotAvailableInStandaloneTool = ... # type: QgsProcessingAlgorithm.Flag
        FlagRequiresProject = ... # type: QgsProcessingAlgorithm.Flag
        FlagDeprecated = ... # type: QgsProcessingAlgorithm.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingAlgorithm.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingAlgorithm.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorProperties(PyQt5.sip.wrapper):

        availability = ... # type: 'QgsProcessingAlgorithm.PropertyAvailability'
        crs = ... # type: QgsCoordinateReferenceSystem
        fields = ... # type: QgsFields
        wkbType = ... # type: Qgis.WkbType

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingAlgorithm.VectorProperties') -> None: ...

    def __init__(self) -> None: ...

    def supportInPlaceEdit(self, layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def writeFeatureError(sink: QgsFeatureSink, parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidPointCloudError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidSinkError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidRasterError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidSourceError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    def parameterAsAnnotationLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsAnnotationLayer: ...
    def parameterAsPointCloudLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', flags: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag'] = ...) -> QgsPointCloudLayer: ...
    def parameterAsDateTime(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QtCore.QDateTime: ...
    def parameterAsDatabaseTableName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsSchema(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsConnectionName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsColor(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QtGui.QColor: ...
    def parameterAsLayoutItem(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', layout: QgsPrintLayout) -> QgsLayoutItem: ...
    def parameterAsLayout(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsPrintLayout: ...
    def parameterAsStrings(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsFields(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsRange(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[float]: ...
    def parameterAsFileList(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsLayerList(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', flags: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag'] = ...) -> typing.List[QgsMapLayer]: ...
    def parameterAsMatrix(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[typing.Any]: ...
    def parameterAsFile(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsGeometryCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsGeometry(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsPointCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsPoint(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    def parameterAsExtentCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsExtentGeometry(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsExtent(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    def parameterAsCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsVectorLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsVectorLayer: ...
    def parameterAsFileOutput(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsOutputLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsMeshLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsMeshLayer: ...
    def parameterAsRasterLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> 'QgsRasterLayer': ...
    def parameterAsLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsMapLayer: ...
    def parameterAsCompatibleSourceLayerPathAndLayerName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> typing.Tuple[str, str]: ...
    def parameterAsCompatibleSourceLayerPath(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> str: ...
    def parameterAsSource(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> 'QgsProcessingFeatureSource': ...
    def parameterAsSink(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', fields: QgsFields, geometryType: Qgis.WkbType = ..., crs: QgsCoordinateReferenceSystem = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    def parameterAsBoolean(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> bool: ...
    def parameterAsBool(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> bool: ...
    def parameterAsEnumStrings(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsEnumString(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsEnums(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsEnum(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> int: ...
    def parameterAsInts(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsInt(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> int: ...
    def parameterAsDouble(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> float: ...
    def parameterAsExpression(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsString(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def postProcessAlgorithm(self, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def prepareAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> bool: ...
    def addOutput(self, outputDefinition: 'QgsProcessingOutputDefinition') -> bool: ...
    def removeParameter(self, name: str) -> None: ...
    def addParameter(self, parameterDefinition: 'QgsProcessingParameterDefinition', createOutput: bool = ...) -> bool: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def createInstance(self) -> 'QgsProcessingAlgorithm': ...
    def setProvider(self, provider: 'QgsProcessingProvider') -> None: ...
    def asMap(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Dict[str, typing.Any]: ...
    def asQgisProcessCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Tuple[str, bool]: ...
    def asPythonCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> str: ...
    def validateInputCrs(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> bool: ...
    def createExpressionContext(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', source: typing.Optional['QgsProcessingFeatureSource'] = ...) -> QgsExpressionContext: ...
    def createCustomParametersWidget(self, parent: typing.Optional[QtWidgets.QWidget] = ...) -> QtWidgets.QWidget: ...
    def postProcess(self, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def runPrepared(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def prepare(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> bool: ...
    def run(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback', configuration: typing.Dict[str, typing.Any] = ..., catchExceptions: bool = ...) -> typing.Tuple[typing.Dict[str, typing.Any], bool]: ...
    def sinkProperties(self, sink: str, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[str, 'QgsProcessingAlgorithm.VectorProperties']) -> 'QgsProcessingAlgorithm.VectorProperties': ...
    def hasHtmlOutputs(self) -> bool: ...
    def outputDefinition(self, name: str) -> 'QgsProcessingOutputDefinition': ...
    def outputDefinitions(self) -> typing.List['QgsProcessingOutputDefinition']: ...
    def destinationParameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def countVisibleParameters(self) -> int: ...
    def parameterDefinition(self, name: str) -> 'QgsProcessingParameterDefinition': ...
    def parameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def provider(self) -> 'QgsProcessingProvider': ...
    def preprocessParameters(self, parameters: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]: ...
    def checkParameterValues(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Tuple[bool, str]: ...
    def canExecute(self) -> typing.Tuple[bool, str]: ...
    def flags(self) -> 'QgsProcessingAlgorithm.Flags': ...
    def groupId(self) -> str: ...
    def group(self) -> str: ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def helpUrl(self) -> str: ...
    def helpString(self) -> str: ...
    def shortHelpString(self) -> str: ...
    def tags(self) -> typing.List[str]: ...
    def shortDescription(self) -> str: ...
    def displayName(self) -> str: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def create(self, configuration: typing.Dict[str, typing.Any] = ...) -> 'QgsProcessingAlgorithm': ...


class QgsProcessingModelAlgorithm(QgsProcessingAlgorithm):

    class VariableDefinition(PyQt5.sip.wrapper):

        description = ... # type: str
        source = ... # type: 'QgsProcessingModelChildParameterSource'
        value = ... # type: typing.Any

        @typing.overload
        def __init__(self, value: typing.Any = ..., source: 'QgsProcessingModelChildParameterSource' = ..., description: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingModelAlgorithm.VariableDefinition') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self, name: str = ..., group: str = ..., groupId: str = ...) -> None: ...

    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def createInstance(self) -> QgsProcessingAlgorithm: ...
    @staticmethod
    def safeName(name: str, capitalize: bool = ...) -> str: ...
    def modelParameterFromChildIdAndOutputName(self, childId: str, childOutputName: str) -> 'QgsProcessingParameterDefinition': ...
    def setDesignerParameterValues(self, values: typing.Dict[str, typing.Any]) -> None: ...
    def designerParameterValues(self) -> typing.Dict[str, typing.Any]: ...
    def setVariables(self, variables: typing.Dict[str, typing.Any]) -> None: ...
    def variables(self) -> typing.Dict[str, typing.Any]: ...
    def createExpressionContextScopeForChildAlgorithm(self, childId: str, context: 'QgsProcessingContext', modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> QgsExpressionContextScope: ...
    def variablesForChildAlgorithm(self, childId: str, context: 'QgsProcessingContext', modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> typing.Dict[str, 'QgsProcessingModelAlgorithm.VariableDefinition']: ...
    def availableSourcesForChild(self, childId: str, parameterTypes: typing.Iterable[str] = ..., outputTypes: typing.Iterable[str] = ..., dataTypes: typing.Iterable[int] = ...) -> typing.List['QgsProcessingModelChildParameterSource']: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', indentSize: int) -> typing.List[str]: ...
    def modelNameMatchesFilePath(self) -> bool: ...
    def setSourceFilePath(self, path: str) -> None: ...
    def sourceFilePath(self) -> str: ...
    def setHelpContent(self, contents: typing.Dict[str, typing.Any]) -> None: ...
    def helpContent(self) -> typing.Dict[str, typing.Any]: ...
    def loadVariant(self, variant: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def fromFile(self, path: str) -> bool: ...
    def toFile(self, path: str) -> bool: ...
    def removeGroupBox(self, uuid: str) -> None: ...
    def groupBoxes(self) -> typing.List['QgsProcessingModelGroupBox']: ...
    def addGroupBox(self, groupBox: 'QgsProcessingModelGroupBox') -> None: ...
    def updateDestinationParameters(self) -> None: ...
    def setOutputGroup(self, group: str) -> None: ...
    def outputGroup(self) -> str: ...
    def setOutputOrder(self, order: typing.Iterable[str]) -> None: ...
    def orderedOutputs(self) -> typing.List['QgsProcessingModelOutput']: ...
    def setParameterOrder(self, order: typing.Iterable[str]) -> None: ...
    def orderedParameters(self) -> typing.List['QgsProcessingModelParameter']: ...
    def parameterComponent(self, name: str) -> 'QgsProcessingModelParameter': ...
    def setParameterComponent(self, component: 'QgsProcessingModelParameter') -> None: ...
    def setParameterComponents(self, parameterComponents: typing.Dict[str, 'QgsProcessingModelParameter']) -> None: ...
    def parameterComponents(self) -> typing.Dict[str, 'QgsProcessingModelParameter']: ...
    def otherParametersDependOnParameter(self, name: str) -> bool: ...
    def childAlgorithmsDependOnParameter(self, name: str) -> bool: ...
    def changeParameterName(self, oldName: str, newName: str) -> None: ...
    def removeModelParameter(self, name: str) -> None: ...
    def updateModelParameter(self, definition: 'QgsProcessingParameterDefinition') -> None: ...
    def addModelParameter(self, definition: 'QgsProcessingParameterDefinition', component: 'QgsProcessingModelParameter') -> None: ...
    def validateChildAlgorithm(self, childId: str) -> typing.Tuple[bool, typing.List[str]]: ...
    def availableDependenciesForChildAlgorithm(self, childId: str) -> typing.List['QgsProcessingModelChildDependency']: ...
    def dependsOnChildAlgorithms(self, childId: str) -> typing.Set[str]: ...
    def dependentChildAlgorithms(self, childId: str, conditionalBranch: str = ...) -> typing.Set[str]: ...
    def activateChildAlgorithm(self, id: str) -> bool: ...
    def deactivateChildAlgorithm(self, id: str) -> None: ...
    def removeChildAlgorithm(self, id: str) -> bool: ...
    def childAlgorithm(self, id: str) -> 'QgsProcessingModelChildAlgorithm': ...
    def addChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> str: ...
    def setChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> None: ...
    def setChildAlgorithms(self, childAlgorithms: typing.Dict[str, 'QgsProcessingModelChildAlgorithm']) -> None: ...
    def childAlgorithms(self) -> typing.Dict[str, 'QgsProcessingModelChildAlgorithm']: ...
    def validate(self) -> typing.Tuple[bool, typing.List[str]]: ...
    def setGroup(self, group: str) -> None: ...
    def setName(self, name: str) -> None: ...
    def createExpressionContext(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', source: typing.Optional['QgsProcessingFeatureSource'] = ...) -> QgsExpressionContext: ...
    def asPythonCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> str: ...
    def canExecute(self) -> typing.Tuple[bool, str]: ...
    def helpUrl(self) -> str: ...
    def shortDescription(self) -> str: ...
    def shortHelpString(self) -> str: ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def groupId(self) -> str: ...
    def group(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...


class QgsProcessingModelComponent(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProcessingModelComponent') -> None: ...

    def copyNonDefinitionProperties(self, other: 'QgsProcessingModelComponent') -> None: ...
    def restoreCommonProperties(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def saveCommonProperties(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsProcessingModelComponent': ...
    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> 'QgsProcessingModelComment': ...
    def setLinksCollapsed(self, edge: QtCore.Qt.Edge, collapsed: bool) -> None: ...
    def linksCollapsed(self, edge: QtCore.Qt.Edge) -> bool: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def setPosition(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def position(self) -> QtCore.QPointF: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...


class QgsProcessingModelChildAlgorithm(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, algorithmId: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProcessingModelChildAlgorithm') -> None: ...

    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> 'QgsProcessingModelComment': ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', extraParameters: typing.Dict[str, str], currentIndent: int, indentSize: int, friendlyChildNames: typing.Dict[str, str], friendlyOutputNames: typing.Dict[str, str]) -> typing.List[str]: ...
    def loadVariant(self, child: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def removeModelOutput(self, name: str) -> bool: ...
    def setModelOutputs(self, outputs: typing.Dict[str, 'QgsProcessingModelOutput']) -> None: ...
    def modelOutput(self, name: str) -> 'QgsProcessingModelOutput': ...
    def modelOutputs(self) -> typing.Dict[str, 'QgsProcessingModelOutput']: ...
    def setDependencies(self, dependencies: typing.Iterable['QgsProcessingModelChildDependency']) -> None: ...
    def dependencies(self) -> typing.List['QgsProcessingModelChildDependency']: ...
    def setActive(self, active: bool) -> None: ...
    def isActive(self) -> bool: ...
    def addParameterSources(self, name: str, source: typing.Iterable['QgsProcessingModelChildParameterSource']) -> None: ...
    def setParameterSources(self, sources: typing.Any) -> None: ...
    def parameterSources(self) -> typing.Any: ...
    def algorithm(self) -> QgsProcessingAlgorithm: ...
    def setConfiguration(self, configuration: typing.Dict[str, typing.Any]) -> None: ...
    def configuration(self) -> typing.Dict[str, typing.Any]: ...
    def reattach(self) -> bool: ...
    def setAlgorithmId(self, algorithmId: str) -> bool: ...
    def algorithmId(self) -> str: ...
    def generateChildId(self, model: QgsProcessingModelAlgorithm) -> None: ...
    def setChildId(self, id: str) -> None: ...
    def childId(self) -> str: ...
    def copyNonDefinitionPropertiesFromModel(self, model: QgsProcessingModelAlgorithm) -> None: ...
    def clone(self) -> 'QgsProcessingModelChildAlgorithm': ...


class QgsProcessingModelChildDependency(PyQt5.sip.wrapper):

    childId = ... # type: str
    conditionalBranch = ... # type: str

    @typing.overload
    def __init__(self, childId: str = ..., conditionalBranch: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelChildDependency') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...


class QgsProcessingModelChildParameterSource(PyQt5.sip.wrapper):

    class Source(int):
        ModelParameter = ... # type: QgsProcessingModelChildParameterSource.Source
        ChildOutput = ... # type: QgsProcessingModelChildParameterSource.Source
        StaticValue = ... # type: QgsProcessingModelChildParameterSource.Source
        Expression = ... # type: QgsProcessingModelChildParameterSource.Source
        ExpressionText = ... # type: QgsProcessingModelChildParameterSource.Source
        ModelOutput = ... # type: QgsProcessingModelChildParameterSource.Source

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelChildParameterSource') -> None: ...

    def friendlyIdentifier(self, model: QgsProcessingModelAlgorithm) -> str: ...
    def asPythonComment(self, definition: 'QgsProcessingParameterDefinition') -> str: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', definition: 'QgsProcessingParameterDefinition', friendlyChildNames: typing.Dict[str, str]) -> str: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setExpressionText(self, text: str) -> None: ...
    def expressionText(self) -> str: ...
    def setExpression(self, expression: str) -> None: ...
    def expression(self) -> str: ...
    def setOutputName(self, name: str) -> None: ...
    def outputName(self) -> str: ...
    def setOutputChildId(self, id: str) -> None: ...
    def outputChildId(self) -> str: ...
    def setParameterName(self, name: str) -> None: ...
    def parameterName(self) -> str: ...
    def setStaticValue(self, value: typing.Any) -> None: ...
    def staticValue(self) -> typing.Any: ...
    def setSource(self, source: 'QgsProcessingModelChildParameterSource.Source') -> None: ...
    def source(self) -> 'QgsProcessingModelChildParameterSource.Source': ...
    @staticmethod
    def fromExpressionText(text: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromExpression(expression: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromChildOutput(childId: str, outputName: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromModelParameter(parameterName: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromStaticValue(value: typing.Any) -> 'QgsProcessingModelChildParameterSource': ...


class QgsProcessingModelComment(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelComment') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsProcessingModelComment': ...


class QgsProcessingModelGroupBox(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelGroupBox') -> None: ...

    def uuid(self) -> str: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any], ignoreUuid: bool = ...) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsProcessingModelGroupBox': ...


class QgsProcessingModelOutput(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, name: str = ..., description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelOutput') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> QgsProcessingModelComment: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setChildOutputName(self, name: str) -> None: ...
    def childOutputName(self) -> str: ...
    def setChildId(self, id: str) -> None: ...
    def childId(self) -> str: ...
    def setMandatory(self, mandatory: bool) -> None: ...
    def isMandatory(self) -> bool: ...
    def setDefaultValue(self, value: typing.Any) -> None: ...
    def defaultValue(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsProcessingModelOutput': ...


class QgsProcessingModelParameter(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, parameterName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelParameter') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> QgsProcessingModelComment: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setParameterName(self, name: str) -> None: ...
    def parameterName(self) -> str: ...
    def clone(self) -> 'QgsProcessingModelParameter': ...


class QgsProcessing(PyQt5.sip.wrapper):

    class LayerOptionsFlag(int):
        SkipIndexGeneration = ... # type: QgsProcessing.LayerOptionsFlag

    class PythonOutputType(int):
        PythonQgsProcessingAlgorithmSubclass = ... # type: QgsProcessing.PythonOutputType

    class SourceType(int):
        TypeMapLayer = ... # type: QgsProcessing.SourceType
        TypeVectorAnyGeometry = ... # type: QgsProcessing.SourceType
        TypeVectorPoint = ... # type: QgsProcessing.SourceType
        TypeVectorLine = ... # type: QgsProcessing.SourceType
        TypeVectorPolygon = ... # type: QgsProcessing.SourceType
        TypeRaster = ... # type: QgsProcessing.SourceType
        TypeFile = ... # type: QgsProcessing.SourceType
        TypeVector = ... # type: QgsProcessing.SourceType
        TypeMesh = ... # type: QgsProcessing.SourceType
        TypePlugin = ... # type: QgsProcessing.SourceType
        TypePointCloud = ... # type: QgsProcessing.SourceType
        TypeAnnotation = ... # type: QgsProcessing.SourceType
        TypeVectorTile = ... # type: QgsProcessing.SourceType

    class LayerOptionsFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessing.LayerOptionsFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    TEMPORARY_OUTPUT = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessing') -> None: ...

    @staticmethod
    def sourceTypeToString(type: 'QgsProcessing.SourceType') -> str: ...


class QgsProcessingFeatureBasedAlgorithm(QgsProcessingAlgorithm):

    def __init__(self) -> None: ...

    def sinkProperties(self, sink: str, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[str, QgsProcessingAlgorithm.VectorProperties]) -> QgsProcessingAlgorithm.VectorProperties: ...
    def prepareSource(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> None: ...
    def supportInPlaceEdit(self, layer: QgsMapLayer) -> bool: ...
    def request(self) -> QgsFeatureRequest: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def initParameters(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def outputCrs(self, inputCrs: QgsCoordinateReferenceSystem) -> QgsCoordinateReferenceSystem: ...
    def outputFields(self, inputFields: QgsFields) -> QgsFields: ...
    def outputWkbType(self, inputWkbType: Qgis.WkbType) -> Qgis.WkbType: ...
    def sinkFlags(self) -> QgsFeatureSink.SinkFlags: ...
    def sourceFlags(self) -> 'QgsProcessingFeatureSource.Flag': ...
    def outputLayerType(self) -> QgsProcessing.SourceType: ...
    def inputLayerTypes(self) -> typing.List[int]: ...
    def outputName(self) -> str: ...
    def inputParameterDescription(self) -> str: ...
    def inputParameterName(self) -> str: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def processFeature(self, feature: QgsFeature, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.List[QgsFeature]: ...
    def flags(self) -> QgsProcessingAlgorithm.Flags: ...


class QgsProcessingAlgRunnerTask(QgsTask):

    def __init__(self, algorithm: QgsProcessingAlgorithm, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback'] = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ...) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def executed(self, successful: bool, results: typing.Dict[str, typing.Any]) -> None: ...
    def algorithmCanceled(self) -> bool: ...
    def cancel(self) -> None: ...


class QgsProcessingFeedback(QgsFeedback):

    def __init__(self, logFeedback: bool = ...) -> None: ...

    def textLog(self) -> str: ...
    def htmlLog(self) -> str: ...
    def pushVersionInfo(self, provider: typing.Optional['QgsProcessingProvider'] = ...) -> None: ...
    def pushConsoleInfo(self, info: str) -> None: ...
    def pushDebugInfo(self, info: str) -> None: ...
    def pushCommandInfo(self, info: str) -> None: ...
    def pushInfo(self, info: str) -> None: ...
    def pushWarning(self, warning: str) -> None: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: str) -> None: ...


class QgsProcessingMultiStepFeedback(QgsProcessingFeedback):

    def __init__(self, steps: int, feedback: QgsProcessingFeedback) -> None: ...

    def textLog(self) -> str: ...
    def htmlLog(self) -> str: ...
    def pushConsoleInfo(self, info: str) -> None: ...
    def pushDebugInfo(self, info: str) -> None: ...
    def pushCommandInfo(self, info: str) -> None: ...
    def pushInfo(self, info: str) -> None: ...
    def pushWarning(self, warning: str) -> None: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: str) -> None: ...
    def setCurrentStep(self, step: int) -> None: ...


class QgsProcessingBatchFeedback(QgsProcessingMultiStepFeedback):

    def __init__(self, tasks: int, feedback: QgsProcessingFeedback) -> None: ...

    def popErrors(self) -> typing.List[str]: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...


class QgsProcessingContext(PyQt5.sip.wrapper):

    class ProcessArgumentFlag(int):
        IncludeProjectPath = ... # type: QgsProcessingContext.ProcessArgumentFlag

    class LogLevel(int):
        DefaultLevel = ... # type: QgsProcessingContext.LogLevel
        Verbose = ... # type: QgsProcessingContext.LogLevel

    class Flag(int):
        Unused = ... # type: QgsProcessingContext.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingContext.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingContext.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LayerDetails(PyQt5.sip.wrapper):

        forceName = ... # type: bool
        groupName = ... # type: str
        layerSortKey = ... # type: int
        layerTypeHint = ... # type: 'QgsProcessingUtils.LayerHint'
        name = ... # type: str
        outputName = ... # type: str
        project = ... # type: 'QgsProject'

        @typing.overload
        def __init__(self, name: str, project: 'QgsProject', outputName: str = ..., layerTypeHint: 'QgsProcessingUtils.LayerHint' = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingContext.LayerDetails') -> None: ...

        def setOutputLayerName(self, layer: QgsMapLayer) -> None: ...
        def setPostProcessor(self, processor: 'QgsProcessingLayerPostProcessorInterface') -> None: ...
        def postProcessor(self) -> 'QgsProcessingLayerPostProcessorInterface': ...

    class ProcessArgumentFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingContext.ProcessArgumentFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self) -> None: ...

    def asQgisProcessArguments(self, flags: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag'] = ...) -> typing.List[str]: ...
    def exportToMap(self) -> typing.Dict[str, typing.Any]: ...
    def setMaximumThreads(self, threads: int) -> None: ...
    def maximumThreads(self) -> int: ...
    def setTemporaryFolder(self, folder: str) -> None: ...
    def temporaryFolder(self) -> str: ...
    def setLogLevel(self, level: 'QgsProcessingContext.LogLevel') -> None: ...
    def logLevel(self) -> 'QgsProcessingContext.LogLevel': ...
    def setPreferredRasterFormat(self, format: str) -> None: ...
    def preferredRasterFormat(self) -> str: ...
    def setPreferredVectorFormat(self, format: str) -> None: ...
    def preferredVectorFormat(self) -> str: ...
    def takeResultLayer(self, id: str) -> QgsMapLayer: ...
    def getMapLayer(self, identifier: str) -> QgsMapLayer: ...
    def takeResultsFrom(self, context: 'QgsProcessingContext') -> None: ...
    def pushToThread(self, thread: QtCore.QThread) -> None: ...
    def thread(self) -> QtCore.QThread: ...
    def setFeedback(self, feedback: QgsProcessingFeedback) -> None: ...
    def feedback(self) -> QgsProcessingFeedback: ...
    def setDefaultEncoding(self, encoding: str) -> None: ...
    def defaultEncoding(self) -> str: ...
    def setTransformErrorCallback(self, a0: typing.Callable[..., None]) -> None: ...
    def setInvalidGeometryCallback(self, a0: typing.Callable[..., None]) -> None: ...
    def setInvalidGeometryCheck(self, check: QgsFeatureRequest.InvalidGeometryCheck) -> None: ...
    def invalidGeometryCheck(self) -> QgsFeatureRequest.InvalidGeometryCheck: ...
    def layerToLoadOnCompletionDetails(self, layer: str) -> 'QgsProcessingContext.LayerDetails': ...
    def addLayerToLoadOnCompletion(self, layer: str, details: 'QgsProcessingContext.LayerDetails') -> None: ...
    def setLayersToLoadOnCompletion(self, layers: typing.Dict[str, 'QgsProcessingContext.LayerDetails']) -> None: ...
    def willLoadLayerOnCompletion(self, layer: str) -> bool: ...
    def layersToLoadOnCompletion(self) -> typing.Dict[str, 'QgsProcessingContext.LayerDetails']: ...
    def temporaryLayerStore(self) -> QgsMapLayerStore: ...
    def setCurrentTimeRange(self, currentTimeRange: QgsDateTimeRange) -> None: ...
    def currentTimeRange(self) -> QgsDateTimeRange: ...
    def setAreaUnit(self, areaUnit: Qgis.AreaUnit) -> None: ...
    def areaUnit(self) -> Qgis.AreaUnit: ...
    def setDistanceUnit(self, unit: Qgis.DistanceUnit) -> None: ...
    def distanceUnit(self) -> Qgis.DistanceUnit: ...
    def setEllipsoid(self, ellipsoid: str) -> None: ...
    def ellipsoid(self) -> str: ...
    def setTransformContext(self, context: QgsCoordinateTransformContext) -> None: ...
    def transformContext(self) -> QgsCoordinateTransformContext: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def setFlags(self, flags: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> None: ...
    def flags(self) -> 'QgsProcessingContext.Flags': ...
    def copyThreadSafeSettings(self, other: 'QgsProcessingContext') -> None: ...


class QgsProcessingLayerPostProcessorInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingLayerPostProcessorInterface') -> None: ...

    def postProcessLayer(self, layer: QgsMapLayer, context: QgsProcessingContext, feedback: QgsProcessingFeedback) -> None: ...


class QgsProcessingOutputDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputDefinition') -> None: ...

    def autoCreated(self) -> bool: ...
    def setAutoCreated(self, autoCreated: bool) -> None: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def type(self) -> str: ...


class QgsProcessingOutputMapLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputMapLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputVectorLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVectorLayer') -> None: ...

    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputRasterLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputRasterLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputPointCloudLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputPointCloudLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputMultipleLayers(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputMultipleLayers') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputHtml(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputHtml') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputNumber(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputNumber') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputString(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputString') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputBoolean(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputBoolean') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFolder(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFolder') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFile(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFile') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputConditionalBranch(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputConditionalBranch') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputVectorTileLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVectorTileLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDefinition(PyQt5.sip.wrapper):

    class Flag(int):
        FlagAdvanced = ... # type: QgsProcessingParameterDefinition.Flag
        FlagHidden = ... # type: QgsProcessingParameterDefinition.Flag
        FlagOptional = ... # type: QgsProcessingParameterDefinition.Flag
        FlagIsModelOutput = ... # type: QgsProcessingParameterDefinition.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingParameterDefinition.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., help: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDefinition') -> None: ...

    def setAdditionalExpressionContextVariables(self, variables: typing.Iterable[str]) -> None: ...
    def additionalExpressionContextVariables(self) -> typing.List[str]: ...
    def setDynamicLayerParameterName(self, name: str) -> None: ...
    def dynamicLayerParameterName(self) -> str: ...
    def setDynamicPropertyDefinition(self, definition: QgsPropertyDefinition) -> None: ...
    def dynamicPropertyDefinition(self) -> QgsPropertyDefinition: ...
    def setIsDynamic(self, dynamic: bool) -> None: ...
    def isDynamic(self) -> bool: ...
    def toolTip(self) -> str: ...
    def provider(self) -> 'QgsProcessingProvider': ...
    def algorithm(self) -> QgsProcessingAlgorithm: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def setMetadata(self, metadata: typing.Dict[str, typing.Any]) -> None: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonComment(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def valueAsStringList(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[typing.List[str], bool]: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def setFlags(self, flags: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> None: ...
    def flags(self) -> 'QgsProcessingParameterDefinition.Flags': ...
    def defaultValueForGui(self) -> typing.Any: ...
    def setGuiDefaultValueOverride(self, value: typing.Any) -> None: ...
    def guiDefaultValueOverride(self) -> typing.Any: ...
    def setDefaultValue(self, value: typing.Any) -> None: ...
    def defaultValue(self) -> typing.Any: ...
    def setHelp(self, help: str) -> None: ...
    def help(self) -> str: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def isDestination(self) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDefinition': ...


class QgsProcessingParameterAggregate(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., parentLayerParameterName: str = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAggregate') -> None: ...

    def setParentLayerParameterName(self, name: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterDxfLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDxfLayers') -> None: ...

    @staticmethod
    def layerAsVariantMap(layer: QgsDxfExport.DxfLayer) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantMapAsLayer(layerVariantMap: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsDxfExport.DxfLayer: ...
    @staticmethod
    def parameterAsLayers(layersVariant: typing.Any, context: QgsProcessingContext) -> typing.List[QgsDxfExport.DxfLayer]: ...
    @staticmethod
    def typeName() -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterFieldMapping(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., parentLayerParameterName: str = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFieldMapping') -> None: ...

    def setParentLayerParameterName(self, name: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterMeshDatasetGroups(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., meshLayerParameterName: str = ..., supportedDataType: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshDatasetGroups') -> None: ...

    @staticmethod
    def valueAsDatasetGroup(value: typing.Any) -> typing.List[int]: ...
    def isDataTypeSupported(self, dataType: QgsMeshDatasetGroupMetadata.DataType) -> bool: ...
    def meshLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterMeshDatasetTime(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., meshLayerParameterName: str = ..., datasetGroupParameterName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshDatasetTime') -> None: ...

    @staticmethod
    def timeValueAsDefinedDateTime(value: typing.Any) -> QtCore.QDateTime: ...
    @staticmethod
    def timeValueAsDatasetIndex(value: typing.Any) -> QgsMeshDatasetIndex: ...
    @staticmethod
    def valueAsTimeType(value: typing.Any) -> str: ...
    def datasetGroupParameterName(self) -> str: ...
    def meshLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingFeatureSourceDefinition(PyQt5.sip.wrapper):

    class Flag(int):
        FlagOverrideDefaultGeometryCheck = ... # type: QgsProcessingFeatureSourceDefinition.Flag
        FlagCreateIndividualOutputPerInputFeature = ... # type: QgsProcessingFeatureSourceDefinition.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingFeatureSourceDefinition.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    featureLimit = ... # type: int
    filterExpression = ... # type: str
    flags = ... # type: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']
    geometryCheck = ... # type: QgsFeatureRequest.InvalidGeometryCheck
    selectedFeaturesOnly = ... # type: bool
    source = ... # type: QgsProperty

    @typing.overload
    def __init__(self, source: str = ..., selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag'] = ..., geometryCheck: QgsFeatureRequest.InvalidGeometryCheck = ..., filterExpression: str = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsProperty, selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag'] = ..., geometryCheck: QgsFeatureRequest.InvalidGeometryCheck = ..., filterExpression: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingFeatureSourceDefinition') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...


class QgsProcessingOutputLayerDefinition(PyQt5.sip.wrapper):

    createOptions = ... # type: typing.Dict[str, typing.Any]
    destinationName = ... # type: str
    destinationProject = ... # type: 'QgsProject'
    sink = ... # type: QgsProperty

    @typing.overload
    def __init__(self, sink: str = ..., destinationProject: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, sink: QgsProperty, destinationProject: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputLayerDefinition') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setRemappingDefinition(self, definition: QgsRemappingSinkDefinition) -> None: ...
    def remappingDefinition(self) -> QgsRemappingSinkDefinition: ...
    def useRemapping(self) -> bool: ...


class QgsProcessingParameters(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameters') -> None: ...

    @staticmethod
    def parameterFromScriptCode(code: str) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def descriptionFromName(name: str) -> str: ...
    @staticmethod
    def parameterFromVariantMap(map: typing.Dict[str, typing.Any]) -> QgsProcessingParameterDefinition: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsAnnotationLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsAnnotationLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> QgsPointCloudLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> QgsPointCloudLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layout: QgsPrintLayout) -> QgsLayoutItem: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, layout: QgsPrintLayout) -> QgsLayoutItem: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsPrintLayout: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsPrintLayout: ...
    @typing.overload
    @staticmethod
    def parameterAsStrings(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsStrings(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayerList(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayerList(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def parameterAsExtentGeometry(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsMeshLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsMeshLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsVectorLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsVectorLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsRasterLayer': ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> 'QgsRasterLayer': ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> QgsMapLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> QgsMapLayer: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPathAndLayerName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> typing.Tuple[str, str]: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPath(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsProcessingFeatureSource': ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> 'QgsProcessingFeatureSource': ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: QgsProcessingParameterDefinition, value: typing.Any, fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @staticmethod
    def isDynamic(parameters: typing.Dict[str, typing.Any], name: str) -> bool: ...


class QgsProcessingParameterBoolean(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterBoolean') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterBoolean': ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCrs(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterCrs') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterCrs': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExtent(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExtent') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterExtent': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPoint(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPoint') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPoint': ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterGeometry(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., geometryTypes: typing.Iterable[int] = ..., allowMultipart: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterGeometry') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterGeometry': ...
    def setAllowMultipart(self, allowMultipart: bool) -> None: ...
    def allowMultipart(self) -> bool: ...
    def setGeometryTypes(self, geometryTypes: typing.Iterable[int]) -> None: ...
    def geometryTypes(self) -> typing.List[int]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFile(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    class Behavior(int):
        File = ... # type: QgsProcessingParameterFile.Behavior
        Folder = ... # type: QgsProcessingParameterFile.Behavior

    @typing.overload
    def __init__(self, name: str, description: str = ..., behavior: 'QgsProcessingParameterFile.Behavior' = ..., extension: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., fileFilter: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFile') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str, behavior: 'QgsProcessingParameterFile.Behavior' = ...) -> 'QgsProcessingParameterFile': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: str) -> None: ...
    def fileFilter(self) -> str: ...
    def setExtension(self, extension: str) -> None: ...
    def extension(self) -> str: ...
    def setBehavior(self, behavior: 'QgsProcessingParameterFile.Behavior') -> None: ...
    def behavior(self) -> 'QgsProcessingParameterFile.Behavior': ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMatrix(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., numberRows: int = ..., hasFixedNumberRows: bool = ..., headers: typing.Iterable[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMatrix') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMatrix': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setHasFixedNumberRows(self, hasFixedNumberRows: bool) -> None: ...
    def hasFixedNumberRows(self) -> bool: ...
    def setNumberRows(self, rows: int) -> None: ...
    def numberRows(self) -> int: ...
    def setHeaders(self, headers: typing.Iterable[str]) -> None: ...
    def headers(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMultipleLayers(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., layerType: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMultipleLayers') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMultipleLayers': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setMinimumNumberInputs(self, minimum: int) -> None: ...
    def minimumNumberInputs(self) -> int: ...
    def setLayerType(self, type: QgsProcessing.SourceType) -> None: ...
    def layerType(self) -> QgsProcessing.SourceType: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterNumber(QgsProcessingParameterDefinition):

    class Type(int):
        Integer = ... # type: QgsProcessingParameterNumber.Type
        Double = ... # type: QgsProcessingParameterNumber.Type

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: 'QgsProcessingParameterNumber.Type' = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterNumber') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterNumber': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: 'QgsProcessingParameterNumber.Type') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterNumber.Type': ...
    def setMaximum(self, maximum: float) -> None: ...
    def maximum(self) -> float: ...
    def setMinimum(self, minimum: float) -> None: ...
    def minimum(self) -> float: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def toolTip(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDistance(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentParameterName: str = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDistance') -> None: ...

    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultUnit(self, unit: Qgis.DistanceUnit) -> None: ...
    def defaultUnit(self) -> Qgis.DistanceUnit: ...
    def setParentParameterName(self, parentParameterName: str) -> None: ...
    def parentParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDistance': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDuration(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDuration') -> None: ...

    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultUnit(self, unit: Qgis.TemporalUnit) -> None: ...
    def defaultUnit(self) -> Qgis.TemporalUnit: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDuration': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterScale(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterScale') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterScale': ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterScale': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRange(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessingParameterNumber.Type = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRange') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRange': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, dataType: QgsProcessingParameterNumber.Type) -> None: ...
    def dataType(self) -> QgsProcessingParameterNumber.Type: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRasterLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterEnum(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., options: typing.Iterable[str] = ..., allowMultiple: bool = ..., defaultValue: typing.Any = ..., optional: bool = ..., usesStaticStrings: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterEnum') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterEnum': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setUsesStaticStrings(self, usesStaticStrings: bool) -> None: ...
    def usesStaticStrings(self) -> bool: ...
    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    def setOptions(self, options: typing.Iterable[str]) -> None: ...
    def options(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonComment(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterString(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., multiLine: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterString') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterString': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setMultiLine(self, multiLine: bool) -> None: ...
    def multiLine(self) -> bool: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAuthConfig(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAuthConfig') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterAuthConfig': ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExpression(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., optional: bool = ..., type: Qgis.ExpressionType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExpression') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterExpression': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setExpressionType(self, type: Qgis.ExpressionType) -> None: ...
    def expressionType(self) -> Qgis.ExpressionType: ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLimitedDataTypes(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, types: typing.Iterable[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLimitedDataTypes') -> None: ...

    def setDataTypes(self, types: typing.Iterable[int]) -> None: ...
    def dataTypes(self) -> typing.List[int]: ...


class QgsProcessingParameterVectorLayer(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterVectorLayer': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMeshLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMeshLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapLayer(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., types: typing.Iterable[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMapLayer': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterField(QgsProcessingParameterDefinition):

    class DataType(int):
        Any = ... # type: QgsProcessingParameterField.DataType
        Numeric = ... # type: QgsProcessingParameterField.DataType
        String = ... # type: QgsProcessingParameterField.DataType
        DateTime = ... # type: QgsProcessingParameterField.DataType

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., type: 'QgsProcessingParameterField.DataType' = ..., allowMultiple: bool = ..., optional: bool = ..., defaultToAllFields: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterField') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterField': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultToAllFields(self, enabled: bool) -> None: ...
    def defaultToAllFields(self) -> bool: ...
    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    def setDataType(self, type: 'QgsProcessingParameterField.DataType') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterField.DataType': ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFeatureSource(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSource') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFeatureSource': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingDestinationParameter(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingDestinationParameter') -> None: ...

    def originalProvider(self) -> 'QgsProcessingProvider': ...
    def setCreateByDefault(self, createByDefault: bool) -> None: ...
    def createByDefault(self) -> bool: ...
    def isSupportedOutputValue(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[bool, str]: ...
    def generateTemporaryDestination(self, context: typing.Optional[QgsProcessingContext] = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def setSupportsNonFileBasedOutput(self, supportsNonFileBasedOutput: bool) -> None: ...
    def supportsNonFileBasedOutput(self) -> bool: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def isDestination(self) -> bool: ...


class QgsProcessingParameterFeatureSink(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ..., supportsAppend: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSink') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFeatureSink': ...
    def generateTemporaryDestination(self, context: typing.Optional[QgsProcessingContext] = ...) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setSupportsAppend(self, supportsAppend: bool) -> None: ...
    def supportsAppend(self) -> bool: ...
    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterVectorDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterVectorDestination': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRasterDestination': ...
    def supportedOutputRasterLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFileDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., fileFilter: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFileDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFileDestination': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: str) -> None: ...
    def fileFilter(self) -> str: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFolderDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFolderDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFolderDestination': ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterBand(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., optional: bool = ..., allowMultiple: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterBand') -> None: ...

    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterBand': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayout(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLayout') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterLayout': ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayoutItem(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayoutParameterName: str = ..., itemType: int = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLayoutItem') -> None: ...

    def setItemType(self, type: int) -> None: ...
    def itemType(self) -> int: ...
    def setParentLayoutParameterName(self, name: str) -> None: ...
    def parentLayoutParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterLayoutItem': ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterColor(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., opacityEnabled: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterColor') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterColor': ...
    def setOpacityEnabled(self, enabled: bool) -> None: ...
    def opacityEnabled(self) -> bool: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCoordinateOperation(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., sourceCrsParameterName: str = ..., destinationCrsParameterName: str = ..., staticSourceCrs: typing.Any = ..., staticDestinationCrs: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterCoordinateOperation') -> None: ...

    def setDestinationCrs(self, crs: typing.Any) -> None: ...
    def destinationCrs(self) -> typing.Any: ...
    def setSourceCrs(self, crs: typing.Any) -> None: ...
    def sourceCrs(self) -> typing.Any: ...
    def setDestinationCrsParameterName(self, name: str) -> None: ...
    def destinationCrsParameterName(self) -> str: ...
    def setSourceCrsParameterName(self, name: str) -> None: ...
    def sourceCrsParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterCoordinateOperation': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapTheme(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapTheme') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMapTheme': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDateTime(QgsProcessingParameterDefinition):

    class Type(int):
        DateTime = ... # type: QgsProcessingParameterDateTime.Type
        Date = ... # type: QgsProcessingParameterDateTime.Type
        Time = ... # type: QgsProcessingParameterDateTime.Type

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: 'QgsProcessingParameterDateTime.Type' = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: typing.Union[QtCore.QDateTime, datetime.datetime] = ..., maxValue: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDateTime') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDateTime': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: 'QgsProcessingParameterDateTime.Type') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterDateTime.Type': ...
    def setMaximum(self, maximum: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def maximum(self) -> QtCore.QDateTime: ...
    def setMinimum(self, minimum: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def minimum(self) -> QtCore.QDateTime: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def toolTip(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterProviderConnection(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, provider: str, defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterProviderConnection') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterProviderConnection': ...
    def setProviderId(self, provider: str) -> None: ...
    def providerId(self) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseSchema(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, connectionParameterName: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDatabaseSchema') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDatabaseSchema': ...
    def setParentConnectionParameterName(self, name: str) -> None: ...
    def parentConnectionParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseTable(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, connectionParameterName: str = ..., schemaParameterName: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., allowNewTableNames: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDatabaseTable') -> None: ...

    def setAllowNewTableNames(self, allowed: bool) -> None: ...
    def allowNewTableNames(self) -> bool: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDatabaseTable': ...
    def setParentSchemaParameterName(self, name: str) -> None: ...
    def parentSchemaParameterName(self) -> str: ...
    def setParentConnectionParameterName(self, name: str) -> None: ...
    def parentConnectionParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPointCloudLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAnnotationLayer(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAnnotationLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterAnnotationLayer': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPointCloudDestination': ...
    def supportedOutputPointCloudLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudAttribute(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., allowMultiple: bool = ..., optional: bool = ..., defaultToAllAttributes: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudAttribute') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPointCloudAttribute': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultToAllAttributes(self, enabled: bool) -> None: ...
    def defaultToAllAttributes(self) -> bool: ...
    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterVectorTileDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorTileDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterVectorTileDestination': ...
    def supportedOutputVectorTileLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterTinInputLayers(QgsProcessingParameterDefinition):

    class Type(int):
        Vertices = ... # type: QgsProcessingParameterTinInputLayers.Type
        StructureLines = ... # type: QgsProcessingParameterTinInputLayers.Type
        BreakLines = ... # type: QgsProcessingParameterTinInputLayers.Type

    class InputLayer(PyQt5.sip.wrapper):

        attributeIndex = ... # type: int
        source = ... # type: str
        type = ... # type: 'QgsProcessingParameterTinInputLayers.Type'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingParameterTinInputLayers.InputLayer') -> None: ...

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterTinInputLayers') -> None: ...

    @staticmethod
    def typeName() -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterType(PyQt5.sip.wrapper):

    class ParameterFlag(int):
        ExposeToModeler = ... # type: QgsProcessingParameterType.ParameterFlag

    class ParameterFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingParameterType.ParameterFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterType') -> None: ...

    def acceptedStringValues(self) -> typing.List[str]: ...
    def acceptedPythonTypes(self) -> typing.List[str]: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def flags(self) -> 'QgsProcessingParameterType.ParameterFlags': ...
    def id(self) -> str: ...
    def className(self) -> str: ...
    def pythonImportString(self) -> str: ...
    def name(self) -> str: ...
    def description(self) -> str: ...
    def create(self, name: str) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterVectorTileWriterLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorTileWriterLayers') -> None: ...

    @staticmethod
    def layerAsVariantMap(layer: 'QgsVectorTileWriter.Layer') -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantMapAsLayer(layerVariantMap: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsVectorTileWriter.Layer': ...
    @staticmethod
    def parameterAsLayers(layersVariant: typing.Any, context: QgsProcessingContext) -> typing.List['QgsVectorTileWriter.Layer']: ...
    @staticmethod
    def typeName() -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingProvider(QtCore.QObject):

    class Flag(int):
        FlagDeemphasiseSearchResults = ... # type: QgsProcessingProvider.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingProvider.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingProvider.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addAlgorithm(self, algorithm: QgsProcessingAlgorithm) -> bool: ...
    def loadAlgorithms(self) -> None: ...
    def algorithmsLoaded(self) -> None: ...
    def algorithm(self, name: str) -> QgsProcessingAlgorithm: ...
    def algorithms(self) -> typing.List[QgsProcessingAlgorithm]: ...
    def refreshAlgorithms(self) -> None: ...
    def unload(self) -> None: ...
    def load(self) -> bool: ...
    def supportsNonFileBasedOutput(self) -> bool: ...
    def defaultVectorTileFileExtension(self) -> str: ...
    def defaultPointCloudFileExtension(self) -> str: ...
    def defaultRasterFileExtension(self) -> str: ...
    def defaultVectorFileExtension(self, hasGeometry: bool = ...) -> str: ...
    def isSupportedOutputValue(self, outputValue: typing.Any, parameter: QgsProcessingDestinationParameter, context: QgsProcessingContext) -> typing.Tuple[bool, str]: ...
    def supportedOutputTableExtensions(self) -> typing.List[str]: ...
    def supportedOutputVectorTileLayerExtensions(self) -> typing.List[str]: ...
    def supportedOutputPointCloudLayerExtensions(self) -> typing.List[str]: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def supportedOutputRasterLayerExtensions(self) -> typing.List[str]: ...
    def isActive(self) -> bool: ...
    def warningMessage(self) -> str: ...
    def canBeActivated(self) -> bool: ...
    def versionInfo(self) -> str: ...
    def longName(self) -> str: ...
    def name(self) -> str: ...
    def helpId(self) -> str: ...
    def id(self) -> str: ...
    def flags(self) -> 'QgsProcessingProvider.Flags': ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...


class QgsProcessingAlgorithmInformation(PyQt5.sip.wrapper):

    displayName = ... # type: str
    icon = ... # type: QtGui.QIcon

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingAlgorithmInformation') -> None: ...


class QgsProcessingRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def parameterTypeRemoved(self, type: QgsProcessingParameterType) -> None: ...
    def parameterTypeAdded(self, type: QgsProcessingParameterType) -> None: ...
    def providerRemoved(self, id: str) -> None: ...
    def providerAdded(self, id: str) -> None: ...
    def parameterTypes(self) -> typing.List[QgsProcessingParameterType]: ...
    def parameterType(self, id: str) -> QgsProcessingParameterType: ...
    def removeParameterType(self, type: QgsProcessingParameterType) -> None: ...
    def addParameterType(self, type: QgsProcessingParameterType) -> bool: ...
    def addAlgorithmAlias(self, aliasId: str, actualId: str) -> None: ...
    def createAlgorithmById(self, id: str, configuration: typing.Dict[str, typing.Any] = ...) -> QgsProcessingAlgorithm: ...
    def algorithmById(self, id: str) -> QgsProcessingAlgorithm: ...
    def algorithmInformation(self, id: str) -> QgsProcessingAlgorithmInformation: ...
    def algorithms(self) -> typing.List[QgsProcessingAlgorithm]: ...
    def providerById(self, id: str) -> QgsProcessingProvider: ...
    @typing.overload
    def removeProvider(self, provider: QgsProcessingProvider) -> bool: ...
    @typing.overload
    def removeProvider(self, providerId: str) -> bool: ...
    def addProvider(self, provider: QgsProcessingProvider) -> bool: ...
    def providers(self) -> typing.List[QgsProcessingProvider]: ...


class QgsProcessingUtils(PyQt5.sip.wrapper):

    class LayerHint(int):
        UnknownType = ... # type: QgsProcessingUtils.LayerHint
        Vector = ... # type: QgsProcessingUtils.LayerHint
        Raster = ... # type: QgsProcessingUtils.LayerHint
        Mesh = ... # type: QgsProcessingUtils.LayerHint
        PointCloud = ... # type: QgsProcessingUtils.LayerHint
        Annotation = ... # type: QgsProcessingUtils.LayerHint
        VectorTile = ... # type: QgsProcessingUtils.LayerHint

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingUtils') -> None: ...

    @staticmethod
    def preprocessQgisProcessParameters(parameters: typing.Dict[str, typing.Any], error: str) -> typing.Tuple[typing.Dict[str, typing.Any], bool]: ...
    @staticmethod
    def removePointerValuesFromMap(map: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def defaultVectorTileExtension() -> str: ...
    @staticmethod
    def defaultPointCloudExtension() -> str: ...
    @staticmethod
    def defaultRasterExtension() -> str: ...
    @staticmethod
    def defaultVectorExtension() -> str: ...
    @staticmethod
    def indicesToFields(indices: typing.Iterable[int], fields: QgsFields) -> QgsFields: ...
    @staticmethod
    def fieldNamesToIndices(fieldNames: typing.Iterable[str], fields: QgsFields) -> typing.List[int]: ...
    @staticmethod
    def combineFields(fieldsA: QgsFields, fieldsB: QgsFields, fieldsBPrefix: str = ...) -> QgsFields: ...
    @staticmethod
    def convertToCompatibleFormatAndLayerName(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: typing.Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = ..., filterExpression: str = ...) -> typing.Tuple[str, str]: ...
    @staticmethod
    def convertToCompatibleFormat(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: typing.Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = ..., filterExpression: str = ...) -> str: ...
    @staticmethod
    def formatHelpMapAsHtml(map: typing.Dict[str, typing.Any], algorithm: QgsProcessingAlgorithm) -> str: ...
    @staticmethod
    def generateTempFilename(basename: str, context: typing.Optional[QgsProcessingContext] = ...) -> str: ...
    @staticmethod
    def tempFolder(context: typing.Optional[QgsProcessingContext] = ...) -> str: ...
    @staticmethod
    def generateIteratingDestination(input: typing.Any, id: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    @typing.overload
    @staticmethod
    def combineLayerExtents(layers: typing.Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def combineLayerExtents(layers: typing.Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @staticmethod
    def createFeatureSink(destination: str, context: QgsProcessingContext, fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, createOptions: typing.Dict[str, typing.Any] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @staticmethod
    def stringToPythonLiteral(string: str) -> str: ...
    @staticmethod
    def variantToPythonLiteral(value: typing.Any) -> str: ...
    @staticmethod
    def normalizeLayerSource(source: str) -> str: ...
    @staticmethod
    def variantToCrs(value: typing.Any, context: QgsProcessingContext, fallbackValue: typing.Any = ...) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def variantToSource(value: typing.Any, context: QgsProcessingContext, fallbackValue: typing.Any = ...) -> 'QgsProcessingFeatureSource': ...
    @staticmethod
    def mapLayerFromString(string: str, context: QgsProcessingContext, allowLoadingNewLayers: bool = ..., typeHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> QgsMapLayer: ...
    @staticmethod
    def decodeProviderKeyAndUri(string: str) -> typing.Tuple[bool, str, str]: ...
    @staticmethod
    def encodeProviderKeyAndUri(providerKey: str, uri: str) -> str: ...
    @staticmethod
    def compatibleLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def compatibleVectorTileLayers(project: 'QgsProject', sort: bool = ...) -> typing.List['QgsVectorTileLayer']: ...
    @staticmethod
    def compatibleAnnotationLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsAnnotationLayer]: ...
    @staticmethod
    def compatiblePointCloudLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsPointCloudLayer]: ...
    @staticmethod
    def compatiblePluginLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsPluginLayer]: ...
    @staticmethod
    def compatibleMeshLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsMeshLayer]: ...
    @staticmethod
    def compatibleVectorLayers(project: 'QgsProject', sourceTypes: typing.Iterable[int] = ..., sort: bool = ...) -> typing.List[QgsVectorLayer]: ...
    @staticmethod
    def compatibleRasterLayers(project: 'QgsProject', sort: bool = ...) -> typing.List['QgsRasterLayer']: ...


class QgsProcessingFeatureSource(QgsFeatureSource):

    class Flag(int):
        FlagSkipGeometryValidityChecks = ... # type: QgsProcessingFeatureSource.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingFeatureSource.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProcessingFeatureSource.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, originalSource: QgsFeatureSource, context: QgsProcessingContext, ownsOriginalSource: bool = ..., featureLimit: int = ..., filterExpression: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingFeatureSource') -> None: ...

    def setInvalidGeometryCheck(self, method: QgsFeatureRequest.InvalidGeometryCheck) -> None: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def hasSpatialIndex(self) -> QgsFeatureSource.SpatialIndexPresence: ...
    def allFeatureIds(self) -> typing.Any: ...
    def sourceExtent(self) -> QgsRectangle: ...
    def maximumValue(self, fieldIndex: int) -> typing.Any: ...
    def minimumValue(self, fieldIndex: int) -> typing.Any: ...
    def uniqueValues(self, fieldIndex: int, limit: int = ...) -> typing.Set[typing.Any]: ...
    def sourceName(self) -> str: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def fields(self) -> QgsFields: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def hasFeatures(self) -> QgsFeatureSource.FeatureAvailability: ...
    @typing.overload
    def getFeatures(self, request: QgsFeatureRequest, flags: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsProjectTranslator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectTranslator') -> None: ...

    def translate(self, context: str, sourceText: str, disambiguation: typing.Optional[str] = ..., n: int = ...) -> str: ...


class QgsProject(QtCore.QObject, QgsExpressionContextGenerator, QgsExpressionContextScopeGenerator, QgsProjectTranslator):

    class DataDefinedServerProperty(int):
        NoProperty = ... # type: QgsProject.DataDefinedServerProperty
        AllProperties = ... # type: QgsProject.DataDefinedServerProperty
        WMSOnlineResource = ... # type: QgsProject.DataDefinedServerProperty

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., capabilities: typing.Union[Qgis.ProjectCapabilities, Qgis.ProjectCapability] = ...) -> None: ...

    def rollBack(self, stopEditing: bool = ..., vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def commitChanges(self, stopEditing: bool = ..., vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def startEditing(self, vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> bool: ...
    def dataDefinedServerProperties(self) -> QgsPropertyCollection: ...
    def setDataDefinedServerProperties(self, properties: QgsPropertyCollection) -> None: ...
    def registerTranslatableObjects(self, translationContext: QgsTranslationContext) -> None: ...
    def registerTranslatableContainers(self, translationContext: QgsTranslationContext, parent: QgsAttributeEditorContainer, layerId: str) -> None: ...
    def setPresetHomePath(self, path: str) -> None: ...
    def setDirty(self, b: bool = ...) -> None: ...
    def setSnappingConfig(self, snappingConfig: QgsSnappingConfig) -> None: ...
    def elevationShadingRendererChanged(self) -> None: ...
    def mapScalesChanged(self) -> None: ...
    def dirtySet(self) -> None: ...
    def isDirtyChanged(self, dirty: bool) -> None: ...
    def legendLayersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layerWasAdded(self, layer: QgsMapLayer) -> None: ...
    def layersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def removeAll(self) -> None: ...
    def layerRemoved(self, layerId: str) -> None: ...
    def layersRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def layerWillBeRemoved(self, layerId: str) -> None: ...
    @typing.overload
    def layerWillBeRemoved(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def layersWillBeRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def layersWillBeRemoved(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def selectionColorChanged(self) -> None: ...
    def backgroundColorChanged(self) -> None: ...
    def projectColorsChanged(self) -> None: ...
    def metadataChanged(self) -> None: ...
    def labelingEngineSettingsChanged(self) -> None: ...
    def mapThemeCollectionChanged(self) -> None: ...
    def avoidIntersectionsLayersChanged(self) -> None: ...
    def topologicalEditingChanged(self) -> None: ...
    def transactionGroupsChanged(self) -> None: ...
    def missingDatumTransforms(self, missingTransforms: typing.Iterable[str]) -> None: ...
    def transformContextChanged(self) -> None: ...
    def areaUnitsChanged(self) -> None: ...
    def distanceUnitsChanged(self) -> None: ...
    def ellipsoidChanged(self, ellipsoid: str) -> None: ...
    def crsChanged(self) -> None: ...
    def customVariablesChanged(self) -> None: ...
    def avoidIntersectionsModeChanged(self) -> None: ...
    def snappingConfigChanged(self, config: QgsSnappingConfig) -> None: ...
    def homePathChanged(self) -> None: ...
    def fileNameChanged(self) -> None: ...
    def nonIdentifiableLayersChanged(self, nonIdentifiableLayers: typing.Iterable[str]) -> None: ...
    def loadingLayerMessageReceived(self, layerName: str, messages: typing.Iterable[QgsReadWriteContext.ReadWriteMessage]) -> None: ...
    def loadingLayer(self, layerName: str) -> None: ...
    def layerLoaded(self, i: int, n: int) -> None: ...
    def readVersionMismatchOccurred(self, fileVersion: str) -> None: ...
    def oldProjectVersionWarning(self, a0: str) -> None: ...
    def projectSaved(self) -> None: ...
    def writeMapLayer(self, mapLayer: QgsMapLayer, layerElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> None: ...
    def readMapLayer(self, mapLayer: QgsMapLayer, layerNode: QtXml.QDomElement) -> None: ...
    def writeProject(self, a0: QtXml.QDomDocument) -> None: ...
    def readProjectWithContext(self, a0: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def readProject(self, a0: QtXml.QDomDocument) -> None: ...
    def cleared(self) -> None: ...
    def __repr__(self) -> typing.Any: ...
    def setElevationShadingRenderer(self, elevationShadingRenderer: QgsElevationShadingRenderer) -> None: ...
    def elevationShadingRenderer(self) -> QgsElevationShadingRenderer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def translate(self, context: str, sourceText: str, disambiguation: typing.Optional[str] = ..., n: int = ...) -> str: ...
    def generateTsFile(self, locale: str) -> None: ...
    def useProjectScales(self) -> bool: ...
    def setUseProjectScales(self, enabled: bool) -> None: ...
    def mapScales(self) -> typing.List[float]: ...
    def setMapScales(self, scales: typing.Iterable[float]) -> None: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setProjectColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]]) -> None: ...
    def setRequiredLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def requiredLayers(self) -> typing.Set[QgsMapLayer]: ...
    def setMetadata(self, metadata: QgsProjectMetadata) -> None: ...
    def metadata(self) -> QgsProjectMetadata: ...
    def resolveAttachmentIdentifier(self, identifier: str) -> str: ...
    def attachmentIdentifier(self, attachedFile: str) -> str: ...
    def removeAttachedFile(self, path: str) -> bool: ...
    def attachedFiles(self) -> typing.List[str]: ...
    def createAttachedFile(self, nameTemplate: str) -> str: ...
    def auxiliaryStorage(self) -> QgsAuxiliaryStorage: ...
    def trustLayerMetadata(self) -> bool: ...
    def setTrustLayerMetadata(self, trust: bool) -> None: ...
    def defaultCrsForNewLayers(self) -> QgsCoordinateReferenceSystem: ...
    def reloadAllLayers(self) -> None: ...
    def removeAllMapLayers(self) -> None: ...
    def mainAnnotationLayer(self) -> QgsAnnotationLayer: ...
    def takeMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    @typing.overload
    def removeMapLayer(self, layerId: str) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def removeMapLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addMapLayer(self, mapLayer: QgsMapLayer, addToLegend: bool = ...) -> QgsMapLayer: ...
    def addMapLayers(self, mapLayers: typing.Iterable[QgsMapLayer], addToLegend: bool = ...) -> typing.List[QgsMapLayer]: ...
    def isZipped(self) -> bool: ...
    def mapLayers(self, validOnly: bool = ...) -> typing.Any: ...
    def mapLayersByShortName(self, shortName: str) -> typing.List[QgsMapLayer]: ...
    def mapLayersByName(self, layerName: str) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, layerId: str) -> QgsMapLayer: ...
    def validCount(self) -> int: ...
    def count(self) -> int: ...
    def layerStore(self) -> QgsMapLayerStore: ...
    def labelingEngineSettings(self) -> QgsLabelingEngineSettings: ...
    def setLabelingEngineSettings(self, settings: QgsLabelingEngineSettings) -> None: ...
    def setCustomVariables(self, customVariables: typing.Dict[str, typing.Any]) -> None: ...
    def customVariables(self) -> typing.Dict[str, typing.Any]: ...
    def avoidIntersectionsMode(self) -> Qgis.AvoidIntersectionsMode: ...
    def setAvoidIntersectionsMode(self, mode: Qgis.AvoidIntersectionsMode) -> None: ...
    def setAvoidIntersectionsLayers(self, layers: typing.Iterable[QgsVectorLayer]) -> None: ...
    def avoidIntersectionsLayers(self) -> typing.List[QgsVectorLayer]: ...
    def snappingConfig(self) -> QgsSnappingConfig: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def setEvaluateDefaultValues(self, evaluateDefaultValues: bool) -> None: ...
    def evaluateDefaultValues(self) -> bool: ...
    def editBufferGroup(self) -> 'QgsVectorLayerEditBufferGroup': ...
    def transactionGroup(self, providerKey: str, connString: str) -> QgsTransactionGroup: ...
    def setTransactionMode(self, transactionMode: Qgis.TransactionMode) -> bool: ...
    def transactionMode(self) -> Qgis.TransactionMode: ...
    def setAutoTransaction(self, autoTransaction: bool) -> None: ...
    def autoTransaction(self) -> bool: ...
    def nonIdentifiableLayers(self) -> typing.List[str]: ...
    @typing.overload
    def setNonIdentifiableLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    @typing.overload
    def setNonIdentifiableLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    def annotationManager(self) -> QgsAnnotationManager: ...
    def mapThemeCollection(self) -> QgsMapThemeCollection: ...
    def layerTreeRegistryBridge(self) -> QgsLayerTreeRegistryBridge: ...
    def layerTreeRoot(self) -> QgsLayerTree: ...
    def gpsSettings(self) -> 'QgsProjectGpsSettings': ...
    def displaySettings(self) -> 'QgsProjectDisplaySettings': ...
    def elevationProperties(self) -> 'QgsProjectElevationProperties': ...
    def timeSettings(self) -> 'QgsProjectTimeSettings': ...
    def styleSettings(self) -> 'QgsProjectStyleSettings': ...
    def viewSettings(self) -> 'QgsProjectViewSettings': ...
    def sensorManager(self) -> 'QgsSensorManager': ...
    def bookmarkManager(self) -> QgsBookmarkManager: ...
    def viewsManager(self) -> 'QgsMapViewsManager': ...
    def layoutManager(self) -> QgsLayoutManager: ...
    def relationManager(self) -> QgsRelationManager: ...
    def presetHomePath(self) -> str: ...
    def homePath(self) -> str: ...
    def setAreaUnits(self, unit: Qgis.AreaUnit) -> None: ...
    def areaUnits(self) -> Qgis.AreaUnit: ...
    def setDistanceUnits(self, unit: Qgis.DistanceUnit) -> None: ...
    def distanceUnits(self) -> Qgis.DistanceUnit: ...
    def topologicalEditing(self) -> bool: ...
    def setTopologicalEditing(self, enabled: bool) -> None: ...
    def createEmbeddedGroup(self, groupName: str, projectFilePath: str, invisibleLayers: typing.Iterable[str], flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> QgsLayerTreeGroup: ...
    def layerIsEmbedded(self, id: str) -> str: ...
    def setBadLayerHandler(self, handler: 'QgsProjectBadLayerHandler') -> None: ...
    def error(self) -> str: ...
    def readPath(self, filename: str) -> str: ...
    def writePath(self, filename: str) -> str: ...
    def pathResolver(self) -> QgsPathResolver: ...
    def dumpProperties(self) -> None: ...
    def subkeyList(self, scope: str, key: str) -> typing.List[str]: ...
    def entryList(self, scope: str, key: str) -> typing.List[str]: ...
    def removeEntry(self, scope: str, key: str) -> bool: ...
    def readBoolEntry(self, scope: str, key: str, def_: bool = ...) -> typing.Tuple[bool, bool]: ...
    def readDoubleEntry(self, scope: str, key: str, def_: float = ...) -> typing.Tuple[float, bool]: ...
    def readNumEntry(self, scope: str, key: str, def_: int = ...) -> typing.Tuple[int, bool]: ...
    def readEntry(self, scope: str, key: str, def_: str = ...) -> typing.Tuple[str, bool]: ...
    def readListEntry(self, scope: str, key: str, def_: typing.Iterable[str] = ...) -> typing.Tuple[typing.List[str], bool]: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: int) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: str) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: typing.Iterable[str]) -> bool: ...
    def writeEntryDouble(self, scope: str, key: str, value: float) -> bool: ...
    def writeEntryBool(self, scope: str, key: str, value: bool) -> bool: ...
    @typing.overload
    def write(self, filename: str) -> bool: ...
    @typing.overload
    def write(self) -> bool: ...
    def readLayer(self, layerNode: QtXml.QDomNode) -> bool: ...
    @typing.overload
    def read(self, filename: str, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    @typing.overload
    def read(self, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    def clear(self) -> None: ...
    def setTransformContext(self, context: QgsCoordinateTransformContext) -> None: ...
    def transformContext(self) -> QgsCoordinateTransformContext: ...
    def setEllipsoid(self, ellipsoid: str) -> None: ...
    def ellipsoid(self) -> str: ...
    def setCrs(self, crs: QgsCoordinateReferenceSystem, adjustEllipsoid: bool = ...) -> None: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def setFilePathStorage(self, type: Qgis.FilePathType) -> None: ...
    def filePathStorage(self) -> Qgis.FilePathType: ...
    def baseName(self) -> str: ...
    def absolutePath(self) -> str: ...
    def absoluteFilePath(self) -> str: ...
    def lastModified(self) -> QtCore.QDateTime: ...
    def projectStorage(self) -> 'QgsProjectStorage': ...
    def fileInfo(self) -> QtCore.QFileInfo: ...
    def originalPath(self) -> str: ...
    def setOriginalPath(self, path: str) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, name: str) -> None: ...
    def isDirty(self) -> bool: ...
    def lastSaveVersion(self) -> 'QgsProjectVersion': ...
    def lastSaveDateTime(self) -> QtCore.QDateTime: ...
    def saveUserFullName(self) -> str: ...
    def saveUser(self) -> str: ...
    def setFlag(self, flag: Qgis.ProjectFlag, enabled: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.ProjectFlags, Qgis.ProjectFlag]) -> None: ...
    def flags(self) -> Qgis.ProjectFlags: ...
    def capabilities(self) -> Qgis.ProjectCapabilities: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    @staticmethod
    def setInstance(project: 'QgsProject') -> None: ...
    @staticmethod
    def instance() -> 'QgsProject': ...


class QgsProjectDirtyBlocker(PyQt5.sip.wrapper):

    def __init__(self, project: QgsProject) -> None: ...


class QgsProjectBadLayerHandler(PyQt5.sip.wrapper):

    class ProviderType(int):
        IS_FILE = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_DATABASE = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_URL = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_Unknown = ... # type: QgsProjectBadLayerHandler.ProviderType

    class DataType(int):
        IS_VECTOR = ... # type: QgsProjectBadLayerHandler.DataType
        IS_RASTER = ... # type: QgsProjectBadLayerHandler.DataType
        IS_BOGUS = ... # type: QgsProjectBadLayerHandler.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectBadLayerHandler') -> None: ...

    def setDataSource(self, layerNode: QtXml.QDomNode, dataSource: str) -> None: ...
    def providerType(self, layerNode: QtXml.QDomNode) -> 'QgsProjectBadLayerHandler.ProviderType': ...
    def dataSource(self, layerNode: QtXml.QDomNode) -> str: ...
    def dataType(self, layerNode: QtXml.QDomNode) -> 'QgsProjectBadLayerHandler.DataType': ...
    def handleBadLayers(self, layers: typing.Iterable[QtXml.QDomNode]) -> None: ...


class QgsProjectDisplaySettings(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def coordinateCrsChanged(self) -> None: ...
    def coordinateCustomCrsChanged(self) -> None: ...
    def coordinateAxisOrderChanged(self) -> None: ...
    def coordinateTypeChanged(self) -> None: ...
    def geographicCoordinateFormatChanged(self) -> None: ...
    def bearingFormatChanged(self) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def coordinateCrs(self) -> QgsCoordinateReferenceSystem: ...
    def setCoordinateCustomCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def coordinateCustomCrs(self) -> QgsCoordinateReferenceSystem: ...
    def setCoordinateAxisOrder(self, order: Qgis.CoordinateOrder) -> None: ...
    def coordinateAxisOrder(self) -> Qgis.CoordinateOrder: ...
    def setCoordinateType(self, type: Qgis.CoordinateDisplayType) -> None: ...
    def coordinateType(self) -> Qgis.CoordinateDisplayType: ...
    def geographicCoordinateFormat(self) -> QgsGeographicCoordinateNumericFormat: ...
    def setGeographicCoordinateFormat(self, format: QgsGeographicCoordinateNumericFormat) -> None: ...
    def bearingFormat(self) -> QgsBearingNumericFormat: ...
    def setBearingFormat(self, format: QgsBearingNumericFormat) -> None: ...
    def reset(self) -> None: ...


class QgsProjectElevationProperties(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def changed(self) -> None: ...
    def setTerrainProvider(self, provider: QgsAbstractTerrainProvider) -> None: ...
    def terrainProvider(self) -> QgsAbstractTerrainProvider: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: QgsProject) -> None: ...
    def reset(self) -> None: ...


class QgsProjectFileTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, domDocument: QtXml.QDomDocument, version: 'QgsProjectVersion') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectFileTransform') -> None: ...

    @staticmethod
    def fixOldSymbolLayerReferences(mapLayers: typing.Any) -> None: ...
    def currentVersion(self) -> 'QgsProjectVersion': ...
    def dom(self) -> QtXml.QDomDocument: ...
    @staticmethod
    def convertRasterProperties(doc: QtXml.QDomDocument, parentNode: QtXml.QDomNode, rasterPropertiesElem: QtXml.QDomElement, rlayer: 'QgsRasterLayer') -> None: ...
    def dump(self) -> None: ...
    def updateRevision(self, version: 'QgsProjectVersion') -> bool: ...


class QgsProjectGpsSettings(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def destinationTimeStampFieldChanged(self, field: str) -> None: ...
    def destinationLayerChanged(self, layer: QgsVectorLayer) -> None: ...
    def destinationFollowsActiveLayerChanged(self, follows: bool) -> None: ...
    def automaticallyCommitFeaturesChanged(self, enabled: bool) -> None: ...
    def automaticallyAddTrackVerticesChanged(self, enabled: bool) -> None: ...
    def setDestinationTimeStampField(self, layer: QgsVectorLayer, field: str) -> None: ...
    def setDestinationLayer(self, layer: QgsVectorLayer) -> None: ...
    def setDestinationFollowsActiveLayer(self, follow: bool) -> None: ...
    def setAutomaticallyCommitFeatures(self, enabled: bool) -> None: ...
    def setAutomaticallyAddTrackVertices(self, enabled: bool) -> None: ...
    def destinationTimeStampField(self) -> str: ...
    def destinationTimeStampFields(self) -> typing.Dict[str, str]: ...
    def destinationLayer(self) -> QgsVectorLayer: ...
    def destinationFollowsActiveLayer(self) -> bool: ...
    def automaticallyCommitFeatures(self) -> bool: ...
    def automaticallyAddTrackVertices(self) -> bool: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def reset(self) -> None: ...
    def resolveReferences(self, project: QgsProject) -> None: ...


class QgsProjectProperty(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectProperty') -> None: ...

    def value(self) -> typing.Any: ...
    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def isLeaf(self) -> bool: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...


class QgsProjectPropertyValue(QgsProjectProperty):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: typing.Any) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectPropertyValue') -> None: ...

    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...
    def isLeaf(self) -> bool: ...
    def value(self) -> typing.Any: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...


class QgsProjectPropertyKey(QgsProjectProperty):

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectPropertyKey') -> None: ...

    def find(self, propertyName: str) -> QgsProjectProperty: ...
    def clearKeys(self) -> None: ...
    def clear(self) -> None: ...
    def subkeyList(self, entries: typing.Iterable[str]) -> None: ...
    def entryList(self, entries: typing.Iterable[str]) -> None: ...
    def isLeaf(self) -> bool: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def count(self) -> int: ...
    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...
    @typing.overload
    def setValue(self, name: str, value: typing.Any) -> QgsProjectPropertyValue: ...
    @typing.overload
    def setValue(self, value: typing.Any) -> QgsProjectPropertyValue: ...
    def removeKey(self, keyName: str) -> None: ...
    def addKey(self, keyName: str) -> 'QgsProjectPropertyKey': ...
    def value(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsProjectServerValidator(PyQt5.sip.wrapper):

    class ValidationError(int):
        DuplicatedNames = ... # type: QgsProjectServerValidator.ValidationError
        LayerShortName = ... # type: QgsProjectServerValidator.ValidationError
        LayerEncoding = ... # type: QgsProjectServerValidator.ValidationError
        ProjectShortName = ... # type: QgsProjectServerValidator.ValidationError
        ProjectRootNameConflict = ... # type: QgsProjectServerValidator.ValidationError

    class ValidationResult(PyQt5.sip.wrapper):

        error = ... # type: 'QgsProjectServerValidator.ValidationError'
        identifier = ... # type: typing.Any

        @typing.overload
        def __init__(self, error: 'QgsProjectServerValidator.ValidationError', identifier: typing.Any) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProjectServerValidator.ValidationResult') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectServerValidator') -> None: ...

    @staticmethod
    def validate(project: QgsProject) -> typing.Tuple[bool, typing.List['QgsProjectServerValidator.ValidationResult']]: ...
    @staticmethod
    def displayValidationError(error: 'QgsProjectServerValidator.ValidationError') -> str: ...


class QgsProjectStorage(PyQt5.sip.wrapper):

    class Metadata(PyQt5.sip.wrapper):

        lastModified = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        name = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProjectStorage.Metadata') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectStorage') -> None: ...

    def showSaveGui(self) -> str: ...
    def showLoadGui(self) -> str: ...
    def visibleName(self) -> str: ...
    def filePath(self, uri: str) -> str: ...
    def readProjectStorageMetadata(self, uri: str) -> typing.Tuple[bool, 'QgsProjectStorage.Metadata']: ...
    def renameProject(self, uri: str, uriNew: str) -> bool: ...
    def removeProject(self, uri: str) -> bool: ...
    def writeProject(self, uri: str, device: QtCore.QIODevice, context: QgsReadWriteContext) -> bool: ...
    def readProject(self, uri: str, device: QtCore.QIODevice, context: QgsReadWriteContext) -> bool: ...
    def listProjects(self, uri: str) -> typing.List[str]: ...
    def isSupportedUri(self, uri: str) -> bool: ...
    def type(self) -> str: ...


class QgsProjectStorageRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectStorageRegistry') -> None: ...

    def unregisterProjectStorage(self, storage: QgsProjectStorage) -> None: ...
    def registerProjectStorage(self, storage: QgsProjectStorage) -> None: ...
    def projectStorages(self) -> typing.List[QgsProjectStorage]: ...
    def projectStorageFromUri(self, uri: str) -> QgsProjectStorage: ...
    def projectStorageFromType(self, type: str) -> QgsProjectStorage: ...


class QgsProjectStyleSettings(QtCore.QObject):

    def __init__(self, project: typing.Optional[QgsProject] = ...) -> None: ...

    def styleDatabasesChanged(self) -> None: ...
    def combinedStyleModel(self) -> 'QgsCombinedStyleModel': ...
    def setStyleDatabasePaths(self, paths: typing.Iterable[str]) -> None: ...
    def addStyleDatabasePath(self, path: str) -> None: ...
    def styleAtPath(self, path: str) -> 'QgsStyle': ...
    def styles(self) -> typing.List['QgsStyle']: ...
    def styleDatabasePaths(self) -> typing.List[str]: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    def projectStyle(self) -> 'QgsStyle': ...
    def setProjectStyle(self, style: 'QgsStyle') -> None: ...
    def removeProjectStyle(self) -> None: ...
    def reset(self) -> None: ...
    def setDefaultSymbolOpacity(self, opacity: float) -> None: ...
    def defaultSymbolOpacity(self) -> float: ...
    def setRandomizeDefaultSymbolColor(self, randomized: bool) -> None: ...
    def randomizeDefaultSymbolColor(self) -> bool: ...
    def setDefaultTextFormat(self, textFormat: 'QgsTextFormat') -> None: ...
    def defaultTextFormat(self) -> 'QgsTextFormat': ...
    def setDefaultColorRamp(self, colorRamp: QgsColorRamp) -> None: ...
    def defaultColorRamp(self) -> QgsColorRamp: ...
    def setDefaultSymbol(self, symbolType: Qgis.SymbolType, symbol: 'QgsSymbol') -> None: ...
    def defaultSymbol(self, symbolType: Qgis.SymbolType) -> 'QgsSymbol': ...


class QgsProjectStyleDatabaseModel(QtCore.QAbstractListModel):

    class Role(int):
        StyleRole = ... # type: QgsProjectStyleDatabaseModel.Role
        PathRole = ... # type: QgsProjectStyleDatabaseModel.Role

    def __init__(self, settings: QgsProjectStyleSettings, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def showDefaultStyle(self) -> bool: ...
    def setShowDefaultStyle(self, show: bool) -> None: ...
    def indexFromStyle(self, style: 'QgsStyle') -> QtCore.QModelIndex: ...
    def styleFromIndex(self, index: QtCore.QModelIndex) -> 'QgsStyle': ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...


class QgsProjectStyleDatabaseProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        FilterHideReadOnly = ... # type: QgsProjectStyleDatabaseProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProjectStyleDatabaseProxyModel.Filters') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, model: QgsProjectStyleDatabaseModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilters(self, filters: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> None: ...
    def filters(self) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...


class QgsProjectTimeSettings(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def temporalRangeChanged(self) -> None: ...
    def isTemporalRangeCumulative(self) -> bool: ...
    def setIsTemporalRangeCumulative(self, state: bool) -> None: ...
    def framesPerSecond(self) -> float: ...
    def setFramesPerSecond(self, rate: float) -> None: ...
    def setTimeStep(self, step: float) -> None: ...
    def timeStep(self) -> float: ...
    def setTimeStepUnit(self, unit: Qgis.TemporalUnit) -> None: ...
    def timeStepUnit(self) -> Qgis.TemporalUnit: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def setTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def temporalRange(self) -> QgsDateTimeRange: ...
    def reset(self) -> None: ...


class QgsProjectUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectUtils') -> None: ...

    @staticmethod
    def layerIsContainedInGroupLayer(project: QgsProject, layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def updateLayerPath(project: QgsProject, oldPath: str, newPath: str) -> bool: ...
    @staticmethod
    def layersMatchingPath(project: QgsProject, path: str) -> typing.List[QgsMapLayer]: ...


class QgsProjectVersion(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, major: int, minor: int, sub: int, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, string: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectVersion') -> None: ...

    def isNull(self) -> bool: ...
    def text(self) -> str: ...
    def subVersion(self) -> int: ...
    def minorVersion(self) -> int: ...
    def majorVersion(self) -> int: ...


class QgsProjectViewSettings(QtCore.QObject):

    def __init__(self, project: typing.Optional[QgsProject] = ...) -> None: ...

    def presetFullExtentChanged(self) -> None: ...
    def mapScalesChanged(self) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def setDefaultRotation(self, rotation: float) -> None: ...
    def defaultRotation(self) -> float: ...
    def useProjectScales(self) -> bool: ...
    def setUseProjectScales(self, enabled: bool) -> None: ...
    def mapScales(self) -> typing.List[float]: ...
    def setMapScales(self, scales: typing.Iterable[float]) -> None: ...
    def fullExtent(self) -> QgsReferencedRectangle: ...
    def setPresetFullExtent(self, extent: QgsReferencedRectangle) -> None: ...
    def presetFullExtent(self) -> QgsReferencedRectangle: ...
    def setDefaultViewExtent(self, extent: QgsReferencedRectangle) -> None: ...
    def defaultViewExtent(self) -> QgsReferencedRectangle: ...
    def reset(self) -> None: ...


class QgsMapViewsManager(QtCore.QObject):

    def __init__(self, project: QgsProject) -> None: ...

    def views3DListChanged(self) -> None: ...
    def rename3DView(self, oldTitle: str, newTitle: str) -> None: ...
    def remove3DView(self, name: str) -> None: ...
    def clear(self) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsAbstractDbTableModel(QtGui.QStandardItemModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setSql(self, index: QtCore.QModelIndex, sql: str) -> None: ...
    def searchableColumn(self, column: int) -> bool: ...
    def defaultSearchColumn(self) -> int: ...
    def columns(self) -> typing.List[str]: ...


class QgsAbstractProviderConnection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractProviderConnection') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any]) -> None: ...
    def configuration(self) -> typing.Dict[str, typing.Any]: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def remove(self, name: str) -> None: ...
    def store(self, name: str) -> None: ...


class QgsAbstractDatabaseProviderConnection(QgsAbstractProviderConnection):

    class GeometryColumnCapability(int):
        Z = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        M = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePart = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        Curves = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePoint = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SingleLineString = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePolygon = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability

    class Capability(int):
        CreateVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropRasterTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameRasterTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        CreateSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        ExecuteSql = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Vacuum = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Tables = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Schemas = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SqlLayers = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        TableExists = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Spatial = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        CreateSpatialIndex = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SpatialIndexExists = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteSpatialIndex = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteFieldCascade = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        AddField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        ListFieldDomains = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RetrieveFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SetFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        AddFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RetrieveRelationships = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        AddRelationship = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        UpdateRelationship = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteRelationship = ... # type: QgsAbstractDatabaseProviderConnection.Capability

    class TableFlag(int):
        Aspatial = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        Vector = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        Raster = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        View = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        MaterializedView = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        Foreign = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag
        IncludeSystemTables = ... # type: QgsAbstractDatabaseProviderConnection.TableFlag

    class TableFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.TableFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class QueryResult(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.QueryResult') -> None: ...

        def setQueryExecutionTime(self, queryExecutionTime: float) -> None: ...
        def queryExecutionTime(self) -> float: ...
        def __next__(self) -> typing.Any: ...
        def __iter__(self) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
        def rowCount(self) -> int: ...
        def fetchedRowCount(self) -> int: ...
        def nextRow(self) -> typing.List[typing.Any]: ...
        def hasNextRow(self) -> bool: ...
        def rows(self, feedback: typing.Optional[QgsFeedback] = ...) -> typing.Any: ...
        def columns(self) -> typing.List[str]: ...

    class SqlVectorLayerOptions(PyQt5.sip.wrapper):

        disableSelectAtId = ... # type: bool
        filter = ... # type: str
        geometryColumn = ... # type: str
        layerName = ... # type: str
        primaryKeyColumns = ... # type: typing.Iterable[str]
        sql = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions') -> None: ...

    class TableProperty(PyQt5.sip.wrapper):

        class GeometryColumnType(PyQt5.sip.wrapper):

            crs = ... # type: QgsCoordinateReferenceSystem
            wkbType = ... # type: Qgis.WkbType

            @typing.overload
            def __init__(self) -> None: ...
            @typing.overload
            def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.TableProperty.GeometryColumnType') -> None: ...

            def __repr__(self) -> typing.Any: ...

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.TableProperty') -> None: ...

        def maxCoordinateDimensions(self) -> int: ...
        def setFlag(self, flag: 'QgsAbstractDatabaseProviderConnection.TableFlag') -> None: ...
        def setGeometryColumnCount(self, geometryColumnCount: int) -> None: ...
        def geometryColumnCount(self) -> int: ...
        def setInfo(self, info: typing.Dict[str, typing.Any]) -> None: ...
        def info(self) -> typing.Dict[str, typing.Any]: ...
        def setComment(self, comment: str) -> None: ...
        def comment(self) -> str: ...
        def setFlags(self, flags: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> None: ...
        def flags(self) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def crsList(self) -> typing.List[QgsCoordinateReferenceSystem]: ...
        def setPrimaryKeyColumns(self, primaryKeyColumns: typing.Iterable[str]) -> None: ...
        def primaryKeyColumns(self) -> typing.List[str]: ...
        def setGeometryColumn(self, geometryColumn: str) -> None: ...
        def geometryColumn(self) -> str: ...
        def setSchema(self, schema: str) -> None: ...
        def schema(self) -> str: ...
        def at(self, index: int) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
        def defaultName(self) -> str: ...
        def setGeometryColumnTypes(self, geometryColumnTypes: typing.Iterable['QgsAbstractDatabaseProviderConnection.TableProperty.GeometryColumnType']) -> None: ...
        def geometryColumnTypes(self) -> typing.List['QgsAbstractDatabaseProviderConnection.TableProperty.GeometryColumnType']: ...
        def addGeometryColumnType(self, type: Qgis.WkbType, crs: QgsCoordinateReferenceSystem) -> None: ...
        def setTableName(self, name: str) -> None: ...
        def tableName(self) -> str: ...
        def __repr__(self) -> typing.Any: ...

    class SpatialIndexOptions(PyQt5.sip.wrapper):

        geometryColumnName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.SpatialIndexOptions') -> None: ...

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.Capabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class GeometryColumnCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection') -> None: ...

    @typing.overload
    def checkCapability(self, capability: 'QgsAbstractDatabaseProviderConnection.Capability') -> None: ...
    @typing.overload
    def checkCapability(self, capability: Qgis.DatabaseProviderConnectionCapability2) -> None: ...
    def searchLayerMetadata(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsLayerMetadataProviderResult]: ...
    def queryBuilder(self) -> 'QgsProviderSqlQueryBuilder': ...
    def deleteRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def updateRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def addRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def relationships(self, schema: str = ..., tableName: str = ...) -> typing.List[QgsWeakRelation]: ...
    def relatedTableTypes(self) -> typing.List[str]: ...
    def supportedRelationshipCapabilities(self) -> Qgis.RelationshipCapabilities: ...
    def supportedRelationshipStrengths(self) -> typing.List[Qgis.RelationshipStrength]: ...
    def supportedRelationshipCardinalities(self) -> typing.List[Qgis.RelationshipCardinality]: ...
    def setFieldComment(self, fieldName: str, schema: str, tableName: str, comment: str) -> None: ...
    def setFieldAlias(self, fieldName: str, schema: str, tableName: str, alias: str) -> None: ...
    def addFieldDomain(self, domain: 'QgsFieldDomain', schema: str) -> None: ...
    def setFieldDomainName(self, fieldName: str, schema: str, tableName: str, domainName: str) -> None: ...
    def fieldDomain(self, name: str) -> 'QgsFieldDomain': ...
    def supportedFieldDomainTypes(self) -> typing.List[Qgis.FieldDomainType]: ...
    def fieldDomainNames(self) -> typing.List[str]: ...
    def illegalFieldNames(self) -> typing.Set[str]: ...
    def sqlDictionary(self) -> typing.Dict[Qgis.SqlKeywordCategory, typing.List[typing.List[str]]]: ...
    def providerKey(self) -> str: ...
    def nativeTypes(self) -> typing.List['QgsVectorDataProvider.NativeType']: ...
    def fields(self, schema: str, table: str, feedback: typing.Optional[QgsFeedback] = ...) -> QgsFields: ...
    def schemas(self) -> typing.List[str]: ...
    def tables(self, schema: str = ..., flags: int = ...) -> typing.List['QgsAbstractDatabaseProviderConnection.TableProperty']: ...
    def table(self, schema: str, table: str, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
    def deleteSpatialIndex(self, schema: str, name: str, geometryColumn: str) -> None: ...
    def spatialIndexExists(self, schema: str, name: str, geometryColumn: str) -> bool: ...
    def createSpatialIndex(self, schema: str, name: str, options: 'QgsAbstractDatabaseProviderConnection.SpatialIndexOptions' = ...) -> None: ...
    def vacuum(self, schema: str, name: str) -> None: ...
    def execSql(self, sql: str, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
    def sqlOptions(self, layerSource: str) -> 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions': ...
    def createSqlVectorLayer(self, options: 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions') -> QgsVectorLayer: ...
    def executeSql(self, sql: str, feedback: typing.Optional[QgsFeedback] = ...) -> typing.Any: ...
    def renameSchema(self, name: str, newName: str) -> None: ...
    def renameField(self, schema: str, tableName: str, name: str, newName: str) -> None: ...
    def addField(self, field: QgsField, schema: str, tableName: str) -> None: ...
    def deleteField(self, fieldName: str, schema: str, tableName: str, force: bool = ...) -> None: ...
    def dropSchema(self, name: str, force: bool = ...) -> None: ...
    def createSchema(self, name: str) -> None: ...
    def renameRasterTable(self, schema: str, name: str, newName: str) -> None: ...
    def renameVectorTable(self, schema: str, name: str, newName: str) -> None: ...
    def dropRasterTable(self, schema: str, name: str) -> None: ...
    def dropVectorTable(self, schema: str, name: str) -> None: ...
    def tableExists(self, schema: str, name: str) -> bool: ...
    def createVectorTable(self, schema: str, name: str, fields: QgsFields, wkbType: Qgis.WkbType, srs: QgsCoordinateReferenceSystem, overwrite: bool, options: typing.Dict[str, typing.Any]) -> None: ...
    def tableUri(self, schema: str, name: str) -> str: ...
    def sqlLayerDefinitionCapabilities(self) -> Qgis.SqlLayerDefinitionCapabilities: ...
    def geometryColumnCapabilities(self) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
    def capabilities2(self) -> Qgis.DatabaseProviderConnectionCapabilities2: ...
    def capabilities(self) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...


class QgsMeshDriverMetadata(PyQt5.sip.wrapper):

    class MeshDriverCapability(int):
        CanWriteFaceDatasets = ... # type: QgsMeshDriverMetadata.MeshDriverCapability
        CanWriteVertexDatasets = ... # type: QgsMeshDriverMetadata.MeshDriverCapability
        CanWriteEdgeDatasets = ... # type: QgsMeshDriverMetadata.MeshDriverCapability
        CanWriteMeshData = ... # type: QgsMeshDriverMetadata.MeshDriverCapability

    class MeshDriverCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMeshDriverMetadata.MeshDriverCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, description: str, capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: str) -> None: ...
    @typing.overload
    def __init__(self, name: str, description: str, capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: str, writeMeshFrameOnFileSuffix: str, maxVerticesPerface: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDriverMetadata') -> None: ...

    def maximumVerticesCountPerFace(self) -> int: ...
    def writeMeshFrameOnFileSuffix(self) -> str: ...
    def writeDatasetOnFileSuffix(self) -> str: ...
    def description(self) -> str: ...
    def name(self) -> str: ...
    def capabilities(self) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...


class QgsProviderMetadata(QtCore.QObject):

    class ProviderCapability(int):
        FileBasedUris = ... # type: QgsProviderMetadata.ProviderCapability
        SaveLayerMetadata = ... # type: QgsProviderMetadata.ProviderCapability
        ParallelCreateProvider = ... # type: QgsProviderMetadata.ProviderCapability

    class ProviderMetadataCapability(int):
        PriorityForUri = ... # type: QgsProviderMetadata.ProviderMetadataCapability
        LayerTypesForUri = ... # type: QgsProviderMetadata.ProviderMetadataCapability
        QuerySublayers = ... # type: QgsProviderMetadata.ProviderMetadataCapability
        CreateDatabase = ... # type: QgsProviderMetadata.ProviderMetadataCapability

    class ProviderMetadataCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderMetadata.ProviderMetadataCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProviderCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderMetadata.ProviderCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, key: str, description: str, library: str = ...) -> None: ...

    def connectionChanged(self, name: str) -> None: ...
    def connectionDeleted(self, name: str) -> None: ...
    def connectionCreated(self, name: str) -> None: ...
    def __repr__(self) -> typing.Any: ...
    def saveConnection(self, connection: QgsAbstractProviderConnection, name: str) -> None: ...
    def deleteConnection(self, name: str) -> None: ...
    @typing.overload
    def createConnection(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> QgsAbstractProviderConnection: ...
    @typing.overload
    def createConnection(self, name: str) -> QgsAbstractProviderConnection: ...
    def findConnection(self, name: str, cached: bool = ...) -> QgsAbstractProviderConnection: ...
    def dbConnections(self, cached: bool = ...) -> typing.Any: ...
    def connections(self, cached: bool = ...) -> typing.Any: ...
    def createTransaction(self, connString: str) -> QgsTransaction: ...
    def createDb(self, dbPath: str, errCause: str) -> bool: ...
    def saveLayerMetadata(self, uri: str, metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStoredStyle(self, uri: str, styleName: str, errCause: str) -> str: ...
    def loadStyle(self, uri: str, errCause: str) -> str: ...
    def saveStyle(self, uri: str, qmlStyle: str, sldStyle: str, styleName: str, styleDescription: str, uiFileContent: str, useAsDefault: bool, errCause: str) -> bool: ...
    def deleteStyleById(self, uri: str, styleId: str, errCause: str) -> bool: ...
    def getStyleById(self, uri: str, styleId: str, errCause: str) -> str: ...
    def styleExists(self, uri: str, styleId: str) -> typing.Tuple[bool, str]: ...
    def listStyles(self, uri: str, ids: typing.Iterable[str], names: typing.Iterable[str], descriptions: typing.Iterable[str], errCause: str) -> int: ...
    def dataItemProviders(self) -> typing.List[QgsDataItemProvider]: ...
    def relativeToAbsoluteUri(self, uri: str, context: QgsReadWriteContext) -> str: ...
    def absoluteToRelativeUri(self, uri: str, context: QgsReadWriteContext) -> str: ...
    def encodeUri(self, parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, uri: str) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self) -> typing.List[typing.Tuple[str, str]]: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, fileName: str, driverName: str, crs: QgsCoordinateReferenceSystem) -> bool: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, uri: str, crs: QgsCoordinateReferenceSystem) -> bool: ...
    def createRasterDataProvider(self, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def createDatabase(self, uri: str) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def boolParameter(uri: typing.Dict[str, typing.Any], parameter: str, defaultValue: bool = ...) -> bool: ...
    @staticmethod
    def setBoolParameter(uri: typing.Dict[str, typing.Any], parameter: str, value: typing.Any) -> None: ...
    def createProvider(self, uri: str, options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> QgsDataProvider: ...
    def suggestGroupNameForUri(self, uri: str) -> str: ...
    def querySublayers(self, uri: str, flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def sidecarFilesForUri(self, uri: str) -> typing.List[str]: ...
    def uriIsBlocklisted(self, uri: str) -> bool: ...
    def validLayerTypesForUri(self, uri: str) -> typing.List[Qgis.LayerType]: ...
    def priorityForUri(self, uri: str) -> int: ...
    def meshDriversMetadata(self) -> typing.List[QgsMeshDriverMetadata]: ...
    def filters(self, type: Qgis.FileFilterType) -> str: ...
    def cleanupProvider(self) -> None: ...
    def initProvider(self) -> None: ...
    def library(self) -> str: ...
    def supportedLayerTypes(self) -> typing.List[Qgis.LayerType]: ...
    def providerCapabilities(self) -> 'QgsProviderMetadata.ProviderCapabilities': ...
    def capabilities(self) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def key(self) -> str: ...


class QgsProviderRegistry(PyQt5.sip.wrapper):

    class WidgetMode(int):
        None_ = ... # type: QgsProviderRegistry.WidgetMode
        Embedded = ... # type: QgsProviderRegistry.WidgetMode
        Manager = ... # type: QgsProviderRegistry.WidgetMode

    class ProviderCandidateDetails(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, metadata: QgsProviderMetadata, layerTypes: typing.Iterable[Qgis.LayerType]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.ProviderCandidateDetails') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def layerTypes(self) -> typing.List[Qgis.LayerType]: ...
        def metadata(self) -> QgsProviderMetadata: ...

    class UnusableUriDetails(PyQt5.sip.wrapper):

        detailedWarning = ... # type: str
        layerTypes = ... # type: typing.Iterable[Qgis.LayerType]
        uri = ... # type: str
        warning = ... # type: str

        @typing.overload
        def __init__(self, uri: str = ..., warning: str = ..., layerTypes: typing.Iterable[Qgis.LayerType] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.UnusableUriDetails') -> None: ...

        def __repr__(self) -> typing.Any: ...

    class UnusableUriHandlerInterface(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.UnusableUriHandlerInterface') -> None: ...

        def details(self, uri: str) -> 'QgsProviderRegistry.UnusableUriDetails': ...
        def matchesUri(self, uri: str) -> bool: ...

    def __init__(self, a0: 'QgsProviderRegistry') -> None: ...

    def registerProvider(self, providerMetadata: QgsProviderMetadata) -> bool: ...
    def registerGuis(self, widget: QtWidgets.QWidget) -> None: ...
    def protocolDrivers(self) -> str: ...
    def directoryDrivers(self) -> str: ...
    def databaseDrivers(self) -> str: ...
    def fileVectorTileFilters(self) -> str: ...
    def filePointCloudFilters(self) -> str: ...
    def fileMeshDatasetFilters(self) -> str: ...
    def fileMeshFilters(self) -> str: ...
    def fileRasterFilters(self) -> str: ...
    def fileVectorFilters(self) -> str: ...
    def querySublayers(self, uri: str, flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def uriIsBlocklisted(self, uri: str) -> bool: ...
    def shouldDeferUriForOtherProviders(self, uri: str, providerKey: str) -> bool: ...
    def handleUnusableUri(self, uri: str) -> typing.Tuple[bool, 'QgsProviderRegistry.UnusableUriDetails']: ...
    def registerUnusableUriHandler(self, handler: 'QgsProviderRegistry.UnusableUriHandlerInterface') -> bool: ...
    def preferredProvidersForUri(self, uri: str) -> typing.List['QgsProviderRegistry.ProviderCandidateDetails']: ...
    def providersForLayerType(self, type: Qgis.LayerType) -> typing.Set[str]: ...
    def providerMetadata(self, providerKey: str) -> QgsProviderMetadata: ...
    def providerList(self) -> typing.List[str]: ...
    def createProviderLibrary(self, providerKey: str) -> QtCore.QLibrary: ...
    def function(self, providerKey: str, functionName: str) -> PyQt5.sip.voidptr: ...
    def createTransaction(self, providerKey: str, connString: str) -> QgsTransaction: ...
    def createDb(self, providerKey: str, dbPath: str, errCause: str) -> bool: ...
    def saveLayerMetadata(self, providerKey: str, uri: str, metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStoredStyle(self, providerKey: str, uri: str, styleName: str, errCause: str) -> str: ...
    def loadStyle(self, providerKey: str, uri: str, errCause: str) -> str: ...
    def saveStyle(self, providerKey: str, uri: str, qmlStyle: str, sldStyle: str, styleName: str, styleDescription: str, uiFileContent: str, useAsDefault: bool, errCause: str) -> bool: ...
    def deleteStyleById(self, providerKey: str, uri: str, styleId: str, errCause: str) -> bool: ...
    def getStyleById(self, providerKey: str, uri: str, styleId: str, errCause: str) -> str: ...
    def styleExists(self, providerKey: str, uri: str, styleId: str) -> typing.Tuple[bool, str]: ...
    def listStyles(self, providerKey: str, uri: str, ids: typing.Iterable[str], names: typing.Iterable[str], descriptions: typing.Iterable[str], errCause: str) -> int: ...
    def dataItemProviders(self, providerKey: str) -> typing.List[QgsDataItemProvider]: ...
    def createSelectionWidget(self, providerKey: str, parent: typing.Optional[QtWidgets.QWidget] = ..., fl: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ..., widgetMode: 'QgsProviderRegistry.WidgetMode' = ...) -> QtWidgets.QWidget: ...
    def relativeToAbsoluteUri(self, providerKey: str, uri: str, context: QgsReadWriteContext) -> str: ...
    def absoluteToRelativeUri(self, providerKey: str, uri: str, context: QgsReadWriteContext) -> str: ...
    def encodeUri(self, providerKey: str, parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, providerKey: str, uri: str) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self, providerKey: str) -> typing.List[typing.Tuple[str, str]]: ...
    def createRasterDataProvider(self, providerKey: str, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def providerCapabilities(self, providerKey: str) -> int: ...
    def createProvider(self, providerKey: str, dataSource: str, options: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> QgsDataProvider: ...
    def setLibraryDirectory(self, path: QtCore.QDir) -> None: ...
    def libraryDirectory(self) -> QtCore.QDir: ...
    def pluginList(self, asHtml: bool = ...) -> str: ...
    def library(self, providerKey: str) -> str: ...
    @staticmethod
    def instance(pluginPath: str = ...) -> 'QgsProviderRegistry': ...


class QgsProviderSqlQueryBuilder(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProviderSqlQueryBuilder') -> None: ...

    def quoteIdentifier(self, identifier: str) -> str: ...
    def createLimitQueryForTable(self, schema: str, name: str, limit: int = ...) -> str: ...


class QgsProviderSublayerDetails(PyQt5.sip.wrapper):

    class LayerOptions(PyQt5.sip.wrapper):

        loadAllStoredStyle = ... # type: bool
        loadDefaultStyle = ... # type: bool
        transformContext = ... # type: QgsCoordinateTransformContext

        @typing.overload
        def __init__(self, transformContext: QgsCoordinateTransformContext) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderSublayerDetails.LayerOptions') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProviderSublayerDetails') -> None: ...

    def toMimeUri(self) -> QgsMimeDataUtils.Uri: ...
    def skippedContainerScan(self) -> bool: ...
    def setSkippedContainerScan(self, skipped: bool) -> None: ...
    def setLayerNumber(self, number: int) -> None: ...
    def layerNumber(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def setGeometryColumnName(self, name: str) -> None: ...
    def geometryColumnName(self) -> str: ...
    def setWkbType(self, type: Qgis.WkbType) -> None: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def setFeatureCount(self, count: int) -> None: ...
    def featureCount(self) -> int: ...
    def setPath(self, path: typing.Iterable[str]) -> None: ...
    def path(self) -> typing.List[str]: ...
    def setDriverName(self, driver: str) -> None: ...
    def driverName(self) -> str: ...
    def setFlags(self, newFlags: typing.Union[Qgis.SublayerFlags, Qgis.SublayerFlag]) -> None: ...
    def flags(self) -> Qgis.SublayerFlags: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def toLayer(self, options: 'QgsProviderSublayerDetails.LayerOptions') -> QgsMapLayer: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def setType(self, type: Qgis.LayerType) -> None: ...
    def type(self) -> Qgis.LayerType: ...
    def setProviderKey(self, key: str) -> None: ...
    def providerKey(self) -> str: ...


class QgsProviderSublayerModel(QtCore.QAbstractItemModel):

    class Column(int):
        Name = ... # type: QgsProviderSublayerModel.Column
        Description = ... # type: QgsProviderSublayerModel.Column

    class Role(int):
        ProviderKey = ... # type: QgsProviderSublayerModel.Role
        LayerType = ... # type: QgsProviderSublayerModel.Role
        Uri = ... # type: QgsProviderSublayerModel.Role
        Name = ... # type: QgsProviderSublayerModel.Role
        Description = ... # type: QgsProviderSublayerModel.Role
        Path = ... # type: QgsProviderSublayerModel.Role
        FeatureCount = ... # type: QgsProviderSublayerModel.Role
        WkbType = ... # type: QgsProviderSublayerModel.Role
        GeometryColumnName = ... # type: QgsProviderSublayerModel.Role
        LayerNumber = ... # type: QgsProviderSublayerModel.Role
        IsNonLayerItem = ... # type: QgsProviderSublayerModel.Role
        NonLayerItemType = ... # type: QgsProviderSublayerModel.Role
        Flags = ... # type: QgsProviderSublayerModel.Role

    class NonLayerItem(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderSublayerModel.NonLayerItem') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def setIcon(self, icon: QtGui.QIcon) -> None: ...
        def icon(self) -> QtGui.QIcon: ...
        def setUri(self, uri: str) -> None: ...
        def uri(self) -> str: ...
        def setDescription(self, description: str) -> None: ...
        def description(self) -> str: ...
        def setName(self, name: str) -> None: ...
        def name(self) -> str: ...
        def setType(self, type: str) -> None: ...
        def type(self) -> str: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def addNonLayerItem(self, item: 'QgsProviderSublayerModel.NonLayerItem') -> None: ...
    def indexToNonLayerItem(self, index: QtCore.QModelIndex) -> 'QgsProviderSublayerModel.NonLayerItem': ...
    def indexToSublayer(self, index: QtCore.QModelIndex) -> QgsProviderSublayerDetails: ...
    def sublayerDetails(self) -> typing.List[QgsProviderSublayerDetails]: ...
    def setSublayerDetails(self, details: typing.Iterable[QgsProviderSublayerDetails]) -> None: ...


class QgsProviderSublayerProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, source_left: QtCore.QModelIndex, source_right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def setIncludeEmptyLayers(self, include: bool) -> None: ...
    def includeEmptyLayers(self) -> bool: ...
    def setIncludeSystemTables(self, include: bool) -> None: ...
    def includeSystemTables(self) -> bool: ...
    def setFilterString(self, filter: str) -> None: ...
    def filterString(self) -> str: ...


class QgsProviderSublayerTask(QgsTask):

    @typing.overload
    def __init__(self, uri: str, includeSystemTables: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, uri: str, providerKey: str, includeSystemTables: bool = ...) -> None: ...

    def run(self) -> bool: ...
    def cancel(self) -> None: ...
    def results(self) -> typing.List[QgsProviderSublayerDetails]: ...


class QgsProviderUtils(PyQt5.sip.wrapper):

    class SublayerCompletenessFlag(int):
        IgnoreUnknownFeatureCount = ... # type: QgsProviderUtils.SublayerCompletenessFlag
        IgnoreUnknownGeometryType = ... # type: QgsProviderUtils.SublayerCompletenessFlag

    class SublayerCompletenessFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderUtils.SublayerCompletenessFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProviderUtils') -> None: ...

    @staticmethod
    def suggestLayerNameFromFilePath(path: str) -> str: ...
    @staticmethod
    def sublayerDetailsAreIncomplete(details: typing.Iterable[QgsProviderSublayerDetails], flags: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag'] = ...) -> bool: ...


class QgsArcGisPortalUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsArcGisPortalUtils') -> None: ...

    @typing.overload
    @staticmethod
    def retrieveGroupItemsOfType(contentUrl: str, groupId: str, authcfg: str, itemTypes: typing.Iterable[int], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupItemsOfType(contentUrl: str, groupId: str, authcfg: str, itemTypes: typing.Iterable[int], requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: str, groupId: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: str, groupId: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: str, user: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: str, user: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: str, user: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.Dict[str, typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: str, user: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.Dict[str, typing.Any], str, str]: ...


class QgsArcGisRestContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsArcGisRestContext') -> None: ...

    def objectIdFieldName(self) -> str: ...
    def setObjectIdFieldName(self, name: str) -> None: ...
    def timeZone(self) -> QtCore.QTimeZone: ...
    def setTimeZone(self, zone: QtCore.QTimeZone) -> None: ...


class QgsArcGisRestUtils(PyQt5.sip.wrapper):

    class FeatureToJsonFlag(int):
        IncludeGeometry = ... # type: QgsArcGisRestUtils.FeatureToJsonFlag
        IncludeNonObjectIdAttributes = ... # type: QgsArcGisRestUtils.FeatureToJsonFlag

    class FeatureToJsonFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsArcGisRestUtils.FeatureToJsonFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsArcGisRestUtils') -> None: ...

    @staticmethod
    def serviceTypeFromString(type: str) -> Qgis.ArcGisRestServiceType: ...
    @staticmethod
    def fieldDefinitionToJson(field: QgsField) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantToAttributeValue(variant: typing.Any, expectedType: QtCore.QVariant.Type, context: QgsArcGisRestContext) -> typing.Any: ...
    @staticmethod
    def featureToJson(feature: QgsFeature, context: QgsArcGisRestContext, crs: QgsCoordinateReferenceSystem = ..., flags: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag'] = ...) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def crsToJson(crs: QgsCoordinateReferenceSystem) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def geometryToJson(geometry: QgsGeometry, context: QgsArcGisRestContext, crs: QgsCoordinateReferenceSystem = ...) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def convertDateTime(value: typing.Any) -> QtCore.QDateTime: ...
    @staticmethod
    def convertFillStyle(style: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def convertLineStyle(style: str) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def convertColor(data: typing.Any) -> QtGui.QColor: ...
    @staticmethod
    def convertLabelingExpression(string: str) -> str: ...
    @staticmethod
    def convertLabeling(data: typing.Iterable[typing.Any]) -> QgsAbstractVectorLayerLabeling: ...
    @staticmethod
    def convertRenderer(rendererData: typing.Dict[str, typing.Any]) -> 'QgsFeatureRenderer': ...
    @staticmethod
    def convertSymbol(definition: typing.Dict[str, typing.Any]) -> 'QgsSymbol': ...
    @staticmethod
    def convertSpatialReference(spatialReferenceMap: typing.Dict[str, typing.Any]) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def convertGeometry(geometry: typing.Dict[str, typing.Any], esriGeometryType: str, hasM: bool, hasZ: bool) -> typing.Tuple[QgsAbstractGeometry, QgsCoordinateReferenceSystem]: ...
    @staticmethod
    def convertGeometryType(type: str) -> Qgis.WkbType: ...
    @staticmethod
    def convertFieldType(type: str) -> QtCore.QVariant.Type: ...


class QgsMemoryProviderUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMemoryProviderUtils') -> None: ...

    @staticmethod
    def createMemoryLayer(name: str, fields: QgsFields, geometryType: Qgis.WkbType = ..., crs: QgsCoordinateReferenceSystem = ..., loadDefaultStyle: bool = ...) -> QgsVectorLayer: ...


class QgsRasterAttributeTable(PyQt5.sip.wrapper):

    class UsageInformation(PyQt5.sip.wrapper):

        allowedTypes = ... # type: typing.Iterable[QtCore.QVariant.Type]
        description = ... # type: str
        isColor = ... # type: bool
        isRamp = ... # type: bool
        maybeClass = ... # type: bool
        required = ... # type: bool
        supported = ... # type: bool
        unique = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterAttributeTable.UsageInformation') -> None: ...

    class Field(PyQt5.sip.wrapper):

        name = ... # type: str
        type = ... # type: QtCore.QVariant.Type
        usage = ... # type: Qgis.RasterAttributeTableFieldUsage

        @typing.overload
        def __init__(self, name: str, usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QVariant.Type) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterAttributeTable.Field') -> None: ...

        def isRamp(self) -> bool: ...
        def isColor(self) -> bool: ...

    class MinMaxClass(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        minMaxValues = ... # type: typing.Iterable[float]
        name = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterAttributeTable.MinMaxClass') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterAttributeTable') -> None: ...

    @staticmethod
    def usageInformation() -> typing.Dict[int, 'QgsRasterAttributeTable.UsageInformation']: ...
    @staticmethod
    def createFromRaster(rasterLayer: 'QgsRasterLayer') -> typing.Tuple['QgsRasterAttributeTable', int]: ...
    @staticmethod
    def valueAndColorFieldUsages() -> typing.List[Qgis.RasterAttributeTableFieldUsage]: ...
    @staticmethod
    def usageName(fieldusage: Qgis.RasterAttributeTableFieldUsage) -> str: ...
    def filePath(self) -> str: ...
    @staticmethod
    def guessFieldUsage(name: str, type: QtCore.QVariant.Type) -> Qgis.RasterAttributeTableFieldUsage: ...
    def orderedRows(self) -> typing.Any: ...
    def createRenderer(self, provider: 'QgsRasterDataProvider', bandNumber: int, classificationColumn: int = ...) -> 'QgsRasterRenderer': ...
    def colorRamp(self, labelColumn: int = ...) -> typing.Tuple[QgsGradientColorRamp, typing.List[str]]: ...
    def minMaxClasses(self, classificationColumn: int = ...) -> typing.List['QgsRasterAttributeTable.MinMaxClass']: ...
    def row(self, matchValue: float) -> typing.List[typing.Any]: ...
    def maximumValue(self) -> float: ...
    def minimumValue(self) -> float: ...
    def value(self, row: int, column: int) -> typing.Any: ...
    def setValue(self, row: int, column: int, value: typing.Any) -> bool: ...
    def fieldsByUsage(self, fieldUsage: Qgis.RasterAttributeTableFieldUsage) -> typing.List['QgsRasterAttributeTable.Field']: ...
    def fieldByName(self, name: str) -> typing.Tuple['QgsRasterAttributeTable.Field', bool]: ...
    def data(self) -> typing.Any: ...
    def readFromFile(self, path: str) -> typing.Tuple[bool, str]: ...
    def writeToFile(self, path: str) -> typing.Tuple[bool, str]: ...
    def appendRow(self, data: typing.Iterable[typing.Any]) -> typing.Tuple[bool, str]: ...
    def removeRow(self, position: int = ...) -> typing.Tuple[bool, str]: ...
    def insertRow(self, position: int, rowData: typing.Iterable[typing.Any]) -> typing.Tuple[bool, str]: ...
    def removeField(self, name: str) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def appendField(self, name: str, usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QVariant.Type) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def appendField(self, field: 'QgsRasterAttributeTable.Field') -> typing.Tuple[bool, str]: ...
    def insertRamp(self, position: int) -> typing.Tuple[bool, str]: ...
    def setFieldUsage(self, fieldIndex: int, usage: Qgis.RasterAttributeTableFieldUsage) -> bool: ...
    def insertColor(self, position: int) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def insertField(self, position: int, field: 'QgsRasterAttributeTable.Field') -> typing.Tuple[bool, str]: ...
    @typing.overload
    def insertField(self, position: int, name: str, usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QVariant.Type) -> typing.Tuple[bool, str]: ...
    def isValid(self) -> typing.Tuple[bool, str]: ...
    def setDirty(self, isDirty: bool) -> None: ...
    def isDirty(self) -> bool: ...
    def qgisFeatures(self) -> typing.List[QgsFeature]: ...
    def qgisFields(self) -> QgsFields: ...
    def fields(self) -> typing.List['QgsRasterAttributeTable.Field']: ...
    def ramp(self, row: int) -> QgsGradientColorRamp: ...
    def color(self, row: int) -> QtGui.QColor: ...
    def usages(self) -> typing.List[int]: ...
    def setRamp(self, row: int, colorMin: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], colorMax: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> bool: ...
    def hasRamp(self) -> bool: ...
    def setColor(self, row: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> bool: ...
    def hasColor(self) -> bool: ...
    def type(self) -> Qgis.RasterAttributeTableType: ...


class QgsRasterResampler(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def clone(self) -> 'QgsRasterResampler': ...
    def type(self) -> str: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...


class QgsRasterResamplerV2(QgsRasterResampler):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterResamplerV2') -> None: ...

    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...


class QgsBilinearRasterResampler(QgsRasterResamplerV2):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBilinearRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def clone(self) -> 'QgsBilinearRasterResampler': ...
    def type(self) -> str: ...
    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...


class QgsRasterInterface(PyQt5.sip.wrapper):

    class Capability(int):
        NoCapabilities = ... # type: QgsRasterInterface.Capability
        Size = ... # type: QgsRasterInterface.Capability
        Create = ... # type: QgsRasterInterface.Capability
        Remove = ... # type: QgsRasterInterface.Capability
        BuildPyramids = ... # type: QgsRasterInterface.Capability
        Identify = ... # type: QgsRasterInterface.Capability
        IdentifyValue = ... # type: QgsRasterInterface.Capability
        IdentifyText = ... # type: QgsRasterInterface.Capability
        IdentifyHtml = ... # type: QgsRasterInterface.Capability
        IdentifyFeature = ... # type: QgsRasterInterface.Capability
        Prefetch = ... # type: QgsRasterInterface.Capability

    def __init__(self, input: typing.Optional['QgsRasterInterface'] = ...) -> None: ...

    def initStatistics(self, statistics: 'QgsRasterBandStats', bandNo: int, stats: int = ..., boundingBox: QgsRectangle = ..., binCount: int = ...) -> None: ...
    def initHistogram(self, histogram: 'QgsRasterHistogram', bandNo: int, binCount: int, minimum: typing.Any = ..., maximum: typing.Any = ..., boundingBox: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ...) -> None: ...
    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def cumulativeCut(self, bandNo: int, lowerCount: float, upperCount: float, extent: QgsRectangle = ..., sampleSize: int = ...) -> typing.Tuple[float, float]: ...
    def hasHistogram(self, bandNo: int, binCount: int, minimum: typing.Any = ..., maximum: typing.Any = ..., extent: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ...) -> bool: ...
    def histogram(self, bandNo: int, binCount: int = ..., minimum: typing.Any = ..., maximum: typing.Any = ..., extent: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterHistogram': ...
    def hasStatistics(self, bandNo: int, stats: int = ..., extent: QgsRectangle = ..., sampleSize: int = ...) -> bool: ...
    def bandStatistics(self, bandNo: int, stats: int = ..., extent: QgsRectangle = ..., sampleSize: int = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBandStats': ...
    def sourceInput(self) -> 'QgsRasterInterface': ...
    def setOn(self, on: bool) -> None: ...
    def on(self) -> bool: ...
    def input(self) -> 'QgsRasterInterface': ...
    def setInput(self, input: 'QgsRasterInterface') -> bool: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def displayBandName(self, bandNumber: int) -> str: ...
    def colorInterpretationName(self, bandNumber: int) -> str: ...
    def generateBandName(self, bandNumber: int) -> str: ...
    def ySize(self) -> int: ...
    def xSize(self) -> int: ...
    def yBlockSize(self) -> int: ...
    def xBlockSize(self) -> int: ...
    def bandCount(self) -> int: ...
    def dataTypeSize(self, bandNo: int) -> int: ...
    def extent(self) -> QgsRectangle: ...
    def sourceDataType(self, bandNo: int) -> Qgis.DataType: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def capabilitiesString(self) -> str: ...
    def capabilities(self) -> int: ...
    def clone(self) -> 'QgsRasterInterface': ...


class QgsBrightnessContrastFilter(QgsRasterInterface):

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def gamma(self) -> float: ...
    def setGamma(self, gamma: float) -> None: ...
    def contrast(self) -> int: ...
    def setContrast(self, contrast: int) -> None: ...
    def brightness(self) -> int: ...
    def setBrightness(self, brightness: int) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsBrightnessContrastFilter': ...


class QgsContrastEnhancementFunction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, f: 'QgsContrastEnhancementFunction') -> None: ...

    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...
    def isValueInDisplayableRange(self, value: float) -> bool: ...
    def enhance(self, value: float) -> int: ...


class QgsClipToMinMaxEnhancement(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClipToMinMaxEnhancement') -> None: ...

    def isValueInDisplayableRange(self, a0: float) -> bool: ...
    def enhance(self, a0: float) -> int: ...


class QgsRasterShaderFunction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, minimumValue: float = ..., maximumValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterShaderFunction') -> None: ...

    def setLabelPrecision(self, labelPrecision: int) -> None: ...
    def labelPrecision(self) -> int: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def maximumValue(self) -> float: ...
    def minimumValue(self) -> float: ...
    def minimumMaximumRange(self) -> float: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...


class QgsColorRampShader(QgsRasterShaderFunction):

    class ClassificationMode(int):
        Continuous = ... # type: QgsColorRampShader.ClassificationMode
        EqualInterval = ... # type: QgsColorRampShader.ClassificationMode
        Quantile = ... # type: QgsColorRampShader.ClassificationMode

    class Type(int):
        Interpolated = ... # type: QgsColorRampShader.Type
        Discrete = ... # type: QgsColorRampShader.Type
        Exact = ... # type: QgsColorRampShader.Type

    class ColorRampItem(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: str
        value = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, val: float, col: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], lbl: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsColorRampShader.ColorRampItem') -> None: ...

    @typing.overload
    def __init__(self, minimumValue: float = ..., maximumValue: float = ..., colorRamp: typing.Optional[QgsColorRamp] = ..., type: 'QgsColorRampShader.Type' = ..., classificationMode: 'QgsColorRampShader.ClassificationMode' = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampShader') -> None: ...

    def setLegendSettings(self, settings: QgsColorRampLegendNodeSettings) -> None: ...
    def legendSettings(self) -> QgsColorRampLegendNodeSettings: ...
    def clip(self) -> bool: ...
    def setClip(self, clip: bool) -> None: ...
    def classificationMode(self) -> 'QgsColorRampShader.ClassificationMode': ...
    def setClassificationMode(self, classificationMode: 'QgsColorRampShader.ClassificationMode') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def classifyColorRampV2(self, band: int = ..., extent: QgsRectangle = ..., input: typing.Optional[QgsRasterInterface] = ...) -> None: ...
    def classifyColorRamp(self, classes: int = ..., band: int = ..., extent: QgsRectangle = ..., input: typing.Optional[QgsRasterInterface] = ...) -> None: ...
    def setSourceColorRamp(self, colorramp: QgsColorRamp) -> None: ...
    def createColorRamp(self) -> QgsColorRamp: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def setColorRampType(self, colorRampType: 'QgsColorRampShader.Type') -> None: ...
    @typing.overload
    def setColorRampType(self, type: str) -> None: ...
    def setColorRampItemList(self, list: typing.Iterable['QgsColorRampShader.ColorRampItem']) -> None: ...
    def colorRampTypeAsQString(self) -> str: ...
    def colorRampType(self) -> 'QgsColorRampShader.Type': ...
    def colorRampItemList(self) -> typing.List['QgsColorRampShader.ColorRampItem']: ...


class QgsContrastEnhancement(PyQt5.sip.wrapper):

    class ContrastEnhancementAlgorithm(int):
        NoEnhancement = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
        StretchToMinimumMaximum = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
        StretchAndClipToMinimumMaximum = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
        ClipToMinimumMaximum = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
        UserDefinedEnhancement = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm

    @typing.overload
    def __init__(self, datatype: Qgis.DataType = ...) -> None: ...
    @typing.overload
    def __init__(self, ce: 'QgsContrastEnhancement') -> None: ...

    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> None: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setMinimumValue(self, value: float, generateTable: bool = ...) -> None: ...
    def setMaximumValue(self, value: float, generateTable: bool = ...) -> None: ...
    def setContrastEnhancementFunction(self, function: QgsContrastEnhancementFunction) -> None: ...
    def setContrastEnhancementAlgorithm(self, algorithm: 'QgsContrastEnhancement.ContrastEnhancementAlgorithm', generateTable: bool = ...) -> None: ...
    def isValueInDisplayableRange(self, value: float) -> bool: ...
    def enhanceContrast(self, value: float) -> int: ...
    def contrastEnhancementAlgorithm(self) -> 'QgsContrastEnhancement.ContrastEnhancementAlgorithm': ...
    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...
    @staticmethod
    def contrastEnhancementAlgorithmFromString(contrastEnhancementString: str) -> 'QgsContrastEnhancement.ContrastEnhancementAlgorithm': ...
    @staticmethod
    def contrastEnhancementAlgorithmString(algorithm: 'QgsContrastEnhancement.ContrastEnhancementAlgorithm') -> str: ...
    @staticmethod
    def minimumValuePossible(dataType: Qgis.DataType) -> float: ...
    @staticmethod
    def maximumValuePossible(dataType: Qgis.DataType) -> float: ...


class QgsCubicRasterResampler(QgsRasterResamplerV2):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCubicRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def type(self) -> str: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...
    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...
    def clone(self) -> 'QgsCubicRasterResampler': ...


class QgsExifTools(PyQt5.sip.wrapper):

    class GeoTagDetails(PyQt5.sip.wrapper):

        elevation = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExifTools.GeoTagDetails') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExifTools') -> None: ...

    @staticmethod
    def tagImage(imagePath: str, tag: str, value: typing.Any) -> bool: ...
    @staticmethod
    def geoTagImage(imagePath: str, location: QgsPointXY, details: 'QgsExifTools.GeoTagDetails' = ...) -> bool: ...
    @staticmethod
    def hasGeoTag(imagePath: str) -> bool: ...
    @staticmethod
    def getGeoTag(imagePath: str) -> typing.Tuple[QgsPoint, bool]: ...
    @staticmethod
    def readTag(imagePath: str, key: str) -> typing.Any: ...
    @staticmethod
    def readTags(imagePath: str) -> typing.Dict[str, typing.Any]: ...


class QgsRasterRenderer(QgsRasterInterface):

    NODATA_COLOR = ... # type: int

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ..., type: str = ...) -> None: ...

    def renderColorForNodataPixel(self) -> int: ...
    def _writeXml(self, doc: QtXml.QDomDocument, rasterRendererElem: QtXml.QDomElement) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def setMinMaxOrigin(self, origin: 'QgsRasterMinMaxOrigin') -> None: ...
    def minMaxOrigin(self) -> 'QgsRasterMinMaxOrigin': ...
    def usesBands(self) -> typing.List[int]: ...
    def copyCommonProperties(self, other: 'QgsRasterRenderer', copyMinMaxOrigin: bool = ...) -> None: ...
    def readXml(self, rendererElem: QtXml.QDomElement) -> None: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def alphaBand(self) -> int: ...
    def setAlphaBand(self, band: int) -> None: ...
    def rasterTransparency(self) -> 'QgsRasterTransparency': ...
    def setRasterTransparency(self, t: 'QgsRasterTransparency') -> None: ...
    def setNodataColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def nodataColor(self) -> QtGui.QColor: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def usesTransparency(self) -> bool: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def type(self) -> str: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterRenderer': ...


class QgsHillshadeRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int, lightAzimuth: float, lightAltitude: float) -> None: ...

    def setMultiDirectional(self, isMultiDirectional: bool) -> None: ...
    def setZFactor(self, zfactor: float) -> None: ...
    def setAltitude(self, altitude: float) -> None: ...
    def setAzimuth(self, azimuth: float) -> None: ...
    def multiDirectional(self) -> bool: ...
    def zFactor(self) -> float: ...
    def altitude(self) -> float: ...
    def azimuth(self) -> float: ...
    def setBand(self, bandNo: int) -> None: ...
    def band(self) -> int: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsHillshadeRenderer': ...


class QgsHueSaturationFilter(QgsRasterInterface):

    class GrayscaleMode(int):
        GrayscaleOff = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleLightness = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleLuminosity = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleAverage = ... # type: QgsHueSaturationFilter.GrayscaleMode

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def colorizeStrength(self) -> int: ...
    def setColorizeStrength(self, colorizeStrength: int) -> None: ...
    def colorizeColor(self) -> QtGui.QColor: ...
    def setColorizeColor(self, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def colorizeOn(self) -> bool: ...
    def setColorizeOn(self, colorizeOn: bool) -> None: ...
    def grayscaleMode(self) -> 'QgsHueSaturationFilter.GrayscaleMode': ...
    def setGrayscaleMode(self, grayscaleMode: 'QgsHueSaturationFilter.GrayscaleMode') -> None: ...
    def invertColors(self) -> bool: ...
    def setInvertColors(self, invertColors: bool) -> None: ...
    def saturation(self) -> int: ...
    def setSaturation(self, saturation: int) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsHueSaturationFilter': ...


class QgsLinearMinMaxEnhancement(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLinearMinMaxEnhancement') -> None: ...

    def enhance(self, a0: float) -> int: ...


class QgsLinearMinMaxEnhancementWithClip(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLinearMinMaxEnhancementWithClip') -> None: ...

    def isValueInDisplayableRange(self, a0: float) -> bool: ...
    def enhance(self, a0: float) -> int: ...


class QgsMultiBandColorRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, redBand: int, greenBand: int, blueBand: int, redEnhancement: typing.Optional[QgsContrastEnhancement] = ..., greenEnhancement: typing.Optional[QgsContrastEnhancement] = ..., blueEnhancement: typing.Optional[QgsContrastEnhancement] = ...) -> None: ...

    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usesBands(self) -> typing.List[int]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setBlueContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def blueContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setGreenContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def greenContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setRedContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def redContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setBlueBand(self, band: int) -> None: ...
    def blueBand(self) -> int: ...
    def setGreenBand(self, band: int) -> None: ...
    def greenBand(self) -> int: ...
    def setRedBand(self, band: int) -> None: ...
    def redBand(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsMultiBandColorRenderer': ...


class QgsPalettedRasterRenderer(QgsRasterRenderer):

    class Class(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: str
        value = ... # type: float

        @typing.overload
        def __init__(self, value: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., label: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPalettedRasterRenderer.Class') -> None: ...

    class MultiValueClass(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: str
        values = ... # type: typing.Iterable[typing.Any]

        @typing.overload
        def __init__(self, values: typing.Iterable[typing.Any], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., label: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPalettedRasterRenderer.MultiValueClass') -> None: ...

    def __init__(self, input: QgsRasterInterface, bandNumber: int, classes: typing.Iterable['QgsPalettedRasterRenderer.Class']) -> None: ...

    @staticmethod
    def classDataFromRaster(raster: QgsRasterInterface, bandNumber: int, ramp: typing.Optional[QgsColorRamp] = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def classDataToString(classes: typing.Iterable['QgsPalettedRasterRenderer.Class']) -> str: ...
    @staticmethod
    def classDataFromFile(path: str) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def classDataFromString(string: str) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def rasterAttributeTableToClassData(attributeTable: QgsRasterAttributeTable, classificationColumn: int = ..., ramp: typing.Optional[QgsColorRamp] = ...) -> typing.List['QgsPalettedRasterRenderer.MultiValueClass']: ...
    @staticmethod
    def colorTableToClassData(table: typing.Iterable[QgsColorRampShader.ColorRampItem]) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def band(self) -> int: ...
    def setLabel(self, idx: float, label: str) -> None: ...
    def label(self, idx: float) -> str: ...
    def setMultiValueClasses(self, classes: typing.Iterable['QgsPalettedRasterRenderer.MultiValueClass']) -> None: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def multiValueClasses(self) -> typing.List['QgsPalettedRasterRenderer.MultiValueClass']: ...
    def classes(self) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    def nColors(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsPalettedRasterRenderer': ...


class QgsRaster(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRaster') -> None: ...

    @staticmethod
    def representableValue(value: float, dataType: Qgis.DataType) -> float: ...


class QgsRasterBandStats(PyQt5.sip.wrapper):

    class Stats(int):
        None_ = ... # type: QgsRasterBandStats.Stats
        Min = ... # type: QgsRasterBandStats.Stats
        Max = ... # type: QgsRasterBandStats.Stats
        Range = ... # type: QgsRasterBandStats.Stats
        Sum = ... # type: QgsRasterBandStats.Stats
        Mean = ... # type: QgsRasterBandStats.Stats
        StdDev = ... # type: QgsRasterBandStats.Stats
        SumOfSquares = ... # type: QgsRasterBandStats.Stats
        All = ... # type: QgsRasterBandStats.Stats

    bandNumber = ... # type: int
    elementCount = ... # type: int
    extent = ... # type: QgsRectangle
    height = ... # type: int
    maximumValue = ... # type: float
    mean = ... # type: float
    minimumValue = ... # type: float
    range = ... # type: float
    statsGathered = ... # type: int
    stdDev = ... # type: float
    sum = ... # type: float
    sumOfSquares = ... # type: float
    width = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterBandStats') -> None: ...

    def contains(self, s: 'QgsRasterBandStats') -> bool: ...


class QgsRasterBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, dataType: Qgis.DataType, width: int, height: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterBlock') -> None: ...

    def height(self) -> int: ...
    def width(self) -> int: ...
    @staticmethod
    def subRect(extent: QgsRectangle, width: int, height: int, subExtent: QgsRectangle) -> QtCore.QRect: ...
    def toString(self) -> str: ...
    def setError(self, error: QgsError) -> None: ...
    def error(self) -> QgsError: ...
    def applyScaleOffset(self, scale: float, offset: float) -> None: ...
    def applyNoDataValues(self, rangeList: typing.Iterable['QgsRasterRange']) -> None: ...
    def setImage(self, image: QtGui.QImage) -> bool: ...
    def image(self) -> QtGui.QImage: ...
    def convert(self, destDataType: Qgis.DataType) -> bool: ...
    @staticmethod
    def printValue(value: float) -> str: ...
    def setData(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], offset: int = ...) -> None: ...
    def data(self) -> QtCore.QByteArray: ...
    @typing.overload
    def setIsData(self, row: int, column: int) -> None: ...
    @typing.overload
    def setIsData(self, index: int) -> None: ...
    def setIsNoDataExcept(self, exceptRect: QtCore.QRect) -> bool: ...
    @typing.overload
    def setIsNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def setIsNoData(self, index: int) -> bool: ...
    @typing.overload
    def setIsNoData(self) -> bool: ...
    @typing.overload
    def setColor(self, row: int, column: int, color: int) -> bool: ...
    @typing.overload
    def setColor(self, index: int, color: int) -> bool: ...
    @typing.overload
    def setValue(self, row: int, column: int, value: float) -> bool: ...
    @typing.overload
    def setValue(self, index: int, value: float) -> bool: ...
    @typing.overload
    def isNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def isNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def isNoData(self, index: int) -> bool: ...
    @typing.overload
    def color(self, row: int, column: int) -> int: ...
    @typing.overload
    def color(self, index: int) -> int: ...
    @typing.overload
    def value(self, row: int, column: int) -> float: ...
    @typing.overload
    def value(self, index: int) -> float: ...
    @staticmethod
    def valueBytes(dataType: Qgis.DataType, value: float) -> QtCore.QByteArray: ...
    def noDataValue(self) -> float: ...
    def resetNoDataValue(self) -> None: ...
    def setNoDataValue(self, noDataValue: float) -> None: ...
    def hasNoData(self) -> bool: ...
    def hasNoDataValue(self) -> bool: ...
    @staticmethod
    def typeWithNoDataValue(dataType: Qgis.DataType) -> typing.Tuple[Qgis.DataType, float]: ...
    def dataType(self) -> Qgis.DataType: ...
    @staticmethod
    def typeIsColor(type: Qgis.DataType) -> bool: ...
    @staticmethod
    def typeIsNumeric(type: Qgis.DataType) -> bool: ...
    def dataTypeSize(self) -> int: ...
    @staticmethod
    def typeSize(dataType: Qgis.DataType) -> int: ...
    def isEmpty(self) -> bool: ...
    def setValid(self, valid: bool) -> None: ...
    def isValid(self) -> bool: ...
    def reset(self, dataType: Qgis.DataType, width: int, height: int) -> bool: ...


class QgsRasterChecker(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterChecker') -> None: ...

    def runTest(self, verifiedKey: str, verifiedUri: str, expectedKey: str, expectedUri: str) -> bool: ...
    def report(self) -> str: ...


class QgsRasterContourRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface) -> None: ...

    def setDownscale(self, scale: float) -> None: ...
    def downscale(self) -> float: ...
    def setContourIndexSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def contourIndexSymbol(self) -> 'QgsLineSymbol': ...
    def setContourIndexInterval(self, interval: float) -> None: ...
    def contourIndexInterval(self) -> float: ...
    def setContourSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def contourSymbol(self) -> 'QgsLineSymbol': ...
    def setContourInterval(self, interval: float) -> None: ...
    def contourInterval(self) -> float: ...
    def setInputBand(self, band: int) -> None: ...
    def inputBand(self) -> int: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usesBands(self) -> typing.List[int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> QgsRasterBlock: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def clone(self) -> 'QgsRasterContourRenderer': ...


class QgsImageFetcher(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def error(self, msg: str) -> None: ...
    def progress(self, received: int, total: int) -> None: ...
    def finish(self, legend: QtGui.QImage) -> None: ...
    def start(self) -> None: ...


class QgsRasterDataProvider(QgsDataProvider, QgsRasterInterface):

    class ResamplingMethod(int):
        Nearest = ... # type: QgsRasterDataProvider.ResamplingMethod
        Bilinear = ... # type: QgsRasterDataProvider.ResamplingMethod
        Cubic = ... # type: QgsRasterDataProvider.ResamplingMethod
        CubicSpline = ... # type: QgsRasterDataProvider.ResamplingMethod
        Lanczos = ... # type: QgsRasterDataProvider.ResamplingMethod
        Average = ... # type: QgsRasterDataProvider.ResamplingMethod
        Mode = ... # type: QgsRasterDataProvider.ResamplingMethod
        Gauss = ... # type: QgsRasterDataProvider.ResamplingMethod

    class TransformType(int):
        TransformImageToLayer = ... # type: QgsRasterDataProvider.TransformType
        TransformLayerToImage = ... # type: QgsRasterDataProvider.TransformType

    class ProviderCapability(int):
        NoProviderCapabilities = ... # type: QgsRasterDataProvider.ProviderCapability
        ReadLayerMetadata = ... # type: QgsRasterDataProvider.ProviderCapability
        WriteLayerMetadata = ... # type: QgsRasterDataProvider.ProviderCapability
        ProviderHintBenefitsFromResampling = ... # type: QgsRasterDataProvider.ProviderCapability
        ProviderHintCanPerformProviderResampling = ... # type: QgsRasterDataProvider.ProviderCapability
        ReloadData = ... # type: QgsRasterDataProvider.ProviderCapability
        DpiDependentData = ... # type: QgsRasterDataProvider.ProviderCapability
        NativeRasterAttributeTable = ... # type: QgsRasterDataProvider.ProviderCapability

    class ProviderCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterDataProvider.ProviderCapabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VirtualRasterInputLayers(PyQt5.sip.wrapper):

        name = ... # type: str
        provider = ... # type: str
        uri = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterDataProvider.VirtualRasterInputLayers') -> None: ...

    class VirtualRasterParameters(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        extent = ... # type: QgsRectangle
        formula = ... # type: str
        height = ... # type: int
        rInputLayers = ... # type: typing.Iterable['QgsRasterDataProvider.VirtualRasterInputLayers']
        width = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterDataProvider.VirtualRasterParameters') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, uri: str, providerOptions: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def copyBaseSettings(self, other: 'QgsRasterDataProvider') -> None: ...
    def userNoDataValuesContains(self, bandNo: int, value: float) -> bool: ...
    def statusChanged(self, a0: str) -> None: ...
    def readNativeAttributeTable(self) -> typing.Tuple[bool, str]: ...
    def writeNativeAttributeTable(self) -> typing.Tuple[bool, str]: ...
    def readFileBasedAttributeTable(self, bandNumber: int, path: str) -> typing.Tuple[bool, str]: ...
    def writeFileBasedAttributeTable(self, bandNumber: int, path: str) -> typing.Tuple[bool, str]: ...
    def removeAttributeTable(self, bandNumber: int) -> None: ...
    def setAttributeTable(self, bandNumber: int, attributeTable: QgsRasterAttributeTable) -> None: ...
    def attributeTable(self, bandNumber: int) -> QgsRasterAttributeTable: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def maxOversampling(self) -> float: ...
    def setMaxOversampling(self, factor: float) -> bool: ...
    def zoomedOutResamplingMethod(self) -> 'QgsRasterDataProvider.ResamplingMethod': ...
    def setZoomedOutResamplingMethod(self, method: 'QgsRasterDataProvider.ResamplingMethod') -> bool: ...
    def zoomedInResamplingMethod(self) -> 'QgsRasterDataProvider.ResamplingMethod': ...
    def setZoomedInResamplingMethod(self, method: 'QgsRasterDataProvider.ResamplingMethod') -> bool: ...
    def isProviderResamplingEnabled(self) -> bool: ...
    def enableProviderResampling(self, enable: bool) -> bool: ...
    def transformCoordinates(self, point: QgsPoint, type: 'QgsRasterDataProvider.TransformType') -> QgsPoint: ...
    def ignoreExtents(self) -> bool: ...
    def nativeResolutions(self) -> typing.List[float]: ...
    def stepHeight(self) -> int: ...
    def stepWidth(self) -> int: ...
    @staticmethod
    def identifyFormatToCapability(format: Qgis.RasterIdentifyFormat) -> QgsRasterInterface.Capability: ...
    @staticmethod
    def identifyFormatLabel(format: Qgis.RasterIdentifyFormat) -> str: ...
    @staticmethod
    def identifyFormatFromName(formatName: str) -> Qgis.RasterIdentifyFormat: ...
    @staticmethod
    def identifyFormatName(format: Qgis.RasterIdentifyFormat) -> str: ...
    def validatePyramidsConfigOptions(self, pyramidsFormat: Qgis.RasterPyramidFormat, configOptions: typing.Iterable[str], fileFormat: str) -> str: ...
    def validateCreationOptions(self, createOptions: typing.Iterable[str], format: str) -> str: ...
    @staticmethod
    def encodeVirtualRasterProviderUri(parts: 'QgsRasterDataProvider.VirtualRasterParameters') -> str: ...
    @staticmethod
    def decodeVirtualRasterProviderUri(uri: str) -> typing.Tuple['QgsRasterDataProvider.VirtualRasterParameters', bool]: ...
    @staticmethod
    def pyramidResamplingMethods(providerKey: str) -> typing.List[typing.Tuple[str, str]]: ...
    def remove(self) -> bool: ...
    def setNoDataValue(self, bandNo: int, noDataValue: float) -> bool: ...
    @staticmethod
    def create(providerKey: str, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def writeBlock(self, block: QgsRasterBlock, band: int, xOffset: int = ..., yOffset: int = ...) -> bool: ...
    def write(self, data: PyQt5.sip.voidptr, band: int, width: int, height: int, xOffset: int, yOffset: int) -> bool: ...
    def setEditable(self, enabled: bool) -> bool: ...
    def isEditable(self) -> bool: ...
    def dataTimestamp(self) -> QtCore.QDateTime: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def setDpi(self, dpi: int) -> None: ...
    def dpi(self) -> int: ...
    def lastErrorFormat(self) -> str: ...
    def lastError(self) -> str: ...
    def lastErrorTitle(self) -> str: ...
    def sample(self, point: QgsPointXY, band: int, boundingBox: QgsRectangle = ..., width: int = ..., height: int = ..., dpi: int = ...) -> typing.Tuple[float, bool]: ...
    def identify(self, point: QgsPointXY, format: Qgis.RasterIdentifyFormat, boundingBox: QgsRectangle = ..., width: int = ..., height: int = ..., dpi: int = ...) -> 'QgsRasterIdentifyResult': ...
    def htmlMetadata(self) -> str: ...
    def hasPyramids(self) -> bool: ...
    def buildPyramidList(self, overviewList: typing.Iterable[int] = ...) -> typing.List['QgsRasterPyramid']: ...
    def buildPyramids(self, pyramidList: typing.Iterable['QgsRasterPyramid'], resamplingMethod: str = ..., format: Qgis.RasterPyramidFormat = ..., configOptions: typing.Iterable[str] = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> str: ...
    def getLegendGraphicFetcher(self, mapSettings: QgsMapSettings) -> QgsImageFetcher: ...
    def supportsLegendGraphic(self) -> bool: ...
    def elevationProperties(self) -> 'QgsRasterDataProviderElevationProperties': ...
    def temporalCapabilities(self) -> 'QgsRasterDataProviderTemporalCapabilities': ...
    def subLayers(self) -> typing.List[str]: ...
    def colorTable(self, bandNo: int) -> typing.List[QgsColorRampShader.ColorRampItem]: ...
    def userNoDataValues(self, bandNo: int) -> typing.List['QgsRasterRange']: ...
    def setUserNoDataValue(self, bandNo: int, noData: typing.Iterable['QgsRasterRange']) -> None: ...
    def sourceNoDataValue(self, bandNo: int) -> float: ...
    def setUseSourceNoDataValue(self, bandNo: int, use: bool) -> None: ...
    def useSourceNoDataValue(self, bandNo: int) -> bool: ...
    def sourceHasNoDataValue(self, bandNo: int) -> bool: ...
    def block(self, bandNo: int, boundingBox: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> QgsRasterBlock: ...
    def bandOffset(self, bandNo: int) -> float: ...
    def bandScale(self, bandNo: int) -> float: ...
    def colorInterpretationName(self, bandNo: int) -> str: ...
    def reload(self) -> bool: ...
    def colorName(self, colorInterpretation: Qgis.RasterColorInterpretation) -> str: ...
    def colorInterpretation(self, bandNo: int) -> Qgis.RasterColorInterpretation: ...
    def sourceDataType(self, bandNo: int) -> Qgis.DataType: ...
    def fields(self) -> QgsFields: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def extent(self) -> QgsRectangle: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def providerCapabilities(self) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
    def clone(self) -> 'QgsRasterDataProvider': ...


class QgsRasterDataProviderElevationProperties(QgsDataProviderElevationProperties):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDataProviderElevationProperties') -> None: ...

    def setContainsElevationData(self, contains: bool) -> None: ...
    def containsElevationData(self) -> bool: ...


class QgsRasterDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    @typing.overload
    def __init__(self, enabled: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDataProviderTemporalCapabilities') -> None: ...

    def setDefaultInterval(self, interval: QgsInterval) -> None: ...
    def defaultInterval(self) -> QgsInterval: ...
    def requestedTemporalRange(self) -> QgsDateTimeRange: ...
    def availableReferenceTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableReferenceTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def allAvailableTemporalRanges(self) -> typing.List[QgsDateTimeRange]: ...
    def setAllAvailableTemporalRanges(self, ranges: typing.Iterable[QgsDateTimeRange]) -> None: ...
    def availableTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setIntervalHandlingMethod(self, method: Qgis.TemporalIntervalMatchMethod) -> None: ...
    def intervalHandlingMethod(self) -> Qgis.TemporalIntervalMatchMethod: ...
    def setFlags(self, flags: typing.Union[Qgis.RasterTemporalCapabilityFlags, Qgis.RasterTemporalCapabilityFlag]) -> None: ...
    def flags(self) -> Qgis.RasterTemporalCapabilityFlags: ...


class QgsRasterDrawer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, iterator: 'QgsRasterIterator', dpiTarget: float) -> None: ...
    @typing.overload
    def __init__(self, iterator: 'QgsRasterIterator') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDrawer') -> None: ...

    @typing.overload
    def draw(self, p: QtGui.QPainter, viewPort: 'QgsRasterViewPort', qgsMapToPixel: QgsMapToPixel, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> None: ...
    @typing.overload
    def draw(self, context: QgsRenderContext, viewPort: 'QgsRasterViewPort', feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> None: ...


class QgsRasterFileWriter(PyQt5.sip.wrapper):

    class RasterFormatOption(int):
        SortRecommended = ... # type: QgsRasterFileWriter.RasterFormatOption

    class RasterFormatOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterFileWriter.RasterFormatOptions') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FilterFormatDetails(PyQt5.sip.wrapper):

        driverName = ... # type: str
        filterString = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterFileWriter.FilterFormatDetails') -> None: ...

    @typing.overload
    def __init__(self, outputUrl: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterFileWriter') -> None: ...

    @staticmethod
    def extensionsForFormat(format: str) -> typing.List[str]: ...
    @staticmethod
    def driverForExtension(extension: str) -> str: ...
    @staticmethod
    def supportedFormatExtensions(options: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption'] = ...) -> typing.List[str]: ...
    @staticmethod
    def supportedFiltersAndFormats(options: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption'] = ...) -> typing.List['QgsRasterFileWriter.FilterFormatDetails']: ...
    @staticmethod
    def filterForDriver(driverName: str) -> str: ...
    def pyramidsConfigOptions(self) -> typing.List[str]: ...
    def setPyramidsConfigOptions(self, list: typing.Iterable[str]) -> None: ...
    def createOptions(self) -> typing.List[str]: ...
    def setCreateOptions(self, list: typing.Iterable[str]) -> None: ...
    def maxTileHeight(self) -> int: ...
    def setMaxTileHeight(self, h: int) -> None: ...
    def setPyramidsFormat(self, f: Qgis.RasterPyramidFormat) -> None: ...
    def pyramidsFormat(self) -> Qgis.RasterPyramidFormat: ...
    def setPyramidsResampling(self, str: str) -> None: ...
    def pyramidsResampling(self) -> str: ...
    def setPyramidsList(self, list: typing.Iterable[int]) -> None: ...
    def pyramidsList(self) -> typing.List[int]: ...
    def setBuildPyramidsFlag(self, f: Qgis.RasterBuildPyramidOption) -> None: ...
    def buildPyramidsFlag(self) -> Qgis.RasterBuildPyramidOption: ...
    def maxTileWidth(self) -> int: ...
    def setMaxTileWidth(self, w: int) -> None: ...
    def tiledMode(self) -> bool: ...
    def setTiledMode(self, t: bool) -> None: ...
    def outputProviderKey(self) -> str: ...
    def setOutputProviderKey(self, key: str) -> None: ...
    def outputFormat(self) -> str: ...
    def setOutputFormat(self, format: str) -> None: ...
    def outputUrl(self) -> str: ...
    @typing.overload
    def writeRaster(self, pipe: 'QgsRasterPipe', nCols: int, nRows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> Qgis.RasterFileWriterResult: ...
    @typing.overload
    def writeRaster(self, pipe: 'QgsRasterPipe', nCols: int, nRows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> Qgis.RasterFileWriterResult: ...
    def createMultiBandRaster(self, dataType: Qgis.DataType, width: int, height: int, extent: QgsRectangle, crs: QgsCoordinateReferenceSystem, nBands: int) -> QgsRasterDataProvider: ...
    def createOneBandRaster(self, dataType: Qgis.DataType, width: int, height: int, extent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> QgsRasterDataProvider: ...


class QgsRasterFileWriterTask(QgsTask):

    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: 'QgsRasterPipe', columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> None: ...
    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: 'QgsRasterPipe', columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    @typing.overload
    def errorOccurred(self, error: int) -> None: ...
    @typing.overload
    def errorOccurred(self, error: int, errorMessage: str) -> None: ...
    def writeComplete(self, outputUrl: str) -> None: ...
    def cancel(self) -> None: ...


class QgsRasterHistogram(PyQt5.sip.wrapper):

    bandNumber = ... # type: int
    binCount = ... # type: int
    extent = ... # type: QgsRectangle
    height = ... # type: int
    histogramVector = ... # type: typing.Iterable[int]
    includeOutOfRange = ... # type: bool
    maximum = ... # type: float
    minimum = ... # type: float
    nonNullCount = ... # type: int
    valid = ... # type: bool
    width = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterHistogram') -> None: ...


class QgsRasterIdentifyResult(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, format: Qgis.RasterIdentifyFormat, results: typing.Dict[int, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, error: QgsError) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterIdentifyResult') -> None: ...

    def setError(self, error: QgsError) -> None: ...
    def error(self) -> QgsError: ...
    def params(self) -> typing.Dict[str, typing.Any]: ...
    def setParams(self, params: typing.Dict[str, typing.Any]) -> None: ...
    def results(self) -> typing.Dict[int, typing.Any]: ...
    def format(self) -> Qgis.RasterIdentifyFormat: ...
    def isValid(self) -> bool: ...


class QgsRasterBlockFeedback(QgsFeedback):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setRenderContext(self, renderContext: QgsRenderContext) -> None: ...
    def renderContext(self) -> QgsRenderContext: ...
    def errors(self) -> typing.List[str]: ...
    def appendError(self, error: str) -> None: ...
    def setRenderPartialOutput(self, enable: bool) -> None: ...
    def renderPartialOutput(self) -> bool: ...
    def setPreviewOnly(self, preview: bool) -> None: ...
    def isPreviewOnly(self) -> bool: ...
    def onNewData(self) -> None: ...


class QgsRasterIterator(PyQt5.sip.wrapper):

    DEFAULT_MAXIMUM_TILE_HEIGHT = ... # type: int
    DEFAULT_MAXIMUM_TILE_WIDTH = ... # type: int

    @typing.overload
    def __init__(self, input: QgsRasterInterface) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterIterator') -> None: ...

    def maximumTileHeight(self) -> int: ...
    def setMaximumTileHeight(self, h: int) -> None: ...
    def maximumTileWidth(self) -> int: ...
    def setMaximumTileWidth(self, w: int) -> None: ...
    def input(self) -> QgsRasterInterface: ...
    def stopRasterRead(self, bandNumber: int) -> None: ...
    def readNextRasterPart(self, bandNumber: int) -> typing.Tuple[bool, int, int, QgsRasterBlock, int, int]: ...
    def next(self, bandNumber: int) -> typing.Tuple[bool, int, int, int, int, QgsRectangle]: ...
    def startRasterRead(self, bandNumber: int, nCols: int, nRows: int, extent: QgsRectangle, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> None: ...
    @staticmethod
    def subRegion(rasterExtent: QgsRectangle, rasterWidth: int, rasterHeight: int, subRegion: QgsRectangle) -> typing.Tuple[QgsRectangle, int, int, int, int]: ...


class QgsRasterLayer(QgsMapLayer, QgsAbstractProfileSource):

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: QgsCoordinateTransformContext

        @typing.overload
        def __init__(self, loadDefaultStyle: bool = ..., transformContext: QgsCoordinateTransformContext = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterLayer.LayerOptions') -> None: ...

    MULTIPLE_BAND_MULTI_BYTE_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    MULTIPLE_BAND_MULTI_BYTE_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'
    MULTIPLE_BAND_SINGLE_BYTE_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    MULTIPLE_BAND_SINGLE_BYTE_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'
    SAMPLE_SIZE = ... # type: float
    SINGLE_BAND_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    SINGLE_BAND_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, uri: str, baseName: str = ..., providerType: str = ..., options: 'QgsRasterLayer.LayerOptions' = ...) -> None: ...

    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, a0: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def subsetStringChanged(self) -> None: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def showStatusMessage(self, message: str) -> None: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def temporalProperties(self) -> QgsMapLayerTemporalProperties: ...
    def ignoreExtents(self) -> bool: ...
    def writeSld(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, props: typing.Dict[str, typing.Any] = ...) -> bool: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def setSubLayerVisibility(self, name: str, vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[str]) -> None: ...
    def previewAsImage(self, size: QtCore.QSize, bgColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., format: QtGui.QImage.Format = ...) -> QtGui.QImage: ...
    def subLayers(self) -> typing.List[str]: ...
    def setDefaultContrastEnhancement(self) -> None: ...
    def setSubsetString(self, subset: str) -> bool: ...
    def subsetString(self) -> str: ...
    def setContrastEnhancement(self, algorithm: QgsContrastEnhancement.ContrastEnhancementAlgorithm, limits: 'QgsRasterMinMaxOrigin.Limits' = ..., extent: QgsRectangle = ..., sampleSize: int = ..., generateLookupTableFlag: bool = ...) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def rasterUnitsPerPixelY(self) -> float: ...
    def rasterUnitsPerPixelX(self) -> float: ...
    def providerType(self) -> str: ...
    def paletteAsPixmap(self, bandNumber: int = ...) -> QtGui.QPixmap: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def htmlMetadata(self) -> str: ...
    def isSpatial(self) -> bool: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def draw(self, theQPainter: QtGui.QPainter, myRasterViewPort: 'QgsRasterViewPort', qgsMapToPixel: typing.Optional[QgsMapToPixel] = ...) -> None: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def reload(self) -> None: ...
    def constDataProvider(self) -> QgsRasterDataProvider: ...
    def dataProvider(self) -> QgsRasterDataProvider: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def attributeTableCount(self) -> int: ...
    def attributeTable(self, bandNumber: int) -> QgsRasterAttributeTable: ...
    def bandName(self, bandNoInt: int) -> str: ...
    def bandCount(self) -> int: ...
    def height(self) -> int: ...
    def width(self) -> int: ...
    def pipe(self) -> 'QgsRasterPipe': ...
    def resamplingStage(self) -> Qgis.RasterResamplingStage: ...
    def setResamplingStage(self, stage: Qgis.RasterResamplingStage) -> None: ...
    def hueSaturationFilter(self) -> QgsHueSaturationFilter: ...
    def brightnessFilter(self) -> QgsBrightnessContrastFilter: ...
    def resampleFilter(self) -> 'QgsRasterResampleFilter': ...
    def renderer(self) -> QgsRasterRenderer: ...
    def setRenderer(self, renderer: QgsRasterRenderer) -> None: ...
    def rasterType(self) -> Qgis.RasterLayerType: ...
    @typing.overload
    def setDataProvider(self, provider: str) -> None: ...
    @typing.overload
    def setDataProvider(self, provider: str, options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...
    @staticmethod
    def lastModified(name: str) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: str, retError: str) -> bool: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: str) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def clone(self) -> 'QgsRasterLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsRasterLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    @staticmethod
    def layerLooksLikeDem(layer: QgsRasterLayer) -> bool: ...
    def setElevationLimit(self, limit: float) -> None: ...
    def elevationLimit(self) -> float: ...
    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def profileFillSymbol(self) -> 'QgsFillSymbol': ...
    def setProfileLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def profileLineSymbol(self) -> 'QgsLineSymbol': ...
    def setBandNumber(self, band: int) -> None: ...
    def bandNumber(self) -> int: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsRasterLayerElevationProperties': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsRasterLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def fixedTemporalRange(self) -> QgsDateTimeRange: ...
    def setFixedTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setIntervalHandlingMethod(self, method: Qgis.TemporalIntervalMatchMethod) -> None: ...
    def intervalHandlingMethod(self) -> Qgis.TemporalIntervalMatchMethod: ...
    def flags(self) -> QgsTemporalProperty.Flags: ...
    def setMode(self, mode: Qgis.RasterTemporalMode) -> None: ...
    def mode(self) -> Qgis.RasterTemporalMode: ...
    def allTemporalRanges(self, layer: QgsMapLayer) -> typing.List[QgsDateTimeRange]: ...
    def isVisibleInTemporalRange(self, range: QgsDateTimeRange) -> bool: ...


class QgsRasterMinMaxOrigin(PyQt5.sip.wrapper):

    class StatAccuracy(int):
        Exact = ... # type: QgsRasterMinMaxOrigin.StatAccuracy
        Estimated = ... # type: QgsRasterMinMaxOrigin.StatAccuracy

    class Extent(int):
        WholeRaster = ... # type: QgsRasterMinMaxOrigin.Extent
        CurrentCanvas = ... # type: QgsRasterMinMaxOrigin.Extent
        UpdatedCanvas = ... # type: QgsRasterMinMaxOrigin.Extent

    class Limits(int):
        None_ = ... # type: QgsRasterMinMaxOrigin.Limits
        MinMax = ... # type: QgsRasterMinMaxOrigin.Limits
        StdDev = ... # type: QgsRasterMinMaxOrigin.Limits
        CumulativeCut = ... # type: QgsRasterMinMaxOrigin.Limits

    CUMULATIVE_CUT_LOWER = ... # type: float
    CUMULATIVE_CUT_UPPER = ... # type: float
    DEFAULT_STDDEV_FACTOR = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterMinMaxOrigin') -> None: ...

    @staticmethod
    def statAccuracyFromString(accuracy: str) -> 'QgsRasterMinMaxOrigin.StatAccuracy': ...
    @staticmethod
    def statAccuracyString(accuracy: 'QgsRasterMinMaxOrigin.StatAccuracy') -> str: ...
    @staticmethod
    def extentFromString(extent: str) -> 'QgsRasterMinMaxOrigin.Extent': ...
    @staticmethod
    def extentString(extent: 'QgsRasterMinMaxOrigin.Extent') -> str: ...
    @staticmethod
    def limitsFromString(limits: str) -> 'QgsRasterMinMaxOrigin.Limits': ...
    @staticmethod
    def limitsString(limits: 'QgsRasterMinMaxOrigin.Limits') -> str: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setStdDevFactor(self, val: float) -> None: ...
    def setCumulativeCutUpper(self, val: float) -> None: ...
    def setCumulativeCutLower(self, val: float) -> None: ...
    def setStatAccuracy(self, accuracy: 'QgsRasterMinMaxOrigin.StatAccuracy') -> None: ...
    def setExtent(self, extent: 'QgsRasterMinMaxOrigin.Extent') -> None: ...
    def setLimits(self, limits: 'QgsRasterMinMaxOrigin.Limits') -> None: ...
    def stdDevFactor(self) -> float: ...
    def cumulativeCutUpper(self) -> float: ...
    def cumulativeCutLower(self) -> float: ...
    def statAccuracy(self) -> 'QgsRasterMinMaxOrigin.StatAccuracy': ...
    def extent(self) -> 'QgsRasterMinMaxOrigin.Extent': ...
    def limits(self) -> 'QgsRasterMinMaxOrigin.Limits': ...


class QgsRasterNuller(QgsRasterInterface):

    class NoData(PyQt5.sip.wrapper):

        max = ... # type: float
        min = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterNuller.NoData') -> None: ...

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def setOutputNoDataValue(self, bandNo: int, noData: float) -> None: ...
    def noData(self, bandNo: int) -> typing.List['QgsRasterRange']: ...
    def setNoData(self, bandNo: int, noData: typing.Iterable['QgsRasterRange']) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterNuller': ...


class QgsRasterPipe(PyQt5.sip.wrapper):

    class Property(int):
        RendererOpacity = ... # type: QgsRasterPipe.Property

    def __init__(self) -> None: ...

    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def evaluateDataDefinedProperties(self, context: QgsExpressionContext) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def resamplingStage(self) -> Qgis.RasterResamplingStage: ...
    def setResamplingStage(self, stage: Qgis.RasterResamplingStage) -> None: ...
    def nuller(self) -> QgsRasterNuller: ...
    def projector(self) -> 'QgsRasterProjector': ...
    def hueSaturationFilter(self) -> QgsHueSaturationFilter: ...
    def brightnessFilter(self) -> QgsBrightnessContrastFilter: ...
    def resampleFilter(self) -> 'QgsRasterResampleFilter': ...
    def renderer(self) -> QgsRasterRenderer: ...
    def provider(self) -> QgsRasterDataProvider: ...
    def canSetOn(self, idx: int, on: bool) -> bool: ...
    def setOn(self, idx: int, on: bool) -> bool: ...
    def last(self) -> QgsRasterInterface: ...
    def at(self, idx: int) -> QgsRasterInterface: ...
    def size(self) -> int: ...
    @typing.overload
    def remove(self, idx: int) -> bool: ...
    @typing.overload
    def remove(self, interface: QgsRasterInterface) -> bool: ...
    def set(self, interface: QgsRasterInterface) -> bool: ...
    def replace(self, idx: int, interface: QgsRasterInterface) -> bool: ...
    def insert(self, idx: int, interface: QgsRasterInterface) -> bool: ...
    def moveToThread(self, thread: QtCore.QThread) -> None: ...


class QgsRasterProjector(QgsRasterInterface):

    class Precision(int):
        Approximate = ... # type: QgsRasterProjector.Precision
        Exact = ... # type: QgsRasterProjector.Precision

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self) -> None: ...

    @staticmethod
    def extentSize(ct: QgsCoordinateTransform, srcExtent: QgsRectangle, srcXSize: int, srcYSize: int) -> typing.Tuple[bool, QgsRectangle, int, int]: ...
    def destExtentSize(self, srcExtent: QgsRectangle, srcXSize: int, srcYSize: int) -> typing.Tuple[bool, QgsRectangle, int, int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def precisionLabel(precision: 'QgsRasterProjector.Precision') -> str: ...
    def setPrecision(self, precision: 'QgsRasterProjector.Precision') -> None: ...
    def precision(self) -> 'QgsRasterProjector.Precision': ...
    def destinationCrs(self) -> QgsCoordinateReferenceSystem: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    def setCrs(self, srcCRS: QgsCoordinateReferenceSystem, destCRS: QgsCoordinateReferenceSystem, srcDatumTransform: int = ..., destDatumTransform: int = ...) -> None: ...
    @typing.overload
    def setCrs(self, srcCRS: QgsCoordinateReferenceSystem, destCRS: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext) -> None: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterProjector': ...


class QgsRasterPyramid(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterPyramid') -> None: ...

    def setBuild(self, build: bool) -> None: ...
    def getBuild(self) -> bool: ...
    def setExists(self, exists: bool) -> None: ...
    def getExists(self) -> bool: ...
    def getYDim(self) -> int: ...
    def setYDim(self, dimension: int) -> None: ...
    def getXDim(self) -> int: ...
    def setXDim(self, dimension: int) -> None: ...
    def setLevel(self, level: int) -> None: ...
    def getLevel(self) -> int: ...
    @property
    def build(self) -> bool: ...
    @build.setter
    def build(self, build: bool) -> None: ...
    @property
    def exists(self) -> bool: ...
    @exists.setter
    def exists(self, exists: bool) -> None: ...
    @property
    def yDim(self) -> int: ...
    @yDim.setter
    def yDim(self, dimension: int) -> None: ...
    @property
    def xDim(self) -> int: ...
    @xDim.setter
    def xDim(self, dimension: int) -> None: ...
    @property
    def level(self) -> int: ...
    @level.setter
    def level(self, level: int) -> None: ...


class QgsRasterRange(PyQt5.sip.wrapper):

    class BoundsType(int):
        IncludeMinAndMax = ... # type: QgsRasterRange.BoundsType
        IncludeMax = ... # type: QgsRasterRange.BoundsType
        IncludeMin = ... # type: QgsRasterRange.BoundsType
        Exclusive = ... # type: QgsRasterRange.BoundsType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, min: float, max: float, bounds: 'QgsRasterRange.BoundsType' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterRange') -> None: ...

    def asText(self) -> str: ...
    def overlaps(self, other: 'QgsRasterRange') -> bool: ...
    @typing.overload
    def contains(self, value: float) -> bool: ...
    @typing.overload
    @staticmethod
    def contains(value: float, rangeList: typing.Iterable['QgsRasterRange']) -> bool: ...
    def setBounds(self, type: 'QgsRasterRange.BoundsType') -> None: ...
    def setMax(self, max: float) -> float: ...
    def setMin(self, min: float) -> float: ...
    def bounds(self) -> 'QgsRasterRange.BoundsType': ...
    def max(self) -> float: ...
    def min(self) -> float: ...


class QgsRasterRendererUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterRendererUtils') -> None: ...

    @staticmethod
    def saveColorMapFile(path: str, items: typing.Iterable[QgsColorRampShader.ColorRampItem], type: QgsColorRampShader.Type) -> bool: ...
    @staticmethod
    def parseColorMapFile(path: str) -> typing.Tuple[bool, typing.List[QgsColorRampShader.ColorRampItem], QgsColorRampShader.Type, typing.List[str]]: ...


class QgsRasterResampleFilter(QgsRasterInterface):

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def maxOversampling(self) -> float: ...
    def setMaxOversampling(self, os: float) -> None: ...
    def zoomedOutResampler(self) -> QgsRasterResampler: ...
    def setZoomedOutResampler(self, r: QgsRasterResampler) -> None: ...
    def zoomedInResampler(self) -> QgsRasterResampler: ...
    def setZoomedInResampler(self, r: QgsRasterResampler) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterResampleFilter': ...


class QgsRasterShader(PyQt5.sip.wrapper):

    def __init__(self, minimumValue: float = ..., maximumValue: float = ...) -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parent: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...
    def setRasterShaderFunction(self, function: QgsRasterShaderFunction) -> None: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def rasterShaderFunction(self) -> QgsRasterShaderFunction: ...
    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...


class QgsRasterTransparency(PyQt5.sip.wrapper):

    class TransparentThreeValuePixel(PyQt5.sip.wrapper):

        blue = ... # type: float
        green = ... # type: float
        percentTransparent = ... # type: float
        red = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentThreeValuePixel') -> None: ...

    class TransparentSingleValuePixel(PyQt5.sip.wrapper):

        max = ... # type: float
        min = ... # type: float
        percentTransparent = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentSingleValuePixel') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterTransparency') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def alphaValue(self, value: float, globalTransparency: int = ...) -> int: ...
    @typing.overload
    def alphaValue(self, redValue: float, greenValue: float, blueValue: float, globalTransparency: int = ...) -> int: ...
    def setTransparentThreeValuePixelList(self, newList: typing.Iterable['QgsRasterTransparency.TransparentThreeValuePixel']) -> None: ...
    def setTransparentSingleValuePixelList(self, newList: typing.Iterable['QgsRasterTransparency.TransparentSingleValuePixel']) -> None: ...
    @typing.overload
    def initializeTransparentPixelList(self, value: float) -> None: ...
    @typing.overload
    def initializeTransparentPixelList(self, redValue: float, greenValue: float, blueValue: float) -> None: ...
    def transparentThreeValuePixelList(self) -> typing.List['QgsRasterTransparency.TransparentThreeValuePixel']: ...
    def transparentSingleValuePixelList(self) -> typing.List['QgsRasterTransparency.TransparentSingleValuePixel']: ...


class QgsRasterViewPort(PyQt5.sip.wrapper):

    mBottomRightPoint = ... # type: QgsPointXY
    mDestCRS = ... # type: QgsCoordinateReferenceSystem
    mDrawnExtent = ... # type: QgsRectangle
    mHeight = ... # type: int
    mSrcCRS = ... # type: QgsCoordinateReferenceSystem
    mTopLeftPoint = ... # type: QgsPointXY
    mTransformContext = ... # type: QgsCoordinateTransformContext
    mWidth = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterViewPort') -> None: ...


class QgsSingleBandColorDataRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int) -> None: ...

    def usesBands(self) -> typing.List[int]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandColorDataRenderer': ...


class QgsSingleBandGrayRenderer(QgsRasterRenderer):

    class Gradient(int):
        BlackToWhite = ... # type: QgsSingleBandGrayRenderer.Gradient
        WhiteToBlack = ... # type: QgsSingleBandGrayRenderer.Gradient

    def __init__(self, input: QgsRasterInterface, grayBand: int) -> None: ...

    def setLegendSettings(self, settings: QgsColorRampLegendNodeSettings) -> None: ...
    def legendSettings(self) -> QgsColorRampLegendNodeSettings: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def gradient(self) -> 'QgsSingleBandGrayRenderer.Gradient': ...
    def setGradient(self, gradient: 'QgsSingleBandGrayRenderer.Gradient') -> None: ...
    def setContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def contrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setGrayBand(self, band: int) -> None: ...
    def grayBand(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandGrayRenderer': ...


class QgsSingleBandPseudoColorRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int = ..., shader: typing.Optional[QgsRasterShader] = ...) -> None: ...

    def setClassificationMax(self, max: float) -> None: ...
    def setClassificationMin(self, min: float) -> None: ...
    def classificationMax(self) -> float: ...
    def classificationMin(self) -> float: ...
    def setBand(self, bandNo: int) -> None: ...
    def band(self) -> int: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def createShader(self, colorRamp: typing.Optional[QgsColorRamp] = ..., colorRampType: QgsColorRampShader.Type = ..., classificationMode: QgsColorRampShader.ClassificationMode = ..., classes: int = ..., clip: bool = ..., extent: QgsRectangle = ...) -> None: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def constShader(self) -> QgsRasterShader: ...
    def shader(self) -> QgsRasterShader: ...
    def setShader(self, shader: QgsRasterShader) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandPseudoColorRenderer': ...


class QgsScaleBarRenderer(PyQt5.sip.wrapper):

    class Flag(int):
        FlagUsesLineSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesFillSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesAlternateFillSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagRespectsUnits = ... # type: QgsScaleBarRenderer.Flag
        FlagRespectsMapUnitsPerScaleBarUnit = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesUnitLabel = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSegments = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelBarSpace = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelVerticalPlacement = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelHorizontalPlacement = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesAlignment = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisions = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesDivisionSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisionSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisionsHeight = ... # type: QgsScaleBarRenderer.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsScaleBarRenderer.Flags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsScaleBarRenderer.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ScaleBarContext(PyQt5.sip.wrapper):

        flags = ... # type: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']
        scale = ... # type: float
        segmentWidth = ... # type: float
        size = ... # type: QtCore.QSizeF

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsScaleBarRenderer.ScaleBarContext') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScaleBarRenderer') -> None: ...

    def segmentWidths(self, scaleContext: 'QgsScaleBarRenderer.ScaleBarContext', settings: 'QgsScaleBarSettings') -> typing.List[float]: ...
    @typing.overload
    def segmentPositions(self, scaleContext: 'QgsScaleBarRenderer.ScaleBarContext', settings: 'QgsScaleBarSettings') -> typing.List[float]: ...
    @typing.overload
    def segmentPositions(self, context: QgsRenderContext, scaleContext: 'QgsScaleBarRenderer.ScaleBarContext', settings: 'QgsScaleBarSettings') -> typing.List[float]: ...
    @typing.overload
    def firstLabelXOffset(self, settings: 'QgsScaleBarSettings') -> float: ...
    @typing.overload
    def firstLabelXOffset(self, settings: 'QgsScaleBarSettings', context: QgsRenderContext, scaleContext: 'QgsScaleBarRenderer.ScaleBarContext') -> float: ...
    def firstLabelString(self, settings: 'QgsScaleBarSettings') -> str: ...
    def drawDefaultLabels(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: 'QgsScaleBarRenderer.ScaleBarContext') -> None: ...
    def applyDefaultSettings(self, settings: 'QgsScaleBarSettings') -> bool: ...
    @typing.overload
    def calculateBoxSize(self, settings: 'QgsScaleBarSettings', scaleContext: 'QgsScaleBarRenderer.ScaleBarContext') -> QtCore.QSizeF: ...
    @typing.overload
    def calculateBoxSize(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: 'QgsScaleBarRenderer.ScaleBarContext') -> QtCore.QSizeF: ...
    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: 'QgsScaleBarRenderer.ScaleBarContext') -> None: ...
    def clone(self) -> 'QgsScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> 'QgsScaleBarRenderer.Flags': ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsDoubleBoxScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDoubleBoxScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsDoubleBoxScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsHollowScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHollowScaleBarRenderer') -> None: ...

    def applyDefaultSettings(self, settings: 'QgsScaleBarSettings') -> bool: ...
    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsHollowScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsNumericScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericScaleBarRenderer') -> None: ...

    @typing.overload
    def calculateBoxSize(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> QtCore.QSizeF: ...
    @typing.overload
    def calculateBoxSize(self, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> QtCore.QSizeF: ...
    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsNumericScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsScaleBarRendererRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScaleBarRendererRegistry') -> None: ...

    def sortKey(self, id: str) -> int: ...
    def visibleName(self, id: str) -> str: ...
    def renderer(self, id: str) -> QgsScaleBarRenderer: ...
    def removeRenderer(self, id: str) -> None: ...
    def addRenderer(self, renderer: QgsScaleBarRenderer) -> None: ...
    def sortedRendererList(self) -> typing.List[str]: ...
    def renderers(self) -> typing.List[str]: ...


class QgsScaleBarSettings(PyQt5.sip.wrapper):

    class LabelHorizontalPlacement(int):
        LabelCenteredEdge = ... # type: QgsScaleBarSettings.LabelHorizontalPlacement
        LabelCenteredSegment = ... # type: QgsScaleBarSettings.LabelHorizontalPlacement

    class LabelVerticalPlacement(int):
        LabelAboveSegment = ... # type: QgsScaleBarSettings.LabelVerticalPlacement
        LabelBelowSegment = ... # type: QgsScaleBarSettings.LabelVerticalPlacement

    class SegmentSizeMode(int):
        SegmentSizeFixed = ... # type: QgsScaleBarSettings.SegmentSizeMode
        SegmentSizeFitWidth = ... # type: QgsScaleBarSettings.SegmentSizeMode

    class Alignment(int):
        AlignLeft = ... # type: QgsScaleBarSettings.Alignment
        AlignMiddle = ... # type: QgsScaleBarSettings.Alignment
        AlignRight = ... # type: QgsScaleBarSettings.Alignment

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsScaleBarSettings') -> None: ...

    def setNumericFormat(self, format: QgsNumericFormat) -> None: ...
    def numericFormat(self) -> QgsNumericFormat: ...
    def setLineCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def lineCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setLineJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def lineJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setAlignment(self, alignment: 'QgsScaleBarSettings.Alignment') -> None: ...
    def alignment(self) -> 'QgsScaleBarSettings.Alignment': ...
    def setBoxContentSpace(self, space: float) -> None: ...
    def boxContentSpace(self) -> float: ...
    def setLabelHorizontalPlacement(self, placement: 'QgsScaleBarSettings.LabelHorizontalPlacement') -> None: ...
    def labelHorizontalPlacement(self) -> 'QgsScaleBarSettings.LabelHorizontalPlacement': ...
    def setLabelVerticalPlacement(self, placement: 'QgsScaleBarSettings.LabelVerticalPlacement') -> None: ...
    def labelVerticalPlacement(self) -> 'QgsScaleBarSettings.LabelVerticalPlacement': ...
    def setLabelBarSpace(self, space: float) -> None: ...
    def labelBarSpace(self) -> float: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def setBrush2(self, brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def brush2(self) -> QtGui.QBrush: ...
    def setBrush(self, brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def brush(self) -> QtGui.QBrush: ...
    def setAlternateFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def alternateFillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setSubdivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def subdivisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setDivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def divisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setPen(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def pen(self) -> QtGui.QPen: ...
    def setLineWidth(self, width: float) -> None: ...
    def lineWidth(self) -> float: ...
    def setLineColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def lineColor(self) -> QtGui.QColor: ...
    def setFillColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor2(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setUnitLabel(self, label: str) -> None: ...
    def unitLabel(self) -> str: ...
    def setMapUnitsPerScaleBarUnit(self, units: float) -> None: ...
    def mapUnitsPerScaleBarUnit(self) -> float: ...
    def setUnits(self, units: Qgis.DistanceUnit) -> None: ...
    def units(self) -> Qgis.DistanceUnit: ...
    def setMaximumBarWidth(self, width: float) -> None: ...
    def maximumBarWidth(self) -> float: ...
    def setMinimumBarWidth(self, width: float) -> None: ...
    def minimumBarWidth(self) -> float: ...
    def setSegmentSizeMode(self, mode: 'QgsScaleBarSettings.SegmentSizeMode') -> None: ...
    def segmentSizeMode(self) -> 'QgsScaleBarSettings.SegmentSizeMode': ...
    def setUnitsPerSegment(self, units: float) -> None: ...
    def unitsPerSegment(self) -> float: ...
    def setSubdivisionsHeight(self, height: float) -> None: ...
    def subdivisionsHeight(self) -> float: ...
    def setNumberOfSubdivisions(self, subdivisions: int) -> None: ...
    def numberOfSubdivisions(self) -> int: ...
    def setNumberOfSegmentsLeft(self, segments: int) -> None: ...
    def numberOfSegmentsLeft(self) -> int: ...
    def setNumberOfSegments(self, segments: int) -> None: ...
    def numberOfSegments(self) -> int: ...


class QgsSingleBoxScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSingleBoxScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsSingleBoxScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsSteppedLineScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSteppedLineScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsSteppedLineScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsTicksScaleBarRenderer(QgsScaleBarRenderer):

    class TickPosition(int):
        TicksUp = ... # type: QgsTicksScaleBarRenderer.TickPosition
        TicksDown = ... # type: QgsTicksScaleBarRenderer.TickPosition
        TicksMiddle = ... # type: QgsTicksScaleBarRenderer.TickPosition

    @typing.overload
    def __init__(self, position: 'QgsTicksScaleBarRenderer.TickPosition' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTicksScaleBarRenderer') -> None: ...

    def tickPosition(self) -> 'QgsTicksScaleBarRenderer.TickPosition': ...
    def setTickPosition(self, position: 'QgsTicksScaleBarRenderer.TickPosition') -> None: ...
    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsTicksScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFeatureRenderer(PyQt5.sip.wrapper):

    class Capability(int):
        SymbolLevels = ... # type: QgsFeatureRenderer.Capability
        MoreSymbolsPerFeature = ... # type: QgsFeatureRenderer.Capability
        Filter = ... # type: QgsFeatureRenderer.Capability
        ScaleDependent = ... # type: QgsFeatureRenderer.Capability

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsFeatureRenderer.Capabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsFeatureRenderer.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, type: str) -> None: ...

    @staticmethod
    def convertSymbolRotation(symbol: 'QgsSymbol', field: str) -> None: ...
    @staticmethod
    def convertSymbolSizeScale(symbol: 'QgsSymbol', method: Qgis.ScaleMethod, field: str) -> None: ...
    def saveRendererData(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def _getPoint(context: QgsRenderContext, point: QgsPoint) -> QtCore.QPointF: ...
    def renderVertexMarkerPolygon(self, pts: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: QgsRenderContext) -> None: ...
    def renderVertexMarkerPolyline(self, pts: QtGui.QPolygonF, context: QgsRenderContext) -> None: ...
    def renderVertexMarker(self, pt: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: QgsRenderContext) -> None: ...
    def renderFeatureWithSymbol(self, feature: QgsFeature, symbol: 'QgsSymbol', context: QgsRenderContext, layer: int, selected: bool, drawVertexMarker: bool) -> None: ...
    def copyRendererData(self, destRenderer: 'QgsFeatureRenderer') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def embeddedRenderer(self) -> 'QgsFeatureRenderer': ...
    def setEmbeddedRenderer(self, subRenderer: 'QgsFeatureRenderer') -> None: ...
    def setOrderByEnabled(self, enabled: bool) -> None: ...
    def orderByEnabled(self) -> bool: ...
    def setOrderBy(self, orderBy: QgsFeatureRequest.OrderBy) -> None: ...
    def orderBy(self) -> QgsFeatureRequest.OrderBy: ...
    def setReferenceScale(self, scale: float) -> None: ...
    def referenceScale(self) -> float: ...
    def setForceRasterRender(self, forceRaster: bool) -> None: ...
    def forceRasterRender(self) -> bool: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def modifyRequestExtent(self, extent: QgsRectangle, context: QgsRenderContext) -> None: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def setVertexMarkerAppearance(self, type: Qgis.VertexMarkerType, size: float) -> None: ...
    def legendClassificationAttribute(self) -> str: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def setLegendSymbolItem(self, key: str, symbol: 'QgsSymbol') -> None: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def legendKeys(self) -> typing.Set[str]: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    @staticmethod
    def loadSld(node: QtXml.QDomNode, geomType: Qgis.GeometryType, errorMessage: str) -> 'QgsFeatureRenderer': ...
    def writeSld(self, doc: QtXml.QDomDocument, styleName: str, props: typing.Dict[str, typing.Any] = ...) -> QtXml.QDomElement: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def load(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsFeatureRenderer': ...
    def setUsingSymbolLevels(self, usingSymbolLevels: bool) -> None: ...
    def usingSymbolLevels(self) -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def capabilities(self) -> 'QgsFeatureRenderer.Capabilities': ...
    def dump(self) -> str: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def clone(self) -> 'QgsFeatureRenderer': ...
    def filterNeedsGeometry(self) -> bool: ...
    def usesEmbeddedSymbols(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def canSkipRender(self) -> bool: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def type(self) -> str: ...
    @staticmethod
    def defaultRenderer(geomType: Qgis.GeometryType) -> 'QgsFeatureRenderer': ...


class Qgs25DRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    def setShadowEnabled(self, value: bool) -> None: ...
    def shadowEnabled(self) -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'Qgs25DRenderer': ...
    def setShadowSpread(self, shadowSpread: float) -> None: ...
    def shadowSpread(self) -> float: ...
    def setShadowColor(self, shadowColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def shadowColor(self) -> QtGui.QColor: ...
    def wallShadingEnabled(self) -> bool: ...
    def setWallShadingEnabled(self, enabled: bool) -> None: ...
    def setWallColor(self, wallColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def wallColor(self) -> QtGui.QColor: ...
    def setRoofColor(self, roofColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def roofColor(self) -> QtGui.QColor: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def clone(self) -> QgsFeatureRenderer: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsSymbolLayer(PyQt5.sip.wrapper):

    class Property(int):
        PropertySize = ... # type: QgsSymbolLayer.Property
        PropertyAngle = ... # type: QgsSymbolLayer.Property
        PropertyName = ... # type: QgsSymbolLayer.Property
        PropertyFillColor = ... # type: QgsSymbolLayer.Property
        PropertyStrokeColor = ... # type: QgsSymbolLayer.Property
        PropertyStrokeWidth = ... # type: QgsSymbolLayer.Property
        PropertyStrokeStyle = ... # type: QgsSymbolLayer.Property
        PropertyOffset = ... # type: QgsSymbolLayer.Property
        PropertyCharacter = ... # type: QgsSymbolLayer.Property
        PropertyWidth = ... # type: QgsSymbolLayer.Property
        PropertyHeight = ... # type: QgsSymbolLayer.Property
        PropertyPreserveAspectRatio = ... # type: QgsSymbolLayer.Property
        PropertyFillStyle = ... # type: QgsSymbolLayer.Property
        PropertyJoinStyle = ... # type: QgsSymbolLayer.Property
        PropertySecondaryColor = ... # type: QgsSymbolLayer.Property
        PropertyLineAngle = ... # type: QgsSymbolLayer.Property
        PropertyLineDistance = ... # type: QgsSymbolLayer.Property
        PropertyGradientType = ... # type: QgsSymbolLayer.Property
        PropertyCoordinateMode = ... # type: QgsSymbolLayer.Property
        PropertyGradientSpread = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1X = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1Y = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2X = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2Y = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1IsCentroid = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2IsCentroid = ... # type: QgsSymbolLayer.Property
        PropertyBlurRadius = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstUseWholeShape = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstMaxDistance = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstIgnoreRings = ... # type: QgsSymbolLayer.Property
        PropertyFile = ... # type: QgsSymbolLayer.Property
        PropertyDistanceX = ... # type: QgsSymbolLayer.Property
        PropertyDistanceY = ... # type: QgsSymbolLayer.Property
        PropertyDisplacementX = ... # type: QgsSymbolLayer.Property
        PropertyDisplacementY = ... # type: QgsSymbolLayer.Property
        PropertyOpacity = ... # type: QgsSymbolLayer.Property
        PropertyCustomDash = ... # type: QgsSymbolLayer.Property
        PropertyCapStyle = ... # type: QgsSymbolLayer.Property
        PropertyPlacement = ... # type: QgsSymbolLayer.Property
        PropertyInterval = ... # type: QgsSymbolLayer.Property
        PropertyOffsetAlongLine = ... # type: QgsSymbolLayer.Property
        PropertyAverageAngleLength = ... # type: QgsSymbolLayer.Property
        PropertyHorizontalAnchor = ... # type: QgsSymbolLayer.Property
        PropertyVerticalAnchor = ... # type: QgsSymbolLayer.Property
        PropertyLayerEnabled = ... # type: QgsSymbolLayer.Property
        PropertyArrowWidth = ... # type: QgsSymbolLayer.Property
        PropertyArrowStartWidth = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadLength = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadThickness = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadType = ... # type: QgsSymbolLayer.Property
        PropertyArrowType = ... # type: QgsSymbolLayer.Property
        PropertyOffsetX = ... # type: QgsSymbolLayer.Property
        PropertyOffsetY = ... # type: QgsSymbolLayer.Property
        PropertyPointCount = ... # type: QgsSymbolLayer.Property
        PropertyRandomSeed = ... # type: QgsSymbolLayer.Property
        PropertyClipPoints = ... # type: QgsSymbolLayer.Property
        PropertyDensityArea = ... # type: QgsSymbolLayer.Property
        PropertyFontFamily = ... # type: QgsSymbolLayer.Property
        PropertyFontStyle = ... # type: QgsSymbolLayer.Property
        PropertyDashPatternOffset = ... # type: QgsSymbolLayer.Property
        PropertyTrimStart = ... # type: QgsSymbolLayer.Property
        PropertyTrimEnd = ... # type: QgsSymbolLayer.Property
        PropertyLineStartWidthValue = ... # type: QgsSymbolLayer.Property
        PropertyLineEndWidthValue = ... # type: QgsSymbolLayer.Property
        PropertyLineStartColorValue = ... # type: QgsSymbolLayer.Property
        PropertyLineEndColorValue = ... # type: QgsSymbolLayer.Property
        PropertyMarkerClipping = ... # type: QgsSymbolLayer.Property
        PropertyRandomOffsetX = ... # type: QgsSymbolLayer.Property
        PropertyRandomOffsetY = ... # type: QgsSymbolLayer.Property
        PropertyLineClipping = ... # type: QgsSymbolLayer.Property

    def __init__(self, type: Qgis.SymbolType, locked: bool = ...) -> None: ...

    def removeMasks(self, context: QgsRenderContext, recursive: bool) -> None: ...
    def installMasks(self, context: QgsRenderContext, recursive: bool) -> None: ...
    def copyPaintEffect(self, destLayer: 'QgsSymbolLayer') -> None: ...
    def copyDataDefinedProperties(self, destLayer: 'QgsSymbolLayer') -> None: ...
    def restoreOldDataDefinedProperties(self, stringMap: typing.Dict[str, typing.Any]) -> None: ...
    def id(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def prepareMasks(self, context: 'QgsSymbolRenderContext') -> None: ...
    def masks(self) -> typing.List['QgsSymbolLayerReference']: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def prepareExpressions(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def dxfBrushStyle(self) -> QtCore.Qt.BrushStyle: ...
    def dxfBrushColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfCustomDashPattern(self) -> typing.Tuple[typing.List[float], Qgis.RenderUnit]: ...
    def dxfAngle(self, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfOffset(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfSize(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint, float] = ...) -> bool: ...
    def setDataDefinedProperty(self, key: 'QgsSymbolLayer.Property', property: QgsProperty) -> None: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def renderingPass(self) -> int: ...
    def setRenderingPass(self, renderingPass: int) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def isLocked(self) -> bool: ...
    def setLocked(self, locked: bool) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def isCompatibleWithSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def type(self) -> Qgis.SymbolType: ...
    def setSubSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def subSymbol(self) -> 'QgsSymbol': ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSymbolLayer': ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...


class QgsLineSymbolLayer(QgsSymbolLayer):

    class RenderRingFilter(int):
        AllRings = ... # type: QgsLineSymbolLayer.RenderRingFilter
        ExteriorRingOnly = ... # type: QgsLineSymbolLayer.RenderRingFilter
        InteriorRingsOnly = ... # type: QgsLineSymbolLayer.RenderRingFilter

    def __init__(self, locked: bool = ...) -> None: ...

    def setRingFilter(self, filter: 'QgsLineSymbolLayer.RenderRingFilter') -> None: ...
    def ringFilter(self) -> 'QgsLineSymbolLayer.RenderRingFilter': ...
    def widthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def widthUnit(self) -> Qgis.RenderUnit: ...
    def setWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...


class QgsArrowSymbolLayer(QgsLineSymbolLayer):

    class ArrowType(int):
        ArrowPlain = ... # type: QgsArrowSymbolLayer.ArrowType
        ArrowLeftHalf = ... # type: QgsArrowSymbolLayer.ArrowType
        ArrowRightHalf = ... # type: QgsArrowSymbolLayer.ArrowType

    class HeadType(int):
        HeadSingle = ... # type: QgsArrowSymbolLayer.HeadType
        HeadReversed = ... # type: QgsArrowSymbolLayer.HeadType
        HeadDouble = ... # type: QgsArrowSymbolLayer.HeadType

    def __init__(self) -> None: ...

    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def setArrowType(self, type: 'QgsArrowSymbolLayer.ArrowType') -> None: ...
    def arrowType(self) -> 'QgsArrowSymbolLayer.ArrowType': ...
    def setHeadType(self, type: 'QgsArrowSymbolLayer.HeadType') -> None: ...
    def headType(self) -> 'QgsArrowSymbolLayer.HeadType': ...
    def setIsRepeated(self, isRepeated: bool) -> None: ...
    def isRepeated(self) -> bool: ...
    def setIsCurved(self, isCurved: bool) -> None: ...
    def isCurved(self) -> bool: ...
    def setHeadThicknessUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def headThicknessUnitScale(self) -> QgsMapUnitScale: ...
    def setHeadThicknessUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def headThicknessUnit(self) -> Qgis.RenderUnit: ...
    def setHeadThickness(self, thickness: float) -> None: ...
    def headThickness(self) -> float: ...
    def setHeadLengthUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def headLengthUnitScale(self) -> QgsMapUnitScale: ...
    def setHeadLengthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def headLengthUnit(self) -> Qgis.RenderUnit: ...
    def setHeadLength(self, length: float) -> None: ...
    def headLength(self) -> float: ...
    def setArrowStartWidthUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def arrowStartWidthUnitScale(self) -> QgsMapUnitScale: ...
    def setArrowStartWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def arrowStartWidthUnit(self) -> Qgis.RenderUnit: ...
    def setArrowStartWidth(self, width: float) -> None: ...
    def arrowStartWidth(self) -> float: ...
    def setArrowWidthUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def arrowWidthUnitScale(self) -> QgsMapUnitScale: ...
    def setArrowWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def arrowWidthUnit(self) -> Qgis.RenderUnit: ...
    def setArrowWidth(self, width: float) -> None: ...
    def arrowWidth(self) -> float: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def subSymbol(self) -> 'QgsSymbol': ...
    def clone(self) -> 'QgsArrowSymbolLayer': ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRendererCategory(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: typing.Any, symbol: 'QgsSymbol', label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, cat: 'QgsRendererCategory') -> None: ...

    def swap(self, other: 'QgsRendererCategory') -> None: ...
    def __repr__(self) -> typing.Any: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def dump(self) -> str: ...
    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setLabel(self, label: str) -> None: ...
    def setSymbol(self, s: 'QgsSymbol') -> None: ...
    def setValue(self, value: typing.Any) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> 'QgsSymbol': ...
    def value(self) -> typing.Any: ...


class QgsCategorizedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, attrName: str = ..., categories: typing.Iterable[QgsRendererCategory] = ...) -> None: ...

    def symbolForValue2(self, value: typing.Any) -> typing.Tuple['QgsSymbol', bool]: ...
    def symbolForValue(self, value: typing.Any) -> 'QgsSymbol': ...
    def skipRender(self) -> 'QgsSymbol': ...
    def rebuildHash(self) -> None: ...
    @staticmethod
    def displayString(value: typing.Any, precision: int = ...) -> str: ...
    @staticmethod
    def createCategories(values: typing.Iterable[typing.Any], symbol: 'QgsSymbol', layer: typing.Optional[QgsVectorLayer] = ..., fieldName: str = ...) -> typing.List[QgsRendererCategory]: ...
    def matchToSymbols(self, style: 'QgsStyle', type: Qgis.SymbolType, caseSensitive: bool = ..., useTolerantMatch: bool = ...) -> typing.Tuple[int, typing.List[typing.Any], typing.List[str]]: ...
    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsCategorizedSymbolRenderer': ...
    def legendClassificationAttribute(self) -> str: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def setLegendSymbolItem(self, key: str, symbol: 'QgsSymbol') -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def updateColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceSymbol(self, sym: 'QgsSymbol') -> None: ...
    def sourceSymbol(self) -> 'QgsSymbol': ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def setClassAttribute(self, attr: str) -> None: ...
    def classAttribute(self) -> str: ...
    def sortByLabel(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def sortByValue(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def moveCategory(self, from_: int, to: int) -> None: ...
    def deleteAllCategories(self) -> None: ...
    def deleteCategory(self, catIndex: int) -> bool: ...
    def addCategory(self, category: QgsRendererCategory) -> None: ...
    def updateCategoryRenderState(self, catIndex: int, render: bool) -> bool: ...
    def updateCategoryLabel(self, catIndex: int, label: str) -> bool: ...
    def updateCategorySymbol(self, catIndex: int, symbol: 'QgsSymbol') -> bool: ...
    def updateCategoryValue(self, catIndex: int, value: typing.Any) -> bool: ...
    def categoryIndexForLabel(self, val: str) -> int: ...
    def categoryIndexForValue(self, val: typing.Any) -> int: ...
    def categories(self) -> typing.List[QgsRendererCategory]: ...
    def updateSymbols(self, sym: 'QgsSymbol') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsCategorizedSymbolRenderer': ...
    def dump(self) -> str: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...


class QgsColorBrewerPalette(PyQt5.sip.wrapper):

    BREWER_STRING = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorBrewerPalette') -> None: ...

    @staticmethod
    def listSchemeVariants(schemeName: str) -> typing.List[int]: ...
    @staticmethod
    def listSchemes() -> typing.List[str]: ...
    @staticmethod
    def listSchemeColors(schemeName: str, colors: int) -> typing.List[QtGui.QColor]: ...


class QgsCombinedStyleModel(QtCore.QConcatenateTablesProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addTargetScreenProperties(self, properties: QgsScreenProperties) -> None: ...
    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def styles(self) -> typing.List['QgsStyle']: ...
    def removeStyle(self, style: 'QgsStyle') -> None: ...
    def addDefaultStyle(self) -> None: ...
    def addStyle(self, style: 'QgsStyle') -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...


class QgsCptCityArchive(PyQt5.sip.wrapper):

    def __init__(self, archiveName: str = ..., baseDir: str = ...) -> None: ...

    def selectionItems(self) -> typing.List['QgsCptCityDataItem']: ...
    def rootItems(self) -> typing.List['QgsCptCityDataItem']: ...
    @staticmethod
    def archiveRegistry() -> typing.Any: ...
    @staticmethod
    def defaultArchive() -> 'QgsCptCityArchive': ...
    @staticmethod
    def clearArchives() -> None: ...
    @staticmethod
    def initDefaultArchive() -> None: ...
    @staticmethod
    def initArchive(archiveName: str, archiveBaseDir: str) -> None: ...
    @staticmethod
    def initArchives(loadAll: bool = ...) -> None: ...
    def archiveName(self) -> str: ...
    def isEmpty(self) -> bool: ...
    @staticmethod
    def description(fileName: str) -> typing.Dict[str, str]: ...
    @staticmethod
    def copyingInfo(fileName: str) -> typing.Dict[str, str]: ...
    @staticmethod
    def findFileName(target: str, startDir: str, baseDir: str) -> str: ...
    def descFileName(self, dirName: str) -> str: ...
    def copyingFileName(self, dirName: str) -> str: ...
    def setBaseDir(self, dirName: str) -> None: ...
    @staticmethod
    def defaultBaseDir() -> str: ...
    @typing.overload
    def baseDir(self) -> str: ...
    @typing.overload
    @staticmethod
    def baseDir(archiveName: str) -> str: ...


class QgsCptCityDataItem(QtCore.QObject):

    class Type(int):
        ColorRamp = ... # type: QgsCptCityDataItem.Type
        Collection = ... # type: QgsCptCityDataItem.Type
        Directory = ... # type: QgsCptCityDataItem.Type
        Selection = ... # type: QgsCptCityDataItem.Type
        AllRamps = ... # type: QgsCptCityDataItem.Type

    def __init__(self, type: 'QgsCptCityDataItem.Type', parent: 'QgsCptCityDataItem', name: str, path: str) -> None: ...

    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: 'QgsCptCityDataItem', first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: 'QgsCptCityDataItem', first: int, last: int) -> None: ...
    def isValid(self) -> bool: ...
    def toolTip(self) -> str: ...
    def setToolTip(self, msg: str) -> None: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def shortInfo(self) -> str: ...
    def info(self) -> str: ...
    def path(self) -> str: ...
    def name(self) -> str: ...
    @typing.overload
    def icon(self) -> QtGui.QIcon: ...
    @typing.overload
    def icon(self, size: QtCore.QSize) -> QtGui.QIcon: ...
    def children(self) -> typing.List['QgsCptCityDataItem']: ...
    def setParent(self, parent: 'QgsCptCityDataItem') -> None: ...
    def parent(self) -> 'QgsCptCityDataItem': ...
    def type(self) -> 'QgsCptCityDataItem.Type': ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsCptCityDataItem'], item: 'QgsCptCityDataItem') -> int: ...
    def handleDrop(self, a0: QtCore.QMimeData, a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    def equal(self, other: 'QgsCptCityDataItem') -> bool: ...
    def removeChildItem(self, child: 'QgsCptCityDataItem') -> 'QgsCptCityDataItem': ...
    def deleteChildItem(self, child: 'QgsCptCityDataItem') -> None: ...
    def addChildItem(self, child: 'QgsCptCityDataItem', refresh: bool = ...) -> None: ...
    def isPopulated(self) -> bool: ...
    def populate(self) -> None: ...
    def createChildren(self) -> typing.List['QgsCptCityDataItem']: ...
    def refresh(self) -> None: ...
    def leafCount(self) -> int: ...
    def rowCount(self) -> int: ...
    def hasChildren(self) -> bool: ...


class QgsCptCityColorRampItem(QgsCptCityDataItem):

    @typing.overload
    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str, variantName: str = ..., initialize: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str, variantList: typing.Iterable[str], initialize: bool = ...) -> None: ...

    def init(self) -> None: ...
    @typing.overload
    def icon(self) -> QtGui.QIcon: ...
    @typing.overload
    def icon(self, size: QtCore.QSize) -> QtGui.QIcon: ...
    def ramp(self) -> QgsCptCityColorRamp: ...
    def leafCount(self) -> int: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...


class QgsCptCityCollectionItem(QgsCptCityDataItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def childrenRamps(self, recursive: bool) -> typing.List[QgsCptCityDataItem]: ...
    def addChild(self, item: QgsCptCityDataItem) -> None: ...
    def setPopulated(self) -> None: ...


class QgsCptCityDirectoryItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def dirEntries(self) -> typing.List[str]: ...
    def rampsMap(self) -> typing.Dict[str, typing.List[str]]: ...
    @staticmethod
    def dataItem(parent: QgsCptCityDataItem, name: str, path: str) -> QgsCptCityDataItem: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCitySelectionItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def parseXml(self) -> None: ...
    def selectionsList(self) -> typing.List[str]: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCityAllRampsItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, items: typing.Iterable[QgsCptCityDataItem]) -> None: ...

    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCityBrowserModel(QtCore.QAbstractItemModel):

    class ViewType(int):
        Authors = ... # type: QgsCptCityBrowserModel.ViewType
        Selections = ... # type: QgsCptCityBrowserModel.ViewType
        List = ... # type: QgsCptCityBrowserModel.ViewType

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., archive: typing.Optional[QgsCptCityArchive] = ..., Type: 'QgsCptCityBrowserModel.ViewType' = ...) -> None: ...

    def removeRootItems(self) -> None: ...
    def addRootItems(self) -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: QgsCptCityDataItem, first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: QgsCptCityDataItem, first: int, last: int) -> None: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def connectItem(self, item: QgsCptCityDataItem) -> None: ...
    def findPath(self, path: str) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: str) -> None: ...
    @typing.overload
    def refresh(self, index: QtCore.QModelIndex = ...) -> None: ...
    def reload(self) -> None: ...
    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dataItem(self, idx: QtCore.QModelIndex) -> QgsCptCityDataItem: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def findItem(self, item: QgsCptCityDataItem, parent: typing.Optional[QgsCptCityDataItem] = ...) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...


class QgsMarkerSymbolLayer(QgsSymbolLayer):

    class VerticalAnchorPoint(int):
        Top = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint
        VCenter = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint
        Bottom = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint

    class HorizontalAnchorPoint(int):
        Left = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint
        HCenter = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint
        Right = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint

    def __init__(self, locked: bool = ...) -> None: ...

    @staticmethod
    def _rotatedOffset(offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float], angle: float) -> QtCore.QPointF: ...
    def markerOffset2(self, context: 'QgsSymbolRenderContext', width: float, height: float, widthUnit: Qgis.RenderUnit, heightUnit: Qgis.RenderUnit, widthMapUnitScale: QgsMapUnitScale, heightMapUnitScale: QgsMapUnitScale) -> typing.Tuple[float, float]: ...
    def markerOffsetWithWidthAndHeight(self, context: 'QgsSymbolRenderContext', width: float, height: float) -> typing.Tuple[float, float]: ...
    def markerOffset(self, context: 'QgsSymbolRenderContext') -> typing.Tuple[float, float]: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def dxfAngle(self, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfSize(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def verticalAnchorPoint(self) -> 'QgsMarkerSymbolLayer.VerticalAnchorPoint': ...
    def setVerticalAnchorPoint(self, v: 'QgsMarkerSymbolLayer.VerticalAnchorPoint') -> None: ...
    def horizontalAnchorPoint(self) -> 'QgsMarkerSymbolLayer.HorizontalAnchorPoint': ...
    def setHorizontalAnchorPoint(self, h: 'QgsMarkerSymbolLayer.HorizontalAnchorPoint') -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def scaleMethod(self) -> Qgis.ScaleMethod: ...
    def setScaleMethod(self, scaleMethod: Qgis.ScaleMethod) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def size(self) -> float: ...
    def setSize(self, size: float) -> None: ...
    def setLineAngle(self, lineAngle: float) -> None: ...
    def angle(self) -> float: ...
    def setAngle(self, angle: float) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...


class QgsEllipseSymbolLayer(QgsMarkerSymbolLayer):

    class Shape(int):
        Circle = ... # type: QgsEllipseSymbolLayer.Shape
        Rectangle = ... # type: QgsEllipseSymbolLayer.Shape
        Diamond = ... # type: QgsEllipseSymbolLayer.Shape
        Cross = ... # type: QgsEllipseSymbolLayer.Shape
        Arrow = ... # type: QgsEllipseSymbolLayer.Shape
        HalfArc = ... # type: QgsEllipseSymbolLayer.Shape
        Triangle = ... # type: QgsEllipseSymbolLayer.Shape
        RightHalfTriangle = ... # type: QgsEllipseSymbolLayer.Shape
        LeftHalfTriangle = ... # type: QgsEllipseSymbolLayer.Shape
        SemiCircle = ... # type: QgsEllipseSymbolLayer.Shape
        ThirdCircle = ... # type: QgsEllipseSymbolLayer.Shape
        QuarterCircle = ... # type: QgsEllipseSymbolLayer.Shape
        Pentagon = ... # type: QgsEllipseSymbolLayer.Shape
        Hexagon = ... # type: QgsEllipseSymbolLayer.Shape
        Octagon = ... # type: QgsEllipseSymbolLayer.Shape
        Star = ... # type: QgsEllipseSymbolLayer.Shape

    def __init__(self) -> None: ...

    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def symbolHeightMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSymbolHeightMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def symbolHeightUnit(self) -> Qgis.RenderUnit: ...
    def setSymbolHeightUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def symbolWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSymbolWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def symbolWidthUnit(self) -> Qgis.RenderUnit: ...
    def setSymbolWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setStrokeColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFillColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeWidth(self, w: float) -> None: ...
    def setPenCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def penCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeStyle(self, strokeStyle: QtCore.Qt.PenStyle) -> None: ...
    def strokeStyle(self) -> QtCore.Qt.PenStyle: ...
    def symbolHeight(self) -> float: ...
    def setSymbolHeight(self, h: float) -> None: ...
    def symbolWidth(self) -> float: ...
    def setSymbolWidth(self, w: float) -> None: ...
    def setSize(self, size: float) -> None: ...
    @staticmethod
    def encodeShape(shape: 'QgsEllipseSymbolLayer.Shape') -> str: ...
    @staticmethod
    def decodeShape(name: str) -> typing.Tuple['QgsEllipseSymbolLayer.Shape', bool]: ...
    def setShape(self, shape: 'QgsEllipseSymbolLayer.Shape') -> None: ...
    def shape(self) -> 'QgsEllipseSymbolLayer.Shape': ...
    def symbolName(self) -> str: ...
    def setSymbolName(self, name: str) -> None: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint, float] = ...) -> bool: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsEllipseSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...
    @staticmethod
    def shapeIsFilled(shape: 'QgsEllipseSymbolLayer.Shape') -> bool: ...
    @staticmethod
    def availableShapes() -> typing.List['QgsEllipseSymbolLayer.Shape']: ...


class QgsEmbeddedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, defaultSymbol: 'QgsSymbol') -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsEmbeddedSymbolRenderer': ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def setDefaultSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def defaultSymbol(self) -> 'QgsSymbol': ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def clone(self) -> 'QgsEmbeddedSymbolRenderer': ...
    def usesEmbeddedSymbols(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...


class QgsFeatureRendererGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureRendererGenerator') -> None: ...

    def createRenderer(self) -> QgsFeatureRenderer: ...
    def level(self) -> float: ...
    def id(self) -> str: ...


class QgsSymbol(PyQt5.sip.wrapper):

    class Property(int):
        PropertyOpacity = ... # type: QgsSymbol.Property

    def __init__(self, type: Qgis.SymbolType, layers: typing.Iterable[QgsSymbolLayer]) -> None: ...

    def renderVertexMarker(self, pt: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: QgsRenderContext, currentVertexMarkerType: Qgis.VertexMarkerType, currentVertexMarkerSize: float) -> None: ...
    def renderUsingLayer(self, layer: QgsSymbolLayer, context: 'QgsSymbolRenderContext', geometryType: Qgis.GeometryType = ..., points: typing.Optional[QtGui.QPolygonF] = ..., rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]] = ...) -> None: ...
    def cloneLayers(self) -> typing.List[QgsSymbolLayer]: ...
    @staticmethod
    def _getPolygon(pts: QtGui.QPolygonF, holes: typing.Iterable[QtGui.QPolygonF], context: QgsRenderContext, polygon: QgsPolygon, clipToExtent: bool = ..., correctRingOrientation: bool = ...) -> None: ...
    @staticmethod
    def _getPolygonRing(context: QgsRenderContext, curve: QgsCurve, clipToExtent: bool, isExteriorRing: bool = ..., correctRingOrientation: bool = ...) -> QtGui.QPolygonF: ...
    @staticmethod
    def _getLineString(context: QgsRenderContext, curve: QgsCurve, clipToExtent: bool = ...) -> QtGui.QPolygonF: ...
    @staticmethod
    def _getPoint(context: QgsRenderContext, point: QgsPoint) -> QtCore.QPointF: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ...) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ...) -> None: ...
    def symbolRenderContext(self) -> 'QgsSymbolRenderContext': ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ..., currentVertexMarkerType: Qgis.VertexMarkerType = ..., currentVertexMarkerSize: float = ...) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def setDataDefinedProperty(self, key: 'QgsSymbol.Property', property: QgsProperty) -> None: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setAnimationSettings(self, settings: 'QgsSymbolAnimationSettings') -> None: ...
    def animationSettings(self) -> 'QgsSymbolAnimationSettings': ...
    def forceRHR(self) -> bool: ...
    def setForceRHR(self, force: bool) -> None: ...
    def clipFeaturesToExtent(self) -> bool: ...
    def setClipFeaturesToExtent(self, clipFeaturesToExtent: bool) -> None: ...
    def flags(self) -> Qgis.SymbolFlags: ...
    def setFlags(self, flags: typing.Union[Qgis.SymbolFlags, Qgis.SymbolFlag]) -> None: ...
    def renderHints(self) -> Qgis.SymbolRenderHints: ...
    def setRenderHints(self, hints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint]) -> None: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSymbol': ...
    def dump(self) -> str: ...
    def bigSymbolPreviewImage(self, expressionContext: typing.Optional[QgsExpressionContext] = ..., flags: int = ...) -> QtGui.QImage: ...
    def bigSymbolPreviewImageV2(self, expressionContext: typing.Optional[QgsExpressionContext] = ..., flags: typing.Union[Qgis.SymbolPreviewFlags, Qgis.SymbolPreviewFlag] = ..., screen: QgsScreenProperties = ...) -> QtGui.QImage: ...
    def asImage(self, size: QtCore.QSize, customContext: typing.Optional[QgsRenderContext] = ...) -> QtGui.QImage: ...
    def exportImage(self, path: str, format: str, size: QtCore.QSize) -> None: ...
    def drawPreviewIcon(self, painter: QtGui.QPainter, size: QtCore.QSize, customContext: typing.Optional[QgsRenderContext] = ..., selected: bool = ..., expressionContext: typing.Optional[QgsExpressionContext] = ..., patchShape: typing.Optional[QgsLegendPatchShape] = ..., screen: QgsScreenProperties = ...) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields = ...) -> None: ...
    def changeSymbolLayer(self, index: int, layer: QgsSymbolLayer) -> bool: ...
    def takeSymbolLayer(self, index: int) -> QgsSymbolLayer: ...
    def deleteSymbolLayer(self, index: int) -> bool: ...
    def appendSymbolLayer(self, layer: QgsSymbolLayer) -> bool: ...
    def insertSymbolLayer(self, index: int, layer: QgsSymbolLayer) -> bool: ...
    def __delitem__(self, index: int) -> None: ...
    def __getitem__(self, index: int) -> QgsSymbolLayer: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def symbolLayerCount(self) -> int: ...
    def symbolLayer(self, layer: int) -> QgsSymbolLayer: ...
    def symbolLayers(self) -> typing.List[QgsSymbolLayer]: ...
    def type(self) -> Qgis.SymbolType: ...
    @staticmethod
    def defaultSymbol(geomType: Qgis.GeometryType) -> 'QgsSymbol': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    @staticmethod
    def symbolTypeForGeometryType(type: Qgis.GeometryType) -> Qgis.SymbolType: ...
    @staticmethod
    def symbolTypeToString(type: Qgis.SymbolType) -> str: ...


class QgsFillSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsFillSymbol': ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setAngle(self, angle: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsFillSymbol': ...


class QgsFillSymbolLayer(QgsSymbolLayer):

    def __init__(self, locked: bool = ...) -> None: ...

    def _renderPolygon(self, p: QtGui.QPainter, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def toTiledPatternImage(self) -> QtGui.QImage: ...
    def angle(self) -> float: ...
    def setAngle(self, angle: float) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...


class QgsSimpleFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., style: QtCore.Qt.BrushStyle = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., strokeStyle: QtCore.Qt.PenStyle = ..., strokeWidth: float = ..., penJoinStyle: QtCore.Qt.PenJoinStyle = ...) -> None: ...

    def toTiledPatternImage(self) -> QtGui.QImage: ...
    def dxfBrushStyle(self) -> QtCore.Qt.BrushStyle: ...
    def dxfBrushColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfAngle(self, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeWidth(self, strokeWidth: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeStyle(self, strokeStyle: QtCore.Qt.PenStyle) -> None: ...
    def strokeStyle(self) -> QtCore.Qt.PenStyle: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setStrokeColor(self, strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setBrushStyle(self, style: QtCore.Qt.BrushStyle) -> None: ...
    def brushStyle(self) -> QtCore.Qt.BrushStyle: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSimpleFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsGradientFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., gradientColorType: Qgis.GradientColorSource = ..., gradientType: Qgis.GradientType = ..., coordinateMode: Qgis.SymbolCoordinateReference = ..., gradientSpread: Qgis.GradientSpread = ...) -> None: ...

    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def referencePoint2IsCentroid(self) -> bool: ...
    def setReferencePoint2IsCentroid(self, isCentroid: bool) -> None: ...
    def referencePoint2(self) -> QtCore.QPointF: ...
    def setReferencePoint2(self, referencePoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def referencePoint1IsCentroid(self) -> bool: ...
    def setReferencePoint1IsCentroid(self, isCentroid: bool) -> None: ...
    def referencePoint1(self) -> QtCore.QPointF: ...
    def setReferencePoint1(self, referencePoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def setGradientSpread(self, gradientSpread: Qgis.GradientSpread) -> None: ...
    def gradientSpread(self) -> Qgis.GradientSpread: ...
    def setCoordinateMode(self, coordinateMode: Qgis.SymbolCoordinateReference) -> None: ...
    def coordinateMode(self) -> Qgis.SymbolCoordinateReference: ...
    def setColor2(self, color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def setGradientColorType(self, gradientColorType: Qgis.GradientColorSource) -> None: ...
    def gradientColorType(self) -> Qgis.GradientColorSource: ...
    def setGradientType(self, gradientType: Qgis.GradientType) -> None: ...
    def gradientType(self) -> Qgis.GradientType: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsGradientFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsShapeburstFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., colorType: Qgis.GradientColorSource = ..., blurRadius: int = ..., useWholeShape: bool = ..., maxDistance: float = ...) -> None: ...

    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def ignoreRings(self) -> bool: ...
    def setIgnoreRings(self, ignoreRings: bool) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def setColor2(self, color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorType(self) -> Qgis.GradientColorSource: ...
    def setColorType(self, colorType: Qgis.GradientColorSource) -> None: ...
    def distanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceUnit(self) -> Qgis.RenderUnit: ...
    def setDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maxDistance(self) -> float: ...
    def setMaxDistance(self, maxDistance: float) -> None: ...
    def useWholeShape(self) -> bool: ...
    def setUseWholeShape(self, useWholeShape: bool) -> None: ...
    def blurRadius(self) -> int: ...
    def setBlurRadius(self, blurRadius: int) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsShapeburstFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsImageFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyBrushTransformFromContext(self, context: typing.Optional['QgsSymbolRenderContext'] = ...) -> bool: ...
    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def coordinateReference(self) -> Qgis.SymbolCoordinateReference: ...
    def setCoordinateReference(self, coordinateReference: Qgis.SymbolCoordinateReference) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...


class QgsRasterFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self, imageFilePath: str = ...) -> None: ...

    def applyBrushTransformFromContext(self, context: typing.Optional['QgsSymbolRenderContext'] = ...) -> bool: ...
    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def widthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def widthUnit(self) -> Qgis.RenderUnit: ...
    def setWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def width(self) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def coordinateMode(self) -> Qgis.SymbolCoordinateReference: ...
    def setCoordinateMode(self, mode: Qgis.SymbolCoordinateReference) -> None: ...
    def imageFilePath(self) -> str: ...
    def setImageFilePath(self, imagePath: str) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsRasterFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsSVGFillSymbolLayer(QgsImageFillSymbolLayer):

    @typing.overload
    def __init__(self, svgFilePath: str, width: float = ..., rotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, svgData: typing.Union[QtCore.QByteArray, bytes, bytearray], width: float = ..., rotation: float = ...) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setParameters(self, parameters: typing.Dict[str, QgsProperty]) -> None: ...
    def parameters(self) -> typing.Dict[str, QgsProperty]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def svgStrokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSvgStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def svgStrokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setSvgStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def patternWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setPatternWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def patternWidthUnit(self) -> Qgis.RenderUnit: ...
    def setPatternWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def svgStrokeWidth(self) -> float: ...
    def setSvgStrokeWidth(self, w: float) -> None: ...
    def svgStrokeColor(self) -> QtGui.QColor: ...
    def setSvgStrokeColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def svgFillColor(self) -> QtGui.QColor: ...
    def setSvgFillColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def patternWidth(self) -> float: ...
    def setPatternWidth(self, width: float) -> None: ...
    def svgFilePath(self) -> str: ...
    def setSvgFilePath(self, svgPath: str) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def usesMapUnits(self) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSVGFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsLinePatternFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setClipMode(self, mode: Qgis.LineClipMode) -> None: ...
    def clipMode(self) -> Qgis.LineClipMode: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def lineWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setLineWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def lineWidthUnit(self) -> Qgis.RenderUnit: ...
    def setLineWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def distanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceUnit(self) -> Qgis.RenderUnit: ...
    def setDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offset(self) -> float: ...
    def setOffset(self, offset: float) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def lineWidth(self) -> float: ...
    def setLineWidth(self, w: float) -> None: ...
    def distance(self) -> float: ...
    def setDistance(self, d: float) -> None: ...
    def lineAngle(self) -> float: ...
    def setLineAngle(self, a: float) -> None: ...
    def ogrFeatureStyleWidth(self, widthScaleFactor: float) -> str: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def toTiledPatternImage(self) -> QtGui.QImage: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsLinePatternFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsPointPatternFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setSeed(self, seed: int) -> None: ...
    def seed(self) -> int: ...
    def setRandomDeviationYMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setRandomDeviationXMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def randomDeviationYMapUnitScale(self) -> QgsMapUnitScale: ...
    def randomDeviationXMapUnitScale(self) -> QgsMapUnitScale: ...
    def randomDeviationYUnit(self) -> Qgis.RenderUnit: ...
    def setRandomDeviationYUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def randomDeviationXUnit(self) -> Qgis.RenderUnit: ...
    def setRandomDeviationXUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maximumRandomDeviationY(self) -> float: ...
    def setMaximumRandomDeviationY(self, deviation: float) -> None: ...
    def maximumRandomDeviationX(self) -> float: ...
    def setMaximumRandomDeviationX(self, deviation: float) -> None: ...
    def setClipMode(self, mode: Qgis.MarkerClipMode) -> None: ...
    def clipMode(self) -> Qgis.MarkerClipMode: ...
    def offsetYMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetYMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetYUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetYUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetXMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetXMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetXUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetXUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetY(self) -> float: ...
    def setOffsetY(self, offset: float) -> None: ...
    def offsetX(self) -> float: ...
    def setOffsetX(self, offset: float) -> None: ...
    def displacementYMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDisplacementYMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def displacementYUnit(self) -> Qgis.RenderUnit: ...
    def setDisplacementYUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDisplacementY(self, d: float) -> None: ...
    def displacementY(self) -> float: ...
    def displacementXMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDisplacementXMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def displacementXUnit(self) -> Qgis.RenderUnit: ...
    def setDisplacementXUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDisplacementX(self, d: float) -> None: ...
    def displacementX(self) -> float: ...
    def distanceYMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceYMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceYUnit(self) -> Qgis.RenderUnit: ...
    def setDistanceYUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDistanceY(self, d: float) -> None: ...
    def distanceY(self) -> float: ...
    def distanceXMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceXMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceXUnit(self) -> Qgis.RenderUnit: ...
    def setDistanceXUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDistanceX(self, d: float) -> None: ...
    def distanceX(self) -> float: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def toTiledPatternImage(self) -> QtGui.QImage: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsPointPatternFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRandomMarkerFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, pointCount: int = ..., method: Qgis.PointCountMethod = ..., densityArea: float = ..., seed: int = ...) -> None: ...

    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def densityAreaUnitScale(self) -> QgsMapUnitScale: ...
    def setDensityAreaUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def densityAreaUnit(self) -> Qgis.RenderUnit: ...
    def setDensityAreaUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDensityArea(self, area: float) -> None: ...
    def densityArea(self) -> float: ...
    def setCountMethod(self, method: Qgis.PointCountMethod) -> None: ...
    def countMethod(self) -> Qgis.PointCountMethod: ...
    def setClipPoints(self, clipped: bool) -> None: ...
    def clipPoints(self) -> bool: ...
    def setSeed(self, seed: int) -> None: ...
    def seed(self) -> int: ...
    def setPointCount(self, count: int) -> None: ...
    def pointCount(self) -> int: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def clone(self) -> 'QgsRandomMarkerFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsCentroidFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self) -> None: ...

    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def setClipOnCurrentPartOnly(self, clipOnCurrentPartOnly: bool) -> None: ...
    def clipOnCurrentPartOnly(self) -> bool: ...
    def setClipPoints(self, clipPoints: bool) -> None: ...
    def clipPoints(self) -> bool: ...
    def pointOnAllParts(self) -> bool: ...
    def setPointOnAllParts(self, pointOnAllParts: bool) -> None: ...
    def pointOnSurface(self) -> bool: ...
    def setPointOnSurface(self, pointOnSurface: bool) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsCentroidFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsGeometryGeneratorSymbolLayer(QgsSymbolLayer):

    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def render(self, context: 'QgsSymbolRenderContext', geometryType: Qgis.GeometryType = ..., points: typing.Optional[QtGui.QPolygonF] = ..., rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]] = ...) -> None: ...
    def isCompatibleWithSymbol(self, symbol: QgsSymbol) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setUnits(self, units: Qgis.RenderUnit) -> None: ...
    def units(self) -> Qgis.RenderUnit: ...
    def geometryExpression(self) -> str: ...
    def setGeometryExpression(self, exp: str) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> QgsSymbolLayer: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def setSymbolType(self, symbolType: Qgis.SymbolType) -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsGraduatedSymbolRenderer(QgsFeatureRenderer):

    class Mode(int):
        EqualInterval = ... # type: QgsGraduatedSymbolRenderer.Mode
        Quantile = ... # type: QgsGraduatedSymbolRenderer.Mode
        Jenks = ... # type: QgsGraduatedSymbolRenderer.Mode
        StdDev = ... # type: QgsGraduatedSymbolRenderer.Mode
        Pretty = ... # type: QgsGraduatedSymbolRenderer.Mode
        Custom = ... # type: QgsGraduatedSymbolRenderer.Mode

    def __init__(self, attrName: str = ..., ranges: typing.Iterable['QgsRendererRange'] = ...) -> None: ...

    def legendKeyForValue(self, value: float) -> str: ...
    def symbolForValue(self, value: float) -> QgsSymbol: ...
    def rangeForValue(self, value: float) -> 'QgsRendererRange': ...
    def updateRangeLabels(self) -> None: ...
    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsGraduatedSymbolRenderer': ...
    def legendClassificationAttribute(self) -> str: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setGraduatedMethod(self, method: Qgis.GraduatedMethod) -> None: ...
    def graduatedMethod(self) -> Qgis.GraduatedMethod: ...
    def maxSymbolSize(self) -> float: ...
    def minSymbolSize(self) -> float: ...
    def setSymbolSizes(self, minSize: float, maxSize: float) -> None: ...
    def updateSymbols(self, sym: QgsSymbol) -> None: ...
    def updateColorRamp(self, ramp: typing.Optional[QgsColorRamp] = ...) -> None: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceSymbol(self, sym: QgsSymbol) -> None: ...
    def sourceSymbol(self) -> QgsSymbol: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    @staticmethod
    def createRenderer(vlayer: QgsVectorLayer, attrName: str, classes: int, mode: 'QgsGraduatedSymbolRenderer.Mode', symbol: QgsSymbol, ramp: QgsColorRamp, legendFormat: 'QgsRendererRangeLabelFormat' = ..., useSymmetricMode: bool = ..., symmetryPoint: float = ..., listForCboPrettyBreaks: typing.Iterable[str] = ..., astride: bool = ...) -> 'QgsGraduatedSymbolRenderer': ...
    def calculateLabelPrecision(self, updateRanges: bool = ...) -> None: ...
    def setLabelFormat(self, labelFormat: 'QgsRendererRangeLabelFormat', updateRanges: bool = ...) -> None: ...
    def labelFormat(self) -> 'QgsRendererRangeLabelFormat': ...
    @typing.overload
    def updateClasses(self, vlayer: QgsVectorLayer, mode: 'QgsGraduatedSymbolRenderer.Mode', nclasses: int, useSymmetricMode: bool = ..., symmetryPoint: float = ..., astride: bool = ...) -> None: ...
    @typing.overload
    def updateClasses(self, vl: QgsVectorLayer, nclasses: int) -> None: ...
    @staticmethod
    def calcEqualIntervalBreaks(minimum: float, maximum: float, classes: int, useSymmetricMode: bool, symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    @staticmethod
    def makeBreaksSymmetric(breaks: typing.Iterable[float], symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    def setAstride(self, astride: bool) -> None: ...
    def astride(self) -> bool: ...
    def setSymmetryPoint(self, symmetryPoint: float) -> None: ...
    def symmetryPoint(self) -> float: ...
    def setUseSymmetricMode(self, useSymmetricMode: bool) -> None: ...
    def useSymmetricMode(self) -> bool: ...
    def setMode(self, mode: 'QgsGraduatedSymbolRenderer.Mode') -> None: ...
    def mode(self) -> 'QgsGraduatedSymbolRenderer.Mode': ...
    def setClassificationMethod(self, method: QgsClassificationMethod) -> None: ...
    def classificationMethod(self) -> QgsClassificationMethod: ...
    def sortByLabel(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def sortByValue(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def rangesHaveGaps(self) -> bool: ...
    def rangesOverlap(self) -> bool: ...
    def moveClass(self, from_: int, to: int) -> None: ...
    def deleteAllClasses(self) -> None: ...
    def deleteClass(self, idx: int) -> None: ...
    def addBreak(self, breakValue: float, updateSymbols: bool = ...) -> None: ...
    def addClassLowerUpper(self, lower: float, upper: float) -> None: ...
    def addClassRange(self, range: 'QgsRendererRange') -> None: ...
    def addClass(self, symbol: QgsSymbol) -> None: ...
    def updateRangeRenderState(self, rangeIndex: int, render: bool) -> bool: ...
    def updateRangeLowerValue(self, rangeIndex: int, value: float) -> bool: ...
    def updateRangeUpperValue(self, rangeIndex: int, value: float) -> bool: ...
    def updateRangeLabel(self, rangeIndex: int, label: str) -> bool: ...
    def updateRangeSymbol(self, rangeIndex: int, symbol: QgsSymbol) -> bool: ...
    def ranges(self) -> typing.List['QgsRendererRange']: ...
    def setClassAttribute(self, attr: str) -> None: ...
    def classAttribute(self) -> str: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsGraduatedSymbolRenderer': ...
    def dump(self) -> str: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsHeatmapRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    def setWeightExpression(self, expression: str) -> None: ...
    def weightExpression(self) -> str: ...
    def setRenderQuality(self, quality: int) -> None: ...
    def renderQuality(self) -> float: ...
    def setMaximumValue(self, value: float) -> None: ...
    def maximumValue(self) -> float: ...
    def setRadiusMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def radiusMapUnitScale(self) -> QgsMapUnitScale: ...
    def setRadiusUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def radiusUnit(self) -> Qgis.RenderUnit: ...
    def setRadius(self, radius: float) -> None: ...
    def radius(self) -> float: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def modifyRequestExtent(self, extent: QgsRectangle, context: QgsRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsHeatmapRenderer': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsHeatmapRenderer': ...


class QgsInterpolatedLineColor(PyQt5.sip.wrapper):

    class ColoringMethod(int):
        SingleColor = ... # type: QgsInterpolatedLineColor.ColoringMethod
        ColorRamp = ... # type: QgsInterpolatedLineColor.ColoringMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, colorRampShader: QgsColorRampShader) -> None: ...
    @typing.overload
    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsInterpolatedLineColor') -> None: ...

    def graduatedColors(self, value1: float, value2: float, breakValues: typing.Iterable[float], breakColors: typing.Iterable[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]], gradients: typing.Iterable[QtGui.QLinearGradient]) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def singleColor(self) -> QtGui.QColor: ...
    def colorRampShader(self) -> QgsColorRampShader: ...
    def coloringMethod(self) -> 'QgsInterpolatedLineColor.ColoringMethod': ...
    def setColoringMethod(self, coloringMethod: 'QgsInterpolatedLineColor.ColoringMethod') -> None: ...
    def color(self, magnitude: float) -> QtGui.QColor: ...
    @typing.overload
    def setColor(self, colorRampShader: QgsColorRampShader) -> None: ...
    @typing.overload
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...


class QgsInterpolatedLineWidth(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsInterpolatedLineWidth') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def strokeWidth(self, value: float) -> float: ...
    def setFixedStrokeWidth(self, fixedWidth: float) -> None: ...
    def fixedStrokeWidth(self) -> float: ...
    def setIsVariableWidth(self, isVariableWidth: bool) -> None: ...
    def isVariableWidth(self) -> bool: ...
    def setUseAbsoluteValue(self, useAbsoluteValue: bool) -> None: ...
    def useAbsoluteValue(self) -> bool: ...
    def setIgnoreOutOfRange(self, ignoreOutOfRange: bool) -> None: ...
    def ignoreOutOfRange(self) -> bool: ...
    def setMaximumWidth(self, maximumWidth: float) -> None: ...
    def maximumWidth(self) -> float: ...
    def setMinimumWidth(self, minimumWidth: float) -> None: ...
    def minimumWidth(self) -> float: ...
    def setMaximumValue(self, maximumValue: float) -> None: ...
    def maximumValue(self) -> float: ...
    def setMinimumValue(self, minimumValue: float) -> None: ...
    def minimumValue(self) -> float: ...


class QgsInterpolatedLineRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsInterpolatedLineRenderer') -> None: ...

    def setSelected(self, selected: bool) -> None: ...
    def renderInDeviceCoordinates(self, valueColor1: float, valueColor2: float, valueWidth1: float, valueWidth2: float, point1: typing.Union[QtCore.QPointF, QtCore.QPoint, float], point2: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: QgsRenderContext) -> None: ...
    @typing.overload
    def render(self, value1: float, value2: float, point1: QgsPointXY, point2: QgsPointXY, context: QgsRenderContext) -> None: ...
    @typing.overload
    def render(self, valueColor1: float, valueColor2: float, valueWidth1: float, valueWidth2: float, point1: QgsPointXY, point2: QgsPointXY, context: QgsRenderContext) -> None: ...
    def interpolatedColor(self) -> QgsInterpolatedLineColor: ...
    def setInterpolatedColor(self, strokeColoring: QgsInterpolatedLineColor) -> None: ...
    def widthUnit(self) -> Qgis.RenderUnit: ...
    def setWidthUnit(self, strokeWidthUnit: Qgis.RenderUnit) -> None: ...
    def interpolatedLineWidth(self) -> QgsInterpolatedLineWidth: ...
    def setInterpolatedWidth(self, strokeWidth: QgsInterpolatedLineWidth) -> None: ...


class QgsInterpolatedLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self) -> None: ...

    def interpolatedColor(self) -> QgsInterpolatedLineColor: ...
    def setInterpolatedColor(self, interpolatedLineColor: QgsInterpolatedLineColor) -> None: ...
    def endValueExpressionForColor(self) -> str: ...
    def startValueExpressionForColor(self) -> str: ...
    def setExpressionsStringForColor(self, start: str, end: str) -> None: ...
    def interpolatedWidth(self) -> QgsInterpolatedLineWidth: ...
    def setInterpolatedWidth(self, interpolatedLineWidth: QgsInterpolatedLineWidth) -> None: ...
    def widthUnit(self) -> Qgis.RenderUnit: ...
    def setWidthUnit(self, strokeWidthUnit: Qgis.RenderUnit) -> None: ...
    def endValueExpressionForWidth(self) -> str: ...
    def startValueExpressionForWidth(self) -> str: ...
    def setExpressionsStringForWidth(self, start: str, end: str) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsInterpolatedLineSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsMergedFeatureRenderer(QgsFeatureRenderer):

    class GeometryOperation(int):
        Merge = ... # type: QgsMergedFeatureRenderer.GeometryOperation
        InvertOnly = ... # type: QgsMergedFeatureRenderer.GeometryOperation
        MergeAndInvert = ... # type: QgsMergedFeatureRenderer.GeometryOperation

    @typing.overload
    def __init__(self, embeddedRenderer: QgsFeatureRenderer) -> None: ...
    @typing.overload
    def __init__(self, type: str, embeddedRenderer: QgsFeatureRenderer) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsMergedFeatureRenderer': ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def embeddedRenderer(self) -> QgsFeatureRenderer: ...
    def setEmbeddedRenderer(self, subRenderer: QgsFeatureRenderer) -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsMergedFeatureRenderer': ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsInvertedPolygonRenderer(QgsMergedFeatureRenderer):

    def __init__(self, embeddedRenderer: typing.Optional[QgsFeatureRenderer] = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsInvertedPolygonRenderer': ...
    def setPreprocessingEnabled(self, enabled: bool) -> None: ...
    def preprocessingEnabled(self) -> bool: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def dump(self) -> str: ...
    def clone(self) -> 'QgsInvertedPolygonRenderer': ...


class QgsLegendSymbolItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, symbol: QgsSymbol, label: str, ruleKey: str, checkable: bool = ..., scaleMinDenom: int = ..., scaleMaxDenom: int = ..., level: int = ..., parentRuleKey: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLegendSymbolItem') -> None: ...

    def dataDefinedSizeLegendSettings(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegendSettings(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def parentRuleKey(self) -> str: ...
    def level(self) -> int: ...
    def scaleMaxDenom(self) -> int: ...
    def scaleMinDenom(self) -> int: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def legacyRuleKey(self) -> QgsSymbol: ...
    def isCheckable(self) -> bool: ...
    def ruleKey(self) -> str: ...
    def label(self) -> str: ...
    def symbol(self) -> QgsSymbol: ...


class QgsLineSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsLineSymbol': ...
    def renderPolyline(self, points: QtGui.QPolygonF, f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def dataDefinedWidth(self) -> QgsProperty: ...
    def setDataDefinedWidth(self, property: QgsProperty) -> None: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setWidth(self, width: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsLineSymbol': ...


class QgsSimpleLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., width: float = ..., penStyle: QtCore.Qt.PenStyle = ...) -> None: ...

    def setTweakDashPatternOnCorners(self, enabled: bool) -> None: ...
    def tweakDashPatternOnCorners(self) -> bool: ...
    def setAlignDashPattern(self, enabled: bool) -> None: ...
    def alignDashPattern(self) -> bool: ...
    def setDrawInsidePolygon(self, drawInsidePolygon: bool) -> None: ...
    def drawInsidePolygon(self) -> bool: ...
    def setTrimDistanceEndMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def trimDistanceEndMapUnitScale(self) -> QgsMapUnitScale: ...
    def trimDistanceEndUnit(self) -> Qgis.RenderUnit: ...
    def setTrimDistanceEndUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setTrimDistanceEnd(self, distance: float) -> None: ...
    def trimDistanceEnd(self) -> float: ...
    def setTrimDistanceStartMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def trimDistanceStartMapUnitScale(self) -> QgsMapUnitScale: ...
    def trimDistanceStartUnit(self) -> Qgis.RenderUnit: ...
    def setTrimDistanceStartUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setTrimDistanceStart(self, distance: float) -> None: ...
    def trimDistanceStart(self) -> float: ...
    def setDashPatternOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def dashPatternOffsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def dashPatternOffsetUnit(self) -> Qgis.RenderUnit: ...
    def setDashPatternOffsetUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setDashPatternOffset(self, offset: float) -> None: ...
    def dashPatternOffset(self) -> float: ...
    def setCustomDashVector(self, vector: typing.Iterable[float]) -> None: ...
    def customDashVector(self) -> typing.List[float]: ...
    def setCustomDashPatternMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def customDashPatternMapUnitScale(self) -> QgsMapUnitScale: ...
    def customDashPatternUnit(self) -> Qgis.RenderUnit: ...
    def setCustomDashPatternUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setUseCustomDashPattern(self, b: bool) -> None: ...
    def useCustomDashPattern(self) -> bool: ...
    def setPenCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def penCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setPenStyle(self, style: QtCore.Qt.PenStyle) -> None: ...
    def penStyle(self) -> QtCore.Qt.PenStyle: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfOffset(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfCustomDashPattern(self) -> typing.Tuple[typing.List[float], Qgis.RenderUnit]: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSimpleLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsTemplatedLineSymbolLayerBase(QgsLineSymbolLayer):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    @staticmethod
    def setCommonProperties(destLayer: 'QgsTemplatedLineSymbolLayerBase', properties: typing.Dict[str, typing.Any]) -> None: ...
    def copyTemplateSymbolProperties(self, destLayer: 'QgsTemplatedLineSymbolLayerBase') -> None: ...
    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setSymbolAngle(self, angle: float) -> None: ...
    def symbolAngle(self) -> float: ...
    def setSymbolLineAngle(self, angle: float) -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def averageAngleMapUnitScale(self) -> QgsMapUnitScale: ...
    def setAverageAngleMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def averageAngleUnit(self) -> Qgis.RenderUnit: ...
    def setAverageAngleUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setAverageAngleLength(self, length: float) -> None: ...
    def averageAngleLength(self) -> float: ...
    def setOffsetAlongLineMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetAlongLineMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetAlongLineUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def offsetAlongLineUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetAlongLine(self, offsetAlongLine: float) -> None: ...
    def offsetAlongLine(self) -> float: ...
    def setPlaceOnEveryPart(self, respect: bool) -> None: ...
    def placeOnEveryPart(self) -> bool: ...
    def setPlacements(self, placements: typing.Union[Qgis.MarkerLinePlacements, Qgis.MarkerLinePlacement]) -> None: ...
    def placements(self) -> Qgis.MarkerLinePlacements: ...
    def setPlacement(self, placement: Qgis.MarkerLinePlacement) -> None: ...
    def placement(self) -> Qgis.MarkerLinePlacement: ...
    def intervalMapUnitScale(self) -> QgsMapUnitScale: ...
    def setIntervalMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def intervalUnit(self) -> Qgis.RenderUnit: ...
    def setIntervalUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setInterval(self, interval: float) -> None: ...
    def interval(self) -> float: ...
    def setRotateSymbols(self, rotate: bool) -> None: ...
    def rotateSymbols(self) -> bool: ...


class QgsMarkerLineSymbolLayer(QgsTemplatedLineSymbolLayerBase):

    def __init__(self, rotateMarker: bool = ..., interval: float = ...) -> None: ...

    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setSymbolAngle(self, angle: float) -> None: ...
    def symbolAngle(self) -> float: ...
    def setSymbolLineAngle(self, angle: float) -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def setRotateMarker(self, rotate: bool) -> None: ...
    def rotateMarker(self) -> bool: ...
    def setDataDefinedProperty(self, key: QgsSymbolLayer.Property, property: QgsProperty) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def usesMapUnits(self) -> bool: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsMarkerLineSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsHashedLineSymbolLayer(QgsTemplatedLineSymbolLayerBase):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setSymbolAngle(self, angle: float) -> None: ...
    def symbolAngle(self) -> float: ...
    def setSymbolLineAngle(self, angle: float) -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def hashLengthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setHashLengthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def hashLengthUnit(self) -> Qgis.RenderUnit: ...
    def setHashLengthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setHashLength(self, length: float) -> None: ...
    def hashLength(self) -> float: ...
    def setHashAngle(self, angle: float) -> None: ...
    def hashAngle(self) -> float: ...
    def usesMapUnits(self) -> bool: ...
    def setDataDefinedProperty(self, key: QgsSymbolLayer.Property, property: QgsProperty) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def clone(self) -> 'QgsHashedLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsAbstractBrushedLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self) -> None: ...

    def renderPolylineUsingBrush(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext', brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], patternThickness: float, patternLength: float) -> None: ...
    def setPenCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def penCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...


class QgsRasterLineSymbolLayer(QgsAbstractBrushedLineSymbolLayer):

    def __init__(self, path: str = ...) -> None: ...

    def color(self) -> QtGui.QColor: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def clone(self) -> 'QgsRasterLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsLineburstSymbolLayer(QgsAbstractBrushedLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ...) -> None: ...

    def setColor2(self, color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def setGradientColorType(self, gradientColorType: Qgis.GradientColorSource) -> None: ...
    def gradientColorType(self) -> Qgis.GradientColorSource: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def clone(self) -> 'QgsLineburstSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsMapInfoSymbolConversionContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapInfoSymbolConversionContext') -> None: ...

    def clearWarnings(self) -> None: ...
    def warnings(self) -> typing.List[str]: ...
    def pushWarning(self, warning: str) -> None: ...


class QgsMapInfoSymbolConverter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapInfoSymbolConverter') -> None: ...

    @staticmethod
    def convertMarkerSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], size: float, sizeUnit: Qgis.RenderUnit) -> 'QgsMarkerSymbol': ...
    @staticmethod
    def convertFillSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], backColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ...) -> QgsFillSymbol: ...
    @staticmethod
    def convertLineSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], size: float, sizeUnit: Qgis.RenderUnit, interleaved: bool = ...) -> QgsLineSymbol: ...


class QgsMarkerSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsMarkerSymbol': ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: QgsRenderContext, feature: QgsFeature = ...) -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def scaleMethod(self) -> Qgis.ScaleMethod: ...
    def setScaleMethod(self, scaleMethod: Qgis.ScaleMethod) -> None: ...
    def dataDefinedSize(self) -> QgsProperty: ...
    def setDataDefinedSize(self, property: QgsProperty) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    @typing.overload
    def size(self) -> float: ...
    @typing.overload
    def size(self, context: QgsRenderContext) -> float: ...
    def setSize(self, size: float) -> None: ...
    def setLineAngle(self, lineAngle: float) -> None: ...
    def dataDefinedAngle(self) -> QgsProperty: ...
    def setDataDefinedAngle(self, property: QgsProperty) -> None: ...
    def angle(self) -> float: ...
    def setAngle(self, symbolAngle: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsMarkerSymbol': ...


class QgsSimpleMarkerSymbolLayerBase(QgsMarkerSymbolLayer):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def calculateOffsetAndRotation(self, context: 'QgsSymbolRenderContext', scaledSize: float, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> typing.Tuple[bool, float]: ...
    def calculateSize(self, context: 'QgsSymbolRenderContext') -> typing.Tuple[float, bool]: ...
    def shapeToPolygon(self, shape: Qgis.MarkerShape, polygon: QtGui.QPolygonF) -> bool: ...
    def prepareMarkerPath(self, symbol: Qgis.MarkerShape) -> bool: ...
    def prepareMarkerShape(self, shape: Qgis.MarkerShape) -> bool: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    @staticmethod
    def encodeShape(shape: Qgis.MarkerShape) -> str: ...
    @staticmethod
    def decodeShape(name: str) -> typing.Tuple[Qgis.MarkerShape, bool]: ...
    def setShape(self, shape: Qgis.MarkerShape) -> None: ...
    def shape(self) -> Qgis.MarkerShape: ...
    @staticmethod
    def shapeIsFilled(shape: Qgis.MarkerShape) -> bool: ...
    @staticmethod
    def availableShapes() -> typing.List[Qgis.MarkerShape]: ...


class QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ..., color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., penJoinStyle: QtCore.Qt.PenJoinStyle = ...) -> None: ...

    def prepareCache(self, context: 'QgsSymbolRenderContext') -> bool: ...
    def drawMarker(self, p: QtGui.QPainter, context: 'QgsSymbolRenderContext') -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidthUnit(self, u: Qgis.RenderUnit) -> None: ...
    def setStrokeWidth(self, w: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setPenCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def penCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeStyle(self, strokeStyle: QtCore.Qt.PenStyle) -> None: ...
    def strokeStyle(self) -> QtCore.Qt.PenStyle: ...
    def setStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def usesMapUnits(self) -> bool: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint, float] = ...) -> bool: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSimpleMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFilledMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def clone(self) -> 'QgsFilledMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsSvgMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: str, size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def calculateAspectRatio(self, context: 'QgsSymbolRenderContext', scaledSize: float) -> typing.Tuple[float, bool]: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def prepareExpressions(self, context: 'QgsSymbolRenderContext') -> None: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint, float] = ...) -> bool: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setParameters(self, parameters: typing.Dict[str, QgsProperty]) -> None: ...
    def parameters(self) -> typing.Dict[str, QgsProperty]: ...
    def setStrokeWidth(self, w: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFixedAspectRatio(self, ratio: float) -> None: ...
    def fixedAspectRatio(self) -> float: ...
    def setPreservedAspectRatio(self, par: bool) -> bool: ...
    def preservedAspectRatio(self) -> bool: ...
    def updateDefaultAspectRatio(self) -> float: ...
    def defaultAspectRatio(self) -> float: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSvgMarkerSymbolLayer': ...
    def usesMapUnits(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRasterMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: str = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def copyCommonProperties(self, other: 'QgsRasterMarkerSymbolLayer') -> None: ...
    def setCommonProperties(self, properties: typing.Dict[str, typing.Any]) -> None: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setFixedAspectRatio(self, ratio: float) -> None: ...
    def fixedAspectRatio(self) -> float: ...
    def setPreservedAspectRatio(self, par: bool) -> bool: ...
    def preservedAspectRatio(self) -> bool: ...
    def updateDefaultAspectRatio(self) -> float: ...
    def defaultAspectRatio(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    def calculateAspectRatio(self, context: 'QgsSymbolRenderContext', scaledSize: float) -> typing.Tuple[float, bool]: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def clone(self) -> 'QgsRasterMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFontMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, fontFamily: str = ..., chr: str = ..., pointSize: float = ..., color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., angle: float = ...) -> None: ...

    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidth(self, width: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setCharacter(self, chr: str) -> None: ...
    def character(self) -> str: ...
    def setFontStyle(self, style: str) -> None: ...
    def fontStyle(self) -> str: ...
    def setFontFamily(self, family: str) -> None: ...
    def fontFamily(self) -> str: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsFontMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolveFonts(properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsAnimatedMarkerSymbolLayer(QgsRasterMarkerSymbolLayer):

    def __init__(self, path: str = ..., size: float = ..., angle: float = ...) -> None: ...

    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def frameRate(self) -> float: ...
    def setFrameRate(self, rate: float) -> None: ...
    def clone(self) -> 'QgsAnimatedMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsMaskMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self) -> None: ...

    def setMasks(self, maskedLayers: typing.Iterable['QgsSymbolLayerReference']) -> None: ...
    def masks(self) -> typing.List['QgsSymbolLayerReference']: ...
    def enabled(self) -> bool: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def clone(self) -> 'QgsMaskMarkerSymbolLayer': ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsNullSymbolRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsNullSymbolRenderer': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def clone(self) -> QgsFeatureRenderer: ...
    def dump(self) -> str: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsPointDistanceRenderer(QgsFeatureRenderer):

    class GroupedFeature(PyQt5.sip.wrapper):

        feature = ... # type: QgsFeature
        isSelected = ... # type: bool
        label = ... # type: str

        @typing.overload
        def __init__(self, feature: QgsFeature, symbol: QgsMarkerSymbol, isSelected: bool, label: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointDistanceRenderer.GroupedFeature') -> None: ...

        def symbol(self) -> QgsMarkerSymbol: ...

    def __init__(self, rendererName: str, labelAttributeName: str = ...) -> None: ...

    def drawLabels(self, centerPoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: 'QgsSymbolRenderContext', labelShifts: typing.Iterable[typing.Union[QtCore.QPointF, QtCore.QPoint, float]], group: typing.Iterable['QgsPointDistanceRenderer.GroupedFeature']) -> None: ...
    def toleranceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setToleranceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def toleranceUnit(self) -> Qgis.RenderUnit: ...
    def setToleranceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, distance: float) -> None: ...
    def labelColor(self) -> QtGui.QColor: ...
    def setLabelColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def minimumLabelScale(self) -> float: ...
    def setMinimumLabelScale(self, scale: float) -> None: ...
    def labelFont(self) -> QtGui.QFont: ...
    def setLabelFont(self, font: QtGui.QFont) -> None: ...
    def labelAttributeName(self) -> str: ...
    def setLabelAttributeName(self, name: str) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def checkLegendSymbolItem(self, key: str, state: bool) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def embeddedRenderer(self) -> QgsFeatureRenderer: ...
    def setEmbeddedRenderer(self, r: QgsFeatureRenderer) -> None: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...


class QgsPointClusterRenderer(QgsPointDistanceRenderer):

    def __init__(self) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsPointClusterRenderer': ...
    def setClusterSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def clusterSymbol(self) -> QgsMarkerSymbol: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsPointClusterRenderer': ...


class QgsPointDisplacementRenderer(QgsPointDistanceRenderer):

    class Placement(int):
        Ring = ... # type: QgsPointDisplacementRenderer.Placement
        ConcentricRings = ... # type: QgsPointDisplacementRenderer.Placement
        Grid = ... # type: QgsPointDisplacementRenderer.Placement

    def __init__(self, labelAttributeName: str = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsPointDisplacementRenderer': ...
    def setCenterSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def centerSymbol(self) -> QgsMarkerSymbol: ...
    def setPlacement(self, placement: 'QgsPointDisplacementRenderer.Placement') -> None: ...
    def placement(self) -> 'QgsPointDisplacementRenderer.Placement': ...
    def labelDistanceFactor(self) -> float: ...
    def setLabelDistanceFactor(self, factor: float) -> None: ...
    def circleRadiusAddition(self) -> float: ...
    def setCircleRadiusAddition(self, distance: float) -> None: ...
    def circleColor(self) -> QtGui.QColor: ...
    def setCircleColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def circleWidth(self) -> float: ...
    def setCircleWidth(self, width: float) -> None: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsPointDisplacementRenderer': ...


class QgsSymbolLevelItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, symbol: QgsSymbol, layer: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLevelItem') -> None: ...

    def layer(self) -> int: ...
    def symbol(self) -> QgsSymbol: ...


class QgsRendererRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, range: QgsClassificationRange, symbol: QgsSymbol, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, lowerValue: float, upperValue: float, symbol: QgsSymbol, label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, range: 'QgsRendererRange') -> None: ...

    def swap(self, other: 'QgsRendererRange') -> None: ...
    def __getitem__(self, a0: int) -> typing.Any: ...
    def __repr__(self) -> typing.Any: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any], firstRange: bool = ...) -> None: ...
    def dump(self) -> str: ...
    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setUpperValue(self, upperValue: float) -> None: ...
    def setLowerValue(self, lowerValue: float) -> None: ...
    def setLabel(self, label: str) -> None: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> QgsSymbol: ...
    def upperValue(self) -> float: ...
    def lowerValue(self) -> float: ...


class QgsRendererRangeLabelFormat(PyQt5.sip.wrapper):

    MAX_PRECISION = ... # type: int
    MIN_PRECISION = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, format: str, precision: int = ..., trimTrailingZeroes: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRendererRangeLabelFormat') -> None: ...

    def saveToDomElement(self, element: QtXml.QDomElement) -> None: ...
    def setFromDomElement(self, element: QtXml.QDomElement) -> None: ...
    def formatNumber(self, value: float) -> str: ...
    def labelForRange(self, range: QgsRendererRange) -> str: ...
    def labelForLowerUpper(self, lower: float, upper: float) -> str: ...
    def setTrimTrailingZeroes(self, trimTrailingZeroes: bool) -> None: ...
    def trimTrailingZeroes(self) -> bool: ...
    def setPrecision(self, precision: int) -> None: ...
    def precision(self) -> int: ...
    def setFormat(self, format: str) -> None: ...
    def format(self) -> str: ...


class QgsRendererAbstractMetadata(PyQt5.sip.wrapper):

    class LayerType(int):
        PointLayer = ... # type: QgsRendererAbstractMetadata.LayerType
        LineLayer = ... # type: QgsRendererAbstractMetadata.LayerType
        PolygonLayer = ... # type: QgsRendererAbstractMetadata.LayerType
        All = ... # type: QgsRendererAbstractMetadata.LayerType

    class LayerTypes(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRendererAbstractMetadata.LayerTypes') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, name: str, visibleName: str, icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRendererAbstractMetadata') -> None: ...

    def createRendererFromSld(self, elem: QtXml.QDomElement, geomType: Qgis.GeometryType) -> QgsFeatureRenderer: ...
    def createRendererWidget(self, layer: QgsVectorLayer, style: 'QgsStyle', oldRenderer: QgsFeatureRenderer) -> QgsRendererWidget: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def compatibleLayerTypes(self) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsRendererMetadata(QgsRendererAbstractMetadata):

    def __init__(self, a0: 'QgsRendererMetadata') -> None: ...

    def compatibleLayerTypes(self) -> QgsRendererAbstractMetadata.LayerTypes: ...
    def createRendererFromSld(self, elem: QtXml.QDomElement, geomType: Qgis.GeometryType) -> QgsFeatureRenderer: ...
    def createRendererWidget(self, layer: QgsVectorLayer, style: 'QgsStyle', renderer: QgsFeatureRenderer) -> QgsRendererWidget: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsRendererRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @typing.overload
    def renderersList(self, layerTypes: typing.Union[QgsRendererAbstractMetadata.LayerTypes, QgsRendererAbstractMetadata.LayerType] = ...) -> typing.List[str]: ...
    @typing.overload
    def renderersList(self, layer: QgsVectorLayer) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: str) -> QgsRendererAbstractMetadata: ...
    def removeRenderer(self, rendererName: str) -> bool: ...
    def addRenderer(self, metadata: QgsRendererAbstractMetadata) -> bool: ...


class QgsRuleBasedRenderer(QgsFeatureRenderer):

    class FeatureFlags(int):
        FeatIsSelected = ... # type: QgsRuleBasedRenderer.FeatureFlags
        FeatDrawMarkers = ... # type: QgsRuleBasedRenderer.FeatureFlags

    class FeatureToRender(PyQt5.sip.wrapper):

        feat = ... # type: QgsFeature
        flags = ... # type: int

        @typing.overload
        def __init__(self, _f: QgsFeature, _flags: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRuleBasedRenderer.FeatureToRender') -> None: ...

    class RenderJob(PyQt5.sip.wrapper):

        ftr = ... # type: 'QgsRuleBasedRenderer.FeatureToRender'
        symbol = ... # type: QgsSymbol

        @typing.overload
        def __init__(self, _ftr: 'QgsRuleBasedRenderer.FeatureToRender', _s: QgsSymbol) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRuleBasedRenderer.RenderJob') -> None: ...

    class RenderLevel(PyQt5.sip.wrapper):

        jobs = ... # type: typing.Iterable['QgsRuleBasedRenderer.RenderJob']
        zIndex = ... # type: int

        @typing.overload
        def __init__(self, z: int) -> None: ...
        @typing.overload
        def __init__(self, other: 'QgsRuleBasedRenderer.RenderLevel') -> None: ...

    class Rule(PyQt5.sip.wrapper):

        class RenderResult(int):
            Filtered = ... # type: QgsRuleBasedRenderer.Rule.RenderResult
            Inactive = ... # type: QgsRuleBasedRenderer.Rule.RenderResult
            Rendered = ... # type: QgsRuleBasedRenderer.Rule.RenderResult

        def __init__(self, symbol: QgsSymbol, maximumScale: int = ..., minimumScale: int = ..., filterExp: str = ..., label: str = ..., description: str = ..., elseRule: bool = ...) -> None: ...

        def initFilter(self) -> None: ...
        def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
        def isElse(self) -> bool: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def findRuleByKey(self, key: str) -> 'QgsRuleBasedRenderer.Rule': ...
        def takeChildAt(self, i: int) -> 'QgsRuleBasedRenderer.Rule': ...
        def takeChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> 'QgsRuleBasedRenderer.Rule': ...
        def removeChildAt(self, i: int) -> None: ...
        def removeChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def insertChild(self, i: int, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def appendChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def parent(self) -> 'QgsRuleBasedRenderer.Rule': ...
        def descendants(self) -> typing.List['QgsRuleBasedRenderer.Rule']: ...
        def children(self) -> typing.List['QgsRuleBasedRenderer.Rule']: ...
        @staticmethod
        def create(ruleElem: QtXml.QDomElement, symbolMap: typing.Any, reuseId: bool = ...) -> 'QgsRuleBasedRenderer.Rule': ...
        def stopRender(self, context: QgsRenderContext) -> None: ...
        def rulesForFeature(self, feature: QgsFeature, context: typing.Optional[QgsRenderContext] = ..., onlyActive: bool = ...) -> typing.List['QgsRuleBasedRenderer.Rule']: ...
        def legendKeysForFeature(self, feature: QgsFeature, context: typing.Optional[QgsRenderContext] = ...) -> typing.Set[str]: ...
        def symbolsForFeature(self, feature: QgsFeature, context: typing.Optional[QgsRenderContext] = ...) -> typing.List[QgsSymbol]: ...
        def willRenderFeature(self, feature: QgsFeature, context: typing.Optional[QgsRenderContext] = ...) -> bool: ...
        def renderFeature(self, featToRender: 'QgsRuleBasedRenderer.FeatureToRender', context: QgsRenderContext, renderQueue: typing.Iterable['QgsRuleBasedRenderer.RenderLevel']) -> 'QgsRuleBasedRenderer.Rule.RenderResult': ...
        def collectZLevels(self) -> typing.Any: ...
        def hasActiveChildren(self) -> bool: ...
        def startRender(self, context: QgsRenderContext, fields: QgsFields, filter: str) -> bool: ...
        def save(self, doc: QtXml.QDomDocument, symbolMap: typing.Any) -> QtXml.QDomElement: ...
        @staticmethod
        def createFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType) -> 'QgsRuleBasedRenderer.Rule': ...
        def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
        def clone(self) -> 'QgsRuleBasedRenderer.Rule': ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: str) -> None: ...
        def setFilterExpression(self, filterExp: str) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setLabel(self, label: str) -> None: ...
        def setSymbol(self, sym: QgsSymbol) -> None: ...
        def setRuleKey(self, key: str) -> None: ...
        def ruleKey(self) -> str: ...
        def active(self) -> bool: ...
        def description(self) -> str: ...
        def filterExpression(self) -> str: ...
        def filter(self) -> QgsExpression: ...
        def minimumScale(self) -> float: ...
        def maximumScale(self) -> float: ...
        def dependsOnScale(self) -> bool: ...
        def label(self) -> str: ...
        def symbol(self) -> QgsSymbol: ...
        def isScaleOK(self, scale: float) -> bool: ...
        def isFilterOK(self, f: QgsFeature, context: typing.Optional[QgsRenderContext] = ...) -> bool: ...
        def legendSymbolItems(self, currentLevel: int = ...) -> typing.List[QgsLegendSymbolItem]: ...
        def symbols(self, context: QgsRenderContext = ...) -> typing.List[QgsSymbol]: ...
        def needsGeometry(self) -> bool: ...
        def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
        def dump(self, indent: int = ...) -> str: ...

    @typing.overload
    def __init__(self, root: 'QgsRuleBasedRenderer.Rule') -> None: ...
    @typing.overload
    def __init__(self, defaultSymbol: QgsSymbol) -> None: ...

    @staticmethod
    def convertToDataDefinedSymbology(symbol: QgsSymbol, sizeScaleField: str, rotationField: str = ...) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsRuleBasedRenderer': ...
    @staticmethod
    def refineRuleScales(initialRule: 'QgsRuleBasedRenderer.Rule', scales: typing.Iterable[int]) -> None: ...
    @staticmethod
    def refineRuleRanges(initialRule: 'QgsRuleBasedRenderer.Rule', r: QgsGraduatedSymbolRenderer) -> None: ...
    @staticmethod
    def refineRuleCategories(initialRule: 'QgsRuleBasedRenderer.Rule', r: QgsCategorizedSymbolRenderer) -> None: ...
    def rootRule(self) -> 'QgsRuleBasedRenderer.Rule': ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def dump(self) -> str: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType) -> QgsFeatureRenderer: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsRuleBasedRenderer': ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def canSkipRender(self) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsSingleSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, symbol: QgsSymbol) -> None: ...

    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsSingleSymbolRenderer': ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType) -> QgsFeatureRenderer: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsSingleSymbolRenderer': ...
    def dump(self) -> str: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def symbol(self) -> QgsSymbol: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsStyle(QtCore.QObject):

    class TextFormatContext(int):
        Labeling = ... # type: QgsStyle.TextFormatContext

    class StyleEntity(int):
        SymbolEntity = ... # type: QgsStyle.StyleEntity
        TagEntity = ... # type: QgsStyle.StyleEntity
        ColorrampEntity = ... # type: QgsStyle.StyleEntity
        SmartgroupEntity = ... # type: QgsStyle.StyleEntity
        TextFormatEntity = ... # type: QgsStyle.StyleEntity
        LabelSettingsEntity = ... # type: QgsStyle.StyleEntity
        LegendPatchShapeEntity = ... # type: QgsStyle.StyleEntity
        Symbol3DEntity = ... # type: QgsStyle.StyleEntity

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def rebuildIconPreviews(self) -> None: ...
    def labelSettingsChanged(self, name: str) -> None: ...
    def labelSettingsRemoved(self, name: str) -> None: ...
    def labelSettingsAdded(self, name: str) -> None: ...
    def labelSettingsRenamed(self, oldName: str, newName: str) -> None: ...
    def textFormatChanged(self, name: str) -> None: ...
    def textFormatRemoved(self, name: str) -> None: ...
    def textFormatAdded(self, name: str) -> None: ...
    def textFormatRenamed(self, oldName: str, newName: str) -> None: ...
    def rampChanged(self, name: str) -> None: ...
    def rampRemoved(self, name: str) -> None: ...
    def rampAdded(self, name: str) -> None: ...
    def rampRenamed(self, oldName: str, newName: str) -> None: ...
    def symbolRenamed(self, oldName: str, newName: str) -> None: ...
    def symbolRemoved(self, name: str) -> None: ...
    def entityChanged(self, entity: 'QgsStyle.StyleEntity', name: str) -> None: ...
    def entityRenamed(self, entity: 'QgsStyle.StyleEntity', oldName: str, newName: str) -> None: ...
    def entityRemoved(self, entity: 'QgsStyle.StyleEntity', name: str) -> None: ...
    def entityAdded(self, entity: 'QgsStyle.StyleEntity', name: str) -> None: ...
    def favoritedChanged(self, entity: 'QgsStyle.StyleEntity', name: str, isFavorite: bool) -> None: ...
    def entityTagsChanged(self, entity: 'QgsStyle.StyleEntity', name: str, newTags: typing.Iterable[str]) -> None: ...
    def groupsModified(self) -> None: ...
    def symbolChanged(self, name: str) -> None: ...
    def symbolSaved(self, name: str, symbol: QgsSymbol) -> None: ...
    def aboutToBeDestroyed(self) -> None: ...
    @staticmethod
    def isXmlStyleFile(path: str) -> bool: ...
    def importXml(self, filename: str) -> bool: ...
    def exportXml(self, filename: str) -> bool: ...
    def symbolsOfSmartgroup(self, type: 'QgsStyle.StyleEntity', id: int) -> typing.List[str]: ...
    def smartgroupOperator(self, id: int) -> str: ...
    def smartgroup(self, id: int) -> typing.Dict[str, typing.List[str]]: ...
    def smartgroupNames(self) -> typing.List[str]: ...
    def smartgroupsListMap(self) -> typing.Dict[int, str]: ...
    def tag(self, id: int) -> str: ...
    def symbolHasTag(self, type: 'QgsStyle.StyleEntity', symbol: str, tag: str) -> bool: ...
    def isFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def tagsOfSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str) -> typing.List[str]: ...
    def findSymbols(self, type: 'QgsStyle.StyleEntity', qword: str) -> typing.List[str]: ...
    def setFileName(self, filename: str) -> None: ...
    def fileName(self) -> str: ...
    def errorString(self) -> str: ...
    def save(self, filename: str = ...) -> bool: ...
    def load(self, filename: str) -> bool: ...
    def createTables(self) -> None: ...
    def createMemoryDatabase(self) -> bool: ...
    def createDatabase(self, filename: str) -> bool: ...
    def symbol3DNames(self) -> typing.List[str]: ...
    def renameSymbol3D(self, oldName: str, newName: str) -> bool: ...
    def saveSymbol3D(self, name: str, symbol: QgsAbstract3DSymbol, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    @staticmethod
    def defaultTextFormatForProject(project: QgsProject, context: 'QgsStyle.TextFormatContext' = ...) -> 'QgsTextFormat': ...
    def defaultTextFormat(self, context: 'QgsStyle.TextFormatContext' = ...) -> 'QgsTextFormat': ...
    def defaultPatchAsQPolygonF(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> typing.Any: ...
    def defaultPatch(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> QgsLegendPatchShape: ...
    def previewSymbolForPatchShape(self, shape: QgsLegendPatchShape) -> QgsSymbol: ...
    def legendPatchShapeNames(self) -> typing.List[str]: ...
    def renameLegendPatchShape(self, oldName: str, newName: str) -> bool: ...
    def saveLegendPatchShape(self, name: str, shape: QgsLegendPatchShape, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameLabelSettings(self, oldName: str, newName: str) -> bool: ...
    def removeLabelSettings(self, name: str) -> bool: ...
    def saveLabelSettings(self, name: str, settings: QgsPalLayerSettings, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameTextFormat(self, oldName: str, newName: str) -> bool: ...
    def removeTextFormat(self, name: str) -> bool: ...
    def saveTextFormat(self, name: str, format: 'QgsTextFormat', favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameColorRamp(self, oldName: str, newName: str) -> bool: ...
    def removeColorRamp(self, name: str) -> bool: ...
    def saveColorRamp(self, name: str, ramp: QgsColorRamp, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def saveSymbol(self, name: str, symbol: QgsSymbol, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def removeEntityByName(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def remove(self, type: 'QgsStyle.StyleEntity', id: int) -> bool: ...
    def rename(self, type: 'QgsStyle.StyleEntity', id: int, newName: str) -> bool: ...
    def removeFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def addFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def symbolsWithTag(self, type: 'QgsStyle.StyleEntity', tagid: int) -> typing.List[str]: ...
    def symbolsOfFavorite(self, type: 'QgsStyle.StyleEntity') -> typing.List[str]: ...
    def allNames(self, type: 'QgsStyle.StyleEntity') -> typing.List[str]: ...
    def smartgroupId(self, smartgroup: str) -> int: ...
    def tagId(self, tag: str) -> int: ...
    def entityId(self, type: 'QgsStyle.StyleEntity', name: str) -> int: ...
    def symbolId(self, name: str) -> int: ...
    def symbolNames(self) -> typing.List[str]: ...
    def symbolCount(self) -> int: ...
    def symbolRef(self, name: str) -> QgsSymbol: ...
    def symbol(self, name: str) -> QgsSymbol: ...
    def renameSymbol(self, oldName: str, newName: str) -> bool: ...
    def renameEntity(self, type: 'QgsStyle.StyleEntity', oldName: str, newName: str) -> bool: ...
    def removeSymbol(self, name: str) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str, tags: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str) -> bool: ...
    def tagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str, tags: typing.Iterable[str]) -> bool: ...
    @staticmethod
    def defaultStyle() -> 'QgsStyle': ...
    def labelSettingsId(self, name: str) -> int: ...
    def labelSettingsNames(self) -> typing.List[str]: ...
    def labelSettingsCount(self) -> int: ...
    def labelSettingsLayerType(self, name: str) -> Qgis.GeometryType: ...
    def symbol3DCompatibleGeometryTypes(self, name: str) -> typing.List[Qgis.GeometryType]: ...
    def symbol3DCount(self) -> int: ...
    def symbol3D(self, name: str) -> QgsAbstract3DSymbol: ...
    def legendPatchShapeSymbolType(self, name: str) -> Qgis.SymbolType: ...
    def legendPatchShapesCount(self) -> int: ...
    def legendPatchShape(self, name: str) -> QgsLegendPatchShape: ...
    def labelSettings(self, name: str) -> QgsPalLayerSettings: ...
    def textFormatId(self, name: str) -> int: ...
    def textFormatNames(self) -> typing.List[str]: ...
    def textFormatCount(self) -> int: ...
    def textFormat(self, name: str) -> 'QgsTextFormat': ...
    def colorrampId(self, name: str) -> int: ...
    def colorRampRef(self, name: str) -> QgsColorRamp: ...
    def colorRampNames(self) -> typing.List[str]: ...
    def colorRampCount(self) -> int: ...
    def colorRamp(self, name: str) -> QgsColorRamp: ...
    def clear(self) -> None: ...
    def tags(self) -> typing.List[str]: ...
    def addSmartgroup(self, name: str, op: str, matchTag: typing.Iterable[str], noMatchTag: typing.Iterable[str], matchName: typing.Iterable[str], noMatchName: typing.Iterable[str]) -> int: ...
    def addTag(self, tagName: str) -> int: ...
    def addSymbol3D(self, name: str, symbol: QgsAbstract3DSymbol, update: bool = ...) -> bool: ...
    def addLegendPatchShape(self, name: str, shape: QgsLegendPatchShape, update: bool = ...) -> bool: ...
    def addLabelSettings(self, name: str, settings: QgsPalLayerSettings, update: bool = ...) -> bool: ...
    def addTextFormat(self, name: str, format: 'QgsTextFormat', update: bool = ...) -> bool: ...
    def addColorRamp(self, name: str, colorRamp: QgsColorRamp, update: bool = ...) -> bool: ...
    def addSymbol(self, name: str, symbol: QgsSymbol, update: bool = ...) -> bool: ...
    def addEntity(self, name: str, entity: 'QgsStyleEntityInterface', update: bool = ...) -> bool: ...
    def setReadOnly(self, readOnly: bool) -> None: ...
    def isReadOnly(self) -> bool: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsStyleEntityInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleEntityInterface') -> None: ...

    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleSymbolEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, symbol: QgsSymbol) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbolEntity') -> None: ...

    def symbol(self) -> QgsSymbol: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleColorRampEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, ramp: QgsColorRamp) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleColorRampEntity') -> None: ...

    def ramp(self) -> QgsColorRamp: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleTextFormatEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, format: 'QgsTextFormat') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleTextFormatEntity') -> None: ...

    def format(self) -> 'QgsTextFormat': ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleLabelSettingsEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, settings: QgsPalLayerSettings) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleLabelSettingsEntity') -> None: ...

    def settings(self) -> QgsPalLayerSettings: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleLegendPatchShapeEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, shape: QgsLegendPatchShape) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleLegendPatchShapeEntity') -> None: ...

    def shape(self) -> QgsLegendPatchShape: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleSymbol3DEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, symbol: QgsAbstract3DSymbol) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbol3DEntity') -> None: ...

    def symbol(self) -> QgsAbstract3DSymbol: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleEntityVisitorInterface(PyQt5.sip.wrapper):

    class NodeType(int):
        Project = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Layer = ... # type: QgsStyleEntityVisitorInterface.NodeType
        SymbolRule = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Layouts = ... # type: QgsStyleEntityVisitorInterface.NodeType
        PrintLayout = ... # type: QgsStyleEntityVisitorInterface.NodeType
        LayoutItem = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Report = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportHeader = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportFooter = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportSection = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Annotations = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Annotation = ... # type: QgsStyleEntityVisitorInterface.NodeType

    class StyleLeaf(PyQt5.sip.wrapper):

        description = ... # type: str
        entity = ... # type: QgsStyleEntityInterface
        identifier = ... # type: str

        @typing.overload
        def __init__(self, entity: QgsStyleEntityInterface, identifier: str = ..., description: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStyleEntityVisitorInterface.StyleLeaf') -> None: ...

    class Node(PyQt5.sip.wrapper):

        description = ... # type: str
        identifier = ... # type: str
        type = ... # type: 'QgsStyleEntityVisitorInterface.NodeType'

        @typing.overload
        def __init__(self, type: 'QgsStyleEntityVisitorInterface.NodeType', identifier: str, description: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStyleEntityVisitorInterface.Node') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleEntityVisitorInterface') -> None: ...

    def visitExit(self, node: 'QgsStyleEntityVisitorInterface.Node') -> bool: ...
    def visitEnter(self, node: 'QgsStyleEntityVisitorInterface.Node') -> bool: ...
    def visit(self, entity: 'QgsStyleEntityVisitorInterface.StyleLeaf') -> bool: ...


class QgsStyleModel(QtCore.QAbstractItemModel):

    class Role(int):
        TypeRole = ... # type: QgsStyleModel.Role
        TagRole = ... # type: QgsStyleModel.Role
        EntityName = ... # type: QgsStyleModel.Role
        SymbolTypeRole = ... # type: QgsStyleModel.Role
        IsFavoriteRole = ... # type: QgsStyleModel.Role
        LayerTypeRole = ... # type: QgsStyleModel.Role
        CompatibleGeometryTypesRole = ... # type: QgsStyleModel.Role
        StyleName = ... # type: QgsStyleModel.Role
        StyleFileName = ... # type: QgsStyleModel.Role
        IsTitleRole = ... # type: QgsStyleModel.Role

    class Column(int):
        Name = ... # type: QgsStyleModel.Column
        Tags = ... # type: QgsStyleModel.Column

    def __init__(self, style: QgsStyle, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addTargetScreenProperties(self, properties: QgsScreenProperties) -> None: ...
    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def style(self) -> QgsStyle: ...


class QgsStyleProxyModel(QtCore.QSortFilterProxyModel):

    @typing.overload
    def __init__(self, style: QgsStyle, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: QgsStyleModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: QgsCombinedStyleModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilterString(self, filter: str) -> None: ...
    def addTargetScreenProperties(self, properties: QgsScreenProperties) -> None: ...
    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def setFavoritesOnly(self, favoritesOnly: bool) -> None: ...
    def favoritesOnly(self) -> bool: ...
    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def smartGroupId(self) -> int: ...
    def setSmartGroupId(self, id: int) -> None: ...
    def tagString(self) -> str: ...
    def setTagString(self, tag: str) -> None: ...
    def tagId(self) -> int: ...
    def setTagId(self, id: int) -> None: ...
    def setLayerType(self, type: Qgis.GeometryType) -> None: ...
    def layerType(self) -> Qgis.GeometryType: ...
    def setSymbolTypeFilterEnabled(self, enabled: bool) -> None: ...
    def symbolTypeFilterEnabled(self) -> bool: ...
    def setSymbolType(self, type: Qgis.SymbolType) -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def setEntityFilterEnabled(self, enabled: bool) -> None: ...
    def entityFilterEnabled(self) -> bool: ...
    def setEntityFilter(self, filter: QgsStyle.StyleEntity) -> None: ...
    def entityFilter(self) -> QgsStyle.StyleEntity: ...
    def filterString(self) -> str: ...


class QgsSvgCache(QgsAbstractContentCacheBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def checkReply(self, reply: QtNetwork.QNetworkReply, path: str) -> bool: ...
    def remoteSvgFetched(self, url: str) -> None: ...
    def statusChanged(self, statusQString: str) -> None: ...
    def svgContent(self, path: str, size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[str, str] = ...) -> QtCore.QByteArray: ...
    def getImageData(self, path: str, blocking: bool = ...) -> QtCore.QByteArray: ...
    def containsParamsV3(self, path: str, defaultFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], defaultStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], blocking: bool = ...) -> typing.Tuple[bool, bool, bool, bool, float, bool, bool, bool, bool, float, bool, bool, float]: ...
    def containsParams(self, path: str, defaultFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], defaultStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], blocking: bool = ...) -> typing.Tuple[bool, bool, bool, float]: ...
    def svgViewboxSize(self, path: str, size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[str, str] = ...) -> QtCore.QSizeF: ...
    def svgAsPicture(self, path: str, size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float, widthScaleFactor: float, forceVectorOutput: bool = ..., fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[str, str] = ...) -> QtGui.QPicture: ...
    def svgAsImage(self, path: str, size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[str, str] = ...) -> typing.Tuple[QtGui.QImage, bool]: ...


class QgsSymbolAnimationSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolAnimationSettings') -> None: ...

    def frameRate(self) -> float: ...
    def setFrameRate(self, rate: float) -> None: ...
    def isAnimated(self) -> bool: ...
    def setIsAnimated(self, animated: bool) -> None: ...


class QgsSymbolLayerId(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, key: str, index: int) -> None: ...
    @typing.overload
    def __init__(self, key: str, indexPath: typing.Iterable[int]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSymbolLayerId') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def symbolLayerIndexPath(self) -> typing.List[int]: ...
    def symbolKey(self) -> str: ...


class QgsSymbolLayerReference(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, layerId: str, symbolLayer: QgsSymbolLayerId) -> None: ...
    @typing.overload
    def __init__(self, layerId: str, symbolLayerId: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerReference') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def symbolLayerIdV2(self) -> str: ...
    def symbolLayerId(self) -> QgsSymbolLayerId: ...
    def layerId(self) -> str: ...


class QgsSymbolLayerAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str, type: Qgis.SymbolType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerAbstractMetadata') -> None: ...

    def resolveFonts(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, a0: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayerWidget(self, a0: QgsVectorLayer) -> QgsSymbolLayerWidget: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...
    def type(self) -> Qgis.SymbolType: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsSymbolLayerMetadata(QgsSymbolLayerAbstractMetadata):

    def __init__(self, a0: 'QgsSymbolLayerMetadata') -> None: ...

    def resolveFonts(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, elem: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayerWidget(self, vl: QgsVectorLayer) -> QgsSymbolLayerWidget: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsSymbolLayerRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def defaultSymbolLayer(type: Qgis.SymbolType) -> QgsSymbolLayer: ...
    def symbolLayersForType(self, type: Qgis.SymbolType) -> typing.List[str]: ...
    def resolveFonts(self, name: str, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, name: str, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, name: str, element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayer(self, name: str, properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...
    def removeSymbolLayerType(self, metadata: QgsSymbolLayerAbstractMetadata) -> bool: ...
    def addSymbolLayerType(self, metadata: QgsSymbolLayerAbstractMetadata) -> bool: ...
    def symbolLayerMetadata(self, name: str) -> QgsSymbolLayerAbstractMetadata: ...


class QgsSymbolLayerUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerUtils') -> None: ...

    @typing.overload
    @staticmethod
    def resetSymbolLayerIds(symbol: QgsSymbol) -> None: ...
    @typing.overload
    @staticmethod
    def resetSymbolLayerIds(symbolLayer: QgsSymbolLayer) -> None: ...
    @typing.overload
    @staticmethod
    def clearSymbolLayerIds(symbol: QgsSymbol) -> None: ...
    @typing.overload
    @staticmethod
    def clearSymbolLayerIds(symbolLayer: QgsSymbolLayer) -> None: ...
    @staticmethod
    def tileSize(width: int, height: int, angleRad: float) -> typing.Tuple[QtCore.QSize, float]: ...
    @staticmethod
    def evaluatePropertiesMap(propertiesMap: typing.Dict[str, QgsProperty], context: QgsExpressionContext) -> typing.Dict[str, str]: ...
    @staticmethod
    def restrictedSizeSymbol(s: QgsSymbol, minSize: float, maxSize: float, context: QgsRenderContext) -> typing.Tuple[QgsSymbol, float, float, bool]: ...
    @staticmethod
    def rendererFrameRate(renderer: QgsFeatureRenderer) -> float: ...
    @staticmethod
    def toSymbolLayerPointers(renderer: QgsFeatureRenderer, symbolLayerIds: typing.Iterable[QgsSymbolLayerId]) -> typing.Set[QgsSymbolLayer]: ...
    @staticmethod
    def getSvgParametricPath(basePath: str, fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float) -> str: ...
    @staticmethod
    def parametricSvgToSld(doc: QtXml.QDomDocument, graphicElem: QtXml.QDomElement, path: str, fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], size: float, strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeWidth: float) -> None: ...
    @staticmethod
    def mergeScaleDependencies(mScaleMinDenom: float, mScaleMaxDenom: float, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def applyScaleDependency(doc: QtXml.QDomDocument, ruleElem: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def rescaleArrayUom(array: typing.Iterable[float], unit: Qgis.RenderUnit, props: typing.Dict[str, typing.Any]) -> typing.List[float]: ...
    @staticmethod
    def rescalePointUom(point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], unit: Qgis.RenderUnit, props: typing.Dict[str, typing.Any]) -> QtCore.QPointF: ...
    @staticmethod
    def rescaleUom(size: float, unit: Qgis.RenderUnit, props: typing.Dict[str, typing.Any]) -> float: ...
    @staticmethod
    def prettyBreaks(minimum: float, maximum: float, classes: int) -> typing.List[float]: ...
    @staticmethod
    def fieldOrExpressionFromExpression(expression: QgsExpression) -> str: ...
    @staticmethod
    def fieldOrExpressionToExpression(fieldOrExpression: str) -> QgsExpression: ...
    @staticmethod
    def appendPolyline(target: QtGui.QPolygonF, line: QtGui.QPolygonF) -> None: ...
    @staticmethod
    def isSharpCorner(p1: typing.Union[QtCore.QPointF, QtCore.QPoint, float], p2: typing.Union[QtCore.QPointF, QtCore.QPoint, float], p3: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> bool: ...
    @staticmethod
    def polylineSubstring(polyline: QtGui.QPolygonF, startOffset: float, endOffset: float) -> QtGui.QPolygonF: ...
    @staticmethod
    def polylineLength(polyline: QtGui.QPolygonF) -> float: ...
    @staticmethod
    def pointInPolygon(points: QtGui.QPolygonF, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> bool: ...
    @staticmethod
    def polygonPointOnSurface(points: QtGui.QPolygonF, rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]] = ...) -> QtCore.QPointF: ...
    @staticmethod
    def polygonCentroid(points: QtGui.QPolygonF) -> QtCore.QPointF: ...
    @staticmethod
    def svgSymbolPathToName(path: str, pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def svgSymbolNameToPath(name: str, pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def listSvgFilesAt(directory: str) -> typing.List[str]: ...
    @staticmethod
    def listSvgFiles() -> typing.List[str]: ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float], directionPoint: typing.Union[QtCore.QPointF, QtCore.QPoint, float], distance: float) -> QtCore.QPointF: ...
    @staticmethod
    def sortVariantList(list: typing.Iterable[typing.Any], order: QtCore.Qt.SortOrder) -> None: ...
    @staticmethod
    def condenseFillAndOutline(fill: QgsFillSymbolLayer, outline: QgsLineSymbolLayer) -> bool: ...
    @staticmethod
    def premultiplyColor(rgb: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], alpha: int) -> None: ...
    @staticmethod
    def blurImageInPlace(image: QtGui.QImage, rect: QtCore.QRect, radius: int, alphaOnly: bool) -> None: ...
    @staticmethod
    def multiplyImageOpacity(image: QtGui.QImage, opacity: float) -> None: ...
    @staticmethod
    def parseColorWithAlpha(colorStr: str, strictEval: bool = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def parseColor(colorStr: str, strictEval: bool = ...) -> QtGui.QColor: ...
    @staticmethod
    def importColorsFromGpl(file: QtCore.QFile, name: str) -> typing.Tuple[typing.List[typing.Tuple[QtGui.QColor, str]], bool]: ...
    @staticmethod
    def saveColorsToGpl(file: QtCore.QFile, paletteName: str, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], str]]) -> bool: ...
    @staticmethod
    def colorListToMimeData(colorList: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], str]], allFormats: bool = ...) -> QtCore.QMimeData: ...
    @staticmethod
    def colorListFromMimeData(data: QtCore.QMimeData) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    @staticmethod
    def colorFromMimeData(data: QtCore.QMimeData) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def colorToMimeData(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> QtCore.QMimeData: ...
    @staticmethod
    def parseColorList(colorStr: str) -> typing.List[QtGui.QColor]: ...
    @staticmethod
    def colorToName(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> str: ...
    @staticmethod
    def colorRampToVariant(name: str, ramp: QgsColorRamp) -> typing.Any: ...
    @staticmethod
    def saveColorRamp(name: str, ramp: QgsColorRamp, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(element: QtXml.QDomElement) -> QgsColorRamp: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(value: typing.Any) -> QgsColorRamp: ...
    @staticmethod
    def symbolFromMimeData(data: QtCore.QMimeData) -> QgsSymbol: ...
    @staticmethod
    def symbolToMimeData(symbol: QgsSymbol) -> QtCore.QMimeData: ...
    @staticmethod
    def clearSymbolMap(symbols: typing.Any) -> None: ...
    @staticmethod
    def saveSymbols(symbols: typing.Any, tagName: str, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def loadSymbols(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Any: ...
    @staticmethod
    def saveProperties(props: typing.Dict[str, typing.Any], doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> None: ...
    @staticmethod
    def parseProperties(element: QtXml.QDomElement) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def getVendorOptionList(element: QtXml.QDomElement) -> typing.Dict[str, str]: ...
    @staticmethod
    def createVendorOptionElement(doc: QtXml.QDomDocument, name: str, value: str) -> QtXml.QDomElement: ...
    @staticmethod
    def getSvgParameterList(element: QtXml.QDomElement) -> typing.Dict[str, str]: ...
    @staticmethod
    def createSvgParameterElement(doc: QtXml.QDomDocument, name: str, value: str) -> QtXml.QDomElement: ...
    @staticmethod
    def functionFromSldElement(element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def createFunctionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def createExpressionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def geometryFromSldElement(element: QtXml.QDomElement, geomFunc: str) -> bool: ...
    @staticmethod
    def createGeometryElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, geomFunc: str) -> None: ...
    @staticmethod
    def onlineResourceFromSldElement(element: QtXml.QDomElement, path: str, format: str) -> bool: ...
    @staticmethod
    def createOnlineResourceElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, format: str) -> None: ...
    @staticmethod
    def createAnchorPointElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, anchor: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    @staticmethod
    def displacementFromSldElement(element: QtXml.QDomElement, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> bool: ...
    @staticmethod
    def createDisplacementElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    @staticmethod
    def opacityFromSldElement(element: QtXml.QDomElement, alphaFunc: str) -> bool: ...
    @staticmethod
    def createOpacityElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, alphaFunc: str) -> None: ...
    @staticmethod
    def rotationFromSldElement(element: QtXml.QDomElement, rotationFunc: str) -> bool: ...
    @staticmethod
    def createRotationElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, rotationFunc: str) -> None: ...
    @staticmethod
    def ogrFeatureStyleBrush(fillColr: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> str: ...
    @staticmethod
    def ogrFeatureStylePen(width: float, mmScaleFactor: float, mapUnitsScaleFactor: float, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], joinStyle: QtCore.Qt.PenJoinStyle = ..., capStyle: QtCore.Qt.PenCapStyle = ..., offset: float = ..., dashPattern: typing.Optional[typing.Iterable[float]] = ...) -> str: ...
    @staticmethod
    def labelTextToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, label: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., size: float = ...) -> None: ...
    @staticmethod
    def externalMarkerFromSld(element: QtXml.QDomElement, path: str, format: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Tuple[bool, int, float]: ...
    @staticmethod
    def externalMarkerToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, format: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., size: float = ...) -> int: ...
    @staticmethod
    def wellKnownMarkerFromSld2(element: QtXml.QDomElement, name: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Tuple[bool, QtCore.Qt.PenStyle, float, float]: ...
    @staticmethod
    def wellKnownMarkerToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, name: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], strokeStyle: QtCore.Qt.PenStyle, strokeWidth: float = ..., size: float = ...) -> None: ...
    @staticmethod
    def externalGraphicFromSld(element: QtXml.QDomElement, path: str, mime: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Tuple[bool, float]: ...
    @staticmethod
    def externalGraphicToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, mime: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], size: float = ...) -> None: ...
    @staticmethod
    def lineFromSld(element: QtXml.QDomElement, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], customDashPattern: typing.Optional[typing.Iterable[float]] = ...) -> typing.Tuple[bool, QtCore.Qt.PenStyle, float, QtCore.Qt.PenJoinStyle, QtCore.Qt.PenCapStyle, float]: ...
    @staticmethod
    def fillFromSld(element: QtXml.QDomElement, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Tuple[bool, QtCore.Qt.BrushStyle]: ...
    @staticmethod
    def fillToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, brushStyle: QtCore.Qt.BrushStyle, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ...) -> None: ...
    @staticmethod
    def needRasterImageFill(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needSvgFill(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needPointPatternFill(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needLinePatternFill(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needMarkerLine(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needEllipseMarker(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needSvgMarker(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def needFontMarker(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def hasWellKnownMark(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def hasExternalGraphicV2(element: QtXml.QDomElement, format: str = ...) -> bool: ...
    @staticmethod
    def hasExternalGraphic(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def convertPolygonSymbolizerToPointMarker(element: QtXml.QDomElement, layerList: typing.Iterable[QgsSymbolLayer]) -> bool: ...
    @staticmethod
    def createMarkerLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createLineLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createFillLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createSymbolLayerListFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType, layers: typing.Iterable[QgsSymbolLayer]) -> bool: ...
    @staticmethod
    def symbolProperties(symbol: QgsSymbol) -> str: ...
    @staticmethod
    def saveSymbol(symbolName: str, symbol: QgsSymbol, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def loadSymbolLayer(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsSymbolLayer: ...
    @staticmethod
    def loadSymbol(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsSymbol: ...
    @staticmethod
    def estimateMaxSymbolBleed(symbol: QgsSymbol, context: QgsRenderContext) -> float: ...
    @staticmethod
    def drawVertexMarker(x: float, y: float, p: QtGui.QPainter, type: Qgis.VertexMarkerType, markerSize: int) -> None: ...
    @staticmethod
    def drawStippledBackground(painter: QtGui.QPainter, rect: QtCore.QRect) -> None: ...
    @staticmethod
    def colorRampPreviewPixmap(ramp: QgsColorRamp, size: QtCore.QSize, padding: int = ..., direction: QtCore.Qt.Orientation = ..., flipDirection: bool = ..., drawTransparentBackground: bool = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def colorRampPreviewIcon(ramp: QgsColorRamp, size: QtCore.QSize, padding: int = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewIcon(layer: QgsSymbolLayer, u: Qgis.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ..., mapLayer: typing.Optional[QgsMapLayer] = ..., screen: QgsScreenProperties = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewPicture(layer: QgsSymbolLayer, units: Qgis.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ...) -> QtGui.QPicture: ...
    @staticmethod
    def symbolPreviewPixmap(symbol: QgsSymbol, size: QtCore.QSize, padding: int = ..., customContext: typing.Optional[QgsRenderContext] = ..., selected: bool = ..., expressionContext: typing.Optional[QgsExpressionContext] = ..., shape: typing.Optional[QgsLegendPatchShape] = ..., screen: QgsScreenProperties = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def symbolPreviewIcon(symbol: QgsSymbol, size: QtCore.QSize, padding: int = ..., shape: typing.Optional[QgsLegendPatchShape] = ..., screen: QgsScreenProperties = ...) -> QtGui.QIcon: ...
    @staticmethod
    def decodeBlendMode(s: str) -> QtGui.QPainter.CompositionMode: ...
    @staticmethod
    def decodeScaleMethod(str: str) -> Qgis.ScaleMethod: ...
    @staticmethod
    def encodeScaleMethod(scaleMethod: Qgis.ScaleMethod) -> str: ...
    @staticmethod
    def sizeInPixelsFromSldUom(uom: str, size: float) -> float: ...
    @staticmethod
    def decodeSldUom(str: str) -> typing.Tuple[Qgis.RenderUnit, float]: ...
    @staticmethod
    def encodeSldUom(unit: Qgis.RenderUnit) -> typing.Tuple[str, float]: ...
    @staticmethod
    def decodeSldRealVector(s: str) -> typing.List[float]: ...
    @staticmethod
    def encodeSldRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeRealVector(s: str) -> typing.List[float]: ...
    @staticmethod
    def encodeRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeMapUnitScale(str: str) -> QgsMapUnitScale: ...
    @staticmethod
    def encodeMapUnitScale(mapUnitScale: QgsMapUnitScale) -> str: ...
    @staticmethod
    def toSize(value: typing.Any) -> typing.Tuple[QtCore.QSizeF, bool]: ...
    @staticmethod
    def decodeSize(string: str) -> QtCore.QSizeF: ...
    @staticmethod
    def encodeSize(size: QtCore.QSizeF) -> str: ...
    @staticmethod
    def toPoint(value: typing.Any) -> typing.Tuple[QtCore.QPointF, bool]: ...
    @staticmethod
    def decodePoint(string: str) -> QtCore.QPointF: ...
    @staticmethod
    def encodePoint(point: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> str: ...
    @staticmethod
    def encodeLineClipMode(mode: Qgis.LineClipMode) -> str: ...
    @staticmethod
    def decodeLineClipMode(string: str) -> typing.Tuple[Qgis.LineClipMode, bool]: ...
    @staticmethod
    def encodeMarkerClipMode(mode: Qgis.MarkerClipMode) -> str: ...
    @staticmethod
    def decodeMarkerClipMode(string: str) -> typing.Tuple[Qgis.MarkerClipMode, bool]: ...
    @staticmethod
    def decodeArrowType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.ArrowType, bool]: ...
    @staticmethod
    def decodeArrowHeadType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.HeadType, bool]: ...
    @staticmethod
    def encodeCoordinateReference(coordinateReference: Qgis.SymbolCoordinateReference) -> str: ...
    @staticmethod
    def decodeCoordinateReference(string: str) -> typing.Tuple[Qgis.SymbolCoordinateReference, bool]: ...
    @staticmethod
    def decodeSldBrushStyle(str: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeSldBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeBrushStyle(str: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeSldLineCapStyle(str: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodeSldLineCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodeSldLineJoinStyle(str: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodeSldLineJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenCapStyle(str: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodePenCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodePenJoinStyle(str: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodePenJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenStyle(str: str) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def encodePenStyle(style: QtCore.Qt.PenStyle) -> str: ...
    @staticmethod
    def decodeSldFontWeight(str: str) -> int: ...
    @staticmethod
    def encodeSldFontWeight(weight: int) -> str: ...
    @staticmethod
    def decodeSldFontStyle(str: str) -> QtGui.QFont.Style: ...
    @staticmethod
    def encodeSldFontStyle(style: QtGui.QFont.Style) -> str: ...
    @staticmethod
    def decodeSldAlpha(str: str) -> int: ...
    @staticmethod
    def encodeSldAlpha(alpha: int) -> str: ...
    @staticmethod
    def decodeColor(str: str) -> QtGui.QColor: ...
    @staticmethod
    def encodeColor(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> str: ...


class QgsSymbolRenderContext(PyQt5.sip.wrapper):

    def __init__(self, c: QgsRenderContext, u: Qgis.RenderUnit, opacity: float = ..., selected: bool = ..., renderHints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint] = ..., f: typing.Optional[QgsFeature] = ..., fields: QgsFields = ..., mapUnitScale: QgsMapUnitScale = ...) -> None: ...

    def setPatchShape(self, shape: QgsLegendPatchShape) -> None: ...
    def patchShape(self) -> QgsLegendPatchShape: ...
    def setExpressionContextScope(self, contextScope: QgsExpressionContextScope) -> None: ...
    def expressionContextScope(self) -> QgsExpressionContextScope: ...
    def outputPixelSize(self, size: float) -> float: ...
    def outputLineWidth(self, width: float) -> float: ...
    def setGeometryPartNum(self, num: int) -> None: ...
    def geometryPartNum(self) -> int: ...
    def setGeometryPartCount(self, count: int) -> None: ...
    def geometryPartCount(self) -> int: ...
    def fields(self) -> QgsFields: ...
    def originalGeometryType(self) -> Qgis.GeometryType: ...
    def setOriginalGeometryType(self, type: Qgis.GeometryType) -> None: ...
    def feature(self) -> QgsFeature: ...
    def setFeature(self, f: QgsFeature) -> None: ...
    def setRenderHints(self, hints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint]) -> None: ...
    def renderHints(self) -> Qgis.SymbolRenderHints: ...
    def setSelected(self, selected: bool) -> None: ...
    def selected(self) -> bool: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, u: Qgis.RenderUnit) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOriginalValueVariable(self, value: typing.Any) -> None: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsVectorFieldSymbolLayer(QgsMarkerSymbolLayer):

    class AngleUnits(int):
        Degrees = ... # type: QgsVectorFieldSymbolLayer.AngleUnits
        Radians = ... # type: QgsVectorFieldSymbolLayer.AngleUnits

    class AngleOrientation(int):
        ClockwiseFromNorth = ... # type: QgsVectorFieldSymbolLayer.AngleOrientation
        CounterclockwiseFromEast = ... # type: QgsVectorFieldSymbolLayer.AngleOrientation

    class VectorFieldType(int):
        Cartesian = ... # type: QgsVectorFieldSymbolLayer.VectorFieldType
        Polar = ... # type: QgsVectorFieldSymbolLayer.VectorFieldType
        Height = ... # type: QgsVectorFieldSymbolLayer.VectorFieldType

    def __init__(self) -> None: ...

    def bounds(self, a0: typing.Union[QtCore.QPointF, QtCore.QPoint, float], a1: QgsSymbolRenderContext) -> QtCore.QRectF: ...
    def distanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceUnit(self) -> Qgis.RenderUnit: ...
    def setDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> Qgis.RenderUnit: ...
    def setOutputUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def angleUnits(self) -> 'QgsVectorFieldSymbolLayer.AngleUnits': ...
    def setAngleUnits(self, units: 'QgsVectorFieldSymbolLayer.AngleUnits') -> None: ...
    def angleOrientation(self) -> 'QgsVectorFieldSymbolLayer.AngleOrientation': ...
    def setAngleOrientation(self, orientation: 'QgsVectorFieldSymbolLayer.AngleOrientation') -> None: ...
    def vectorFieldType(self) -> 'QgsVectorFieldSymbolLayer.VectorFieldType': ...
    def setVectorFieldType(self, type: 'QgsVectorFieldSymbolLayer.VectorFieldType') -> None: ...
    def scale(self) -> float: ...
    def setScale(self, s: float) -> None: ...
    def yAttribute(self) -> str: ...
    def setYAttribute(self, attribute: str) -> None: ...
    def xAttribute(self) -> str: ...
    def setXAttribute(self, attribute: str) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def drawPreviewIcon(self, context: QgsSymbolRenderContext, size: QtCore.QSize) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsVectorFieldSymbolLayer': ...
    def stopRender(self, context: QgsSymbolRenderContext) -> None: ...
    def startRender(self, context: QgsSymbolRenderContext) -> None: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], context: QgsSymbolRenderContext) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFontManager(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def fontDownloadErrorOccurred(self, url: QtCore.QUrl, identifier: str, error: str) -> None: ...
    def fontDownloaded(self, families: typing.Iterable[str], licenseDetails: str) -> None: ...
    def removeUserFont(self, path: str) -> bool: ...
    def userFontToFamilyMap(self) -> typing.Dict[str, typing.List[str]]: ...
    def addUserFontDirectory(self, directory: str) -> None: ...
    def installFontsFromData(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], filename: str = ...) -> typing.Tuple[bool, str, typing.List[str], str]: ...
    def downloadAndInstallFont(self, url: QtCore.QUrl, identifier: str = ...) -> None: ...
    def urlForFontDownload(self, family: str) -> typing.Tuple[str, str]: ...
    def enableFontDownloadsForSession(self) -> None: ...
    def tryToDownloadFontFamily(self, family: str) -> typing.Tuple[bool, str]: ...
    def processFontFamilyName(self, name: str) -> str: ...
    def setFontFamilyReplacements(self, replacements: typing.Dict[str, str]) -> None: ...
    def addFontFamilyReplacement(self, original: str, replacement: str) -> None: ...
    def fontFamilyReplacements(self) -> typing.Dict[str, str]: ...


class QgsTextBackgroundSettings(PyQt5.sip.wrapper):

    class RotationType(int):
        RotationSync = ... # type: QgsTextBackgroundSettings.RotationType
        RotationOffset = ... # type: QgsTextBackgroundSettings.RotationType
        RotationFixed = ... # type: QgsTextBackgroundSettings.RotationType

    class SizeType(int):
        SizeBuffer = ... # type: QgsTextBackgroundSettings.SizeType
        SizeFixed = ... # type: QgsTextBackgroundSettings.SizeType
        SizePercent = ... # type: QgsTextBackgroundSettings.SizeType

    class ShapeType(int):
        ShapeRectangle = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeSquare = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeEllipse = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeCircle = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeSVG = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeMarkerSymbol = ... # type: QgsTextBackgroundSettings.ShapeType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextBackgroundSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthUnit(self, units: Qgis.RenderUnit) -> None: ...
    def strokeWidthUnit(self) -> Qgis.RenderUnit: ...
    def setStrokeWidth(self, width: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setRadiiMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def radiiMapUnitScale(self) -> QgsMapUnitScale: ...
    def setRadiiUnit(self, units: Qgis.RenderUnit) -> None: ...
    def radiiUnit(self) -> Qgis.RenderUnit: ...
    def setRadii(self, radii: QtCore.QSizeF) -> None: ...
    def radii(self) -> QtCore.QSizeF: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetUnit(self, units: Qgis.RenderUnit) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffset(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint, float]) -> None: ...
    def offset(self) -> QtCore.QPointF: ...
    def setRotation(self, rotation: float) -> None: ...
    def rotation(self) -> float: ...
    def setRotationType(self, type: 'QgsTextBackgroundSettings.RotationType') -> None: ...
    def rotationType(self) -> 'QgsTextBackgroundSettings.RotationType': ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def setSizeType(self, type: 'QgsTextBackgroundSettings.SizeType') -> None: ...
    def sizeType(self) -> 'QgsTextBackgroundSettings.SizeType': ...
    def setFillSymbol(self, symbol: QgsFillSymbol) -> None: ...
    def fillSymbol(self) -> QgsFillSymbol: ...
    def setMarkerSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def markerSymbol(self) -> QgsMarkerSymbol: ...
    def setSvgFile(self, file: str) -> None: ...
    def svgFile(self) -> str: ...
    def setType(self, type: 'QgsTextBackgroundSettings.ShapeType') -> None: ...
    def type(self) -> 'QgsTextBackgroundSettings.ShapeType': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...


class QgsTextBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, fragment: 'QgsTextFragment') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextBlock') -> None: ...

    def __getitem__(self, index: int) -> 'QgsTextFragment': ...
    def at(self, index: int) -> 'QgsTextFragment': ...
    def __len__(self) -> int: ...
    def applyCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def size(self) -> int: ...
    def empty(self) -> bool: ...
    def clear(self) -> None: ...
    def append(self, fragment: 'QgsTextFragment') -> None: ...
    def toPlainText(self) -> str: ...


class QgsTextBufferSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextBufferSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setFillBufferInterior(self, fill: bool) -> None: ...
    def fillBufferInterior(self) -> bool: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSize(self, size: float) -> None: ...
    def size(self) -> float: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...


class QgsTextCharacterFormat(PyQt5.sip.wrapper):

    class BooleanValue(int):
        NotSet = ... # type: QgsTextCharacterFormat.BooleanValue
        SetTrue = ... # type: QgsTextCharacterFormat.BooleanValue
        SetFalse = ... # type: QgsTextCharacterFormat.BooleanValue

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, format: QtGui.QTextCharFormat) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextCharacterFormat') -> None: ...

    def updateFontForFormat(self, font: QtGui.QFont, context: QgsRenderContext, scaleFactor: float = ...) -> None: ...
    def setVerticalAlignment(self, alignment: Qgis.TextCharacterVerticalAlignment) -> None: ...
    def verticalAlignment(self) -> Qgis.TextCharacterVerticalAlignment: ...
    def setHasVerticalAlignmentSet(self, set: bool) -> None: ...
    def hasVerticalAlignmentSet(self) -> bool: ...
    def setOverline(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def overline(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setUnderline(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def underline(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setStrikeOut(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def strikeOut(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setItalic(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def italic(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setFontWeight(self, fontWeight: int) -> None: ...
    def fontWeight(self) -> int: ...
    def setFamily(self, family: str) -> None: ...
    def family(self) -> str: ...
    def setFontPointSize(self, size: float) -> None: ...
    def fontPointSize(self) -> float: ...
    def setTextColor(self, textColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def textColor(self) -> QtGui.QColor: ...


class QgsTextDocument(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, block: QgsTextBlock) -> None: ...
    @typing.overload
    def __init__(self, fragment: 'QgsTextFragment') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextDocument') -> None: ...

    def applyCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def splitLines(self, wrapCharacter: str, autoWrapLength: int = ..., useMaxLineLengthWhenAutoWrapping: bool = ...) -> None: ...
    def toPlainText(self) -> typing.List[str]: ...
    def __len__(self) -> int: ...
    def size(self) -> int: ...
    def __getitem__(self, index: int) -> QgsTextBlock: ...
    def at(self, index: int) -> QgsTextBlock: ...
    def reserve(self, count: int) -> None: ...
    def append(self, block: QgsTextBlock) -> None: ...
    @staticmethod
    def fromHtml(lines: typing.Iterable[str]) -> 'QgsTextDocument': ...
    @staticmethod
    def fromPlainText(lines: typing.Iterable[str]) -> 'QgsTextDocument': ...


class QgsTextDocumentMetrics(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextDocumentMetrics') -> None: ...

    def ascentOffset(self) -> float: ...
    def fragmentFont(self, blockIndex: int, fragmentIndex: int) -> QtGui.QFont: ...
    def blockMaximumDescent(self, blockIndex: int) -> float: ...
    def blockMaximumCharacterWidth(self, blockIndex: int) -> float: ...
    def verticalOrientationXOffset(self, blockIndex: int) -> float: ...
    def fragmentVerticalOffset(self, blockIndex: int, fragmentIndex: int, mode: Qgis.TextLayoutMode) -> float: ...
    def fragmentHorizontalAdvance(self, blockIndex: int, fragmentIndex: int, mode: Qgis.TextLayoutMode) -> float: ...
    def baselineOffset(self, blockIndex: int, mode: Qgis.TextLayoutMode) -> float: ...
    def firstLineCapHeight(self) -> float: ...
    def blockHeight(self, blockIndex: int) -> float: ...
    def blockWidth(self, blockIndex: int) -> float: ...
    def outerBounds(self, mode: Qgis.TextLayoutMode, orientation: Qgis.TextOrientation) -> QtCore.QRectF: ...
    def documentSize(self, mode: Qgis.TextLayoutMode, orientation: Qgis.TextOrientation) -> QtCore.QSizeF: ...
    def isNullFontSize(self) -> bool: ...
    @staticmethod
    def calculateMetrics(document: QgsTextDocument, format: 'QgsTextFormat', context: QgsRenderContext, scaleFactor: float = ...) -> 'QgsTextDocumentMetrics': ...


class QgsTextFormat(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextFormat') -> None: ...

    @staticmethod
    def textFormatPreviewPixmap(format: 'QgsTextFormat', size: QtCore.QSize, previewText: str = ..., padding: int = ..., screen: QgsScreenProperties = ...) -> QtGui.QPixmap: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def resolvedFontFamily(self) -> str: ...
    def fontFound(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    @staticmethod
    def fromMimeData(data: QtCore.QMimeData) -> typing.Tuple['QgsTextFormat', bool]: ...
    def toQFont(self) -> QtGui.QFont: ...
    @staticmethod
    def fromQFont(font: QtGui.QFont) -> 'QgsTextFormat': ...
    def toMimeData(self) -> QtCore.QMimeData: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setPreviewBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def previewBackgroundColor(self) -> QtGui.QColor: ...
    def setAllowHtmlFormatting(self, allow: bool) -> None: ...
    def allowHtmlFormatting(self) -> bool: ...
    def setCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def capitalization(self) -> Qgis.Capitalization: ...
    def setOrientation(self, orientation: Qgis.TextOrientation) -> None: ...
    def orientation(self) -> Qgis.TextOrientation: ...
    def setLineHeightUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def lineHeightUnit(self) -> Qgis.RenderUnit: ...
    def setLineHeight(self, height: float) -> None: ...
    def lineHeight(self) -> float: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setStretchFactor(self, factor: int) -> None: ...
    def stretchFactor(self) -> int: ...
    def setOpacity(self, opacity: float) -> None: ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def opacity(self) -> float: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSize(self, size: float) -> None: ...
    def size(self) -> float: ...
    def setFamilies(self, families: typing.Iterable[str]) -> None: ...
    def families(self) -> typing.List[str]: ...
    def setForcedItalic(self, forced: bool) -> None: ...
    def forcedItalic(self) -> bool: ...
    def setForcedBold(self, forced: bool) -> None: ...
    def forcedBold(self) -> bool: ...
    def setNamedStyle(self, style: str) -> None: ...
    def namedStyle(self) -> str: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def scaledFont(self, context: QgsRenderContext, scaleFactor: float = ...) -> QtGui.QFont: ...
    def font(self) -> QtGui.QFont: ...
    def setMask(self, maskSettings: 'QgsTextMaskSettings') -> None: ...
    def mask(self) -> 'QgsTextMaskSettings': ...
    def setShadow(self, shadowSettings: 'QgsTextShadowSettings') -> None: ...
    def shadow(self) -> 'QgsTextShadowSettings': ...
    def setBackground(self, backgroundSettings: QgsTextBackgroundSettings) -> None: ...
    def background(self) -> QgsTextBackgroundSettings: ...
    def setBuffer(self, bufferSettings: QgsTextBufferSettings) -> None: ...
    def buffer(self) -> QgsTextBufferSettings: ...
    def setValid(self) -> None: ...
    def isValid(self) -> bool: ...


class QgsTextFragment(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, text: str = ..., format: QgsTextCharacterFormat = ...) -> None: ...
    @typing.overload
    def __init__(self, fragment: QtGui.QTextFragment) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextFragment') -> None: ...

    def applyCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def horizontalAdvance(self, font: QtGui.QFont, context: QgsRenderContext, fontHasBeenUpdatedForFragment: bool = ..., scaleFactor: float = ...) -> float: ...
    def setCharacterFormat(self, format: QgsTextCharacterFormat) -> None: ...
    def characterFormat(self) -> QgsTextCharacterFormat: ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...


class QgsTextMaskSettings(PyQt5.sip.wrapper):

    class MaskType(int):
        MaskBuffer = ... # type: QgsTextMaskSettings.MaskType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextMaskSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def setMaskedSymbolLayers(self, maskedLayers: typing.Iterable[QgsSymbolLayerReference]) -> None: ...
    def maskedSymbolLayers(self) -> typing.List[QgsSymbolLayerReference]: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def setSize(self, size: float) -> None: ...
    def size(self) -> float: ...
    def setType(self, type: 'QgsTextMaskSettings.MaskType') -> None: ...
    def type(self) -> 'QgsTextMaskSettings.MaskType': ...
    def setEnabled(self, a0: bool) -> None: ...
    def enabled(self) -> bool: ...


class QgsTextRenderer(PyQt5.sip.wrapper):

    FONT_WORKAROUND_SCALE = ... # type: float
    SUPERSCRIPT_SUBSCRIPT_FONT_SIZE_SCALING_FACTOR = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextRenderer') -> None: ...

    @staticmethod
    def wrappedText(context: QgsRenderContext, text: str, width: float, format: QgsTextFormat) -> typing.List[str]: ...
    @staticmethod
    def textRequiresWrapping(context: QgsRenderContext, text: str, width: float, format: QgsTextFormat) -> bool: ...
    @typing.overload
    @staticmethod
    def textHeight(context: QgsRenderContext, format: QgsTextFormat, textLines: typing.Iterable[str], mode: Qgis.TextLayoutMode = ..., fontMetrics: typing.Optional[QtGui.QFontMetricsF] = ..., flags: typing.Union[Qgis.TextRendererFlags, Qgis.TextRendererFlag] = ..., maxLineWidth: float = ...) -> float: ...
    @typing.overload
    @staticmethod
    def textHeight(context: QgsRenderContext, format: QgsTextFormat, character: str, includeEffects: bool = ...) -> float: ...
    @staticmethod
    def textWidth(context: QgsRenderContext, format: QgsTextFormat, textLines: typing.Iterable[str], fontMetrics: typing.Optional[QtGui.QFontMetricsF] = ...) -> float: ...
    @staticmethod
    def fontMetrics(context: QgsRenderContext, format: QgsTextFormat, scaleFactor: float = ...) -> QtGui.QFontMetricsF: ...
    @typing.overload
    @staticmethod
    def drawPart(rect: QtCore.QRectF, rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, part: Qgis.TextComponent, drawAsOutlines: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawPart(origin: typing.Union[QtCore.QPointF, QtCore.QPoint, float], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, part: Qgis.TextComponent, drawAsOutlines: bool = ...) -> None: ...
    @staticmethod
    def drawDocumentOnLine(line: QtGui.QPolygonF, format: QgsTextFormat, document: QgsTextDocument, context: QgsRenderContext, offsetAlongLine: float = ..., offsetFromLine: float = ...) -> None: ...
    @staticmethod
    def drawTextOnLine(line: QtGui.QPolygonF, text: str, context: QgsRenderContext, format: QgsTextFormat, offsetAlongLine: float = ..., offsetFromLine: float = ...) -> None: ...
    @staticmethod
    def drawDocument(rect: QtCore.QRectF, format: QgsTextFormat, document: QgsTextDocument, metrics: QgsTextDocumentMetrics, context: QgsRenderContext, horizontalAlignment: Qgis.TextHorizontalAlignment = ..., verticalAlignment: Qgis.TextVerticalAlignment = ..., rotation: float = ..., mode: Qgis.TextLayoutMode = ..., flags: typing.Union[Qgis.TextRendererFlags, Qgis.TextRendererFlag] = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(rect: QtCore.QRectF, rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, drawAsOutlines: bool = ..., vAlignment: Qgis.TextVerticalAlignment = ..., flags: typing.Union[Qgis.TextRendererFlags, Qgis.TextRendererFlag] = ..., mode: Qgis.TextLayoutMode = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(point: typing.Union[QtCore.QPointF, QtCore.QPoint, float], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, drawAsOutlines: bool = ...) -> None: ...
    @staticmethod
    def sizeToPixel(size: float, c: QgsRenderContext, unit: Qgis.RenderUnit, mapUnitScale: QgsMapUnitScale = ...) -> int: ...
    @staticmethod
    def convertQtVAlignment(alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> Qgis.TextVerticalAlignment: ...
    @staticmethod
    def convertQtHAlignment(alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> Qgis.TextHorizontalAlignment: ...


class QgsTextRendererUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextRendererUtils') -> None: ...

    @staticmethod
    def decodeTextOrientation(name: str) -> typing.Tuple[Qgis.TextOrientation, bool]: ...
    @staticmethod
    def encodeTextOrientation(orientation: Qgis.TextOrientation) -> str: ...
    @staticmethod
    def decodeShadowPlacementType(string: str) -> 'QgsTextShadowSettings.ShadowPlacement': ...
    @staticmethod
    def decodeBackgroundRotationType(string: str) -> QgsTextBackgroundSettings.RotationType: ...
    @staticmethod
    def decodeBackgroundSizeType(string: str) -> QgsTextBackgroundSettings.SizeType: ...
    @staticmethod
    def decodeShapeType(string: str) -> QgsTextBackgroundSettings.ShapeType: ...


class QgsTextShadowSettings(PyQt5.sip.wrapper):

    class ShadowPlacement(int):
        ShadowLowest = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowText = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowBuffer = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowShape = ... # type: QgsTextShadowSettings.ShadowPlacement

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextShadowSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setScale(self, scale: int) -> None: ...
    def scale(self) -> int: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setBlurAlphaOnly(self, alphaOnly: bool) -> None: ...
    def blurAlphaOnly(self) -> bool: ...
    def setBlurRadiusMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurRadiusMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurRadiusUnit(self, units: Qgis.RenderUnit) -> None: ...
    def blurRadiusUnit(self) -> Qgis.RenderUnit: ...
    def setBlurRadius(self, blurRadius: float) -> None: ...
    def blurRadius(self) -> float: ...
    def setOffsetGlobal(self, global_: bool) -> None: ...
    def offsetGlobal(self) -> bool: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetUnit(self, units: Qgis.RenderUnit) -> None: ...
    def offsetUnit(self) -> Qgis.RenderUnit: ...
    def setOffsetDistance(self, distance: float) -> None: ...
    def offsetDistance(self) -> float: ...
    def setOffsetAngle(self, angle: int) -> None: ...
    def offsetAngle(self) -> int: ...
    def setShadowPlacement(self, placement: 'QgsTextShadowSettings.ShadowPlacement') -> None: ...
    def shadowPlacement(self) -> 'QgsTextShadowSettings.ShadowPlacement': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...


class QgsSensorModel(QtCore.QAbstractItemModel):

    class Role(int):
        SensorType = ... # type: QgsSensorModel.Role
        SensorId = ... # type: QgsSensorModel.Role
        SensorName = ... # type: QgsSensorModel.Role
        SensorStatus = ... # type: QgsSensorModel.Role
        SensorLastValue = ... # type: QgsSensorModel.Role
        SensorLastTimestamp = ... # type: QgsSensorModel.Role
        Sensor = ... # type: QgsSensorModel.Role

    class Column(int):
        Name = ... # type: QgsSensorModel.Column
        LastValue = ... # type: QgsSensorModel.Column

    def __init__(self, manager: 'QgsSensorManager', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsSensorManager(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def sensorErrorOccurred(self, id: str) -> None: ...
    def sensorDataCaptured(self, id: str) -> None: ...
    def sensorStatusChanged(self, id: str) -> None: ...
    def sensorNameChanged(self, id: str) -> None: ...
    def sensorRemoved(self, id: str) -> None: ...
    def sensorAboutToBeRemoved(self, id: str) -> None: ...
    def sensorAdded(self, id: str) -> None: ...
    def writeXml(self, document: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def sensorsData(self) -> typing.Dict[str, 'QgsAbstractSensor.SensorData']: ...
    def sensorData(self, name: str) -> 'QgsAbstractSensor.SensorData': ...
    def sensorNames(self) -> typing.List[str]: ...
    def removeSensor(self, id: str) -> bool: ...
    def addSensor(self, sensor: 'QgsAbstractSensor') -> None: ...
    def sensor(self, id: str) -> 'QgsAbstractSensor': ...
    def sensors(self) -> typing.List['QgsAbstractSensor']: ...
    def clear(self) -> None: ...


class QgsSensorAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: str, visibleName: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSensorAbstractMetadata') -> None: ...

    def createSensor(self, parent: QtCore.QObject) -> 'QgsAbstractSensor': ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class QgsSensorRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def sensorAdded(self, type: str, name: str) -> None: ...
    def sensorTypes(self) -> typing.Dict[str, str]: ...
    def createSensor(self, type: str, parent: typing.Optional[QtCore.QObject] = ...) -> 'QgsAbstractSensor': ...
    def removeSensorType(self, type: str) -> bool: ...
    def addSensorType(self, metadata: QgsSensorAbstractMetadata) -> bool: ...
    def sensorMetadata(self, type: str) -> QgsSensorAbstractMetadata: ...
    def populate(self) -> bool: ...


class QgsAbstractSensor(QtCore.QObject):

    class SensorData(PyQt5.sip.wrapper):

        lastTimestamp = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        lastValue = ... # type: typing.Any

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractSensor.SensorData') -> None: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def handleDisconnect(self) -> None: ...
    def handleConnect(self) -> None: ...
    def errorOccurred(self, errorString: str) -> None: ...
    def dataChanged(self) -> None: ...
    def statusChanged(self) -> None: ...
    def nameChanged(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def errorString(self) -> str: ...
    def setData(self, data: 'QgsAbstractSensor.SensorData') -> None: ...
    def data(self) -> 'QgsAbstractSensor.SensorData': ...
    def disconnectSensor(self) -> None: ...
    def connectSensor(self) -> None: ...
    def setStatus(self, status: Qgis.DeviceConnectionStatus) -> None: ...
    def status(self) -> Qgis.DeviceConnectionStatus: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def type(self) -> str: ...
    def id(self) -> str: ...


class QgsIODeviceSensor(QgsAbstractSensor):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def parseData(self) -> None: ...
    def initIODevice(self, device: QtCore.QIODevice) -> None: ...
    def iODevice(self) -> QtCore.QIODevice: ...


class QgsTcpSocketSensor(QgsIODeviceSensor):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def handleDisconnect(self) -> None: ...
    def handleConnect(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def setPort(self, port: int) -> None: ...
    def port(self) -> int: ...
    def setHostName(self, hostName: str) -> None: ...
    def hostName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: QtCore.QObject) -> 'QgsTcpSocketSensor': ...


class QgsUdpSocketSensor(QgsIODeviceSensor):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def handleDisconnect(self) -> None: ...
    def handleConnect(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def setPort(self, port: int) -> None: ...
    def port(self) -> int: ...
    def setHostName(self, hostName: str) -> None: ...
    def hostName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: QtCore.QObject) -> 'QgsUdpSocketSensor': ...


class QgsSerialPortSensor(QgsIODeviceSensor):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def handleDisconnect(self) -> None: ...
    def handleConnect(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def setPortName(self, portName: str) -> None: ...
    def portName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: QtCore.QObject) -> 'QgsSerialPortSensor': ...


class QgsSettings(QtCore.QObject):

    class Section(int):
        NoSection = ... # type: QgsSettings.Section
        Core = ... # type: QgsSettings.Section
        Gui = ... # type: QgsSettings.Section
        Server = ... # type: QgsSettings.Section
        Plugins = ... # type: QgsSettings.Section
        Auth = ... # type: QgsSettings.Section
        App = ... # type: QgsSettings.Section
        Providers = ... # type: QgsSettings.Section
        Expressions = ... # type: QgsSettings.Section
        Misc = ... # type: QgsSettings.Section
        Gps = ... # type: QgsSettings.Section

    @typing.overload
    def __init__(self, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, scope: QtCore.QSettings.Scope, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, format: QtCore.QSettings.Format, scope: QtCore.QSettings.Scope, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, format: QtCore.QSettings.Format, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def clear(self) -> None: ...
    def prefixedKey(self, key: str, section: 'QgsSettings.Section') -> str: ...
    def remove(self, key: str, section: 'QgsSettings.Section' = ...) -> None: ...
    def sync(self) -> None: ...
    def fileName(self) -> str: ...
    def contains(self, key: str, section: 'QgsSettings.Section' = ...) -> bool: ...
    def value(self, key: str, defaultValue: typing.Any = ..., type: typing.Any = ..., section: 'QgsSettings.Section' = ...) -> typing.Any: ...
    def setValue(self, key: str, value: typing.Any, section: 'QgsSettings.Section' = ...) -> None: ...
    def origin(self, key: str) -> Qgis.SettingsOrigin: ...
    def setArrayIndex(self, i: int) -> None: ...
    def endArray(self) -> None: ...
    def beginWriteArray(self, prefix: str, size: int = ...) -> None: ...
    def beginReadArray(self, prefix: str) -> int: ...
    @staticmethod
    def setGlobalSettingsPath(path: str) -> bool: ...
    @staticmethod
    def globalSettingsPath() -> str: ...
    def globalChildGroups(self) -> typing.List[str]: ...
    def childGroups(self, origin: Qgis.SettingsOrigin = ...) -> typing.List[str]: ...
    def childKeys(self) -> typing.List[str]: ...
    def allKeys(self) -> typing.List[str]: ...
    def group(self) -> str: ...
    def endGroup(self) -> None: ...
    def beginGroup(self, prefix: str, section: 'QgsSettings.Section' = ...) -> None: ...


class QgsSettingsEntryBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBase') -> None: ...

    def checkValueVariant(self, value: typing.Any) -> bool: ...
    def parent(self) -> 'QgsSettingsTreeNode': ...
    def copyValueToKey(self, key: str, dynamicKeyPartList: typing.Iterable[str] = ...) -> None: ...
    @typing.overload
    def copyValueFromKey(self, key: str, removeSettingAtKey: bool = ...) -> bool: ...
    @typing.overload
    def copyValueFromKey(self, key: str, dynamicKeyPartList: typing.Iterable[str], removeSettingAtKey: bool = ...) -> bool: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPart: str) -> typing.Any: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    def description(self) -> str: ...
    def settingsType(self) -> Qgis.SettingsType: ...
    def defaultValueAsVariant(self) -> typing.Any: ...
    @typing.overload
    def valueAsVariantWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariantWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def section(self) -> int: ...
    @typing.overload
    def remove(self, dynamicKeyPart: str = ...) -> None: ...
    @typing.overload
    def remove(self, dynamicKeyPartList: typing.Iterable[str]) -> None: ...
    def origin(self, dynamicKeyPartList: typing.Iterable[str]) -> Qgis.SettingsOrigin: ...
    @typing.overload
    def exists(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def exists(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def options(self) -> Qgis.SettingsOptions: ...
    def hasDynamicKey(self) -> bool: ...
    def definitionKey(self) -> str: ...
    def keyIsValid(self, key: str) -> bool: ...
    @typing.overload
    def key(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def key(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    def name(self) -> str: ...
    def typeId(self) -> str: ...
    @staticmethod
    def dynamicKeyPartToList(dynamicKeyPart: str) -> typing.List[str]: ...


class QgsSettingsEntryGroup(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, settings: typing.Iterable[QgsSettingsEntryBase]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryGroup') -> None: ...

    @typing.overload
    def removeAllChildrenSettings(self, dynamicKeyPart: str = ...) -> None: ...
    @typing.overload
    def removeAllChildrenSettings(self, dynamicKeyPartList: typing.Iterable[str]) -> None: ...
    def removeAllSettingsAtBaseKey(self, dynamicKeyPartList: typing.Iterable[str] = ...) -> None: ...
    def settings(self) -> typing.List[QgsSettingsEntryBase]: ...
    def baseKey(self, dynamicKeyPartList: typing.Iterable[str] = ...) -> str: ...
    def isValid(self) -> bool: ...


class QgsSettingsEntryBaseTemplateQVariantBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQVariantBase') -> None: ...

    def checkValuePrivate(self, value: typing.Any) -> bool: ...
    def convertToVariant(self, value: typing.Any) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> typing.Any: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    def defaultValue(self) -> typing.Any: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryVariant(QgsSettingsEntryBaseTemplateQVariantBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryVariant') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> typing.Any: ...
    def settingsType(self) -> Qgis.SettingsType: ...
    def valueAs(self, type: typing.Any) -> typing.Any: ...


class QgsSettingsEntryBaseTemplateQStringBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQStringBase') -> None: ...

    def checkValuePrivate(self, value: str) -> bool: ...
    def convertToVariant(self, value: str) -> typing.Any: ...
    def setValuePrivate(self, value: str, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> str: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    def defaultValue(self) -> str: ...
    @typing.overload
    def setValue(self, value: str, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: str, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: str, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: str, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryString(QgsSettingsEntryBaseTemplateQStringBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: str = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minLength: int = ..., maxLength: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: str = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minLength: int = ..., maxLength: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryString') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> str: ...
    def maxLength(self) -> int: ...
    def minLength(self) -> int: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplateQStringListBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQStringListBase') -> None: ...

    def checkValuePrivate(self, value: typing.Iterable[str]) -> bool: ...
    def convertToVariant(self, value: typing.Iterable[str]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> typing.List[str]: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    def defaultValue(self) -> typing.List[str]: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[str], dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[str], dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryStringList(QgsSettingsEntryBaseTemplateQStringListBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Iterable[str] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Iterable[str] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryStringList') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> typing.List[str]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplateboolBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateboolBase') -> None: ...

    def checkValuePrivate(self, value: bool) -> bool: ...
    def convertToVariant(self, value: bool) -> typing.Any: ...
    def setValuePrivate(self, value: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> bool: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def defaultValue(self) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBool(QgsSettingsEntryBaseTemplateboolBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: bool = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: bool = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBool') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> bool: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplateintBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateintBase') -> None: ...

    def checkValuePrivate(self, value: int) -> bool: ...
    def convertToVariant(self, value: int) -> typing.Any: ...
    def setValuePrivate(self, value: int, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> int: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    def defaultValue(self) -> int: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryInteger(QgsSettingsEntryBaseTemplateintBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: int = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: int = ..., maxValue: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: int = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: int = ..., maxValue: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryInteger') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> int: ...
    def maxValue(self) -> int: ...
    def minValue(self) -> int: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplatedoubleBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplatedoubleBase') -> None: ...

    def checkValuePrivate(self, value: float) -> bool: ...
    def convertToVariant(self, value: float) -> typing.Any: ...
    def setValuePrivate(self, value: float, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> float: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    def defaultValue(self) -> float: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryDouble(QgsSettingsEntryBaseTemplatedoubleBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: float = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: float = ..., maxValue: float = ..., displayDecimals: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: float, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: float = ..., maxValue: float = ..., displayDecimals: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryDouble') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> float: ...
    def displayHintDecimals(self) -> int: ...
    def setDisplayHintDecimals(self, displayHintDecimals: int) -> None: ...
    def maxValue(self) -> float: ...
    def minValue(self) -> float: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplateQColorBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQColorBase') -> None: ...

    def checkValuePrivate(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> bool: ...
    def convertToVariant(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> QtGui.QColor: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    def defaultValue(self) -> QtGui.QColor: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryColor(QgsSettingsEntryBaseTemplateQColorBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., allowAlpha: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., allowAlpha: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryColor') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> QtGui.QColor: ...
    def allowAlpha(self) -> bool: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBaseTemplateQVariantMapBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQVariantMapBase') -> None: ...

    def checkValuePrivate(self, value: typing.Dict[str, typing.Any]) -> bool: ...
    def convertToVariant(self, value: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Dict[str, typing.Any], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> typing.Dict[str, typing.Any]: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Dict[str, typing.Any]: ...
    def defaultValue(self) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def setValue(self, value: typing.Dict[str, typing.Any], dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Dict[str, typing.Any], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Dict[str, typing.Any], dynamicKeyPart: str = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Dict[str, typing.Any], dynamicKeyPartList: typing.Iterable[str]) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Dict[str, typing.Any]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryVariantMap(QgsSettingsEntryBaseTemplateQVariantMapBase):

    @typing.overload
    def __init__(self, name: str, parent: 'QgsSettingsTreeNode', defaultValue: typing.Dict[str, typing.Any] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Dict[str, typing.Any] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryVariantMap') -> None: ...

    def convertFromVariant(self, value: typing.Any) -> typing.Dict[str, typing.Any]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsRegistry') -> None: ...

    def addSettingsEntryGroup(self, settingsGroup: QgsSettingsEntryGroup) -> None: ...
    def addSettingsEntry(self, settingsEntry: QgsSettingsEntryBase) -> bool: ...
    def subRegistries(self) -> typing.List['QgsSettingsRegistry']: ...
    def removeSubRegistry(self, settingsRegistry: 'QgsSettingsRegistry') -> None: ...
    def addSubRegistry(self, settingsRegistry: 'QgsSettingsRegistry') -> None: ...
    def settingsEntry(self, key: str, searchChildRegistries: bool = ...) -> QgsSettingsEntryBase: ...
    def settingEntries(self) -> typing.List[QgsSettingsEntryBase]: ...


class QgsSettingsRegistryCore(QgsSettingsRegistry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsRegistryCore') -> None: ...


class QgsSettingsTree(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsTree') -> None: ...

    @staticmethod
    def unregisterPluginTreeNode(pluginName: str) -> None: ...
    @staticmethod
    def createPluginTreeNode(pluginName: str) -> 'QgsSettingsTreeNode': ...
    @staticmethod
    def node(key: str) -> 'QgsSettingsTreeNode': ...


class QgsSettingsTreeNode(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    def registerChildNode(self, node: 'QgsSettingsTreeNode') -> None: ...
    def __repr__(self) -> typing.Any: ...
    def namedNodesCount(self) -> int: ...
    def completeKey(self) -> str: ...
    def key(self) -> str: ...
    def parent(self) -> 'QgsSettingsTreeNode': ...
    def childSetting(self, key: str) -> QgsSettingsEntryBase: ...
    def childrenSettings(self) -> typing.List[QgsSettingsEntryBase]: ...
    def childNode(self, key: str) -> 'QgsSettingsTreeNode': ...
    def childrenNodes(self) -> typing.List['QgsSettingsTreeNode']: ...
    def unregisterChildNode(self, node: 'QgsSettingsTreeNode') -> None: ...
    def unregisterChildSetting(self, setting: QgsSettingsEntryBase, deleteSettingValues: bool = ..., parentsNamedItems: typing.Iterable[str] = ...) -> None: ...
    def registerChildSetting(self, setting: QgsSettingsEntryBase, key: str) -> None: ...
    def type(self) -> Qgis.SettingsTreeNodeType: ...
    def createNamedListNode(self, key: str, options: typing.Union[Qgis.SettingsTreeNodeOptions, Qgis.SettingsTreeNodeOption] = ...) -> 'QgsSettingsTreeNamedListNode': ...
    def createChildNode(self, key: str) -> 'QgsSettingsTreeNode': ...


class QgsSettingsTreeNamedListNode(QgsSettingsTreeNode):

    def initNamedList(self, options: typing.Union[Qgis.SettingsTreeNodeOptions, Qgis.SettingsTreeNodeOption]) -> None: ...
    def selectedItemSetting(self) -> QgsSettingsEntryString: ...
    def deleteAllItems(self, parentsNamedItems: typing.Iterable[str] = ...) -> None: ...
    def deleteItem(self, item: str, parentsNamedItems: typing.Iterable[str] = ...) -> None: ...
    def selectedItem(self, parentsNamedItems: typing.Iterable[str] = ...) -> str: ...
    def setSelectedItem(self, item: str, parentsNamedItems: typing.Iterable[str] = ...) -> None: ...
    @typing.overload
    def items(self, parentsNamedItems: typing.Iterable[str] = ...) -> typing.List[str]: ...
    @typing.overload
    def items(self, origin: Qgis.SettingsOrigin, parentsNamedItems: typing.Iterable[str] = ...) -> typing.List[str]: ...


class QgsValidityCheckResult(PyQt5.sip.wrapper):

    class Type(int):
        Warning = ... # type: QgsValidityCheckResult.Type
        Critical = ... # type: QgsValidityCheckResult.Type

    checkId = ... # type: str
    detailedDescription = ... # type: str
    title = ... # type: str
    type = ... # type: 'QgsValidityCheckResult.Type'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValidityCheckResult') -> None: ...


class QgsAbstractValidityCheck(PyQt5.sip.wrapper):

    class Type(int):
        TypeLayoutCheck = ... # type: QgsAbstractValidityCheck.Type
        TypeUserCheck = ... # type: QgsAbstractValidityCheck.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractValidityCheck') -> None: ...

    def runCheck(self, context: 'QgsValidityCheckContext', feedback: QgsFeedback) -> typing.List[QgsValidityCheckResult]: ...
    def prepareCheck(self, context: 'QgsValidityCheckContext', feedback: QgsFeedback) -> bool: ...
    def checkType(self) -> int: ...
    def id(self) -> str: ...
    def create(self) -> 'QgsAbstractValidityCheck': ...


class QgsValidityCheckContext(PyQt5.sip.wrapper):

    class ContextType(int):
        TypeLayoutContext = ... # type: QgsValidityCheckContext.ContextType
        TypeUserContext = ... # type: QgsValidityCheckContext.ContextType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValidityCheckContext') -> None: ...

    def type(self) -> int: ...


class QgsLayoutValidityCheckContext(QgsValidityCheckContext):

    layout = ... # type: QgsLayout

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutValidityCheckContext') -> None: ...

    def type(self) -> int: ...


class QgsValidityCheckRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def runChecks(self, type: int, context: QgsValidityCheckContext, feedback: QgsFeedback) -> typing.List[QgsValidityCheckResult]: ...
    def removeCheck(self, check: QgsAbstractValidityCheck) -> None: ...
    def addCheck(self, check: QgsAbstractValidityCheck) -> None: ...
    @typing.overload
    def checks(self) -> typing.List[QgsAbstractValidityCheck]: ...
    @typing.overload
    def checks(self, type: int) -> typing.List[QgsAbstractValidityCheck]: ...


class QgsFieldDomain(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFieldDomain') -> None: ...

    def setMergePolicy(self, policy: Qgis.FieldDomainMergePolicy) -> None: ...
    def mergePolicy(self) -> Qgis.FieldDomainMergePolicy: ...
    def setSplitPolicy(self, policy: Qgis.FieldDomainSplitPolicy) -> None: ...
    def splitPolicy(self) -> Qgis.FieldDomainSplitPolicy: ...
    def setFieldType(self, type: QtCore.QVariant.Type) -> None: ...
    def fieldType(self) -> QtCore.QVariant.Type: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...
    def clone(self) -> 'QgsFieldDomain': ...


class QgsCodedValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, code: typing.Any, value: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCodedValue') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def value(self) -> str: ...
    def code(self) -> typing.Any: ...


class QgsCodedFieldDomain(QgsFieldDomain):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, values: typing.Iterable[QgsCodedValue]) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setValues(self, values: typing.Iterable[QgsCodedValue]) -> None: ...
    def values(self) -> typing.List[QgsCodedValue]: ...
    def clone(self) -> 'QgsCodedFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsRangeFieldDomain(QgsFieldDomain):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, minimum: typing.Any, minimumIsInclusive: bool, maximum: typing.Any, maximumIsInclusive: bool) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setMaximumIsInclusive(self, inclusive: bool) -> None: ...
    def maximumIsInclusive(self) -> bool: ...
    def setMaximum(self, maximum: typing.Any) -> None: ...
    def maximum(self) -> typing.Any: ...
    def setMinimumIsInclusive(self, inclusive: bool) -> None: ...
    def minimumIsInclusive(self) -> bool: ...
    def setMinimum(self, minimum: typing.Any) -> None: ...
    def minimum(self) -> typing.Any: ...
    def clone(self) -> 'QgsRangeFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsGlobFieldDomain(QgsFieldDomain):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, glob: str) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setGlob(self, glob: str) -> None: ...
    def glob(self) -> str: ...
    def clone(self) -> 'QgsGlobFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsVectorDataProvider(QgsDataProvider, QgsFeatureSink, QgsFeatureSource):

    class Capability(int):
        NoCapabilities = ... # type: QgsVectorDataProvider.Capability
        AddFeatures = ... # type: QgsVectorDataProvider.Capability
        DeleteFeatures = ... # type: QgsVectorDataProvider.Capability
        ChangeAttributeValues = ... # type: QgsVectorDataProvider.Capability
        AddAttributes = ... # type: QgsVectorDataProvider.Capability
        DeleteAttributes = ... # type: QgsVectorDataProvider.Capability
        CreateSpatialIndex = ... # type: QgsVectorDataProvider.Capability
        SelectAtId = ... # type: QgsVectorDataProvider.Capability
        ChangeGeometries = ... # type: QgsVectorDataProvider.Capability
        SelectEncoding = ... # type: QgsVectorDataProvider.Capability
        CreateAttributeIndex = ... # type: QgsVectorDataProvider.Capability
        SimplifyGeometries = ... # type: QgsVectorDataProvider.Capability
        SimplifyGeometriesWithTopologicalValidation = ... # type: QgsVectorDataProvider.Capability
        TransactionSupport = ... # type: QgsVectorDataProvider.Capability
        CircularGeometries = ... # type: QgsVectorDataProvider.Capability
        ChangeFeatures = ... # type: QgsVectorDataProvider.Capability
        RenameAttributes = ... # type: QgsVectorDataProvider.Capability
        FastTruncate = ... # type: QgsVectorDataProvider.Capability
        ReadLayerMetadata = ... # type: QgsVectorDataProvider.Capability
        WriteLayerMetadata = ... # type: QgsVectorDataProvider.Capability
        CancelSupport = ... # type: QgsVectorDataProvider.Capability
        CreateRenderer = ... # type: QgsVectorDataProvider.Capability
        CreateLabeling = ... # type: QgsVectorDataProvider.Capability
        ReloadData = ... # type: QgsVectorDataProvider.Capability
        FeatureSymbology = ... # type: QgsVectorDataProvider.Capability

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorDataProvider.Capabilities') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsVectorDataProvider.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class NativeType(PyQt5.sip.wrapper):

        mMaxLen = ... # type: int
        mMaxPrec = ... # type: int
        mMinLen = ... # type: int
        mMinPrec = ... # type: int
        mSubType = ... # type: QtCore.QVariant.Type
        mType = ... # type: QtCore.QVariant.Type
        mTypeDesc = ... # type: str
        mTypeName = ... # type: str

        @typing.overload
        def __init__(self, typeDesc: str, typeName: str, type: QtCore.QVariant.Type, minLen: int = ..., maxLen: int = ..., minPrec: int = ..., maxPrec: int = ..., subType: QtCore.QVariant.Type = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorDataProvider.NativeType') -> None: ...

    EditingCapabilities = ... # type: int

    def __init__(self, uri: str = ..., providerOptions: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def textEncoding(self) -> QtCore.QTextCodec: ...
    def setNativeTypes(self, nativeTypes: typing.Iterable['QgsVectorDataProvider.NativeType']) -> None: ...
    def convertToProviderType(self, geom: QgsGeometry) -> QgsGeometry: ...
    def pushError(self, msg: str) -> None: ...
    def fillMinMaxCache(self) -> None: ...
    def clearMinMaxCache(self) -> None: ...
    def raiseError(self, msg: str) -> None: ...
    def temporalCapabilities(self) -> 'QgsVectorDataProviderTemporalCapabilities': ...
    def handlePostCloneOperations(self, source: 'QgsVectorDataProvider') -> None: ...
    def hasMetadata(self) -> bool: ...
    def translateMetadataValue(self, mdKey: str, value: typing.Any) -> str: ...
    def translateMetadataKey(self, mdKey: str) -> str: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def discoverRelations(self, target: QgsVectorLayer, layers: typing.Iterable[QgsVectorLayer]) -> typing.List[QgsRelation]: ...
    def dependencies(self) -> typing.Set[QgsMapLayerDependency]: ...
    def forceReload(self) -> None: ...
    def transaction(self) -> QgsTransaction: ...
    @staticmethod
    def convertValue(type: QtCore.QVariant.Type, value: str) -> typing.Any: ...
    def createLabeling(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsAbstractVectorLayerLabeling: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsFeatureRenderer: ...
    def isDeleteStyleFromDatabaseSupported(self) -> bool: ...
    def isSaveAndLoadStyleToDatabaseSupported(self) -> bool: ...
    def errors(self) -> typing.List[str]: ...
    def clearErrors(self) -> None: ...
    def hasErrors(self) -> bool: ...
    @staticmethod
    def availableEncodings() -> typing.List[str]: ...
    def doesStrictFeatureTypeCheck(self) -> bool: ...
    def nativeTypes(self) -> typing.List['QgsVectorDataProvider.NativeType']: ...
    def supportedType(self, field: QgsField) -> bool: ...
    def palAttributeIndexNames(self) -> typing.Dict[int, str]: ...
    def pkAttributeIndexes(self) -> typing.List[int]: ...
    def attributeIndexes(self) -> typing.List[int]: ...
    def fieldNameMap(self) -> typing.Any: ...
    def fieldNameIndex(self, fieldName: str) -> int: ...
    def encoding(self) -> str: ...
    def setEncoding(self, e: str) -> None: ...
    def attributeEditCapabilities(self) -> Qgis.VectorDataProviderAttributeEditCapabilities: ...
    def capabilitiesString(self) -> str: ...
    def capabilities(self) -> 'QgsVectorDataProvider.Capabilities': ...
    def createAttributeIndex(self, field: int) -> bool: ...
    def createSpatialIndex(self) -> bool: ...
    def changeGeometryValues(self, geometry_map: typing.Any) -> bool: ...
    def skipConstraintCheck(self, fieldIndex: int, constraint: QgsFieldConstraints.Constraint, value: typing.Any = ...) -> bool: ...
    def fieldConstraints(self, fieldIndex: int) -> QgsFieldConstraints.Constraints: ...
    def defaultValueClause(self, fieldIndex: int) -> str: ...
    def defaultValue(self, fieldIndex: int) -> typing.Any: ...
    def changeFeatures(self, attr_map: typing.Any, geometry_map: typing.Any) -> bool: ...
    def changeAttributeValues(self, attr_map: typing.Any) -> bool: ...
    def renameAttributes(self, renamedAttributes: typing.Dict[int, str]) -> bool: ...
    def deleteAttributes(self, attributes: typing.Any) -> bool: ...
    def addAttributes(self, attributes: typing.Any) -> bool: ...
    def cancelReload(self) -> bool: ...
    def truncate(self) -> bool: ...
    def deleteFeatures(self, id: typing.Any) -> bool: ...
    def lastError(self) -> str: ...
    def addFeatures(self, flist: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> typing.Tuple[bool, typing.List[QgsFeature]]: ...
    def enumValues(self, index: int) -> typing.List[str]: ...
    def aggregate(self, aggregate: QgsAggregateCalculator.Aggregate, index: int, parameters: QgsAggregateCalculator.AggregateParameters, context: QgsExpressionContext, fids: typing.Optional[typing.Any] = ...) -> typing.Tuple[typing.Any, bool]: ...
    def uniqueStringsMatching(self, index: int, substring: str, limit: int = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[str]: ...
    def maximumValue(self, index: int) -> typing.Any: ...
    def minimumValue(self, index: int) -> typing.Any: ...
    def dataComment(self) -> str: ...
    def sourceName(self) -> str: ...
    def sourceExtent(self) -> QgsRectangle: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def fields(self) -> QgsFields: ...
    def hasFeatures(self) -> QgsFeatureSource.FeatureAvailability: ...
    def vectorLayerTypeFlags(self) -> Qgis.VectorLayerTypeFlags: ...
    def isSqlQuery(self) -> bool: ...
    def empty(self) -> bool: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...
    def storageType(self) -> str: ...
    def featureSource(self) -> QgsAbstractFeatureSource: ...


class QgsVectorDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    @typing.overload
    def __init__(self, enabled: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorDataProviderTemporalCapabilities') -> None: ...

    def setEndField(self, field: str) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: str) -> None: ...
    def startField(self) -> str: ...
    def availableTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setMode(self, mode: Qgis.VectorDataProviderTemporalMode) -> None: ...
    def mode(self) -> Qgis.VectorDataProviderTemporalMode: ...


class QgsVectorLayerCache(QtCore.QObject):

    def __init__(self, layer: QgsVectorLayer, cacheSize: int, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def invalidated(self) -> None: ...
    def featureAdded(self, fid: int) -> None: ...
    def attributeValueChanged(self, fid: int, field: int, value: typing.Any) -> None: ...
    def cachedLayerDeleted(self) -> None: ...
    def finished(self) -> None: ...
    def checkInformationCovered(self, featureRequest: QgsFeatureRequest) -> bool: ...
    def featureRemoved(self, fid: int) -> None: ...
    def requestCompleted(self, featureRequest: QgsFeatureRequest, fids: typing.Any) -> None: ...
    def featureCount(self) -> int: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def fields(self) -> QgsFields: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def layer(self) -> QgsVectorLayer: ...
    def removeCachedFeature(self, fid: int) -> bool: ...
    def featureAtIdWithAllAttributes(self, featureId: int, feature: QgsFeature, skipCache: bool = ...) -> bool: ...
    def featureAtId(self, featureId: int, feature: QgsFeature, skipCache: bool = ...) -> bool: ...
    def cachedFeatureIds(self) -> typing.Any: ...
    def isFidCached(self, fid: int) -> bool: ...
    def getFeature(self, fid: int) -> QgsFeature: ...
    @typing.overload
    def getFeatures(self, featureRequest: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, expression: str) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, fids: typing.Any) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, rectangle: QgsRectangle) -> QgsFeatureIterator: ...
    def addCacheIndex(self, cacheIndex: QgsAbstractCacheIndex) -> None: ...
    def hasFullCache(self) -> bool: ...
    def setFullCache(self, fullCache: bool) -> None: ...
    def setCacheAddedAttributes(self, cacheAddedAttributes: bool) -> None: ...
    def cacheSubsetOfAttributes(self) -> typing.List[int]: ...
    def setCacheSubsetOfAttributes(self, attributes: typing.Iterable[int]) -> None: ...
    def cacheGeometry(self) -> bool: ...
    def setCacheGeometry(self, cacheGeometry: bool) -> None: ...
    def cacheSize(self) -> int: ...
    def setCacheSize(self, cacheSize: int) -> None: ...


class QgsVectorLayerEditBuffer(QtCore.QObject):

    @typing.overload
    def __init__(self, layer: QgsVectorLayer) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    def updateLayerFields(self) -> None: ...
    def updateAttributeMapIndex(self, attrs: typing.Dict[int, typing.Any], index: int, offset: int) -> None: ...
    def handleAttributeDeleted(self, index: int) -> None: ...
    def handleAttributeAdded(self, index: int) -> None: ...
    def updateChangedAttributes(self, f: QgsFeature) -> None: ...
    def updateFeatureGeometry(self, f: QgsFeature) -> None: ...
    def committedGeometriesChanges(self, layerId: str, changedGeometries: typing.Any) -> None: ...
    def committedAttributeValuesChanges(self, layerId: str, changedAttributesValues: typing.Any) -> None: ...
    def committedFeaturesRemoved(self, layerId: str, deletedFeatureIds: typing.Any) -> None: ...
    def committedFeaturesAdded(self, layerId: str, addedFeatures: typing.Iterable[QgsFeature]) -> None: ...
    def committedAttributesRenamed(self, layerId: str, renamedAttributes: typing.Dict[int, str]) -> None: ...
    def committedAttributesAdded(self, layerId: str, addedAttributes: typing.Any) -> None: ...
    def committedAttributesDeleted(self, layerId: str, deletedAttributes: typing.Iterable[int]) -> None: ...
    def attributeRenamed(self, idx: int, newName: str) -> None: ...
    def attributeDeleted(self, idx: int) -> None: ...
    def attributeAdded(self, idx: int) -> None: ...
    def attributeValueChanged(self, fid: int, idx: int, a2: typing.Any) -> None: ...
    def geometryChanged(self, fid: int, geom: QgsGeometry) -> None: ...
    def featureDeleted(self, fid: int) -> None: ...
    def featureAdded(self, fid: int) -> None: ...
    def layerModified(self) -> None: ...
    def undoIndexChanged(self, index: int) -> None: ...
    def setEditBufferGroup(self, editBufferGroup: 'QgsVectorLayerEditBufferGroup') -> None: ...
    def editBufferGroup(self) -> 'QgsVectorLayerEditBufferGroup': ...
    def isFeatureDeleted(self, id: int) -> bool: ...
    def deletedFeatureIds(self) -> typing.Any: ...
    def isFeatureGeometryChanged(self, id: int) -> bool: ...
    def changedGeometries(self) -> typing.Any: ...
    def addedAttributes(self) -> typing.Any: ...
    def isAttributeDeleted(self, index: int) -> bool: ...
    def deletedAttributeIds(self) -> typing.List[int]: ...
    def isFeatureAttributesChanged(self, id: int) -> bool: ...
    def changedAttributeValues(self) -> typing.Any: ...
    def isFeatureAdded(self, id: int) -> bool: ...
    def allAddedOrEditedFeatures(self) -> typing.Any: ...
    def addedFeatures(self) -> typing.Any: ...
    def rollBack(self) -> None: ...
    def commitChanges(self, commitErrors: typing.Iterable[str]) -> bool: ...
    def renameAttribute(self, attr: int, newName: str) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def addAttribute(self, field: QgsField) -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any]) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ...) -> bool: ...
    def changeGeometry(self, fid: int, geom: QgsGeometry) -> bool: ...
    def deleteFeatures(self, fid: typing.Any) -> bool: ...
    def deleteFeature(self, fid: int) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature]) -> bool: ...
    def addFeature(self, f: QgsFeature) -> bool: ...
    def isModified(self) -> bool: ...


class QgsVectorLayerEditBufferGroup(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def isEditing(self) -> bool: ...
    def rollBack(self, stopEditing: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def commitChanges(self, stopEditing: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def startEditing(self) -> bool: ...
    def modifiedLayers(self) -> typing.Set[QgsVectorLayer]: ...
    def layers(self) -> typing.Set[QgsVectorLayer]: ...
    def clear(self) -> None: ...
    def addLayer(self, layer: QgsVectorLayer) -> None: ...


class QgsVectorLayerEditPassthrough(QgsVectorLayerEditBuffer):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def update(self, transaction: QgsTransaction, sql: str, name: str) -> bool: ...
    def rollBack(self) -> None: ...
    def commitChanges(self, commitErrors: typing.Iterable[str]) -> bool: ...
    def renameAttribute(self, attr: int, newName: str) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def addAttribute(self, field: QgsField) -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any]) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ...) -> bool: ...
    def changeGeometry(self, fid: int, geom: QgsGeometry) -> bool: ...
    def deleteFeatures(self, fids: typing.Any) -> bool: ...
    def deleteFeature(self, fid: int) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature]) -> bool: ...
    def addFeature(self, f: QgsFeature) -> bool: ...
    def isModified(self) -> bool: ...


class QgsVectorLayerEditUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: QgsVectorLayer) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerEditUtils') -> None: ...

    def mergeFeatures(self, targetFeatureId: int, mergeFeatureIds: typing.Any, mergeAttributes: typing.Any, unionGeometry: QgsGeometry) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def addTopologicalPoints(self, geom: QgsGeometry) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: QgsPointXY) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: QgsPoint) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, ps: typing.Iterable[QgsPoint]) -> int: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable[QgsPointXY], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable[QgsPoint], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, curve: QgsCurve, preserveCircular: bool = ..., topologicalEditing: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List[QgsPoint]]: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable[QgsPointXY], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable[QgsPoint], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    def translateFeature(self, featureId: int, dx: float, dy: float) -> int: ...
    def addCurvedPart(self, ring: QgsCurve, featureId: int) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPart(self, ring: typing.Iterable[QgsPointXY], featureId: int) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPart(self, ring: typing.Iterable[QgsPoint], featureId: int) -> Qgis.GeometryOperationResult: ...
    def addCurvedRing(self, ring: QgsCurve, targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    def addRingV2(self, ring: QgsCurve, targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Any]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPointXY], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPoint], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    def deleteVertex(self, featureId: int, vertex: int) -> Qgis.VectorEditResult: ...
    def moveVertexV2(self, p: QgsPoint, atFeatureId: int, atVertex: int) -> bool: ...
    def moveVertex(self, x: float, y: float, atFeatureId: int, atVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, x: float, y: float, atFeatureId: int, beforeVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, point: QgsPoint, atFeatureId: int, beforeVertex: int) -> bool: ...


class QgsVectorLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setShowMarkerSymbolInSurfacePlots(self, show: bool) -> None: ...
    def showMarkerSymbolInSurfacePlots(self) -> bool: ...
    def setElevationLimit(self, limit: float) -> None: ...
    def elevationLimit(self) -> float: ...
    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileMarkerSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def profileMarkerSymbol(self) -> QgsMarkerSymbol: ...
    def setProfileFillSymbol(self, symbol: QgsFillSymbol) -> None: ...
    def profileFillSymbol(self) -> QgsFillSymbol: ...
    def setProfileLineSymbol(self, symbol: QgsLineSymbol) -> None: ...
    def profileLineSymbol(self) -> QgsLineSymbol: ...
    def setRespectLayerSymbology(self, enabled: bool) -> None: ...
    def respectLayerSymbology(self) -> bool: ...
    def setExtrusionHeight(self, height: float) -> None: ...
    def extrusionHeight(self) -> float: ...
    def setExtrusionEnabled(self, enabled: bool) -> None: ...
    def extrusionEnabled(self) -> bool: ...
    def setType(self, type: Qgis.VectorProfileType) -> None: ...
    def type(self) -> Qgis.VectorProfileType: ...
    def setBinding(self, binding: Qgis.AltitudeBinding) -> None: ...
    def binding(self) -> Qgis.AltitudeBinding: ...
    def setClamping(self, clamping: Qgis.AltitudeClamping) -> None: ...
    def clamping(self) -> Qgis.AltitudeClamping: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsVectorLayerElevationProperties': ...
    def setDefaultsFromLayer(self, layer: QgsMapLayer) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsVectorLayerExporter(QgsFeatureSink):

    def __init__(self, uri: str, provider: str, fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, overwrite: bool = ..., options: typing.Dict[str, typing.Any] = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> None: ...

    def flushBuffer(self) -> bool: ...
    def lastError(self) -> str: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def attributeEditCapabilities(self) -> Qgis.VectorDataProviderAttributeEditCapabilities: ...
    def errorCount(self) -> int: ...
    def errorMessage(self) -> str: ...
    def errorCode(self) -> Qgis.VectorExportResult: ...
    @staticmethod
    def exportLayer(layer: QgsVectorLayer, uri: str, providerKey: str, destCRS: QgsCoordinateReferenceSystem, onlySelected: bool = ..., options: typing.Dict[str, typing.Any] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[Qgis.VectorExportResult, str]: ...


class QgsVectorLayerExporterTask(QgsTask):

    def __init__(self, layer: QgsVectorLayer, uri: str, providerKey: str, destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[str, typing.Any] = ..., ownsLayer: bool = ...) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    def errorOccurred(self, error: Qgis.VectorExportResult, errorMessage: str) -> None: ...
    def exportComplete(self) -> None: ...
    def cancel(self) -> None: ...
    @staticmethod
    def withLayerOwnership(layer: QgsVectorLayer, uri: str, providerKey: str, destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[str, typing.Any] = ...) -> 'QgsVectorLayerExporterTask': ...


class QgsVectorLayerFeatureCounter(QgsTask):

    def __init__(self, layer: QgsVectorLayer, context: QgsExpressionContext = ..., storeSymbolFids: bool = ...) -> None: ...

    def symbolsCounted(self) -> None: ...
    def featureIds(self, symbolkey: str) -> typing.Any: ...
    def featureCount(self, legendKey: str) -> int: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsVectorLayerFeatureSource(QgsAbstractFeatureSource):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def id(self) -> str: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def fields(self) -> QgsFields: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase(QgsAbstractFeatureIterator):

    @typing.overload
    def __init__(self, source: QgsVectorLayerFeatureSource, ownSource: bool, request: QgsFeatureRequest) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase') -> None: ...

    def iteratorClosed(self) -> None: ...


class QgsVectorLayerFeatureIterator(QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase):

    class FetchJoinInfo(PyQt5.sip.wrapper):

        attributes = ... # type: typing.Iterable[int]
        indexOffset = ... # type: int
        joinField = ... # type: int
        joinInfo = ... # type: 'QgsVectorLayerJoinInfo'
        targetField = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerFeatureIterator.FetchJoinInfo') -> None: ...

        def addJoinedAttributesDirect(self, f: QgsFeature, joinValue: typing.Any) -> None: ...
        def addJoinedAttributesCached(self, f: QgsFeature, joinValue: typing.Any) -> None: ...

    def __init__(self, source: QgsVectorLayerFeatureSource, ownSource: bool, request: QgsFeatureRequest) -> None: ...

    def prepareSimplification(self, simplifyMethod: QgsSimplifyMethod) -> bool: ...
    def nextFeatureFilterExpression(self, f: QgsFeature) -> bool: ...
    def fetchFeature(self, feature: QgsFeature) -> bool: ...
    def isValid(self) -> bool: ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...


class QgsVectorLayerSelectedFeatureSource(QgsFeatureSource, QgsExpressionContextScopeGenerator):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def hasSpatialIndex(self) -> QgsFeatureSource.SpatialIndexPresence: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def sourceName(self) -> str: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> Qgis.WkbType: ...
    def fields(self) -> QgsFields: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsVectorLayerJoinBuffer(QtCore.QObject, QgsFeatureSink):

    def __init__(self, layer: typing.Optional[QgsVectorLayer] = ...) -> None: ...

    def joinedFieldsChanged(self) -> None: ...
    def deleteFeatures(self, fids: typing.Any, context: typing.Optional[QgsVectorLayer.DeleteContext] = ...) -> bool: ...
    def deleteFeature(self, fid: int, context: typing.Optional[QgsVectorLayer.DeleteContext] = ...) -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any] = ...) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ...) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def clone(self) -> 'QgsVectorLayerJoinBuffer': ...
    def isAuxiliaryJoin(self, info: 'QgsVectorLayerJoinInfo') -> bool: ...
    def targetedFeatureOf(self, info: 'QgsVectorLayerJoinInfo', feature: QgsFeature) -> QgsFeature: ...
    def joinedFeatureOf(self, info: 'QgsVectorLayerJoinInfo', feature: QgsFeature) -> QgsFeature: ...
    def joinsWhereFieldIsId(self, field: QgsField) -> typing.List['QgsVectorLayerJoinInfo']: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayer: QgsVectorLayer, joinFieldsSubset: typing.Iterable[str]) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayerFields: QgsFields, joinFieldsSubset: typing.Iterable[str]) -> typing.List[int]: ...
    def joinedFieldsOffset(self, info: 'QgsVectorLayerJoinInfo', fields: QgsFields) -> int: ...
    def joinForFieldIndex(self, index: int, fields: QgsFields) -> typing.Tuple['QgsVectorLayerJoinInfo', int]: ...
    def vectorJoins(self) -> typing.List['QgsVectorLayerJoinInfo']: ...
    def containsJoins(self) -> bool: ...
    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> None: ...
    def writeXml(self, layer_node: QtXml.QDomNode, document: QtXml.QDomDocument) -> None: ...
    def createJoinCaches(self) -> None: ...
    def updateFields(self, fields: QgsFields) -> None: ...
    def removeJoin(self, joinLayerId: str) -> bool: ...
    def addJoin(self, joinInfo: 'QgsVectorLayerJoinInfo') -> bool: ...


class QgsVectorLayerJoinInfo(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerJoinInfo') -> None: ...

    def setJoinFieldNamesSubset(self, fieldNamesSubset: typing.Iterable[str]) -> None: ...
    @typing.overload
    @staticmethod
    def joinFieldNamesSubset(info: 'QgsVectorLayerJoinInfo', blocklisted: bool = ...) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def joinFieldNamesSubset(info: 'QgsVectorLayerJoinInfo', joinLayerFields: QgsFields, blocklisted: bool = ...) -> typing.List[str]: ...
    @typing.overload
    def joinFieldNamesSubset(self) -> typing.List[str]: ...
    def hasSubset(self, blocklisted: bool = ...) -> bool: ...
    def joinFieldNamesBlockList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlockList(self, list: typing.Iterable[str]) -> None: ...
    def joinFieldNamesBlackList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlackList(self, blackList: typing.Iterable[str]) -> None: ...
    def extractJoinedFeature(self, feature: QgsFeature) -> QgsFeature: ...
    def prefixedFieldName(self, field: QgsField) -> str: ...
    def setCascadedDelete(self, enabled: bool) -> None: ...
    def hasCascadedDelete(self) -> bool: ...
    def setUpsertOnEdit(self, enabled: bool) -> None: ...
    def hasUpsertOnEdit(self) -> bool: ...
    def setEditable(self, enabled: bool) -> None: ...
    def isEditable(self) -> bool: ...
    def setDynamicFormEnabled(self, enabled: bool) -> None: ...
    def isDynamicFormEnabled(self) -> bool: ...
    def isUsingMemoryCache(self) -> bool: ...
    def setUsingMemoryCache(self, enabled: bool) -> None: ...
    def prefix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def joinFieldName(self) -> str: ...
    def setJoinFieldName(self, fieldName: str) -> None: ...
    def targetFieldName(self) -> str: ...
    def setTargetFieldName(self, fieldName: str) -> None: ...
    def joinLayerId(self) -> str: ...
    def setJoinLayerId(self, layerId: str) -> None: ...
    def joinLayer(self) -> QgsVectorLayer: ...
    def setJoinLayer(self, layer: QgsVectorLayer) -> None: ...


class QgsVectorLayerTemporalContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerTemporalContext') -> None: ...

    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsVectorLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def guessDefaultsFromFields(self, fields: QgsFields) -> None: ...
    def createFilterString(self, context: QgsVectorLayerTemporalContext, range: QgsDateTimeRange) -> str: ...
    def setAccumulateFeatures(self, accumulate: bool) -> None: ...
    def accumulateFeatures(self) -> bool: ...
    def setFixedDuration(self, duration: float) -> None: ...
    def fixedDuration(self) -> float: ...
    def setDurationUnits(self, units: Qgis.TemporalUnit) -> None: ...
    def durationUnits(self) -> Qgis.TemporalUnit: ...
    def setDurationField(self, field: str) -> None: ...
    def durationField(self) -> str: ...
    def setEndExpression(self, endExpression: str) -> None: ...
    def endExpression(self) -> str: ...
    def setStartExpression(self, expression: str) -> None: ...
    def startExpression(self) -> str: ...
    def setEndField(self, field: str) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: str) -> None: ...
    def startField(self) -> str: ...
    def fixedTemporalRange(self) -> QgsDateTimeRange: ...
    def setFixedTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def flags(self) -> QgsTemporalProperty.Flags: ...
    def setLimitMode(self, mode: Qgis.VectorTemporalLimitMode) -> None: ...
    def limitMode(self) -> Qgis.VectorTemporalLimitMode: ...
    def setMode(self, mode: Qgis.VectorTemporalMode) -> None: ...
    def mode(self) -> Qgis.VectorTemporalMode: ...
    def isVisibleInTemporalRange(self, range: QgsDateTimeRange) -> bool: ...


class QgsVectorLayerUndoCommand(QtWidgets.QUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer) -> None: ...

    def mergeWith(self, a0: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsVectorLayerUndoCommandAddFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, f: QgsFeature) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeGeometry(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, newGeom: QgsGeometry) -> None: ...

    def mergeWith(self, other: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, fieldIndex: int, newValue: typing.Any, oldValue: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandAddAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fieldIndex: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandRenameAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fieldIndex: int, newName: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommand(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, text: str, autocreate: bool = ...) -> None: ...

    def errorMessage(self) -> str: ...
    def setErrorMessage(self, errorMessage: str) -> None: ...
    def setError(self) -> None: ...
    def setSavePoint(self, savePointId: str = ...) -> bool: ...
    def rollBackToSavePoint(self) -> bool: ...
    def hasError(self) -> bool: ...


class QgsVectorLayerUndoPassthroughCommandAddFeatures(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, features: typing.Iterable[QgsFeature]) -> None: ...

    def features(self) -> typing.List[QgsFeature]: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandDeleteFeatures(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fids: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeGeometry(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, geom: QgsGeometry) -> None: ...

    def mergeWith(self, other: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, field: int, newValue: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttributes(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any] = ...) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandAddAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandDeleteAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, attr: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandRenameAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, attr: int, newName: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandUpdate(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, transaction: QgsTransaction, sql: str, name: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUtils(PyQt5.sip.wrapper):

    class CascadedFeatureFlag(int):
        IgnoreAuxiliaryLayers = ... # type: QgsVectorLayerUtils.CascadedFeatureFlag

    class QgsDuplicateFeatureContext(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerUtils.QgsDuplicateFeatureContext') -> None: ...

        def duplicatedFeatures(self, layer: QgsVectorLayer) -> typing.Any: ...
        def layers(self) -> typing.List[QgsVectorLayer]: ...

    class QgsFeatureData(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, geometry: QgsGeometry = ..., attributes: typing.Dict[int, typing.Any] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerUtils.QgsFeatureData') -> None: ...

        def attributes(self) -> typing.Dict[int, typing.Any]: ...
        def geometry(self) -> QgsGeometry: ...

    class CascadedFeatureFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerUtils.CascadedFeatureFlags') -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __invert__(self) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerUtils') -> None: ...

    @staticmethod
    def guessFriendlyIdentifierField(fields: QgsFields) -> str: ...
    @staticmethod
    def guessFriendlyIdentifierFieldV2(fields: QgsFields) -> typing.Tuple[str, bool]: ...
    @staticmethod
    def impactsCascadeFeatures(layer: QgsVectorLayer, fids: typing.Any, project: QgsProject, flags: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag'] = ...) -> typing.Tuple[bool, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def getFeatureDisplayString(layer: QgsVectorLayer, feature: QgsFeature) -> str: ...
    @staticmethod
    def fieldEditabilityDependsOnFeature(layer: QgsVectorLayer, fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsReadOnly(layer: QgsVectorLayer, fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsEditable(layer: QgsVectorLayer, fieldIndex: int, feature: QgsFeature) -> bool: ...
    @staticmethod
    def makeFeaturesCompatible(features: typing.Iterable[QgsFeature], layer: QgsVectorLayer, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def makeFeatureCompatible(feature: QgsFeature, layer: QgsVectorLayer, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def matchAttributesToFields(feature: QgsFeature, fields: QgsFields) -> None: ...
    @staticmethod
    def duplicateFeature(layer: QgsVectorLayer, feature: QgsFeature, project: QgsProject, maxDepth: int = ...) -> typing.Tuple[QgsFeature, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def createFeatures(layer: QgsVectorLayer, featuresData: typing.Iterable['QgsVectorLayerUtils.QgsFeatureData'], context: typing.Optional[QgsExpressionContext] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def createFeature(layer: QgsVectorLayer, geometry: QgsGeometry = ..., attributes: typing.Dict[int, typing.Any] = ..., context: typing.Optional[QgsExpressionContext] = ...) -> QgsFeature: ...
    @staticmethod
    def validateAttribute(layer: QgsVectorLayer, feature: QgsFeature, attributeIndex: int, strength: QgsFieldConstraints.ConstraintStrength = ..., origin: QgsFieldConstraints.ConstraintOrigin = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    @staticmethod
    def attributeHasConstraints(layer: QgsVectorLayer, attributeIndex: int) -> bool: ...
    @staticmethod
    def createUniqueValueFromCache(layer: QgsVectorLayer, fieldIndex: int, existingValues: typing.Iterable[typing.Any], seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def createUniqueValue(layer: QgsVectorLayer, fieldIndex: int, seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def valueExists(layer: QgsVectorLayer, fieldIndex: int, value: typing.Any, ignoreIds: typing.Any = ...) -> bool: ...
    @staticmethod
    def getDoubleValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[float], bool, int]: ...
    @staticmethod
    def getValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], bool]: ...
    @staticmethod
    def getValuesIterator(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool) -> typing.Tuple[QgsFeatureIterator, bool]: ...


class QgsMapBoxGlStyleConversionContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleConversionContext') -> None: ...

    def setLayerId(self, value: str) -> None: ...
    def layerId(self) -> str: ...
    @typing.overload
    def setSprites(self, image: QtGui.QImage, definitions: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def setSprites(self, image: QtGui.QImage, definitions: str) -> None: ...
    def spriteDefinitions(self) -> typing.Dict[str, typing.Any]: ...
    def spriteImage(self) -> QtGui.QImage: ...
    def setPixelSizeConversionFactor(self, sizeConversionFactor: float) -> None: ...
    def pixelSizeConversionFactor(self) -> float: ...
    def setTargetUnit(self, targetUnit: Qgis.RenderUnit) -> None: ...
    def targetUnit(self) -> Qgis.RenderUnit: ...
    def clearWarnings(self) -> None: ...
    def warnings(self) -> typing.List[str]: ...
    def pushWarning(self, warning: str) -> None: ...


class QgsMapBoxGlStyleAbstractSource(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleAbstractSource') -> None: ...

    def name(self) -> str: ...
    def setFromJson(self, json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSource(QgsMapBoxGlStyleAbstractSource):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleRasterSource') -> None: ...

    def toRasterLayer(self) -> QgsRasterLayer: ...
    def tiles(self) -> typing.List[str]: ...
    def tileSize(self) -> int: ...
    def maximumZoom(self) -> int: ...
    def minimumZoom(self) -> int: ...
    def attribution(self) -> str: ...
    def setFromJson(self, json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSubLayer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, id: str, source: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleRasterSubLayer') -> None: ...

    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def source(self) -> str: ...
    def id(self) -> str: ...


class QgsMapBoxGlStyleConverter(PyQt5.sip.wrapper):

    class PropertyType(int):
        Color = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Numeric = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Opacity = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Point = ... # type: QgsMapBoxGlStyleConverter.PropertyType

    class Result(int):
        Success = ... # type: QgsMapBoxGlStyleConverter.Result
        NoLayerList = ... # type: QgsMapBoxGlStyleConverter.Result

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self) -> None: ...

    @staticmethod
    def retrieveSpriteAsBase64(value: typing.Any, context: QgsMapBoxGlStyleConversionContext, spriteSize: QtCore.QSize, spriteProperty: str, spriteSizeProperty: str) -> str: ...
    @staticmethod
    def retrieveSprite(name: str, context: QgsMapBoxGlStyleConversionContext, spriteSize: QtCore.QSize) -> QtGui.QImage: ...
    @staticmethod
    def parseExpression(expression: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, colorExpected: bool = ...) -> str: ...
    @staticmethod
    def parseJoinStyle(style: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def parseCapStyle(style: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def interpolateExpression(zoomMin: float, zoomMax: float, valueMin: typing.Any, valueMax: typing.Any, base: float, multiplier: float = ..., contextPtr: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> str: ...
    @staticmethod
    def colorAsHslaComponents(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> typing.Tuple[int, int, int, int]: ...
    @staticmethod
    def parseColor(color: typing.Any, context: QgsMapBoxGlStyleConversionContext) -> QtGui.QColor: ...
    @staticmethod
    def parseColorExpression(colorExpression: typing.Any, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseInterpolateListByZoom(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseMatchList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseValueList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseLabelStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseStringStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, conversionMap: typing.Dict[str, typing.Any]) -> typing.Tuple[str, str]: ...
    @staticmethod
    def parseStops(base: float, stops: typing.Iterable[typing.Any], multiplier: float, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseArrayStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> str: ...
    @staticmethod
    def parsePointStops(base: float, stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> str: ...
    @staticmethod
    def parseInterpolateStringByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, conversionMap: typing.Dict[str, typing.Any]) -> typing.Tuple[QgsProperty, str]: ...
    @staticmethod
    def parseInterpolatePointByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> typing.Tuple[QgsProperty, QtCore.QPointF]: ...
    @staticmethod
    def parseOpacityStops(base: float, stops: typing.Iterable[typing.Any], maxOpacity: int, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseInterpolateOpacityByZoom(json: typing.Dict[str, typing.Any], maxOpacity: int, contextPtr: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> QgsProperty: ...
    @staticmethod
    def parseInterpolateByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> typing.Tuple[QgsProperty, float]: ...
    @staticmethod
    def parseInterpolateColorByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[QgsProperty, QtGui.QColor]: ...
    @staticmethod
    def parseSymbolLayerAsRenderer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseSymbolLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple['QgsVectorTileBasicRendererStyle', bool, 'QgsVectorTileBasicLabelingStyle', bool]: ...
    @staticmethod
    def parseCircleLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseLineLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseFillLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, isBackgroundStyle: bool = ...) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    def parseLayers(self, layers: typing.Iterable[typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def parseRasterSource(self, source: typing.Dict[str, typing.Any], name: str, context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def parseSources(self, sources: typing.Dict[str, typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def createSubLayers(self) -> typing.List[QgsMapLayer]: ...
    def rasterSubLayers(self) -> typing.List[QgsMapBoxGlStyleRasterSubLayer]: ...
    def sources(self) -> typing.List[QgsMapBoxGlStyleAbstractSource]: ...
    def labeling(self) -> 'QgsVectorTileLabeling': ...
    def renderer(self) -> 'QgsVectorTileRenderer': ...
    def warnings(self) -> typing.List[str]: ...
    def errorMessage(self) -> str: ...
    @typing.overload
    def convert(self, style: typing.Dict[str, typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> 'QgsMapBoxGlStyleConverter.Result': ...
    @typing.overload
    def convert(self, style: str, context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> 'QgsMapBoxGlStyleConverter.Result': ...


class QgsVectorTileBasicLabelingStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicLabelingStyle') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def isActive(self, zoomLevel: int) -> bool: ...
    def maxZoomLevel(self) -> int: ...
    def setMaxZoomLevel(self, maxZoom: int) -> None: ...
    def minZoomLevel(self) -> int: ...
    def setMinZoomLevel(self, minZoom: int) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def filterExpression(self) -> str: ...
    def setFilterExpression(self, expr: str) -> None: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def setGeometryType(self, geomType: Qgis.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: str) -> None: ...
    def labelSettings(self) -> QgsPalLayerSettings: ...
    def setLabelSettings(self, settings: QgsPalLayerSettings) -> None: ...


class QgsVectorTileLabeling(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileLabeling') -> None: ...

    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsVectorTileLabeling': ...
    def type(self) -> str: ...


class QgsVectorTileBasicLabeling(QgsVectorTileLabeling):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicLabeling') -> None: ...

    def style(self, index: int) -> QgsVectorTileBasicLabelingStyle: ...
    def setStyle(self, index: int, style: QgsVectorTileBasicLabelingStyle) -> None: ...
    def styles(self) -> typing.List[QgsVectorTileBasicLabelingStyle]: ...
    def setStyles(self, styles: typing.Iterable[QgsVectorTileBasicLabelingStyle]) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> QgsVectorTileLabeling: ...
    def type(self) -> str: ...


class QgsVectorTileBasicRendererStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, stName: str = ..., laName: str = ..., geomType: Qgis.GeometryType = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsVectorTileBasicRendererStyle') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def isActive(self, zoomLevel: int) -> bool: ...
    def maxZoomLevel(self) -> int: ...
    def setMaxZoomLevel(self, maxZoom: int) -> None: ...
    def minZoomLevel(self) -> int: ...
    def setMinZoomLevel(self, minZoom: int) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def symbol(self) -> QgsSymbol: ...
    def setSymbol(self, sym: QgsSymbol) -> None: ...
    def filterExpression(self) -> str: ...
    def setFilterExpression(self, expr: str) -> None: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def setGeometryType(self, geomType: Qgis.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: str) -> None: ...


class QgsVectorTileRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileRenderer') -> None: ...

    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def renderSelectedFeatures(self, selection: typing.Iterable[QgsFeature], context: QgsRenderContext) -> None: ...
    def willRenderFeature(self, feature: QgsFeature, tileZoom: int, layerName: str, context: QgsRenderContext) -> bool: ...
    def renderTile(self, tile: 'QgsVectorTileRendererData', context: QgsRenderContext) -> None: ...
    def renderBackground(self, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def requiredLayers(self, context: QgsRenderContext, tileZoom: int) -> typing.Set[str]: ...
    def startRender(self, context: QgsRenderContext, tileZoom: int, tileRange: QgsTileRange) -> None: ...
    def clone(self) -> 'QgsVectorTileRenderer': ...
    def type(self) -> str: ...


class QgsVectorTileBasicRenderer(QgsVectorTileRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicRenderer') -> None: ...

    @staticmethod
    def simpleStyleWithRandomColors() -> typing.List[QgsVectorTileBasicRendererStyle]: ...
    @staticmethod
    def simpleStyle(polygonFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], polygonStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], polygonStrokeWidth: float, lineStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], lineStrokeWidth: float, pointFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], pointStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], pointSize: float) -> typing.List[QgsVectorTileBasicRendererStyle]: ...
    def style(self, index: int) -> QgsVectorTileBasicRendererStyle: ...
    def setStyle(self, index: int, style: QgsVectorTileBasicRendererStyle) -> None: ...
    def styles(self) -> typing.List[QgsVectorTileBasicRendererStyle]: ...
    def setStyles(self, styles: typing.Iterable[QgsVectorTileBasicRendererStyle]) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def willRenderFeature(self, feature: QgsFeature, tileZoom: int, layerName: str, context: QgsRenderContext) -> bool: ...
    def renderSelectedFeatures(self, selection: typing.Iterable[QgsFeature], context: QgsRenderContext) -> None: ...
    def renderTile(self, tile: 'QgsVectorTileRendererData', context: QgsRenderContext) -> None: ...
    def renderBackground(self, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def requiredLayers(self, context: QgsRenderContext, tileZoom: int) -> typing.Set[str]: ...
    def startRender(self, context: QgsRenderContext, tileZoom: int, tileRange: QgsTileRange) -> None: ...
    def clone(self) -> 'QgsVectorTileBasicRenderer': ...
    def type(self) -> str: ...


class QgsVectorTileLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: QgsCoordinateTransformContext

        @typing.overload
        def __init__(self, transformContext: QgsCoordinateTransformContext = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorTileLayer.LayerOptions') -> None: ...

    def __init__(self, path: str = ..., baseName: str = ..., options: 'QgsVectorTileLayer.LayerOptions' = ...) -> None: ...

    def selectionChanged(self) -> None: ...
    def removeSelection(self) -> None: ...
    def selectByGeometry(self, geometry: QgsGeometry, context: QgsSelectionContext, behavior: Qgis.SelectBehavior = ..., relationship: Qgis.SelectGeometryRelationship = ..., flags: typing.Union[Qgis.SelectionFlags, Qgis.SelectionFlag] = ..., renderContext: typing.Optional[QgsRenderContext] = ...) -> None: ...
    def selectedFeatureCount(self) -> int: ...
    def selectedFeatures(self) -> typing.List[QgsFeature]: ...
    def isTileBorderRenderingEnabled(self) -> bool: ...
    def setTileBorderRenderingEnabled(self, enabled: bool) -> None: ...
    def labeling(self) -> QgsVectorTileLabeling: ...
    def setLabeling(self, labeling: QgsVectorTileLabeling) -> None: ...
    def renderer(self) -> QgsVectorTileRenderer: ...
    def setRenderer(self, r: QgsVectorTileRenderer) -> None: ...
    def sourceMaxZoom(self) -> int: ...
    def sourceMinZoom(self) -> int: ...
    def sourcePath(self) -> str: ...
    def sourceType(self) -> str: ...
    def tileMatrixSet(self) -> 'QgsVectorTileMatrixSet': ...
    def htmlMetadata(self) -> str: ...
    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def loadDefaultStyleAndSubLayers(self, error: str, warnings: typing.Iterable[str]) -> typing.Tuple[bool, typing.List[QgsMapLayer]]: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def dataProvider(self) -> QgsDataProvider: ...
    def clone(self) -> 'QgsVectorTileLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsVectorTileMatrixSet(QgsTileMatrixSet):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileMatrixSet') -> None: ...

    def fromEsriJson(self, json: typing.Dict[str, typing.Any], rootTileMap: typing.Dict[str, typing.Any] = ...) -> bool: ...
    @staticmethod
    def fromWebMercator(minimumZoom: int = ..., maximumZoom: int = ...) -> 'QgsVectorTileMatrixSet': ...


class QgsVectorTileRendererData(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, id: QgsTileXYZ) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileRendererData') -> None: ...

    def layerFeatures(self, layerName: str) -> typing.List[QgsFeature]: ...
    def layers(self) -> typing.List[str]: ...
    def fields(self) -> typing.Dict[str, QgsFields]: ...
    def setFields(self, fields: typing.Dict[str, QgsFields]) -> None: ...
    def renderZoomLevel(self) -> int: ...
    def setRenderZoomLevel(self, level: int) -> None: ...
    def tilePolygon(self) -> QtGui.QPolygon: ...
    def setTilePolygon(self, polygon: QtGui.QPolygon) -> None: ...
    def id(self) -> QgsTileXYZ: ...


class QgsVectorTileWriter(PyQt5.sip.wrapper):

    class Layer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, layer: QgsVectorLayer) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorTileWriter.Layer') -> None: ...

        def setMaxZoom(self, maxzoom: int) -> None: ...
        def maxZoom(self) -> int: ...
        def setMinZoom(self, minzoom: int) -> None: ...
        def minZoom(self) -> int: ...
        def setLayerName(self, name: str) -> None: ...
        def layerName(self) -> str: ...
        def setFilterExpression(self, expr: str) -> None: ...
        def filterExpression(self) -> str: ...
        def layer(self) -> QgsVectorLayer: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileWriter') -> None: ...

    def writeSingleTile(self, tileID: QgsTileXYZ, feedback: typing.Optional[QgsFeedback] = ..., buffer: int = ..., resolution: int = ...) -> QtCore.QByteArray: ...
    def fullExtent(self) -> QgsRectangle: ...
    def errorMessage(self) -> str: ...
    def writeTiles(self, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def setRootTileMatrix(self, tileMatrix: QgsTileMatrix) -> bool: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def setMetadata(self, metadata: typing.Dict[str, typing.Any]) -> None: ...
    def setLayers(self, layers: typing.Iterable['QgsVectorTileWriter.Layer']) -> None: ...
    def setMaxZoom(self, maxZoom: int) -> None: ...
    def setMinZoom(self, minZoom: int) -> None: ...
    def setExtent(self, extent: QgsRectangle) -> None: ...
    def setDestinationUri(self, uri: str) -> None: ...


class QgsVtpkTiles(PyQt5.sip.wrapper):

    def __init__(self, filename: str) -> None: ...

    def tileData(self, z: int, x: int, y: int) -> QtCore.QByteArray: ...
    def extent(self, context: QgsCoordinateTransformContext) -> QgsRectangle: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def matrixSet(self) -> QgsVectorTileMatrixSet: ...
    def rootTileMap(self) -> typing.Dict[str, typing.Any]: ...
    def layerMetadata(self) -> QgsLayerMetadata: ...
    def spriteImage(self) -> QtGui.QImage: ...
    def spriteDefinition(self) -> typing.Dict[str, typing.Any]: ...
    def styleDefinition(self) -> typing.Dict[str, typing.Any]: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def isOpen(self) -> bool: ...
    def open(self) -> bool: ...


class QgsQtLocationConnection(QgsGpsConnection):

    def __init__(self) -> None: ...

    def satellitesInUseUpdated(self, satellites: typing.Iterable[QtPositioning.QGeoSatelliteInfo]) -> None: ...
    def satellitesInViewUpdated(self, satellites: typing.Iterable[QtPositioning.QGeoSatelliteInfo]) -> None: ...
    def parseData(self) -> None: ...
    def broadcastConnectionAvailable(self) -> None: ...


class QgsGpsConnectionRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def connectionList(self) -> typing.List[QgsGpsConnection]: ...
    def unregisterConnection(self, c: QgsGpsConnection) -> None: ...
    def registerConnection(self, c: QgsGpsConnection) -> None: ...


DEFAULT_LINE_WIDTH = ... # type: float
DEFAULT_POINT_SIZE = ... # type: float
DEFAULT_SEGMENT_EPSILON = ... # type: float
GEOCRS_ID = ... # type: int
GEOSRID = ... # type: int
GEO_EPSG_CRS_ID = ... # type: int
USER_CRS_START_ID = ... # type: int


def stringToSymbolLayerReferenceList(a0: str) -> typing.List[QgsSymbolLayerReference]: ...
def symbolLayerReferenceListToString(a0: typing.Iterable[QgsSymbolLayerReference]) -> str: ...
def compareWkt(a: str, b: str, tolerance: float = ...) -> bool: ...
def geoNone() -> str: ...
def geoEpsgCrsAuthId() -> str: ...
def geoProj4() -> str: ...
def geoWkt() -> str: ...
def qgsVsiPrefix(path: str) -> str: ...
def qgsVariantGreaterThan(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsVariantEqual(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsVariantLessThan(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsPermissiveToLongLong(string: str) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToInt(string: str) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToDouble(string: str) -> typing.Tuple[float, bool]: ...
def qgsRound(number: float, places: int) -> float: ...
def qgsDoubleNearSig(a: float, b: float, significantDigits: int = ...) -> bool: ...
def qgsFloatNear(a: float, b: float, epsilon: float = ...) -> bool: ...
def qgsDoubleNear(a: float, b: float, epsilon: float = ...) -> bool: ...
def qgsNanCompatibleEquals(a: float, b: float) -> bool: ...
def qgsDoubleToString(a: float, precision: int = ...) -> str: ...
@typing.overload
def qHash(variant: typing.Any) -> int: ...
@typing.overload
def qHash(id: QgsSymbolLayerId) -> int: ...
@typing.overload
def qHash(r: QgsSymbolLayerReference) -> int: ...
