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


import typing

import PyQt5.sip

from PyQt5 import QtCore
from PyQt5 import QtXml
from PyQt5 import QtNetwork
from PyQt5 import QtGui
from PyQt5 import QtWidgets
from PyQt5 import QtSql
from PyQt5 import QtPrintSupport
from PyQt5 import QtPositioning
from PyQt5 import QtSerialPort

# 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[..., Any], 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 SensorThingsEntity(int):
        Invalid = ... # type: Qgis.SensorThingsEntity
        Thing = ... # type: Qgis.SensorThingsEntity
        Location = ... # type: Qgis.SensorThingsEntity
        HistoricalLocation = ... # type: Qgis.SensorThingsEntity
        Datastream = ... # type: Qgis.SensorThingsEntity
        Sensor = ... # type: Qgis.SensorThingsEntity
        ObservedProperty = ... # type: Qgis.SensorThingsEntity
        Observation = ... # type: Qgis.SensorThingsEntity
        FeatureOfInterest = ... # type: Qgis.SensorThingsEntity
        MultiDatastream = ... # type: Qgis.SensorThingsEntity

    class RasterBandStatistic(int):
        NoStatistic = ... # type: Qgis.RasterBandStatistic
        Min = ... # type: Qgis.RasterBandStatistic
        Max = ... # type: Qgis.RasterBandStatistic
        Range = ... # type: Qgis.RasterBandStatistic
        Sum = ... # type: Qgis.RasterBandStatistic
        Mean = ... # type: Qgis.RasterBandStatistic
        StdDev = ... # type: Qgis.RasterBandStatistic
        SumOfSquares = ... # type: Qgis.RasterBandStatistic
        All = ... # type: Qgis.RasterBandStatistic

    class StringStatistic(int):
        Count = ... # type: Qgis.StringStatistic
        CountDistinct = ... # type: Qgis.StringStatistic
        CountMissing = ... # type: Qgis.StringStatistic
        Min = ... # type: Qgis.StringStatistic
        Max = ... # type: Qgis.StringStatistic
        MinimumLength = ... # type: Qgis.StringStatistic
        MaximumLength = ... # type: Qgis.StringStatistic
        MeanLength = ... # type: Qgis.StringStatistic
        Minority = ... # type: Qgis.StringStatistic
        Majority = ... # type: Qgis.StringStatistic
        All = ... # type: Qgis.StringStatistic

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

    class Statistic(int):
        Count = ... # type: Qgis.Statistic
        CountMissing = ... # type: Qgis.Statistic
        Sum = ... # type: Qgis.Statistic
        Mean = ... # type: Qgis.Statistic
        Median = ... # type: Qgis.Statistic
        StDev = ... # type: Qgis.Statistic
        StDevSample = ... # type: Qgis.Statistic
        Min = ... # type: Qgis.Statistic
        Max = ... # type: Qgis.Statistic
        Range = ... # type: Qgis.Statistic
        Minority = ... # type: Qgis.Statistic
        Majority = ... # type: Qgis.Statistic
        Variety = ... # type: Qgis.Statistic
        FirstQuartile = ... # type: Qgis.Statistic
        ThirdQuartile = ... # type: Qgis.Statistic
        InterQuartileRange = ... # type: Qgis.Statistic
        First = ... # type: Qgis.Statistic
        Last = ... # type: Qgis.Statistic
        All = ... # type: Qgis.Statistic

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

    class ZonalStatisticResult(int):
        Success = ... # type: Qgis.ZonalStatisticResult
        LayerTypeWrong = ... # type: Qgis.ZonalStatisticResult
        LayerInvalid = ... # type: Qgis.ZonalStatisticResult
        RasterInvalid = ... # type: Qgis.ZonalStatisticResult
        RasterBandInvalid = ... # type: Qgis.ZonalStatisticResult
        FailedToCreateField = ... # type: Qgis.ZonalStatisticResult
        Canceled = ... # type: Qgis.ZonalStatisticResult

    class ZonalStatistic(int):
        Count = ... # type: Qgis.ZonalStatistic
        Sum = ... # type: Qgis.ZonalStatistic
        Mean = ... # type: Qgis.ZonalStatistic
        Median = ... # type: Qgis.ZonalStatistic
        StDev = ... # type: Qgis.ZonalStatistic
        Min = ... # type: Qgis.ZonalStatistic
        Max = ... # type: Qgis.ZonalStatistic
        Range = ... # type: Qgis.ZonalStatistic
        Minority = ... # type: Qgis.ZonalStatistic
        Majority = ... # type: Qgis.ZonalStatistic
        Variety = ... # type: Qgis.ZonalStatistic
        Variance = ... # type: Qgis.ZonalStatistic
        All = ... # type: Qgis.ZonalStatistic
        Default = ... # type: Qgis.ZonalStatistic

    class GdalResampleAlgorithm(int):
        RA_NearestNeighbour = ... # type: Qgis.GdalResampleAlgorithm
        RA_Bilinear = ... # type: Qgis.GdalResampleAlgorithm
        RA_Cubic = ... # type: Qgis.GdalResampleAlgorithm
        RA_CubicSpline = ... # type: Qgis.GdalResampleAlgorithm
        RA_Lanczos = ... # type: Qgis.GdalResampleAlgorithm
        RA_Average = ... # type: Qgis.GdalResampleAlgorithm
        RA_Mode = ... # type: Qgis.GdalResampleAlgorithm
        RA_Max = ... # type: Qgis.GdalResampleAlgorithm
        RA_Min = ... # type: Qgis.GdalResampleAlgorithm
        RA_Median = ... # type: Qgis.GdalResampleAlgorithm
        RA_Q1 = ... # type: Qgis.GdalResampleAlgorithm
        RA_Q3 = ... # type: Qgis.GdalResampleAlgorithm

    class TiledSceneRendererFlag(int):
        RequiresTextures = ... # type: Qgis.TiledSceneRendererFlag
        ForceRasterRender = ... # type: Qgis.TiledSceneRendererFlag
        RendersTriangles = ... # type: Qgis.TiledSceneRendererFlag
        RendersLines = ... # type: Qgis.TiledSceneRendererFlag

    class TiledSceneRequestFlag(int):
        NoHierarchyFetch = ... # type: Qgis.TiledSceneRequestFlag

    class TileChildrenAvailability(int):
        NoChildren = ... # type: Qgis.TileChildrenAvailability
        Available = ... # type: Qgis.TileChildrenAvailability
        NeedFetching = ... # type: Qgis.TileChildrenAvailability

    class TileRefinementProcess(int):
        Replacement = ... # type: Qgis.TileRefinementProcess
        Additive = ... # type: Qgis.TileRefinementProcess

    class TiledSceneBoundingVolumeType(int):
        Region = ... # type: Qgis.TiledSceneBoundingVolumeType
        OrientedBox = ... # type: Qgis.TiledSceneBoundingVolumeType
        Sphere = ... # type: Qgis.TiledSceneBoundingVolumeType

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

    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
        RasterCalculator = ... # 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 ProviderStyleStorageCapability(int):
        SaveToDatabase = ... # type: Qgis.ProviderStyleStorageCapability
        LoadFromDatabase = ... # type: Qgis.ProviderStyleStorageCapability
        DeleteFromDatabase = ... # type: Qgis.ProviderStyleStorageCapability

    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 InputControllerType(int):
        Map2D = ... # type: Qgis.InputControllerType
        Map3D = ... # type: Qgis.InputControllerType

    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 RasterProviderCapability(int):
        NoProviderCapabilities = ... # type: Qgis.RasterProviderCapability
        ReadLayerMetadata = ... # type: Qgis.RasterProviderCapability
        WriteLayerMetadata = ... # type: Qgis.RasterProviderCapability
        ProviderHintBenefitsFromResampling = ... # type: Qgis.RasterProviderCapability
        ProviderHintCanPerformProviderResampling = ... # type: Qgis.RasterProviderCapability
        ReloadData = ... # type: Qgis.RasterProviderCapability
        DpiDependentData = ... # type: Qgis.RasterProviderCapability
        NativeRasterAttributeTable = ... # type: Qgis.RasterProviderCapability
        BuildPyramids = ... # type: Qgis.RasterProviderCapability

    class RasterInterfaceCapability(int):
        NoCapabilities = ... # type: Qgis.RasterInterfaceCapability
        Size = ... # type: Qgis.RasterInterfaceCapability
        Create = ... # type: Qgis.RasterInterfaceCapability
        Remove = ... # type: Qgis.RasterInterfaceCapability
        BuildPyramids = ... # type: Qgis.RasterInterfaceCapability
        Identify = ... # type: Qgis.RasterInterfaceCapability
        IdentifyValue = ... # type: Qgis.RasterInterfaceCapability
        IdentifyText = ... # type: Qgis.RasterInterfaceCapability
        IdentifyHtml = ... # type: Qgis.RasterInterfaceCapability
        IdentifyFeature = ... # type: Qgis.RasterInterfaceCapability
        Prefetch = ... # type: Qgis.RasterInterfaceCapability

    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 LegendJsonRenderFlag(int):
        ShowRuleDetails = ... # type: Qgis.LegendJsonRenderFlag

    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 Point3DShape(int):
        Cylinder = ... # type: Qgis.Point3DShape
        Sphere = ... # type: Qgis.Point3DShape
        Cone = ... # type: Qgis.Point3DShape
        Cube = ... # type: Qgis.Point3DShape
        Torus = ... # type: Qgis.Point3DShape
        Plane = ... # type: Qgis.Point3DShape
        ExtrudedText = ... # type: Qgis.Point3DShape
        Model = ... # type: Qgis.Point3DShape
        Billboard = ... # type: Qgis.Point3DShape

    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 MeshElevationMode(int):
        FixedElevationRange = ... # type: Qgis.MeshElevationMode
        FromVertices = ... # type: Qgis.MeshElevationMode
        FixedRangePerGroup = ... # type: Qgis.MeshElevationMode

    class RasterElevationMode(int):
        FixedElevationRange = ... # type: Qgis.RasterElevationMode
        RepresentsElevationSurface = ... # type: Qgis.RasterElevationMode
        FixedRangePerBand = ... # type: Qgis.RasterElevationMode
        DynamicRangePerBand = ... # type: Qgis.RasterElevationMode

    class RangeLimits(int):
        IncludeBoth = ... # type: Qgis.RangeLimits
        IncludeLowerExcludeUpper = ... # type: Qgis.RangeLimits
        ExcludeLowerIncludeUpper = ... # type: Qgis.RangeLimits
        ExcludeBoth = ... # type: Qgis.RangeLimits

    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 FieldDuplicatePolicy(int):
        DefaultValue = ... # type: Qgis.FieldDuplicatePolicy
        Duplicate = ... # type: Qgis.FieldDuplicatePolicy
        UnsetField = ... # type: Qgis.FieldDuplicatePolicy

    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 ProcessingTinInputLayerType(int):
        Vertices = ... # type: Qgis.ProcessingTinInputLayerType
        StructureLines = ... # type: Qgis.ProcessingTinInputLayerType
        BreakLines = ... # type: Qgis.ProcessingTinInputLayerType

    class ProcessingModelChildAlgorithmExecutionStatus(int):
        NotExecuted = ... # type: Qgis.ProcessingModelChildAlgorithmExecutionStatus
        Success = ... # type: Qgis.ProcessingModelChildAlgorithmExecutionStatus
        Failed = ... # type: Qgis.ProcessingModelChildAlgorithmExecutionStatus

    class ProcessingModelChildParameterSource(int):
        ModelParameter = ... # type: Qgis.ProcessingModelChildParameterSource
        ChildOutput = ... # type: Qgis.ProcessingModelChildParameterSource
        StaticValue = ... # type: Qgis.ProcessingModelChildParameterSource
        Expression = ... # type: Qgis.ProcessingModelChildParameterSource
        ExpressionText = ... # type: Qgis.ProcessingModelChildParameterSource
        ModelOutput = ... # type: Qgis.ProcessingModelChildParameterSource

    class ProcessingDateTimeParameterDataType(int):
        DateTime = ... # type: Qgis.ProcessingDateTimeParameterDataType
        Date = ... # type: Qgis.ProcessingDateTimeParameterDataType
        Time = ... # type: Qgis.ProcessingDateTimeParameterDataType

    class ProcessingFieldParameterDataType(int):
        Any = ... # type: Qgis.ProcessingFieldParameterDataType
        Numeric = ... # type: Qgis.ProcessingFieldParameterDataType
        String = ... # type: Qgis.ProcessingFieldParameterDataType
        DateTime = ... # type: Qgis.ProcessingFieldParameterDataType
        Binary = ... # type: Qgis.ProcessingFieldParameterDataType
        Boolean = ... # type: Qgis.ProcessingFieldParameterDataType

    class ProcessingNumberParameterType(int):
        Integer = ... # type: Qgis.ProcessingNumberParameterType
        Double = ... # type: Qgis.ProcessingNumberParameterType

    class ProcessingFileParameterBehavior(int):
        File = ... # type: Qgis.ProcessingFileParameterBehavior
        Folder = ... # type: Qgis.ProcessingFileParameterBehavior

    class ProcessingParameterFlag(int):
        Advanced = ... # type: Qgis.ProcessingParameterFlag
        Hidden = ... # type: Qgis.ProcessingParameterFlag
        Optional = ... # type: Qgis.ProcessingParameterFlag
        IsModelOutput = ... # type: Qgis.ProcessingParameterFlag

    class ProcessingParameterTypeFlag(int):
        ExposeToModeler = ... # type: Qgis.ProcessingParameterTypeFlag

    class ProcessingFeatureSourceFlag(int):
        SkipGeometryValidityChecks = ... # type: Qgis.ProcessingFeatureSourceFlag

    class ProcessingFeatureSourceDefinitionFlag(int):
        OverrideDefaultGeometryCheck = ... # type: Qgis.ProcessingFeatureSourceDefinitionFlag
        CreateIndividualOutputPerInputFeature = ... # type: Qgis.ProcessingFeatureSourceDefinitionFlag

    class ProcessingLogLevel(int):
        DefaultLevel = ... # type: Qgis.ProcessingLogLevel
        Verbose = ... # type: Qgis.ProcessingLogLevel
        ModelDebug = ... # type: Qgis.ProcessingLogLevel

    class ProcessingPropertyAvailability(int):
        NotAvailable = ... # type: Qgis.ProcessingPropertyAvailability
        Available = ... # type: Qgis.ProcessingPropertyAvailability

    class ProcessingAlgorithmFlag(int):
        HideFromToolbox = ... # type: Qgis.ProcessingAlgorithmFlag
        HideFromModeler = ... # type: Qgis.ProcessingAlgorithmFlag
        SupportsBatch = ... # type: Qgis.ProcessingAlgorithmFlag
        CanCancel = ... # type: Qgis.ProcessingAlgorithmFlag
        RequiresMatchingCrs = ... # type: Qgis.ProcessingAlgorithmFlag
        NoThreading = ... # type: Qgis.ProcessingAlgorithmFlag
        DisplayNameIsLiteral = ... # type: Qgis.ProcessingAlgorithmFlag
        SupportsInPlaceEdits = ... # type: Qgis.ProcessingAlgorithmFlag
        KnownIssues = ... # type: Qgis.ProcessingAlgorithmFlag
        CustomException = ... # type: Qgis.ProcessingAlgorithmFlag
        PruneModelBranchesBasedOnAlgorithmResults = ... # type: Qgis.ProcessingAlgorithmFlag
        SkipGenericModelLogging = ... # type: Qgis.ProcessingAlgorithmFlag
        NotAvailableInStandaloneTool = ... # type: Qgis.ProcessingAlgorithmFlag
        RequiresProject = ... # type: Qgis.ProcessingAlgorithmFlag
        Deprecated = ... # type: Qgis.ProcessingAlgorithmFlag

    class ProcessingProviderFlag(int):
        DeemphasiseSearchResults = ... # type: Qgis.ProcessingProviderFlag
        CompatibleWithVirtualRaster = ... # type: Qgis.ProcessingProviderFlag

    class ProcessingSourceType(int):
        MapLayer = ... # type: Qgis.ProcessingSourceType
        VectorAnyGeometry = ... # type: Qgis.ProcessingSourceType
        VectorPoint = ... # type: Qgis.ProcessingSourceType
        VectorLine = ... # type: Qgis.ProcessingSourceType
        VectorPolygon = ... # type: Qgis.ProcessingSourceType
        Raster = ... # type: Qgis.ProcessingSourceType
        File = ... # type: Qgis.ProcessingSourceType
        Vector = ... # type: Qgis.ProcessingSourceType
        Mesh = ... # type: Qgis.ProcessingSourceType
        Plugin = ... # type: Qgis.ProcessingSourceType
        PointCloud = ... # type: Qgis.ProcessingSourceType
        Annotation = ... # type: Qgis.ProcessingSourceType
        VectorTile = ... # type: Qgis.ProcessingSourceType

    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
        NoOrientation = ... # 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 VectorRenderingSimplificationFlag(int):
        NoSimplification = ... # type: Qgis.VectorRenderingSimplificationFlag
        GeometrySimplification = ... # type: Qgis.VectorRenderingSimplificationFlag
        AntialiasingSimplification = ... # type: Qgis.VectorRenderingSimplificationFlag
        FullSimplification = ... # type: Qgis.VectorRenderingSimplificationFlag

    class VectorSimplificationAlgorithm(int):
        Distance = ... # type: Qgis.VectorSimplificationAlgorithm
        SnapToGrid = ... # type: Qgis.VectorSimplificationAlgorithm
        Visvalingam = ... # type: Qgis.VectorSimplificationAlgorithm
        SnappedToGridGlobal = ... # type: Qgis.VectorSimplificationAlgorithm

    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 MapLayerRendererFlag(int):
        RenderPartialOutputs = ... # type: Qgis.MapLayerRendererFlag
        RenderPartialOutputOverPreviousCachedImage = ... # type: Qgis.MapLayerRendererFlag

    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
        RecordProfile = ... # type: Qgis.RenderContextFlag
        AlwaysUseGlobalMasks = ... # 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
        RecordProfile = ... # type: Qgis.MapSettingsFlag
        AlwaysUseGlobalMasks = ... # 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
        FixedRangePerBand = ... # type: Qgis.RasterTemporalMode
        RepresentsTemporalValues = ... # 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 PlaybackOperation(int):
        SkipToStart = ... # type: Qgis.PlaybackOperation
        PreviousFrame = ... # type: Qgis.PlaybackOperation
        PlayReverse = ... # type: Qgis.PlaybackOperation
        Pause = ... # type: Qgis.PlaybackOperation
        PlayForward = ... # type: Qgis.PlaybackOperation
        NextFrame = ... # type: Qgis.PlaybackOperation
        SkipToEnd = ... # type: Qgis.PlaybackOperation

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

    class TemporalNavigationMode(int):
        Disabled = ... # type: Qgis.TemporalNavigationMode
        Animated = ... # type: Qgis.TemporalNavigationMode
        FixedRange = ... # type: Qgis.TemporalNavigationMode
        Movie = ... # type: Qgis.TemporalNavigationMode

    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 Axis(int):
        X = ... # type: Qgis.Axis
        Y = ... # type: Qgis.Axis
        Z = ... # type: Qgis.Axis

    class CrsWktVariant(int):
        Wkt1Gdal = ... # type: Qgis.CrsWktVariant
        Wkt1Esri = ... # type: Qgis.CrsWktVariant
        Wkt2_2015 = ... # type: Qgis.CrsWktVariant
        Wkt2_2015Simplified = ... # type: Qgis.CrsWktVariant
        Wkt2_2019 = ... # type: Qgis.CrsWktVariant
        Wkt2_2019Simplified = ... # type: Qgis.CrsWktVariant
        Preferred = ... # type: Qgis.CrsWktVariant
        PreferredSimplified = ... # type: Qgis.CrsWktVariant
        PreferredGdal = ... # type: Qgis.CrsWktVariant

    class CrsIdentifierType(int):
        ShortString = ... # type: Qgis.CrsIdentifierType
        MediumString = ... # type: Qgis.CrsIdentifierType
        FullString = ... # type: Qgis.CrsIdentifierType

    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 CrsType(int):
        Unknown = ... # type: Qgis.CrsType
        Geodetic = ... # type: Qgis.CrsType
        Geocentric = ... # type: Qgis.CrsType
        Geographic2d = ... # type: Qgis.CrsType
        Geographic3d = ... # type: Qgis.CrsType
        Vertical = ... # type: Qgis.CrsType
        Projected = ... # type: Qgis.CrsType
        Compound = ... # type: Qgis.CrsType
        Temporal = ... # type: Qgis.CrsType
        Engineering = ... # type: Qgis.CrsType
        Bound = ... # type: Qgis.CrsType
        Other = ... # type: Qgis.CrsType
        DerivedProjected = ... # type: Qgis.CrsType

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

    class AutoRefreshMode(int):
        Disabled = ... # type: Qgis.AutoRefreshMode
        ReloadData = ... # type: Qgis.AutoRefreshMode
        RedrawOnly = ... # type: Qgis.AutoRefreshMode

    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 InvalidGeometryCheck(int):
        NoCheck = ... # type: Qgis.InvalidGeometryCheck
        SkipInvalid = ... # type: Qgis.InvalidGeometryCheck
        AbortOnInvalid = ... # type: Qgis.InvalidGeometryCheck

    class FeatureRequestFilterType(int):
        NoFilter = ... # type: Qgis.FeatureRequestFilterType
        Fid = ... # type: Qgis.FeatureRequestFilterType
        Expression = ... # type: Qgis.FeatureRequestFilterType
        Fids = ... # type: Qgis.FeatureRequestFilterType

    class FeatureRequestFlag(int):
        NoFlags = ... # type: Qgis.FeatureRequestFlag
        NoGeometry = ... # type: Qgis.FeatureRequestFlag
        SubsetOfAttributes = ... # type: Qgis.FeatureRequestFlag
        ExactIntersect = ... # type: Qgis.FeatureRequestFlag
        IgnoreStaticNodesDuringExpressionCompilation = ... # type: Qgis.FeatureRequestFlag
        EmbeddedSymbols = ... # type: Qgis.FeatureRequestFlag

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

    class CoverageValidityResult(int):
        Invalid = ... # type: Qgis.CoverageValidityResult
        Valid = ... # type: Qgis.CoverageValidityResult
        Error = ... # type: Qgis.CoverageValidityResult

    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
        GeometryTypeHasChanged = ... # 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 GpsNavigationStatus(int):
        NotValid = ... # type: Qgis.GpsNavigationStatus
        Safe = ... # type: Qgis.GpsNavigationStatus
        Caution = ... # type: Qgis.GpsNavigationStatus
        Unsafe = ... # type: Qgis.GpsNavigationStatus

    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 SelectionRenderingMode(int):
        Default = ... # type: Qgis.SelectionRenderingMode
        CustomColor = ... # type: Qgis.SelectionRenderingMode
        CustomSymbol = ... # type: Qgis.SelectionRenderingMode

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

    class FieldConfigurationFlag(int):
        NoFlag = ... # type: Qgis.FieldConfigurationFlag
        NotSearchable = ... # type: Qgis.FieldConfigurationFlag
        HideFromWms = ... # type: Qgis.FieldConfigurationFlag
        HideFromWfs = ... # type: Qgis.FieldConfigurationFlag

    class FieldOrigin(int):
        Unknown = ... # type: Qgis.FieldOrigin
        Provider = ... # type: Qgis.FieldOrigin
        Join = ... # type: Qgis.FieldOrigin
        Edit = ... # type: Qgis.FieldOrigin
        Expression = ... # type: Qgis.FieldOrigin

    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 RasterRendererCapability(int):
        UsesMultipleBands = ... # type: Qgis.RasterRendererCapability

    class RasterRendererFlag(int):
        InternalLayerOpacityHandling = ... # type: Qgis.RasterRendererFlag
        UseNoDataForOutOfRangePixels = ... # 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 ShaderClassificationMethod(int):
        Continuous = ... # type: Qgis.ShaderClassificationMethod
        EqualInterval = ... # type: Qgis.ShaderClassificationMethod
        Quantile = ... # type: Qgis.ShaderClassificationMethod

    class ShaderInterpolationMethod(int):
        Linear = ... # type: Qgis.ShaderInterpolationMethod
        Discrete = ... # type: Qgis.ShaderInterpolationMethod
        Exact = ... # type: Qgis.ShaderInterpolationMethod

    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
        TiledScene = ... # 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
        OverPoint = ... # 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 LabelPrioritization(int):
        PreferCloser = ... # type: Qgis.LabelPrioritization
        PreferPositionOrdering = ... # type: Qgis.LabelPrioritization

    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
        TiledScene = ... # type: Qgis.BrowserLayerType

    class DataItemProviderCapability(int):
        NoCapabilities = ... # type: Qgis.DataItemProviderCapability
        Files = ... # type: Qgis.DataItemProviderCapability
        Directories = ... # type: Qgis.DataItemProviderCapability
        Databases = ... # type: Qgis.DataItemProviderCapability
        NetworkSources = ... # type: Qgis.DataItemProviderCapability

    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 SymbolLayerUserFlag(int):
        DisableSelectionRecoloring = ... # type: Qgis.SymbolLayerUserFlag

    class SymbolLayerFlag(int):
        DisableFeatureClipping = ... # type: Qgis.SymbolLayerFlag
        CanCalculateMaskGeometryPerFeature = ... # 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
        IsSymbolLayerSubSymbol = ... # 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 PropertyType(int):
        Invalid = ... # type: Qgis.PropertyType
        Static = ... # type: Qgis.PropertyType
        Field = ... # type: Qgis.PropertyType
        Expression = ... # type: Qgis.PropertyType

    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 FeatureAvailability(int):
        NoFeaturesAvailable = ... # type: Qgis.FeatureAvailability
        FeaturesAvailable = ... # type: Qgis.FeatureAvailability
        FeaturesMaybeAvailable = ... # type: Qgis.FeatureAvailability

    class SpatialIndexPresence(int):
        Unknown = ... # type: Qgis.SpatialIndexPresence
        NotPresent = ... # type: Qgis.SpatialIndexPresence
        Present = ... # type: Qgis.SpatialIndexPresence

    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 LoadStyleFlag(int):
        IgnoreMissingStyleErrors = ... # type: Qgis.LoadStyleFlag

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

    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
        TiledScene = ... # 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 LayerFilters(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __xor__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __ior__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __or__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __iand__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __and__(self, f: typing.Union['Qgis.LayerFilters', 'Qgis.LayerFilter']) -> 'Qgis.LayerFilters': ...
        def __invert__(self) -> 'Qgis.LayerFilters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LoadStyleFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __or__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __and__(self, f: typing.Union['Qgis.LoadStyleFlags', 'Qgis.LoadStyleFlag']) -> 'Qgis.LoadStyleFlags': ...
        def __invert__(self) -> 'Qgis.LoadStyleFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorLayerTypeFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        def __xor__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        def __ior__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        def __or__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        def __iand__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        def __and__(self, f: typing.Union['Qgis.VectorLayerTypeFlags', 'Qgis.VectorLayerTypeFlag']) -> 'Qgis.VectorLayerTypeFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.VectorDataProviderAttributeEditCapabilities', 'Qgis.VectorDataProviderAttributeEditCapability']) -> 'Qgis.VectorDataProviderAttributeEditCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __xor__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __ior__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __or__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __iand__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        def __and__(self, f: typing.Union['Qgis.SettingsTreeNodeOptions', 'Qgis.SettingsTreeNodeOption']) -> 'Qgis.SettingsTreeNodeOptions': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        def __xor__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        def __ior__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        def __or__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        def __iand__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        def __and__(self, f: typing.Union['Qgis.SldExportOptions', 'Qgis.SldExportOption']) -> 'Qgis.SldExportOptions': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        def __xor__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        def __ior__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        def __or__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        def __iand__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        def __and__(self, f: typing.Union['Qgis.SettingsOptions', 'Qgis.SettingsOption']) -> 'Qgis.SettingsOptions': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        def __xor__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        def __ior__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        def __or__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        def __iand__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        def __and__(self, f: typing.Union['Qgis.SnappingTypes', 'Qgis.SnappingType']) -> 'Qgis.SnappingTypes': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        def __xor__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        def __ior__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        def __or__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        def __iand__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        def __and__(self, f: typing.Union['Qgis.SymbolRenderHints', 'Qgis.SymbolRenderHint']) -> 'Qgis.SymbolRenderHints': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        def __or__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        def __and__(self, f: typing.Union['Qgis.SymbolFlags', 'Qgis.SymbolFlag']) -> 'Qgis.SymbolFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        def __or__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        def __and__(self, f: typing.Union['Qgis.SymbolPreviewFlags', 'Qgis.SymbolPreviewFlag']) -> 'Qgis.SymbolPreviewFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __or__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __and__(self, f: typing.Union['Qgis.SymbolLayerFlags', 'Qgis.SymbolLayerFlag']) -> 'Qgis.SymbolLayerFlags': ...
        def __invert__(self) -> 'Qgis.SymbolLayerFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class SymbolLayerUserFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __or__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __and__(self, f: typing.Union['Qgis.SymbolLayerUserFlags', 'Qgis.SymbolLayerUserFlag']) -> 'Qgis.SymbolLayerUserFlags': ...
        def __invert__(self) -> 'Qgis.SymbolLayerUserFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.BrowserItemCapabilities', 'Qgis.BrowserItemCapability']) -> 'Qgis.BrowserItemCapabilities': ...
        def __invert__(self) -> 'Qgis.BrowserItemCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class DataItemProviderCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.DataItemProviderCapabilities', 'Qgis.DataItemProviderCapability']) -> 'Qgis.DataItemProviderCapabilities': ...
        def __invert__(self) -> 'Qgis.DataItemProviderCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.VectorFileWriterCapabilities', 'Qgis.VectorFileWriterCapability']) -> 'Qgis.VectorFileWriterCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.SqlLayerDefinitionCapabilities', 'Qgis.SqlLayerDefinitionCapability']) -> 'Qgis.SqlLayerDefinitionCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        def __or__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        def __and__(self, f: typing.Union['Qgis.LabelLinePlacementFlags', 'Qgis.LabelLinePlacementFlag']) -> 'Qgis.LabelLinePlacementFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __or__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        def __and__(self, f: typing.Union['Qgis.LabelPolygonPlacementFlags', 'Qgis.LabelPolygonPlacementFlag']) -> 'Qgis.LabelPolygonPlacementFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        def __or__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        def __and__(self, f: typing.Union['Qgis.SublayerQueryFlags', 'Qgis.SublayerQueryFlag']) -> 'Qgis.SublayerQueryFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        def __or__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        def __and__(self, f: typing.Union['Qgis.SublayerFlags', 'Qgis.SublayerFlag']) -> 'Qgis.SublayerFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __xor__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __ior__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __or__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __iand__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __and__(self, f: typing.Union['Qgis.RasterRendererFlags', 'Qgis.RasterRendererFlag']) -> 'Qgis.RasterRendererFlags': ...
        def __invert__(self) -> 'Qgis.RasterRendererFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterRendererCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.RasterRendererCapabilities', 'Qgis.RasterRendererCapability']) -> 'Qgis.RasterRendererCapabilities': ...
        def __invert__(self) -> 'Qgis.RasterRendererCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FieldConfigurationFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __xor__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __ior__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __or__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __iand__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __and__(self, f: typing.Union['Qgis.FieldConfigurationFlags', 'Qgis.FieldConfigurationFlag']) -> 'Qgis.FieldConfigurationFlags': ...
        def __invert__(self) -> 'Qgis.FieldConfigurationFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        def __xor__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        def __ior__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        def __or__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        def __iand__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        def __and__(self, f: typing.Union['Qgis.SelectionFlags', 'Qgis.SelectionFlag']) -> 'Qgis.SelectionFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        def __xor__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        def __ior__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        def __or__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        def __iand__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        def __and__(self, f: typing.Union['Qgis.GpsInformationComponents', 'Qgis.GpsInformationComponent']) -> 'Qgis.GpsInformationComponents': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.BabelFormatCapabilities', 'Qgis.BabelFormatCapability']) -> 'Qgis.BabelFormatCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        def __xor__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        def __ior__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        def __or__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        def __iand__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        def __and__(self, f: typing.Union['Qgis.BabelCommandFlags', 'Qgis.BabelCommandFlag']) -> 'Qgis.BabelCommandFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __xor__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __ior__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __or__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __iand__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __and__(self, f: typing.Union['Qgis.GeometryValidityFlags', 'Qgis.GeometryValidityFlag']) -> 'Qgis.GeometryValidityFlags': ...
        def __invert__(self) -> 'Qgis.GeometryValidityFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FeatureRequestFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __xor__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __ior__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __or__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __iand__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __and__(self, f: typing.Union['Qgis.FeatureRequestFlags', 'Qgis.FeatureRequestFlag']) -> 'Qgis.FeatureRequestFlags': ...
        def __invert__(self) -> 'Qgis.FeatureRequestFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        def __xor__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        def __ior__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        def __or__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        def __iand__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        def __and__(self, f: typing.Union['Qgis.FileOperationFlags', 'Qgis.FileOperationFlag']) -> 'Qgis.FileOperationFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        def __xor__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        def __ior__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        def __or__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        def __iand__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        def __and__(self, f: typing.Union['Qgis.MapLayerProperties', 'Qgis.MapLayerProperty']) -> 'Qgis.MapLayerProperties': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        def __xor__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        def __ior__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        def __or__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        def __iand__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        def __and__(self, f: typing.Union['Qgis.DataProviderFlags', 'Qgis.DataProviderFlag']) -> 'Qgis.DataProviderFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        def __xor__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        def __ior__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        def __or__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        def __iand__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        def __and__(self, f: typing.Union['Qgis.AnnotationItemFlags', 'Qgis.AnnotationItemFlag']) -> 'Qgis.AnnotationItemFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __xor__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __ior__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __or__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __iand__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        def __and__(self, f: typing.Union['Qgis.AnnotationItemGuiFlags', 'Qgis.AnnotationItemGuiFlag']) -> 'Qgis.AnnotationItemGuiFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __xor__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __ior__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __or__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __iand__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        def __and__(self, f: typing.Union['Qgis.RasterTemporalCapabilityFlags', 'Qgis.RasterTemporalCapabilityFlag']) -> 'Qgis.RasterTemporalCapabilityFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        def __xor__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        def __ior__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        def __or__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        def __iand__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        def __and__(self, f: typing.Union['Qgis.CoordinateTransformationFlags', 'Qgis.CoordinateTransformationFlag']) -> 'Qgis.CoordinateTransformationFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        def __xor__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        def __ior__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        def __or__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        def __iand__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        def __and__(self, f: typing.Union['Qgis.MapSettingsFlags', 'Qgis.MapSettingsFlag']) -> 'Qgis.MapSettingsFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __xor__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __ior__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __or__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __iand__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __and__(self, f: typing.Union['Qgis.RenderContextFlags', 'Qgis.RenderContextFlag']) -> 'Qgis.RenderContextFlags': ...
        def __invert__(self) -> 'Qgis.RenderContextFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class MapLayerRendererFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __xor__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __ior__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __or__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __iand__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __and__(self, f: typing.Union['Qgis.MapLayerRendererFlags', 'Qgis.MapLayerRendererFlag']) -> 'Qgis.MapLayerRendererFlags': ...
        def __invert__(self) -> 'Qgis.MapLayerRendererFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __or__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __and__(self, f: typing.Union['Qgis.LabelingFlags', 'Qgis.LabelingFlag']) -> 'Qgis.LabelingFlags': ...
        def __invert__(self) -> 'Qgis.LabelingFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorRenderingSimplificationFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __xor__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __ior__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __or__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __iand__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __and__(self, f: typing.Union['Qgis.VectorRenderingSimplificationFlags', 'Qgis.VectorRenderingSimplificationFlag']) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        def __invert__(self) -> 'Qgis.VectorRenderingSimplificationFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        def __xor__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        def __ior__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        def __or__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        def __iand__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        def __and__(self, f: typing.Union['Qgis.MarkerLinePlacements', 'Qgis.MarkerLinePlacement']) -> 'Qgis.MarkerLinePlacements': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        def __xor__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        def __ior__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        def __or__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        def __iand__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        def __and__(self, f: typing.Union['Qgis.TextRendererFlags', 'Qgis.TextRendererFlag']) -> 'Qgis.TextRendererFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        def __or__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        def __and__(self, f: typing.Union['Qgis.ViewSyncModeFlags', 'Qgis.ViewSyncModeFlag']) -> 'Qgis.ViewSyncModeFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __xor__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __ior__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __or__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __iand__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __and__(self, f: typing.Union['Qgis.HistoryProviderBackends', 'Qgis.HistoryProviderBackend']) -> 'Qgis.HistoryProviderBackends': ...
        def __invert__(self) -> 'Qgis.HistoryProviderBackends': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingProviderFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingProviderFlags', 'Qgis.ProcessingProviderFlag']) -> 'Qgis.ProcessingProviderFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingProviderFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingAlgorithmFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingAlgorithmFlags', 'Qgis.ProcessingAlgorithmFlag']) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingAlgorithmFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingFeatureSourceDefinitionFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingFeatureSourceDefinitionFlags', 'Qgis.ProcessingFeatureSourceDefinitionFlag']) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingFeatureSourceDefinitionFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingFeatureSourceFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingFeatureSourceFlags', 'Qgis.ProcessingFeatureSourceFlag']) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingFeatureSourceFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingParameterTypeFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingParameterTypeFlags', 'Qgis.ProcessingParameterTypeFlag']) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingParameterTypeFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProcessingParameterFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProcessingParameterFlags', 'Qgis.ProcessingParameterFlag']) -> 'Qgis.ProcessingParameterFlags': ...
        def __invert__(self) -> 'Qgis.ProcessingParameterFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProjectFlags', 'Qgis.ProjectFlag']) -> 'Qgis.ProjectFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        def __xor__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        def __ior__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        def __or__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        def __iand__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        def __and__(self, f: typing.Union['Qgis.PlotToolFlags', 'Qgis.PlotToolFlag']) -> 'Qgis.PlotToolFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProfileGeneratorFlags', 'Qgis.ProfileGeneratorFlag']) -> 'Qgis.ProfileGeneratorFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        def __xor__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        def __ior__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        def __or__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        def __iand__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        def __and__(self, f: typing.Union['Qgis.ProjectReadFlags', 'Qgis.ProjectReadFlag']) -> 'Qgis.ProjectReadFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.ProjectCapabilities', 'Qgis.ProjectCapability']) -> 'Qgis.ProjectCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.RelationshipCapabilities', 'Qgis.RelationshipCapability']) -> 'Qgis.RelationshipCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.ScriptLanguageCapabilities', 'Qgis.ScriptLanguageCapability']) -> 'Qgis.ScriptLanguageCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __or__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __and__(self, f: typing.Union['Qgis.LayerTreeFilterFlags', 'Qgis.LayerTreeFilterFlag']) -> 'Qgis.LayerTreeFilterFlags': ...
        def __invert__(self) -> 'Qgis.LayerTreeFilterFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LegendJsonRenderFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __xor__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __ior__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __or__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __iand__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __and__(self, f: typing.Union['Qgis.LegendJsonRenderFlags', 'Qgis.LegendJsonRenderFlag']) -> 'Qgis.LegendJsonRenderFlags': ...
        def __invert__(self) -> 'Qgis.LegendJsonRenderFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        def __xor__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        def __ior__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        def __or__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        def __iand__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        def __and__(self, f: typing.Union['Qgis.MapLayerActionTargets', 'Qgis.MapLayerActionTarget']) -> 'Qgis.MapLayerActionTargets': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __xor__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __ior__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __or__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __iand__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __and__(self, f: typing.Union['Qgis.MapLayerActionFlags', 'Qgis.MapLayerActionFlag']) -> 'Qgis.MapLayerActionFlags': ...
        def __invert__(self) -> 'Qgis.MapLayerActionFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterInterfaceCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.RasterInterfaceCapabilities', 'Qgis.RasterInterfaceCapability']) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __invert__(self) -> 'Qgis.RasterInterfaceCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterProviderCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.RasterProviderCapabilities', 'Qgis.RasterProviderCapability']) -> 'Qgis.RasterProviderCapabilities': ...
        def __invert__(self) -> 'Qgis.RasterProviderCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __xor__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __ior__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __or__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __iand__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __and__(self, f: typing.Union['Qgis.DatabaseProviderConnectionCapabilities2', 'Qgis.DatabaseProviderConnectionCapability2']) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __invert__(self) -> 'Qgis.DatabaseProviderConnectionCapabilities2': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProviderStyleStorageCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.ProviderStyleStorageCapabilities', 'Qgis.ProviderStyleStorageCapability']) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        def __invert__(self) -> 'Qgis.ProviderStyleStorageCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        def __xor__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        def __ior__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        def __or__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        def __iand__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        def __and__(self, f: typing.Union['Qgis.VectorTileProviderFlags', 'Qgis.VectorTileProviderFlag']) -> 'Qgis.VectorTileProviderFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.VectorTileProviderCapabilities', 'Qgis.VectorTileProviderCapability']) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __invert__(self) -> 'Qgis.VectorTileProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class TiledSceneProviderCapabilities(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __xor__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __ior__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __or__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __iand__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __and__(self, f: typing.Union['Qgis.TiledSceneProviderCapabilities', 'Qgis.TiledSceneProviderCapability']) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __invert__(self) -> 'Qgis.TiledSceneProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class TiledSceneRequestFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __xor__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __ior__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __or__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __iand__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __and__(self, f: typing.Union['Qgis.TiledSceneRequestFlags', 'Qgis.TiledSceneRequestFlag']) -> 'Qgis.TiledSceneRequestFlags': ...
        def __invert__(self) -> 'Qgis.TiledSceneRequestFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class TiledSceneRendererFlags(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __xor__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __ior__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __or__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __iand__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __and__(self, f: typing.Union['Qgis.TiledSceneRendererFlags', 'Qgis.TiledSceneRendererFlag']) -> 'Qgis.TiledSceneRendererFlags': ...
        def __invert__(self) -> 'Qgis.TiledSceneRendererFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ZonalStatistics(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __xor__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __ior__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __or__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __iand__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __and__(self, f: typing.Union['Qgis.ZonalStatistics', 'Qgis.ZonalStatistic']) -> 'Qgis.ZonalStatistics': ...
        def __invert__(self) -> 'Qgis.ZonalStatistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class Statistics(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __xor__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __ior__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __or__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __iand__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __and__(self, f: typing.Union['Qgis.Statistics', 'Qgis.Statistic']) -> 'Qgis.Statistics': ...
        def __invert__(self) -> 'Qgis.Statistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class DateTimeStatistics(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __xor__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __ior__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __or__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __iand__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __and__(self, f: typing.Union['Qgis.DateTimeStatistics', 'Qgis.DateTimeStatistic']) -> 'Qgis.DateTimeStatistics': ...
        def __invert__(self) -> 'Qgis.DateTimeStatistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class StringStatistics(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __xor__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __ior__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __or__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __iand__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __and__(self, f: typing.Union['Qgis.StringStatistics', 'Qgis.StringStatistic']) -> 'Qgis.StringStatistics': ...
        def __invert__(self) -> 'Qgis.StringStatistics': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class RasterBandStatistics(PyQt5.sip.wrapper):

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

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __xor__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __ior__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __or__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __iand__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __and__(self, f: typing.Union['Qgis.RasterBandStatistics', 'Qgis.RasterBandStatistic']) -> 'Qgis.RasterBandStatistics': ...
        def __invert__(self) -> 'Qgis.RasterBandStatistics': ...
        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: typing.Optional[str]
    previousEntry = ... # type: 'QgsAbstractContentCacheEntry'

    def __init__(self, path: typing.Optional[str]) -> None: ...

    def __ne__(self, other: object): ...
    def isEqual(self, other: typing.Optional['QgsAbstractContentCacheEntry']) -> bool: ...
    def dump(self) -> None: ...
    def dataSize(self) -> int: ...
    def __eq__(self, other: object): ...


class QgsAbstractContentCacheBase(QtCore.QObject):

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

    def onRemoteContentFetched(self, url: typing.Optional[str], success: bool) -> None: ...
    def checkReply(self, reply: typing.Optional[QtNetwork.QNetworkReply], path: typing.Optional[str]) -> bool: ...
    remoteContentFetched: typing.ClassVar[QtCore.pyqtSignal]


class QgsAggregateCalculator(PyQt5.sip.wrapper):

    class AggregateInfo(PyQt5.sip.wrapper):

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

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

    class AggregateParameters(PyQt5.sip.wrapper):

        delimiter = ... # type: typing.Optional[str]
        filter = ... # type: typing.Optional[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: typing.Optional['QgsVectorLayer']) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAggregateCalculator') -> None: ...

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


class QgsAlignRasterData(PyQt5.sip.wrapper):

    class RasterItem(PyQt5.sip.wrapper):

        inputFilename = ... # type: typing.Optional[str]
        outputFilename = ... # type: typing.Optional[str]
        resampleMethod = ... # type: Qgis.GdalResampleAlgorithm
        rescaleValues = ... # type: bool
        srcCellSizeInDestCRS = ... # type: float

        @typing.overload
        def __init__(self, input: typing.Optional[str], output: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAlignRasterData.RasterItem') -> None: ...

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


class QgsAnimatedIcon(QtCore.QObject):

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

    frameChanged: typing.ClassVar[QtCore.pyqtSignal]
    def height(self) -> int: ...
    def width(self) -> int: ...
    def disconnectFrameChanged(self, receiver: typing.Optional[QtCore.QObject], method: typing.Optional[str]) -> bool: ...
    def connectFrameChanged(self, receiver: typing.Optional[QtCore.QObject], method: typing.Optional[str]) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def setIconPath(self, iconPath: typing.Optional[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: typing.Optional[str] = ..., platformName: typing.Optional[str] = ...) -> None: ...

    localeChanged: typing.ClassVar[QtCore.pyqtSignal]
    requestForTranslatableObjects: typing.ClassVar[QtCore.pyqtSignal]
    nullRepresentationChanged: typing.ClassVar[QtCore.pyqtSignal]
    customVariablesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def collectTranslatableObjects(self, translationContext: typing.Optional['QgsTranslationContext']) -> None: ...
    def translation(self) -> str: ...
    @staticmethod
    def setTranslation(translation: typing.Optional[str]) -> None: ...
    def maxConcurrentConnectionsPerPool(self) -> int: ...
    @staticmethod
    def scaleIconSize(standardSize: int, applyDevicePixelRatio: bool = ...) -> int: ...
    @staticmethod
    def setCustomVariable(name: typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def nullRepresentation() -> str: ...
    @staticmethod
    def localizedDataPathRegistry() -> typing.Optional['QgsLocalizedDataPathRegistry']: ...
    @staticmethod
    def profileSourceRegistry() -> typing.Optional['QgsProfileSourceRegistry']: ...
    @staticmethod
    def externalStorageRegistry() -> typing.Optional['QgsExternalStorageRegistry']: ...
    @staticmethod
    def layerMetadataProviderRegistry() -> typing.Optional['QgsLayerMetadataProviderRegistry']: ...
    @staticmethod
    def projectStorageRegistry() -> typing.Optional['QgsProjectStorageRegistry']: ...
    @staticmethod
    def scaleBarRendererRegistry() -> typing.Optional['QgsScaleBarRendererRegistry']: ...
    @staticmethod
    def symbol3DRegistry() -> typing.Optional['Qgs3DSymbolRegistry']: ...
    @staticmethod
    def renderer3DRegistry() -> typing.Optional['Qgs3DRendererRegistry']: ...
    @staticmethod
    def fieldFormatterRegistry() -> typing.Optional['QgsFieldFormatterRegistry']: ...
    @staticmethod
    def numericFormatRegistry() -> typing.Optional['QgsNumericFormatRegistry']: ...
    @staticmethod
    def profiler() -> typing.Optional['QgsRuntimeProfiler']: ...
    @staticmethod
    def connectionRegistry() -> typing.Optional['QgsConnectionRegistry']: ...
    @staticmethod
    def actionScopeRegistry() -> typing.Optional['QgsActionScopeRegistry']: ...
    @staticmethod
    def pageSizeRegistry() -> typing.Optional['QgsPageSizeRegistry']: ...
    @staticmethod
    def processingRegistry() -> typing.Optional['QgsProcessingRegistry']: ...
    @staticmethod
    def authManager() -> typing.Optional['QgsAuthManager']: ...
    @staticmethod
    def messageLog() -> typing.Optional['QgsMessageLog']: ...
    @staticmethod
    def sensorRegistry() -> typing.Optional['QgsSensorRegistry']: ...
    @staticmethod
    def fontManager() -> typing.Optional['QgsFontManager']: ...
    @staticmethod
    def defaultStyleModel() -> typing.Optional['QgsStyleModel']: ...
    @staticmethod
    def databaseQueryLog() -> typing.Optional['QgsDatabaseQueryLog']: ...
    @staticmethod
    def recentStyleHandler() -> typing.Optional['QgsRecentStyleHandler']: ...
    @staticmethod
    def bookmarkManager() -> typing.Optional['QgsBookmarkManager']: ...
    @staticmethod
    def classificationMethodRegistry() -> typing.Optional['QgsClassificationMethodRegistry']: ...
    @staticmethod
    def pluginLayerRegistry() -> typing.Optional['QgsPluginLayerRegistry']: ...
    @staticmethod
    def gpsBabelFormatRegistry() -> typing.Optional['QgsBabelFormatRegistry']: ...
    @staticmethod
    def gpsConnectionRegistry() -> typing.Optional['QgsGpsConnectionRegistry']: ...
    @staticmethod
    def annotationItemRegistry() -> typing.Optional['QgsAnnotationItemRegistry']: ...
    @staticmethod
    def layoutItemRegistry() -> typing.Optional['QgsLayoutItemRegistry']: ...
    @staticmethod
    def calloutRegistry() -> typing.Optional['QgsCalloutRegistry']: ...
    @staticmethod
    def symbolLayerRegistry() -> typing.Optional['QgsSymbolLayerRegistry']: ...
    @staticmethod
    def validityCheckRegistry() -> typing.Optional['QgsValidityCheckRegistry']: ...
    @staticmethod
    def networkContentFetcherRegistry() -> typing.Optional['QgsNetworkContentFetcherRegistry']: ...
    @staticmethod
    def sourceCache() -> typing.Optional['QgsSourceCache']: ...
    @staticmethod
    def imageCache() -> typing.Optional['QgsImageCache']: ...
    @staticmethod
    def svgCache() -> typing.Optional['QgsSvgCache']: ...
    @staticmethod
    def coordinateReferenceSystemRegistry() -> typing.Optional['QgsCoordinateReferenceSystemRegistry']: ...
    @staticmethod
    def dataItemProviderRegistry() -> typing.Optional['QgsDataItemProviderRegistry']: ...
    @staticmethod
    def tiledSceneRendererRegistry() -> typing.Optional['QgsTiledSceneRendererRegistry']: ...
    @staticmethod
    def pointCloudRendererRegistry() -> typing.Optional['QgsPointCloudRendererRegistry']: ...
    @staticmethod
    def rendererRegistry() -> typing.Optional['QgsRendererRegistry']: ...
    @staticmethod
    def paintEffectRegistry() -> typing.Optional['QgsPaintEffectRegistry']: ...
    @staticmethod
    def colorSchemeRegistry() -> typing.Optional['QgsColorSchemeRegistry']: ...
    @staticmethod
    def settingsRegistryCore() -> typing.Optional['QgsSettingsRegistryCore']: ...
    @staticmethod
    def taskManager() -> typing.Optional['QgsTaskManager']: ...
    @staticmethod
    def setMaxThreads(maxThreads: int) -> None: ...
    @staticmethod
    def maxThreads() -> int: ...
    @staticmethod
    def setSkippedGdalDrivers(skippedGdalDrivers: typing.Iterable[typing.Optional[str]], deferredSkippedGdalDrivers: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def skipGdalDriver(driver: typing.Optional[str]) -> None: ...
    @staticmethod
    def buildOutputPath() -> str: ...
    @staticmethod
    def buildSourcePath() -> str: ...
    @staticmethod
    def isRunningFromBuildDir() -> bool: ...
    @staticmethod
    def relativePathToAbsolutePath(rpath: typing.Optional[str], targetPath: typing.Optional[str]) -> str: ...
    @staticmethod
    def absolutePathToRelativePath(apath: typing.Optional[str], targetPath: typing.Optional[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[typing.Optional[str]] = ...) -> bool: ...
    @staticmethod
    def initQgis() -> None: ...
    @staticmethod
    def setAuthDatabaseDirPath(authDbDirPath: typing.Optional[str]) -> None: ...
    @staticmethod
    def setDefaultSvgPaths(pathList: typing.Iterable[typing.Optional[str]]) -> None: ...
    @staticmethod
    def setPkgDataPath(pkgDataPath: typing.Optional[str]) -> None: ...
    @staticmethod
    def setPluginPath(pluginPath: typing.Optional[str]) -> None: ...
    @staticmethod
    def setPrefixPath(prefixPath: typing.Optional[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: typing.Optional[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: typing.Optional[str], fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def iconPath(iconFile: typing.Optional[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[typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def themeName() -> str: ...
    @staticmethod
    def resolvePkgPath() -> str: ...
    @staticmethod
    def setThemeName(themeName: typing.Optional[str]) -> None: ...
    @staticmethod
    def setFileOpenEventReceiver(receiver: typing.Optional[QtCore.QObject]) -> None: ...
    def notify(self, receiver: typing.Optional[QtCore.QObject], event: typing.Optional[QtCore.QEvent]) -> bool: ...
    def event(self, event: typing.Optional[QtCore.QEvent]) -> bool: ...
    @staticmethod
    def instance() -> typing.Optional['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: typing.Optional[str]) -> bool: ...
    def addFile(self, filename: typing.Optional[str]) -> None: ...
    def clear(self) -> None: ...
    def unzip(self, zipFilename: typing.Optional[str]) -> bool: ...
    def zip(self, zipFilename: typing.Optional[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: typing.Optional[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: typing.Optional[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 __eq__(self, other: object): ...
    def __ne__(self, other: object): ...
    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: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        def __xor__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        def __ior__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        def __or__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        def __iand__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        def __and__(self, f: typing.Union['QgsMapLayer.LayerFlags', 'QgsMapLayer.LayerFlag']) -> 'QgsMapLayer.LayerFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        def __xor__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        def __ior__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        def __or__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        def __iand__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        def __and__(self, f: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory']) -> 'QgsMapLayer.StyleCategories': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __xor__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __ior__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __or__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __iand__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __and__(self, f: typing.Union['QgsMapLayer.ReadFlags', 'QgsMapLayer.ReadFlag']) -> 'QgsMapLayer.ReadFlags': ...
        def __invert__(self) -> 'QgsMapLayer.ReadFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, type: Qgis.LayerType = ..., name: typing.Optional[str] = ..., source: typing.Optional[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: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    def decodedSource(self, source: typing.Optional[str], dataProvider: typing.Optional[str], context: 'QgsReadWriteContext') -> str: ...
    def encodedSource(self, source: typing.Optional[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 setExtent3D(self, box: 'QgsBox3D') -> None: ...
    def setExtent(self, rect: 'QgsRectangle') -> None: ...
    mapTipsEnabledChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapTipTemplateChanged: typing.ClassVar[QtCore.pyqtSignal]
    layerModified: typing.ClassVar[QtCore.pyqtSignal]
    editingStopped: typing.ClassVar[QtCore.pyqtSignal]
    editingStarted: typing.ClassVar[QtCore.pyqtSignal]
    customPropertyChanged: typing.ClassVar[QtCore.pyqtSignal]
    isValidChanged: typing.ClassVar[QtCore.pyqtSignal]
    styleLoaded: typing.ClassVar[QtCore.pyqtSignal]
    dataSourceChanged: typing.ClassVar[QtCore.pyqtSignal]
    flagsChanged: typing.ClassVar[QtCore.pyqtSignal]
    metadataChanged: typing.ClassVar[QtCore.pyqtSignal]
    autoRefreshIntervalChanged: typing.ClassVar[QtCore.pyqtSignal]
    willBeDeleted: typing.ClassVar[QtCore.pyqtSignal]
    dependenciesChanged: typing.ClassVar[QtCore.pyqtSignal]
    configChanged: typing.ClassVar[QtCore.pyqtSignal]
    request3DUpdate: typing.ClassVar[QtCore.pyqtSignal]
    renderer3DChanged: typing.ClassVar[QtCore.pyqtSignal]
    legendChanged: typing.ClassVar[QtCore.pyqtSignal]
    styleChanged: typing.ClassVar[QtCore.pyqtSignal]
    rendererChanged: typing.ClassVar[QtCore.pyqtSignal]
    opacityChanged: typing.ClassVar[QtCore.pyqtSignal]
    blendModeChanged: typing.ClassVar[QtCore.pyqtSignal]
    dataChanged: typing.ClassVar[QtCore.pyqtSignal]
    recalculateExtents: typing.ClassVar[QtCore.pyqtSignal]
    repaintRequested: typing.ClassVar[QtCore.pyqtSignal]
    verticalCrsChanged: typing.ClassVar[QtCore.pyqtSignal]
    crs3DChanged: typing.ClassVar[QtCore.pyqtSignal]
    crsChanged: typing.ClassVar[QtCore.pyqtSignal]
    nameChanged: typing.ClassVar[QtCore.pyqtSignal]
    idChanged: typing.ClassVar[QtCore.pyqtSignal]
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    beforeResolveReferences: typing.ClassVar[QtCore.pyqtSignal]
    def project(self) -> typing.Optional['QgsProject']: ...
    def __repr__(self) -> typing.Any: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def setRefreshOnNofifyMessage(self, message: typing.Optional[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: typing.Optional[str]) -> None: ...
    def mapTipTemplate(self) -> str: ...
    def hasMapTips(self) -> bool: ...
    def setLegendPlaceholderImage(self, imgPath: typing.Optional[str]) -> None: ...
    def legendPlaceholderImage(self) -> str: ...
    def elevationProperties(self) -> typing.Optional['QgsMapLayerElevationProperties']: ...
    def temporalProperties(self) -> typing.Optional['QgsMapLayerTemporalProperties']: ...
    def selectionProperties(self) -> typing.Optional['QgsMapLayerSelectionProperties']: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    @staticmethod
    def generateId(layerName: typing.Optional[str]) -> str: ...
    def setOriginalXmlProperties(self, originalXmlProperties: typing.Optional[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 setAutoRefreshMode(self, mode: Qgis.AutoRefreshMode) -> None: ...
    def setAutoRefreshEnabled(self, enabled: bool) -> None: ...
    def setAutoRefreshInterval(self, interval: int) -> None: ...
    def autoRefreshInterval(self) -> int: ...
    def autoRefreshMode(self) -> Qgis.AutoRefreshMode: ...
    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) -> typing.Optional['QgsAbstract3DRenderer']: ...
    def setRenderer3D(self, renderer: typing.Optional['QgsAbstract3DRenderer']) -> None: ...
    def styleManager(self) -> typing.Optional['QgsMapLayerStyleManager']: ...
    def legend(self) -> typing.Optional['QgsMapLayerLegend']: ...
    def setLegend(self, legend: typing.Optional['QgsMapLayerLegend']) -> None: ...
    def legendUrlFormat(self) -> str: ...
    def setLegendUrlFormat(self, legendUrlFormat: typing.Optional[str]) -> None: ...
    def legendUrl(self) -> str: ...
    def setLegendUrl(self, legendUrl: typing.Optional[str]) -> None: ...
    def undoStackStyles(self) -> typing.Optional[QtWidgets.QUndoStack]: ...
    def undoStack(self) -> typing.Optional[QtWidgets.QUndoStack]: ...
    def providerType(self) -> str: ...
    @typing.overload
    def setDataSource(self, dataSource: typing.Optional[str], baseName: typing.Optional[str], provider: typing.Optional[str], loadDefaultStyleFlag: bool = ...) -> None: ...
    @typing.overload
    def setDataSource(self, dataSource: typing.Optional[str], baseName: typing.Optional[str], provider: typing.Optional[str], options: 'QgsDataProvider.ProviderOptions', loadDefaultStyleFlag: bool = ...) -> None: ...
    @typing.overload
    def setDataSource(self, dataSource: typing.Optional[str], baseName: typing.Optional[str], provider: typing.Optional[str], options: 'QgsDataProvider.ProviderOptions', flags: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> bool: ...
    def readSld(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str]) -> bool: ...
    def loadSldStyle(self, uri: typing.Optional[str]) -> typing.Tuple[str, bool]: ...
    def saveSldStyleV2(self, exportContext: 'QgsSldExportContext') -> typing.Tuple[str, bool]: ...
    def saveSldStyle(self, uri: typing.Optional[str]) -> typing.Tuple[str, bool]: ...
    def saveNamedStyle(self, uri: typing.Optional[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: typing.Optional[str], exportContext: 'QgsSldExportContext') -> None: ...
    def exportSldStyle(self, doc: QtXml.QDomDocument, errorMsg: typing.Optional[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: typing.Optional[str], uri: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def styleURI(self) -> str: ...
    def importNamedMetadata(self, document: QtXml.QDomDocument, errorMessage: typing.Optional[str]) -> bool: ...
    def loadNamedMetadataFromDatabase(self, db: typing.Optional[str], uri: typing.Optional[str], qmd: typing.Optional[str]) -> bool: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def loadNamedMetadata(self, uri: typing.Optional[str]) -> typing.Tuple[str, bool]: ...
    def saveNamedMetadata(self, uri: typing.Optional[str]) -> typing.Tuple[str, bool]: ...
    def saveDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def exportNamedMetadata(self, doc: QtXml.QDomDocument, errorMsg: typing.Optional[str]) -> None: ...
    def metadataUri(self) -> str: ...
    @staticmethod
    def formatLayerName(name: typing.Optional[str]) -> str: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def setVerticalCrs(self, crs: 'QgsCoordinateReferenceSystem') -> typing.Tuple[bool, typing.Optional[str]]: ...
    def setCrs(self, srs: 'QgsCoordinateReferenceSystem', emitSignal: bool = ...) -> None: ...
    def crs3D(self) -> 'QgsCoordinateReferenceSystem': ...
    def verticalCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def error(self) -> 'QgsError': ...
    def removeCustomProperty(self, key: typing.Optional[str]) -> None: ...
    @typing.overload
    def loadNamedStyle(self, theURI: typing.Optional[str], loadFromLocalDb: bool, categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ..., flags: typing.Union[Qgis.LoadStyleFlags, Qgis.LoadStyleFlag] = ...) -> typing.Tuple[str, bool]: ...
    @typing.overload
    def loadNamedStyle(self, uri: typing.Optional[str], categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ..., flags: typing.Union[Qgis.LoadStyleFlags, Qgis.LoadStyleFlag] = ...) -> typing.Tuple[str, bool]: ...
    def saveStyleToDatabase(self, name: typing.Optional[str], description: typing.Optional[str], useAsDefault: bool, uiFileContent: typing.Optional[str], categories: typing.Union['QgsMapLayer.StyleCategories', 'QgsMapLayer.StyleCategory'] = ...) -> str: ...
    def deleteStyleFromDatabase(self, styleId: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def getStyleFromDatabase(self, styleId: typing.Optional[str]) -> typing.Tuple[str, str]: ...
    def listStylesInDatabase(self) -> typing.Tuple[int, typing.List[str], typing.List[str], typing.List[str], str]: ...
    def customProperties(self) -> 'QgsObjectCustomProperties': ...
    def setCustomProperties(self, properties: 'QgsObjectCustomProperties') -> None: ...
    def customProperty(self, value: typing.Optional[str], defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: typing.Optional[str], value: typing.Any) -> None: ...
    def customPropertyKeys(self) -> typing.List[str]: ...
    def resolveReferences(self, project: typing.Optional['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: typing.Optional[str], visible: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[typing.Optional[str]]) -> None: ...
    def subLayers(self) -> typing.List[str]: ...
    def source(self) -> str: ...
    def publicSource(self, hidePassword: bool = ...) -> str: ...
    def isValid(self) -> bool: ...
    def wgs84Extent(self, forceRecalculate: bool = ...) -> 'QgsRectangle': ...
    def extent3D(self) -> 'QgsBox3D': ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: 'QgsRenderContext') -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def metadataUrlType(self) -> str: ...
    def setMetadataUrlType(self, metaUrlType: typing.Optional[str]) -> None: ...
    def metadataUrl(self) -> str: ...
    def setMetadataUrl(self, metaUrl: typing.Optional[str]) -> None: ...
    def serverProperties(self) -> typing.Optional['QgsMapLayerServerProperties']: ...
    def attributionUrl(self) -> str: ...
    def setAttributionUrl(self, attribUrl: typing.Optional[str]) -> None: ...
    def attribution(self) -> str: ...
    def setAttribution(self, attrib: typing.Optional[str]) -> None: ...
    def dataUrlFormat(self) -> str: ...
    def setDataUrlFormat(self, dataUrlFormat: typing.Optional[str]) -> None: ...
    def dataUrl(self) -> str: ...
    def setDataUrl(self, dataUrl: typing.Optional[str]) -> None: ...
    def keywordList(self) -> str: ...
    def setKeywordList(self, keywords: typing.Optional[str]) -> None: ...
    def abstract(self) -> str: ...
    def setAbstract(self, abstract: typing.Optional[str]) -> None: ...
    def title(self) -> str: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def shortName(self) -> str: ...
    def setShortName(self, shortName: typing.Optional[str]) -> None: ...
    def dataProvider(self) -> typing.Optional['QgsDataProvider']: ...
    def name(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def setId(self, id: typing.Optional[str]) -> bool: ...
    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) -> typing.Optional['QgsMapLayer']: ...
    @typing.overload
    def clone(self, layer: typing.Optional['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) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        def __xor__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        def __ior__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        def __or__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        def __iand__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        def __and__(self, f: typing.Union['QgsFeatureSink.SinkFlags', 'QgsFeatureSink.SinkFlag']) -> 'QgsFeatureSink.SinkFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        def __xor__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        def __ior__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        def __or__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        def __iand__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        def __and__(self, f: typing.Union['QgsFeatureSink.Flags', 'QgsFeatureSink.Flag']) -> 'QgsFeatureSink.Flags': ...
        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):

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

    def hasSpatialIndex(self) -> Qgis.SpatialIndexPresence: ...
    def materialize(self, request: 'QgsFeatureRequest', feedback: typing.Optional['QgsFeedback'] = ...) -> typing.Optional['QgsVectorLayer']: ...
    def allFeatureIds(self) -> typing.Any: ...
    def sourceExtent3D(self) -> 'QgsBox3D': ...
    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) -> Qgis.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') -> typing.Optional['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: typing.Optional['QgsVectorLayer']) -> typing.Any: ...
        def handledLayers(self, includeAuxiliaryLayers: bool = ...) -> typing.List['QgsVectorLayer']: ...

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

    def setExtent3D(self, rect: 'QgsBox3D') -> None: ...
    def setExtent(self, rect: 'QgsRectangle') -> None: ...
    symbolFeatureCountMapChanged: typing.ClassVar[QtCore.pyqtSignal]
    supportsEditingChanged: typing.ClassVar[QtCore.pyqtSignal]
    readOnlyChanged: typing.ClassVar[QtCore.pyqtSignal]
    editFormConfigChanged: typing.ClassVar[QtCore.pyqtSignal]
    raiseError: typing.ClassVar[QtCore.pyqtSignal]
    displayExpressionChanged: typing.ClassVar[QtCore.pyqtSignal]
    writeCustomSymbology: typing.ClassVar[QtCore.pyqtSignal]
    readCustomSymbology: typing.ClassVar[QtCore.pyqtSignal]
    editCommandDestroyed: typing.ClassVar[QtCore.pyqtSignal]
    editCommandEnded: typing.ClassVar[QtCore.pyqtSignal]
    editCommandStarted: typing.ClassVar[QtCore.pyqtSignal]
    featureBlendModeChanged: typing.ClassVar[QtCore.pyqtSignal]
    labelingFontNotFound: typing.ClassVar[QtCore.pyqtSignal]
    committedGeometriesChanges: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributeValuesChanges: typing.ClassVar[QtCore.pyqtSignal]
    committedFeaturesRemoved: typing.ClassVar[QtCore.pyqtSignal]
    committedFeaturesAdded: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributesAdded: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributesDeleted: typing.ClassVar[QtCore.pyqtSignal]
    geometryChanged: typing.ClassVar[QtCore.pyqtSignal]
    attributeValueChanged: typing.ClassVar[QtCore.pyqtSignal]
    subsetStringChanged: typing.ClassVar[QtCore.pyqtSignal]
    updatedFields: typing.ClassVar[QtCore.pyqtSignal]
    featuresDeleted: typing.ClassVar[QtCore.pyqtSignal]
    featureDeleted: typing.ClassVar[QtCore.pyqtSignal]
    featureAdded: typing.ClassVar[QtCore.pyqtSignal]
    beforeRemovingExpressionField: typing.ClassVar[QtCore.pyqtSignal]
    attributeDeleted: typing.ClassVar[QtCore.pyqtSignal]
    beforeAddingExpressionField: typing.ClassVar[QtCore.pyqtSignal]
    attributeAdded: typing.ClassVar[QtCore.pyqtSignal]
    afterRollBack: typing.ClassVar[QtCore.pyqtSignal]
    afterCommitChanges: typing.ClassVar[QtCore.pyqtSignal]
    beforeRollBack: typing.ClassVar[QtCore.pyqtSignal]
    beforeCommitChanges: typing.ClassVar[QtCore.pyqtSignal]
    beforeEditingStarted: typing.ClassVar[QtCore.pyqtSignal]
    beforeModifiedCheck: typing.ClassVar[QtCore.pyqtSignal]
    allowCommitChanged: typing.ClassVar[QtCore.pyqtSignal]
    selectionChanged: typing.ClassVar[QtCore.pyqtSignal]
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def hasSpatialIndex(self) -> Qgis.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) -> typing.Optional['QgsStoredExpressionManager']: ...
    def geometryOptions(self) -> typing.Optional['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) -> typing.Optional['QgsExpressionContextScope']: ...
    def createExpressionContext(self) -> 'QgsExpressionContext': ...
    def setAttributeTableConfig(self, attributeTableConfig: QgsAttributeTableConfig) -> None: ...
    def attributeTableConfig(self) -> QgsAttributeTableConfig: ...
    def conditionalStyles(self) -> typing.Optional['QgsConditionalLayerStyles']: ...
    def simplifyDrawingCanbeApplied(self, renderContext: 'QgsRenderContext', simplifyHint: Qgis.VectorRenderingSimplificationFlag) -> 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: Qgis.Aggregate, fieldOrExpression: typing.Optional[str], parameters: QgsAggregateCalculator.AggregateParameters = ..., context: typing.Optional['QgsExpressionContext'] = ..., fids: typing.Optional[typing.Any] = ..., feedback: typing.Optional['QgsFeedback'] = ...) -> typing.Tuple[typing.Any, typing.Optional[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: typing.Optional[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 fieldConfigurationFlags(self, index: int) -> Qgis.FieldConfigurationFlags: ...
    def setFieldConfigurationFlag(self, index: int, flag: Qgis.FieldConfigurationFlag, active: bool) -> None: ...
    def setFieldConfigurationFlags(self, index: int, flags: typing.Union[Qgis.FieldConfigurationFlags, Qgis.FieldConfigurationFlag]) -> None: ...
    def setConstraintExpression(self, index: int, expression: typing.Optional[str], description: typing.Optional[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: typing.Optional[str]) -> None: ...
    def editBuffer(self) -> typing.Optional['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[typing.Optional[str]]) -> None: ...
    def excludeAttributesWfs(self) -> typing.Set[str]: ...
    def setExcludeAttributesWms(self, att: typing.Iterable[typing.Optional[str]]) -> None: ...
    def excludeAttributesWms(self) -> typing.Set[str]: ...
    def setFieldDuplicatePolicy(self, index: int, policy: Qgis.FieldDuplicatePolicy) -> None: ...
    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: typing.Optional[str]) -> bool: ...
    def removeFieldAlias(self, index: int) -> None: ...
    def setFieldAlias(self, index: int, aliasString: typing.Optional[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 = ..., context: typing.Optional['QgsVectorLayerToolsContext'] = ...) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ..., skipDefaultValues: bool = ..., context: typing.Optional['QgsVectorLayerToolsContext'] = ...) -> 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 sourceExtent3D(self) -> 'QgsBox3D': ...
    def extent3D(self) -> 'QgsBox3D': ...
    def sourceExtent(self) -> 'QgsRectangle': ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: 'QgsRenderContext') -> typing.Optional['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: typing.Optional['QgsAbstractVectorLayerLabeling']) -> None: ...
    def labeling(self) -> typing.Optional['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: typing.Optional['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: typing.Optional['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: typing.Optional['QgsCurve']) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[int]]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable['QgsPointXY']) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[int]]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable['QgsPoint']) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[int]]: ...
    def deleteSelectedFeatures(self, context: typing.Optional['QgsVectorLayer.DeleteContext'] = ...) -> typing.Tuple[bool, typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def countSymbolFeatures(self, storeSymbolFids: bool = ...) -> typing.Optional['QgsVectorLayerFeatureCounter']: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def hasFeatures(self) -> Qgis.FeatureAvailability: ...
    def symbolFeatureIds(self, legendKey: typing.Optional[str]) -> typing.Any: ...
    @typing.overload
    def featureCount(self, legendKey: typing.Optional[str]) -> int: ...
    @typing.overload
    def featureCount(self) -> int: ...
    def readSld(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str]) -> bool: ...
    def writeSld(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], props: typing.Dict[str, typing.Any] = ...) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, layerNode: QtXml.QDomNode, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def auxiliaryLayer(self) -> typing.Optional['QgsAuxiliaryLayer']: ...
    def setAuxiliaryLayer(self, layer: typing.Optional['QgsAuxiliaryLayer'] = ...) -> None: ...
    def loadAuxiliaryLayer(self, storage: 'QgsAuxiliaryStorage', key: typing.Optional[str] = ...) -> bool: ...
    def resolveReferences(self, project: typing.Optional['QgsProject']) -> None: ...
    def decodedSource(self, source: typing.Optional[str], provider: typing.Optional[str], context: 'QgsReadWriteContext') -> str: ...
    def encodedSource(self, source: typing.Optional[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: typing.Optional[str]) -> None: ...
    def addFeatureRendererGenerator(self, generator: typing.Optional['QgsFeatureRendererGenerator']) -> None: ...
    def setRenderer(self, r: typing.Optional['QgsFeatureRenderer']) -> None: ...
    def renderer(self) -> typing.Optional['QgsFeatureRenderer']: ...
    def diagramLayerSettings(self) -> typing.Optional['QgsDiagramLayerSettings']: ...
    def setDiagramLayerSettings(self, s: 'QgsDiagramLayerSettings') -> None: ...
    def diagramRenderer(self) -> typing.Optional['QgsDiagramRenderer']: ...
    def setDiagramRenderer(self, r: typing.Optional['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: typing.Optional[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) -> typing.Optional['QgsActionManager']: ...
    def updateExpressionField(self, index: int, exp: typing.Optional[str]) -> None: ...
    def expressionField(self, index: int) -> str: ...
    def removeExpressionField(self, index: int) -> None: ...
    def addExpressionField(self, exp: typing.Optional[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) -> typing.Optional['QgsVectorLayerJoinBuffer']: ...
    def removeJoin(self, joinLayerId: typing.Optional[str]) -> bool: ...
    def addJoin(self, joinInfo: 'QgsVectorLayerJoinInfo') -> bool: ...
    def setCoordinateSystem(self) -> None: ...
    def setProviderEncoding(self, encoding: typing.Optional[str]) -> None: ...
    def createProfileGenerator(self, request: 'QgsProfileRequest') -> typing.Optional['QgsAbstractProfileGenerator']: ...
    def elevationProperties(self) -> typing.Optional['QgsMapLayerElevationProperties']: ...
    def temporalProperties(self) -> typing.Optional['QgsMapLayerTemporalProperties']: ...
    def selectionProperties(self) -> typing.Optional['QgsMapLayerSelectionProperties']: ...
    def dataProvider(self) -> typing.Optional['QgsVectorDataProvider']: ...
    def hasMapTips(self) -> bool: ...
    def displayExpression(self) -> str: ...
    def setDisplayExpression(self, displayExpression: typing.Optional[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) -> typing.Optional['QgsVectorLayer']: ...
    def __repr__(self) -> typing.Any: ...


class QgsAuxiliaryLayer(QgsVectorLayer):

    def __init__(self, pkField: typing.Optional[str], filename: typing.Optional[str], table: typing.Optional[str], vlayer: typing.Optional[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: typing.Optional[QgsVectorLayer], overwriteExisting: bool = ...) -> int: ...
    @typing.overload
    @staticmethod
    def createProperty(property: 'QgsDiagramLayerSettings.Property', vlayer: typing.Optional[QgsVectorLayer], overwriteExisting: bool = ...) -> int: ...
    @typing.overload
    @staticmethod
    def createProperty(property: 'QgsCallout.Property', vlayer: typing.Optional[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) -> typing.Optional[QgsVectorLayer]: ...
    def clone(self, layer: typing.Optional[QgsVectorLayer]) -> typing.Optional['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: typing.Optional[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: typing.Optional[str]) -> bool: ...
    @staticmethod
    def deleteTable(uri: 'QgsDataSourceUri') -> bool: ...
    def createAuxiliaryLayer(self, field: 'QgsField', layer: typing.Optional[QgsVectorLayer]) -> typing.Optional[QgsAuxiliaryLayer]: ...
    def save(self) -> bool: ...
    @typing.overload
    def saveAs(self, filename: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str]) -> None: ...
    def group(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: typing.Optional[str]) -> None: ...
    def id(self) -> str: ...


class QgsBookmarkManager(QtCore.QObject):

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

    bookmarkChanged: typing.ClassVar[QtCore.pyqtSignal]
    bookmarkAboutToBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    bookmarkRemoved: typing.ClassVar[QtCore.pyqtSignal]
    bookmarkAdded: typing.ClassVar[QtCore.pyqtSignal]
    bookmarkAboutToBeAdded: typing.ClassVar[QtCore.pyqtSignal]
    def importFromFile(self, path: typing.Optional[str]) -> bool: ...
    @staticmethod
    def exportToFile(path: typing.Optional[str], managers: typing.Iterable['QgsBookmarkManager'], group: typing.Optional[str] = ...) -> bool: ...
    def moveBookmark(self, id: typing.Optional[str], destination: typing.Optional['QgsBookmarkManager']) -> bool: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def bookmarksByGroup(self, group: typing.Optional[str]) -> typing.List[QgsBookmark]: ...
    def bookmarkById(self, id: typing.Optional[str]) -> QgsBookmark: ...
    def bookmarks(self) -> typing.List[QgsBookmark]: ...
    def renameGroup(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def groups(self) -> typing.List[str]: ...
    def clear(self) -> None: ...
    def updateBookmark(self, bookmark: QgsBookmark) -> bool: ...
    def removeBookmark(self, id: typing.Optional[str]) -> bool: ...
    def addBookmark(self, bookmark: QgsBookmark) -> typing.Tuple[str, typing.Optional[bool]]: ...
    def initialize(self, filePath: typing.Optional[str]) -> None: ...
    @staticmethod
    def createProjectBasedManager(project: typing.Optional['QgsProject']) -> typing.Optional['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 CustomRole(int):
        Extent = ... # type: QgsBookmarkManagerModel.CustomRole
        Name = ... # type: QgsBookmarkManagerModel.CustomRole
        Id = ... # type: QgsBookmarkManagerModel.CustomRole
        Group = ... # type: QgsBookmarkManagerModel.CustomRole
        Rotation = ... # type: QgsBookmarkManagerModel.CustomRole

    def __init__(self, manager: typing.Optional[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: typing.Optional[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: typing.Optional['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: typing.Optional['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: typing.Optional['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: ...


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) -> typing.Optional['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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[QtGui.QGradient], opacity: float = ...) -> None: ...
    def setInfo(self, info: typing.Dict[typing.Optional[str], typing.Optional[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) -> typing.Optional['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] = ...) -> typing.Optional[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) -> typing.Optional['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] = ...) -> typing.Optional[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) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        def __xor__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        def __ior__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        def __or__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        def __iand__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        def __and__(self, f: typing.Union['QgsColorScheme.SchemeFlags', 'QgsColorScheme.SchemeFlag']) -> 'QgsColorScheme.SchemeFlags': ...
        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) -> typing.Optional['QgsColorScheme']: ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], typing.Optional[str]]], context: typing.Optional[str] = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: typing.Optional[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], typing.Optional[str]]]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPresetSchemeColorRamp') -> None: ...

    def isEditable(self) -> bool: ...
    def fetchColors(self, context: typing.Optional[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) -> typing.Optional['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], typing.Optional[str]]], a1: typing.Optional[str] = ..., a2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsColorRamp]: ...


class QgsColorBrewerColorRamp(QgsColorRamp):

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

    def loadPalette(self) -> None: ...
    @staticmethod
    def listSchemeVariants(schemeName: typing.Optional[str]) -> typing.List[int]: ...
    @staticmethod
    def listSchemeNames() -> typing.List[str]: ...
    def setColors(self, colors: int) -> None: ...
    def setSchemeName(self, schemeName: typing.Optional[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) -> typing.Optional['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] = ...) -> typing.Optional[QgsColorRamp]: ...


class QgsCptCityColorRamp(QgsGradientColorRamp):

    @typing.overload
    def __init__(self, schemeName: typing.Optional[str] = ..., variantName: typing.Optional[str] = ..., inverted: bool = ..., doLoadFile: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, schemeName: typing.Optional[str], variantList: typing.Iterable[typing.Optional[str]], variantName: typing.Optional[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: typing.Optional[str], variantName: typing.Optional[str] = ..., variantList: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def setVariantList(self, variantList: typing.Iterable[typing.Optional[str]]) -> None: ...
    def setVariantName(self, variantName: typing.Optional[str]) -> None: ...
    def setSchemeName(self, schemeName: typing.Optional[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) -> typing.Optional[QgsGradientColorRamp]: ...
    def copy(self, other: typing.Optional['QgsCptCityColorRamp']) -> None: ...
    def clone(self) -> typing.Optional['QgsCptCityColorRamp']: ...
    def invert(self) -> None: ...
    def type(self) -> str: ...
    @staticmethod
    def typeString() -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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], typing.Optional[str]]], context: typing.Optional[str] = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def fetchColors(self, context: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def flags(self) -> QgsColorScheme.SchemeFlags: ...
    def isEditable(self) -> bool: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['QgsRecentColorScheme']: ...
    def fetchColors(self, context: typing.Optional[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) -> typing.Optional['QgsCustomColorScheme']: ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], typing.Optional[str]]], context: typing.Optional[str] = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: typing.Optional[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) -> typing.Optional['QgsProjectColorScheme']: ...
    def setColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], typing.Optional[str]]], context: typing.Optional[str] = ..., baseColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> bool: ...
    def isEditable(self) -> bool: ...
    def fetchColors(self, context: typing.Optional[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) -> typing.Optional[QgsColorScheme]: ...
    def setRandomStyleColorScheme(self, scheme: typing.Optional[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: typing.Optional[QgsColorScheme]) -> bool: ...
    def addColorScheme(self, scheme: typing.Optional[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: typing.Optional[str]) -> QtGui.QColor: ...
    @staticmethod
    def colorToString(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...
    @staticmethod
    def readXml(element: QtXml.QDomElement, identifier: typing.Optional[str], context: 'QgsReadWriteContext') -> QtGui.QColor: ...
    @staticmethod
    def writeXml(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], identifier: typing.Optional[str], document: QtXml.QDomDocument, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...


class QgsConditionalLayerStyles(QtCore.QObject):

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

    changed: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> typing.List['QgsConditionalStyle']: ...
    def setFieldStyles(self, fieldName: typing.Optional[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: typing.Optional[str]) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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) -> typing.Optional['QgsSymbol']: ...
    def icon(self) -> QtGui.QPixmap: ...
    def name(self) -> str: ...
    def displayText(self) -> str: ...
    def setSymbol(self, value: typing.Optional['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: typing.Optional[str]) -> None: ...
    def setName(self, value: typing.Optional[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: typing.Optional[str]) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __xor__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __ior__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __or__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __iand__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        def __and__(self, f: typing.Union['QgsCoordinateFormatter.FormatFlags', 'QgsCoordinateFormatter.FormatFlag']) -> 'QgsCoordinateFormatter.FormatFlags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __xor__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __ior__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __or__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __iand__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __and__(self, f: typing.Union['QgsTask.Flags', 'QgsTask.Flag']) -> 'QgsTask.Flags': ...
        def __invert__(self) -> 'QgsTask.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, description: typing.Optional[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: ...
    taskTerminated: typing.ClassVar[QtCore.pyqtSignal]
    taskCompleted: typing.ClassVar[QtCore.pyqtSignal]
    begun: typing.ClassVar[QtCore.pyqtSignal]
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    progressChanged: typing.ClassVar[QtCore.pyqtSignal]
    def waitForFinished(self, timeout: int = ...) -> bool: ...
    def dependentLayers(self) -> typing.List[QgsMapLayer]: ...
    def setDependentLayers(self, dependentLayers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addSubTask(self, subTask: typing.Optional['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: typing.Optional[str]) -> None: ...
    def flags(self) -> 'QgsTask.Flags': ...


class QgsCopyFileTask(QgsTask):

    def __init__(self, source: typing.Optional[str], destination: typing.Optional[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: typing.Optional['QgsCredentials']) -> None: ...
    def requestMasterPassword(self, password: typing.Optional[str], stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def request(self, realm: typing.Optional[str], username: typing.Optional[str], password: typing.Optional[str], message: typing.Optional[str] = ...) -> typing.Tuple[bool, str, str]: ...
    def mutex(self) -> typing.Optional[QtCore.QMutex]: ...
    def unlock(self) -> None: ...
    def lock(self) -> None: ...
    @staticmethod
    def instance() -> typing.Optional['QgsCredentials']: ...
    def getMasterPassword(self, password: typing.Optional[str], stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def put(self, realm: typing.Optional[str], username: typing.Optional[str], password: typing.Optional[str]) -> None: ...
    def get(self, realm: typing.Optional[str], username: typing.Optional[str], password: typing.Optional[str], message: typing.Optional[str] = ..., requestCredentials: bool = ...) -> typing.Tuple[bool, str, str]: ...


class QgsCredentialsNone(QtCore.QObject, QgsCredentials):

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

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


class QgsCredentialsConsole(QtCore.QObject, QgsCredentials):

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

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


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: typing.Optional[str], type: 'QgsDartMeasurement.Type', value: typing.Optional[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 CustomRole(int):
        Empty = ... # type: QgsDatabaseSchemaModel.CustomRole

    @typing.overload
    def __init__(self, provider: typing.Optional[str], connection: typing.Optional[str], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, connection: typing.Optional['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 CustomRole(int):
        TableName = ... # type: QgsDatabaseTableModel.CustomRole
        Schema = ... # type: QgsDatabaseTableModel.CustomRole
        TableFlags = ... # type: QgsDatabaseTableModel.CustomRole
        Comment = ... # type: QgsDatabaseTableModel.CustomRole
        CustomInfo = ... # type: QgsDatabaseTableModel.CustomRole
        WkbType = ... # type: QgsDatabaseTableModel.CustomRole
        Crs = ... # type: QgsDatabaseTableModel.CustomRole
        Empty = ... # type: QgsDatabaseTableModel.CustomRole

    @typing.overload
    def __init__(self, provider: typing.Optional[str], connection: typing.Optional[str], schema: typing.Optional[str] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, connection: typing.Optional['QgsAbstractDatabaseProviderConnection'], schema: typing.Optional[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: typing.Optional[str]
        size = ... # type: float

        @typing.overload
        def __init__(self, size: float, label: typing.Optional[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') -> typing.Optional['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[typing.Optional[QtCore.QSizeF], typing.Optional[float]]: ...
    def legendSymbolList(self) -> typing.List['QgsLegendSymbolItem']: ...
    def updateFromSymbolAndProperty(self, symbol: typing.Optional['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: typing.Optional[str]) -> None: ...
    def classes(self) -> typing.List['QgsDataDefinedSizeLegend.SizeClass']: ...
    def setClasses(self, classes: typing.Iterable['QgsDataDefinedSizeLegend.SizeClass']) -> None: ...
    def sizeScaleTransformer(self) -> typing.Optional['QgsSizeScaleTransformer']: ...
    def setSizeScaleTransformer(self, transformer: typing.Optional['QgsSizeScaleTransformer']) -> None: ...
    def lineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsMarkerSymbol']: ...
    def setSymbol(self, symbol: typing.Optional['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: ...

    def setContainsElevationData(self, contains: bool) -> None: ...
    def containsElevationData(self) -> bool: ...


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


class QgsDateTimeStatisticalSummary(PyQt5.sip.wrapper):

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

    @staticmethod
    def displayName(statistic: Qgis.DateTimeStatistic) -> 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: Qgis.DateTimeStatistic) -> 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[Qgis.DateTimeStatistics, Qgis.DateTimeStatistic]) -> None: ...
    def statistics(self) -> Qgis.DateTimeStatistics: ...


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: typing.Optional[str]) -> None: ...
    def _setFilterWildcard(self, pattern: typing.Optional[str]) -> None: ...


class QgsDatabaseQueryLogEntry(PyQt5.sip.wrapper):

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

    @typing.overload
    def __init__(self, query: typing.Optional[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: typing.Optional[str] = ..., applyOnUpdate: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDefaultValue') -> None: ...

    def __ne__(self, other: object): ...
    def isValid(self) -> bool: ...
    def setApplyOnUpdate(self, applyOnUpdate: bool) -> None: ...
    def applyOnUpdate(self) -> bool: ...
    def setExpression(self, expression: typing.Optional[str]) -> None: ...
    def expression(self) -> str: ...
    def __repr__(self) -> typing.Any: ...
    def __eq__(self, other: object): ...


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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __xor__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __ior__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __or__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __iand__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        def __and__(self, f: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
        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: typing.Optional['QgsDiagramRenderer']) -> None: ...
    def renderer(self) -> typing.Optional['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[typing.Optional[str]]
    categoryColors = ... # type: typing.Iterable[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]]
    categoryLabels = ... # type: typing.Iterable[typing.Optional[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: typing.Optional['QgsPaintEffect']) -> None: ...
    def paintEffect(self) -> typing.Optional['QgsPaintEffect']: ...
    def setShowAxis(self, showAxis: bool) -> None: ...
    def showAxis(self) -> bool: ...
    def setAxisLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def axisLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def legendItems(self, nodeLayer: typing.Optional['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: typing.Optional[str]
    classificationAttributeIsExpression = ... # type: bool
    classificationField = ... # type: typing.Optional[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: typing.Optional[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: typing.Optional['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) -> typing.Optional['QgsDiagram']: ...
    def setDiagram(self, d: typing.Optional['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) -> typing.Optional['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: typing.Optional['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) -> typing.Optional['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) -> typing.Optional[QgsDataDefinedSizeLegend]: ...
    def setDataDefinedSizeLegend(self, settings: typing.Optional[QgsDataDefinedSizeLegend]) -> None: ...
    def legendItems(self, nodeLayer: typing.Optional['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: typing.Optional[str]) -> None: ...
    def classificationAttributeExpression(self) -> str: ...
    def setClassificationField(self, field: typing.Optional[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) -> typing.Optional['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, typing.Optional['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: typing.Optional[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: typing.Optional[str], config: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEditorWidgetSetup') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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, devicePixelRatio: float = ...) -> 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) -> typing.Optional[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: typing.Optional[QgsMapLayer]) -> bool: ...
    @staticmethod
    def canEnableElevationForLayer(layer: typing.Optional[QgsMapLayer]) -> bool: ...
    @staticmethod
    def significantZValuesForLayers(layers: typing.Iterable[QgsMapLayer]) -> typing.List[float]: ...
    @staticmethod
    def significantZValuesForProject(project: typing.Optional['QgsProject']) -> typing.List[float]: ...
    @staticmethod
    def calculateZRangeForProject(project: typing.Optional['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: typing.Optional[str], tag: typing.Optional[str] = ..., file: typing.Optional[str] = ..., function: typing.Optional[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: typing.Optional[str], tag: typing.Optional[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: typing.Optional[str], tag: typing.Optional[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: typing.Optional[str], optional: bool = ..., defaultValue: typing.Any = ..., isSubExpression: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionFunction.Parameter') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def isSubExpression(self) -> bool: ...
        def defaultValue(self) -> typing.Any: ...
        def optional(self) -> bool: ...
        def name(self) -> str: ...

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

    def __ne__(self, other: object): ...
    @staticmethod
    def allParamsStatic(node: typing.Optional['QgsExpressionNodeFunction'], parent: typing.Optional['QgsExpression'], context: typing.Optional['QgsExpressionContext']) -> bool: ...
    def handlesNull(self) -> bool: ...
    def __eq__(self, other: object): ...
    def run(self, args: typing.Optional['QgsExpressionNode.NodeList'], context: typing.Optional['QgsExpressionContext'], parent: typing.Optional['QgsExpression'], node: typing.Optional['QgsExpressionNodeFunction']) -> typing.Any: ...
    def func(self, values: typing.Iterable[typing.Any], context: typing.Optional['QgsExpressionContext'], parent: typing.Optional['QgsExpression'], node: typing.Optional['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: typing.Optional['QgsExpressionNodeFunction']) -> typing.Set[str]: ...
    def prepare(self, node: typing.Optional['QgsExpressionNodeFunction'], parent: typing.Optional['QgsExpression'], context: typing.Optional['QgsExpressionContext']) -> bool: ...
    def isStatic(self, node: typing.Optional['QgsExpressionNodeFunction'], parent: typing.Optional['QgsExpression'], context: typing.Optional['QgsExpressionContext']) -> bool: ...
    def lazyEval(self) -> bool: ...
    def aliases(self) -> typing.List[str]: ...
    def usesGeometry(self, node: typing.Optional['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: typing.Optional[str], params: int, group: typing.Optional[str], helpText: typing.Optional[str] = ..., usesGeometry: bool = ..., referencedColumns: typing.Iterable[typing.Optional[str]] = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, fnname: typing.Optional[str], params: typing.Iterable[QgsExpressionFunction.Parameter], group: typing.Optional[str], helpText: typing.Optional[str] = ..., usesGeometry: bool = ..., referencedColumns: typing.Iterable[typing.Optional[str]] = ..., lazyEval: bool = ..., handlesNull: bool = ..., isContextual: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScopedExpressionFunction') -> None: ...

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


class QgsExpressionContextScope(PyQt5.sip.wrapper):

    class StaticVariable(PyQt5.sip.wrapper):

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

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

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

    def layerStores(self) -> typing.List['QgsMapLayerStore']: ...
    def addLayerStore(self, store: typing.Optional['QgsMapLayerStore']) -> None: ...
    def removeHiddenVariable(self, hiddenVariable: typing.Optional[str]) -> None: ...
    def addHiddenVariable(self, hiddenVariable: typing.Optional[str]) -> None: ...
    def setHiddenVariables(self, hiddenVariables: typing.Iterable[typing.Optional[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: typing.Optional[str], function: typing.Optional[QgsScopedExpressionFunction]) -> None: ...
    def functionNames(self) -> typing.List[str]: ...
    def function(self, name: typing.Optional[str]) -> typing.Optional[QgsExpressionFunction]: ...
    def hasFunction(self, name: typing.Optional[str]) -> bool: ...
    def variableCount(self) -> int: ...
    def description(self, name: typing.Optional[str]) -> str: ...
    def isStatic(self, name: typing.Optional[str]) -> bool: ...
    def isReadOnly(self, name: typing.Optional[str]) -> bool: ...
    def filteredVariableNames(self) -> typing.List[str]: ...
    def variableNames(self) -> typing.List[str]: ...
    def variable(self, name: typing.Optional[str]) -> typing.Any: ...
    def hasVariable(self, name: typing.Optional[str]) -> bool: ...
    def removeVariable(self, name: typing.Optional[str]) -> bool: ...
    def addVariable(self, variable: 'QgsExpressionContextScope.StaticVariable') -> None: ...
    def setVariable(self, name: typing.Optional[str], value: typing.Any, isStatic: bool = ...) -> None: ...
    def name(self) -> str: ...


class QgsExpressionContext(PyQt5.sip.wrapper):

    EXPR_CLUSTER_COLOR = ... # type: typing.Optional[str]
    EXPR_CLUSTER_SIZE = ... # type: typing.Optional[str]
    EXPR_FIELDS = ... # type: typing.Optional[str]
    EXPR_GEOMETRY_PART_COUNT = ... # type: typing.Optional[str]
    EXPR_GEOMETRY_PART_NUM = ... # type: typing.Optional[str]
    EXPR_GEOMETRY_POINT_COUNT = ... # type: typing.Optional[str]
    EXPR_GEOMETRY_POINT_NUM = ... # type: typing.Optional[str]
    EXPR_GEOMETRY_RING_NUM = ... # type: typing.Optional[str]
    EXPR_ORIGINAL_VALUE = ... # type: typing.Optional[str]
    EXPR_SYMBOL_ANGLE = ... # type: typing.Optional[str]
    EXPR_SYMBOL_COLOR = ... # type: typing.Optional[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) -> typing.Optional['QgsFeedback']: ...
    def setFeedback(self, feedback: typing.Optional['QgsFeedback']) -> None: ...
    def loadedLayerStore(self) -> typing.Optional['QgsMapLayerStore']: ...
    def setLoadedLayerStore(self, store: typing.Optional['QgsMapLayerStore']) -> None: ...
    def layerStores(self) -> typing.List['QgsMapLayerStore']: ...
    def clearCachedValues(self) -> None: ...
    def cachedValue(self, key: typing.Optional[str]) -> typing.Any: ...
    def hasCachedValue(self, key: typing.Optional[str]) -> bool: ...
    def setCachedValue(self, key: typing.Optional[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) -> typing.Optional[QgsExpressionContextScope]: ...
    def appendScopes(self, scopes: typing.Iterable[QgsExpressionContextScope]) -> None: ...
    def appendScope(self, scope: typing.Optional[QgsExpressionContextScope]) -> None: ...
    def scopeCount(self) -> int: ...
    def function(self, name: typing.Optional[str]) -> typing.Optional[QgsExpressionFunction]: ...
    def functionNames(self) -> typing.List[str]: ...
    def hasFunction(self, name: typing.Optional[str]) -> bool: ...
    def description(self, name: typing.Optional[str]) -> str: ...
    def isReadOnly(self, name: typing.Optional[str]) -> bool: ...
    def filteredVariableNames(self) -> typing.List[str]: ...
    def variableNames(self) -> typing.List[str]: ...
    @typing.overload
    def indexOfScope(self, scope: typing.Optional[QgsExpressionContextScope]) -> int: ...
    @typing.overload
    def indexOfScope(self, scopeName: typing.Optional[str]) -> int: ...
    def scopes(self) -> typing.List[QgsExpressionContextScope]: ...
    def lastScope(self) -> typing.Optional[QgsExpressionContextScope]: ...
    def scope(self, index: int) -> typing.Optional[QgsExpressionContextScope]: ...
    def activeScopeForVariable(self, name: typing.Optional[str]) -> typing.Optional[QgsExpressionContextScope]: ...
    def setHighlightedFunctions(self, names: typing.Iterable[typing.Optional[str]]) -> None: ...
    def isHighlightedFunction(self, name: typing.Optional[str]) -> bool: ...
    def setHighlightedVariables(self, variableNames: typing.Iterable[typing.Optional[str]]) -> None: ...
    def highlightedVariables(self) -> typing.List[str]: ...
    def isHighlightedVariable(self, name: typing.Optional[str]) -> bool: ...
    def variablesToMap(self) -> typing.Dict[str, typing.Any]: ...
    def variable(self, name: typing.Optional[str]) -> typing.Any: ...
    def hasVariable(self, name: typing.Optional[str]) -> bool: ...


class QgsExpressionFieldBuffer(PyQt5.sip.wrapper):

    class ExpressionField(PyQt5.sip.wrapper):

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

        @typing.overload
        def __init__(self, exp: typing.Optional[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: typing.Optional[str]) -> None: ...
    def renameExpression(self, index: int, name: typing.Optional[str]) -> None: ...
    def removeExpression(self, index: int) -> None: ...
    def addExpression(self, exp: typing.Optional[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: typing.Optional[str]) -> int: ...
    def setEmbeddedSymbol(self, symbol: typing.Optional['QgsSymbol']) -> None: ...
    def embeddedSymbol(self) -> typing.Optional['QgsSymbol']: ...
    def isUnsetValue(self, fieldIdx: int) -> bool: ...
    @typing.overload
    def attribute(self, name: typing.Optional[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: typing.Optional['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: typing.Optional[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.Optional[typing.Union[bool, int, float, str, typing.Any]]) -> bool: ...
    @typing.overload
    def setAttribute(self, name: typing.Optional[str], value: typing.Optional[typing.Union[bool, int, float, str, 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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def __hash__(self) -> int: ...
    @typing.overload
    def __delitem__(self, key: int) -> None: ...
    @typing.overload
    def __delitem__(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def __setitem__(self, key: int, value: typing.Optional[typing.Union[bool, int, float, str, typing.Any]]) -> None: ...
    @typing.overload
    def __setitem__(self, key: typing.Optional[str], value: typing.Optional[typing.Union[bool, int, float, str, typing.Any]]) -> None: ...
    @typing.overload
    def __getitem__(self, key: int) -> typing.Any: ...
    @typing.overload
    def __getitem__(self, name: typing.Optional[str]) -> typing.Any: ...
    def __iter__(self) -> typing.Any: ...


class QgsFeaturePickerModelBase(QtCore.QAbstractItemModel):

    class CustomRole(int):
        IdentifierValue = ... # type: QgsFeaturePickerModelBase.CustomRole
        IdentifierValues = ... # type: QgsFeaturePickerModelBase.CustomRole
        Value = ... # type: QgsFeaturePickerModelBase.CustomRole
        Feature = ... # type: QgsFeaturePickerModelBase.CustomRole
        FeatureId = ... # type: QgsFeaturePickerModelBase.CustomRole

    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: ...
    fetchLimitChanged: typing.ClassVar[QtCore.pyqtSignal]
    fetchGeometryChanged: typing.ClassVar[QtCore.pyqtSignal]
    allowNullChanged: typing.ClassVar[QtCore.pyqtSignal]
    endUpdate: typing.ClassVar[QtCore.pyqtSignal]
    beginUpdate: typing.ClassVar[QtCore.pyqtSignal]
    extraValueDoesNotExistChanged: typing.ClassVar[QtCore.pyqtSignal]
    extraIdentifierValueIndexChanged: typing.ClassVar[QtCore.pyqtSignal]
    extraIdentifierValueChanged: typing.ClassVar[QtCore.pyqtSignal]
    filterJobCompleted: typing.ClassVar[QtCore.pyqtSignal]
    isLoadingChanged: typing.ClassVar[QtCore.pyqtSignal]
    filterExpressionChanged: typing.ClassVar[QtCore.pyqtSignal]
    filterValueChanged: typing.ClassVar[QtCore.pyqtSignal]
    displayExpressionChanged: typing.ClassVar[QtCore.pyqtSignal]
    sourceLayerChanged: typing.ClassVar[QtCore.pyqtSignal]
    currentFeatureChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def filterValue(self) -> str: ...
    def setDisplayExpression(self, displayExpression: typing.Optional[str]) -> None: ...
    def displayExpression(self) -> str: ...
    def setSourceLayer(self, sourceLayer: typing.Optional[QgsVectorLayer]) -> None: ...
    def sourceLayer(self) -> typing.Optional[QgsVectorLayer]: ...


class QgsFeaturePickerModel(QgsFeaturePickerModelBase):

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

    featureChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: ...

    extraIdentifierValuesChanged: typing.ClassVar[QtCore.pyqtSignal]
    identifierFieldsChanged: typing.ClassVar[QtCore.pyqtSignal]
    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[typing.Optional[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) -> typing.Optional['QgsFeatureFilterProvider']: ...
    def layerAttributes(self, layer: typing.Optional[QgsVectorLayer], attributes: typing.Iterable[typing.Optional[str]]) -> typing.List[str]: ...
    def filterFeatures(self, layer: typing.Optional[QgsVectorLayer], featureRequest: 'QgsFeatureRequest') -> None: ...


class QgsFeatureIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, iter: typing.Optional[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) -> typing.Optional['QgsFeatureIterator']: ...


class QgsFeatureRequest(PyQt5.sip.wrapper):

    class OrderByClause(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, expression: typing.Optional[str], ascending: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, expression: typing.Optional[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 __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        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: typing.Optional[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']: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    ALL_ATTRIBUTES = ... # type: typing.Optional[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) -> typing.Optional['QgsFeedback']: ...
    def setFeedback(self, feedback: typing.Optional['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.Optional[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[typing.Optional[str]], fields: 'QgsFields') -> 'QgsFeatureRequest': ...
    @typing.overload
    def setSubsetOfAttributes(self, attrNames: typing.Iterable[typing.Optional[str]], fields: 'QgsFields') -> 'QgsFeatureRequest': ...
    def flags(self) -> Qgis.FeatureRequestFlags: ...
    def setFlags(self, flags: typing.Union[Qgis.FeatureRequestFlags, Qgis.FeatureRequestFlag]) -> '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: typing.Optional[str], ascending: bool = ...) -> 'QgsFeatureRequest': ...
    @typing.overload
    def addOrderBy(self, expression: typing.Optional[str], ascending: bool, nullsfirst: bool) -> 'QgsFeatureRequest': ...
    def disableFilter(self) -> 'QgsFeatureRequest': ...
    def setExpressionContext(self, context: QgsExpressionContext) -> 'QgsFeatureRequest': ...
    def expressionContext(self) -> typing.Optional[QgsExpressionContext]: ...
    def combineFilterExpression(self, expression: typing.Optional[str]) -> 'QgsFeatureRequest': ...
    def filterExpression(self) -> typing.Optional['QgsExpression']: ...
    def setFilterExpression(self, expression: typing.Optional[str]) -> 'QgsFeatureRequest': ...
    def setInvalidGeometryCallback(self, a0: typing.Optional[typing.Callable[..., None]]) -> 'QgsFeatureRequest': ...
    def invalidGeometryCheck(self) -> Qgis.InvalidGeometryCheck: ...
    def setInvalidGeometryCheck(self, check: Qgis.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) -> Qgis.FeatureRequestFilterType: ...
    def compare(self, other: 'QgsFeatureRequest') -> bool: ...


class QgsAbstractFeatureSource(PyQt5.sip.wrapper):

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

    def iteratorClosed(self, it: typing.Optional[QgsAbstractFeatureIterator]) -> None: ...
    def iteratorOpened(self, it: typing.Optional[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[typing.Optional[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: ...

    processedCountChanged: typing.ClassVar[QtCore.pyqtSignal]
    progressChanged: typing.ClassVar[QtCore.pyqtSignal]
    canceled: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str] = ..., type: QtCore.QMetaType.Type = ..., typeName: typing.Optional[str] = ..., len: int = ..., prec: int = ..., comment: typing.Optional[str] = ..., subType: QtCore.QMetaType.Type = ...) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], type: QtCore.QVariant.Type, typeName: typing.Optional[str] = ..., len: int = ..., prec: int = ..., comment: typing.Optional[str] = ..., subType: QtCore.QVariant.Type = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsField') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setDuplicatePolicy(self, policy: Qgis.FieldDuplicatePolicy) -> None: ...
    def duplicatePolicy(self) -> Qgis.FieldDuplicatePolicy: ...
    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: ...
    @staticmethod
    def readableConfigurationFlag(flag: Qgis.FieldConfigurationFlag) -> str: ...
    def displayString(self, v: typing.Any) -> str: ...
    def setConfigurationFlags(self, flags: typing.Union[Qgis.FieldConfigurationFlags, Qgis.FieldConfigurationFlag]) -> None: ...
    def configurationFlags(self) -> Qgis.FieldConfigurationFlags: ...
    def setAlias(self, alias: typing.Optional[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: typing.Optional[str]) -> None: ...
    def setPrecision(self, precision: int) -> None: ...
    def setLength(self, len: int) -> None: ...
    def setTypeName(self, typeName: typing.Optional[str]) -> None: ...
    @typing.overload
    def setSubType(self, subType: QtCore.QMetaType.Type) -> None: ...
    @typing.overload
    def setSubType(self, subType: QtCore.QVariant.Type) -> None: ...
    @typing.overload
    def setType(self, type: QtCore.QMetaType.Type) -> None: ...
    @typing.overload
    def setType(self, type: QtCore.QVariant.Type) -> None: ...
    def setName(self, name: typing.Optional[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.QMetaType.Type: ...
    def type(self) -> QtCore.QMetaType.Type: ...
    def friendlyTypeString(self) -> str: ...
    def displayType(self, showConstraints: bool = ...) -> str: ...
    def displayNameWithAlias(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        def __xor__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        def __ior__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        def __or__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        def __iand__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        def __and__(self, f: typing.Union['QgsFieldConstraints.Constraints', 'QgsFieldConstraints.Constraint']) -> 'QgsFieldConstraints.Constraints': ...
        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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def setDomainName(self, domain: typing.Optional[str]) -> None: ...
    def domainName(self) -> str: ...
    def setConstraintExpression(self, expression: typing.Optional[str], description: typing.Optional[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: typing.Optional['QgsProject']) -> None: ...
    def project(self) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        def __xor__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        def __ior__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        def __or__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        def __iand__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        def __and__(self, f: typing.Union['QgsFieldFormatter.Flags', 'QgsFieldFormatter.Flag']) -> 'QgsFieldFormatter.Flags': ...
        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: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def alignmentFlag(self, layer: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any]) -> QtCore.Qt.AlignmentFlag: ...
    def sortValue(self, layer: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: typing.Optional[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: ...

    fieldFormatterRemoved: typing.ClassVar[QtCore.pyqtSignal]
    fieldFormatterAdded: typing.ClassVar[QtCore.pyqtSignal]
    def fallbackFieldFormatter(self) -> typing.Optional[QgsFieldFormatter]: ...
    def fieldFormatter(self, id: typing.Optional[str]) -> typing.Optional[QgsFieldFormatter]: ...
    @typing.overload
    def removeFieldFormatter(self, formatter: typing.Optional[QgsFieldFormatter]) -> None: ...
    @typing.overload
    def removeFieldFormatter(self, id: typing.Optional[str]) -> None: ...
    def addFieldFormatter(self, formatter: typing.Optional[QgsFieldFormatter]) -> None: ...


class QgsFieldModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        FieldName = ... # type: QgsFieldModel.CustomRole
        FieldIndex = ... # type: QgsFieldModel.CustomRole
        Expression = ... # type: QgsFieldModel.CustomRole
        IsExpression = ... # type: QgsFieldModel.CustomRole
        ExpressionValidity = ... # type: QgsFieldModel.CustomRole
        FieldType = ... # type: QgsFieldModel.CustomRole
        FieldOrigin = ... # type: QgsFieldModel.CustomRole
        IsEmpty = ... # type: QgsFieldModel.CustomRole
        EditorWidgetType = ... # type: QgsFieldModel.CustomRole
        JoinedFieldIsEditable = ... # type: QgsFieldModel.CustomRole
        FieldIsWidgetEditable = ... # type: QgsFieldModel.CustomRole

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

    def updateModel(self) -> None: ...
    def setLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def fields(self) -> 'QgsFields': ...
    def setFields(self, fields: 'QgsFields') -> None: ...
    @staticmethod
    def fieldToolTipExtended(field: QgsField, layer: typing.Optional[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) -> typing.Optional[QgsVectorLayer]: ...
    def removeExpression(self) -> None: ...
    def setExpression(self, expression: typing.Optional[str]) -> None: ...
    def isField(self, expression: typing.Optional[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: typing.Optional[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
        Binary = ... # type: QgsFieldProxyModel.Filter
        Boolean = ... # type: QgsFieldProxyModel.Filter
        OriginProvider = ... # 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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        def __xor__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        def __ior__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        def __or__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        def __iand__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        def __and__(self, f: typing.Union['QgsFieldProxyModel.Filters', 'QgsFieldProxyModel.Filter']) -> 'QgsFieldProxyModel.Filters': ...
        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']) -> typing.Optional['QgsFieldProxyModel']: ...
    def sourceFieldModel(self) -> typing.Optional[QgsFieldModel]: ...


class QgsFields(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def __setitem__(self, key: int, field: QgsField) -> None: ...
    @typing.overload
    @staticmethod
    def iconForFieldType(type: QtCore.QMetaType.Type, subType: QtCore.QMetaType.Type = ..., typeString: typing.Optional[str] = ...) -> QtGui.QIcon: ...
    @typing.overload
    @staticmethod
    def iconForFieldType(type: QtCore.QVariant.Type, subType: QtCore.QVariant.Type, typeString: typing.Optional[str] = ...) -> QtGui.QIcon: ...
    def iconForField(self, fieldIdx: int, considerOrigin: bool = ...) -> QtGui.QIcon: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def toList(self) -> typing.Any: ...
    def allAttributesList(self) -> typing.List[int]: ...
    def lookupField(self, fieldName: typing.Optional[str]) -> int: ...
    def indexOf(self, fieldName: typing.Optional[str]) -> int: ...
    def indexFromName(self, fieldName: typing.Optional[str]) -> int: ...
    def fieldOriginIndex(self, fieldIdx: int) -> int: ...
    def fieldOrigin(self, fieldIdx: int) -> Qgis.FieldOrigin: ...
    @typing.overload
    def field(self, fieldIdx: int) -> QgsField: ...
    @typing.overload
    def field(self, name: typing.Optional[str]) -> QgsField: ...
    def at(self, i: int) -> QgsField: ...
    @typing.overload
    def __getitem__(self, i: int) -> QgsField: ...
    @typing.overload
    def __getitem__(self, name: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def append(self, field: QgsField, origin: Qgis.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: typing.Optional[str]) -> str: ...
    @staticmethod
    def splitPathToComponents(path: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def renameDataset(oldPath: typing.Optional[str], newPath: typing.Optional[str], flags: typing.Union[Qgis.FileOperationFlags, Qgis.FileOperationFlag] = ...) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def sidecarFilesForPath(path: typing.Optional[str]) -> typing.Set[str]: ...
    @staticmethod
    def pathIsSlowDevice(path: typing.Optional[str]) -> bool: ...
    @staticmethod
    def driveType(path: typing.Optional[str]) -> Qgis.DriveType: ...
    @staticmethod
    def findFile(file: typing.Optional[str], basepath: typing.Optional[str] = ..., maxClimbs: int = ..., searchCeiling: int = ..., currentDir: typing.Optional[str] = ...) -> typing.List[str]: ...
    @staticmethod
    def findClosestExistingPath(path: typing.Optional[str]) -> str: ...
    @staticmethod
    def stringToSafeFilename(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def addExtensionFromFilter(fileName: typing.Optional[str], filter: typing.Optional[str]) -> str: ...
    @staticmethod
    def ensureFileNameHasExtension(fileName: typing.Optional[str], extensions: typing.Iterable[typing.Optional[str]]) -> str: ...
    @staticmethod
    def fileMatchesFilter(fileName: typing.Optional[str], filter: typing.Optional[str]) -> bool: ...
    @staticmethod
    def wildcardsFromFilter(filter: typing.Optional[str]) -> str: ...
    @staticmethod
    def extensionsFromFilter(filter: typing.Optional[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 createFont(family: typing.Optional[str], pointSize: int = ..., weight: int = ..., italic: bool = ...) -> QtGui.QFont: ...
    @staticmethod
    def setFontFamily(font: QtGui.QFont, family: typing.Optional[str]) -> None: ...
    @staticmethod
    def recentFontFamilies() -> typing.List[str]: ...
    @staticmethod
    def addRecentFontFamily(family: typing.Optional[str]) -> None: ...
    @staticmethod
    def asCSS(font: QtGui.QFont, pointToPixelMultiplier: float = ...) -> str: ...
    @staticmethod
    def untranslateNamedStyle(namedStyle: typing.Optional[str]) -> str: ...
    @staticmethod
    def translateNamedStyle(namedStyle: typing.Optional[str]) -> str: ...
    @staticmethod
    def fromMimeData(data: typing.Optional[QtCore.QMimeData]) -> typing.Tuple[QtGui.QFont, typing.Optional[bool]]: ...
    @staticmethod
    def toMimeData(font: QtGui.QFont) -> typing.Optional[QtCore.QMimeData]: ...
    @staticmethod
    def setFromXmlChildNode(font: QtGui.QFont, element: QtXml.QDomElement, childNode: typing.Optional[str]) -> bool: ...
    @staticmethod
    def setFromXmlElement(font: QtGui.QFont, element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def toXmlElement(font: QtGui.QFont, document: QtXml.QDomDocument, elementName: typing.Optional[str]) -> QtXml.QDomElement: ...
    @staticmethod
    def getStandardTestFont(style: typing.Optional[str] = ..., pointsize: int = ...) -> QtGui.QFont: ...
    @staticmethod
    def loadStandardTestFonts(loadstyles: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @staticmethod
    def standardTestFontFamily() -> str: ...
    @staticmethod
    def updateFontViaStyle(f: QtGui.QFont, fontstyle: typing.Optional[str], fallback: bool = ...) -> bool: ...
    @staticmethod
    def fontFamilyMatchOnSystem(family: typing.Optional[str], chosen: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple[bool, typing.Optional[bool]]: ...
    @staticmethod
    def resolveFontStyleName(font: QtGui.QFont) -> str: ...
    @staticmethod
    def fontFamilyHasStyle(family: typing.Optional[str], style: typing.Optional[str]) -> bool: ...
    @staticmethod
    def fontFamilyOnSystem(family: typing.Optional[str]) -> bool: ...
    @staticmethod
    def fontMatchOnSystem(f: QtGui.QFont) -> bool: ...


class QgsGeometryOptions(QtCore.QObject):

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

    geometryPrecisionChanged: typing.ClassVar[QtCore.pyqtSignal]
    removeDuplicateNodesChanged: typing.ClassVar[QtCore.pyqtSignal]
    geometryChecksChanged: typing.ClassVar[QtCore.pyqtSignal]
    checkConfigurationChanged: typing.ClassVar[QtCore.pyqtSignal]
    def readXml(self, node: QtXml.QDomNode) -> None: ...
    def writeXml(self, node: QtXml.QDomNode) -> None: ...
    def setCheckConfiguration(self, checkId: typing.Optional[str], checkConfiguration: typing.Dict[str, typing.Any]) -> None: ...
    def checkConfiguration(self, checkId: typing.Optional[str]) -> typing.Dict[str, typing.Any]: ...
    def setGeometryChecks(self, geometryChecks: typing.Iterable[typing.Optional[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: typing.Optional['QgsAbstractGeometry']) -> typing.Optional['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: typing.Optional['QgsAbstractGeometry']) -> typing.Optional['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: ...
    validationFinished: typing.ClassVar[QtCore.pyqtSignal]
    errorFound: typing.ClassVar[QtCore.pyqtSignal]
    @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: typing.Optional[str], geometryAttribute: typing.Optional[str], fields: QgsFields) -> None: ...

    dataProgressAndSteps: typing.ClassVar[QtCore.pyqtSignal]
    totalStepsUpdate: typing.ClassVar[QtCore.pyqtSignal]
    dataReadProgress: typing.ClassVar[QtCore.pyqtSignal]
    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, typing.Optional[Qgis.WkbType]]: ...
    def getFeaturesUri(self, uri: typing.Optional[str], extent: typing.Optional['QgsRectangle'] = ..., userName: typing.Optional[str] = ..., password: typing.Optional[str] = ..., authcfg: typing.Optional[str] = ...) -> typing.Tuple[int, typing.Optional[Qgis.WkbType]]: ...


class QgsGmlFeatureClass(PyQt5.sip.wrapper):

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

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


class QgsGmlSchema(QtCore.QObject):

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

    def error(self) -> QgsError: ...
    def geometryAttributes(self, typeName: typing.Optional[str]) -> typing.List[str]: ...
    def fields(self, typeName: typing.Optional[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: typing.Optional[str], options: 'QgsGroupLayer.LayerOptions') -> None: ...

    def prepareLayersForRemovalFromGroup(self) -> None: ...
    def setPaintEffect(self, effect: typing.Optional['QgsPaintEffect']) -> None: ...
    def paintEffect(self) -> typing.Optional['QgsPaintEffect']: ...
    def childLayers(self) -> typing.List[QgsMapLayer]: ...
    def setChildLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def resolveReferences(self, project: typing.Optional['QgsProject']) -> None: ...
    def htmlMetadata(self) -> str: ...
    def dataProvider(self) -> typing.Optional['QgsDataProvider']: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: 'QgsReadWriteContext', categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[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') -> typing.Optional['QgsMapLayerRenderer']: ...
    def clone(self) -> typing.Optional['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: typing.Optional[QgsVectorLayer], fieldOrExpression: typing.Optional[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: typing.Optional[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[typing.Optional[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: typing.Optional[QgsMapLayer]) -> QtGui.QIcon: ...
    @staticmethod
    def iconTiledScene() -> 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 setZRange(self, range: 'QgsDoubleRange') -> None: ...
    def zRange(self) -> 'QgsDoubleRange': ...
    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: ...

    remoteImageFetched: typing.ClassVar[QtCore.pyqtSignal]
    def prepareAnimation(self, path: typing.Optional[str]) -> None: ...
    def nextFrameDelay(self, path: typing.Optional[str], currentFrame: int = ..., blocking: bool = ...) -> int: ...
    def totalFrameCount(self, path: typing.Optional[str], blocking: bool = ...) -> int: ...
    def originalSize(self, path: typing.Optional[str], blocking: bool = ...) -> QtCore.QSize: ...
    def pathAsImage(self, path: typing.Optional[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: typing.Optional[str]) -> 'QgsInterval': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: ...
    def __repr__(self) -> typing.Any: ...


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) -> typing.Optional[QgsVectorLayer]: ...
    def setVectorLayer(self, vectorLayer: typing.Optional[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 geometryFromGeoJson(geometry: typing.Optional[str]) -> 'QgsGeometry': ...
    @typing.overload
    @staticmethod
    def parseArray(json: typing.Optional[str], type: QtCore.QMetaType.Type = ...) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parseArray(json: typing.Optional[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: typing.Optional[str], encoding: typing.Optional[QtCore.QTextCodec] = ...) -> QgsFields: ...
    @staticmethod
    def stringToFeatureList(string: typing.Optional[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: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerDefinition.DependencySorter') -> None: ...

        def isLayerDependent(self, layerId: typing.Optional[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: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def exportLayerDefinitionLayers(layers: typing.Iterable[QgsMapLayer], context: 'QgsReadWriteContext') -> QtXml.QDomDocument: ...
    @typing.overload
    @staticmethod
    def exportLayerDefinition(path: typing.Optional[str], selectedTreeNodes: typing.Iterable['QgsLayerTreeNode']) -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def exportLayerDefinition(path: typing.Optional[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: typing.Optional[str], project: typing.Optional['QgsProject'], rootGroup: typing.Optional['QgsLayerTreeGroup'], insertMethod: Qgis.LayerTreeInsertionMethod = ..., insertPoint: typing.Optional['QgsLayerTreeRegistryBridge.InsertionPoint'] = ...) -> typing.Tuple[bool, str]: ...
    @typing.overload
    @staticmethod
    def loadLayerDefinition(doc: QtXml.QDomDocument, project: typing.Optional['QgsProject'], rootGroup: typing.Optional['QgsLayerTreeGroup'], context: 'QgsReadWriteContext', insertMethod: Qgis.LayerTreeInsertionMethod = ..., insertPoint: typing.Optional['QgsLayerTreeRegistryBridge.InsertionPoint'] = ...) -> 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: typing.Optional[QgsMapLayer]) -> None: ...
    @staticmethod
    def layerHasNotes(layer: typing.Optional[QgsMapLayer]) -> bool: ...
    @staticmethod
    def setLayerNotes(layer: typing.Optional[QgsMapLayer], notes: typing.Optional[str]) -> None: ...
    @staticmethod
    def layerNotes(layer: typing.Optional[QgsMapLayer]) -> str: ...


class QgsLegendRenderer(PyQt5.sip.wrapper):

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

    @staticmethod
    def nodeLegendStyle(node: typing.Optional['QgsLayerTreeNode'], model: typing.Optional['QgsLayerTreeModel']) -> 'QgsLegendStyle.Style': ...
    @staticmethod
    def setNodeLegendStyle(node: typing.Optional['QgsLayerTreeNode'], style: 'QgsLegendStyle.Style') -> None: ...
    def exportLegendToJson(self, context: 'QgsRenderContext') -> typing.Dict[str, QtCore.QJsonValue]: ...
    @typing.overload
    def drawLegend(self, painter: typing.Optional[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 setJsonRenderFlags(self, jsonRenderFlags: typing.Union[Qgis.LegendJsonRenderFlags, Qgis.LegendJsonRenderFlag]) -> None: ...
    def jsonRenderFlags(self) -> Qgis.LegendJsonRenderFlags: ...
    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: typing.Optional[str]) -> float: ...
    def pixelFontSize(self, pointSize: float) -> float: ...
    def scaledFontPixelSize(self, font: QtGui.QFont) -> QtGui.QFont: ...
    @typing.overload
    def drawText(self, p: typing.Optional[QtGui.QPainter], x: float, y: float, text: typing.Optional[str], font: QtGui.QFont) -> None: ...
    @typing.overload
    def drawText(self, p: typing.Optional[QtGui.QPainter], rect: QtCore.QRectF, text: typing.Optional[str], font: QtGui.QFont, halignment: QtCore.Qt.AlignmentFlag = ..., valignment: QtCore.Qt.AlignmentFlag = ..., flags: int = ...) -> None: ...
    def splitStringForWrapping(self, stringToSplt: typing.Optional[str]) -> typing.List[str]: ...
    def evaluateItemText(self, text: typing.Optional[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 synchronousLegendRequests(self) -> bool: ...
    def setSynchronousLegendRequests(self, b: bool) -> None: ...
    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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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() -> typing.Optional['QgsGeographicCoordinateNumericFormat']: ...
    @staticmethod
    def setGeographicCoordinateFormat(format: typing.Optional['QgsGeographicCoordinateNumericFormat']) -> None: ...
    @staticmethod
    def bearingFormat() -> typing.Optional['QgsBearingNumericFormat']: ...
    @staticmethod
    def setBearingFormat(format: typing.Optional['QgsBearingNumericFormat']) -> None: ...


class QgsLocalizedDataPathRegistry(PyQt5.sip.wrapper):

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

    def unregisterPath(self, path: typing.Optional[str]) -> None: ...
    def registerPath(self, path: typing.Optional[str], position: int = ...) -> None: ...
    def paths(self) -> typing.List[str]: ...
    def localizedPath(self, globalPath: typing.Optional[str]) -> str: ...
    def globalPath(self, localizedPath: typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def debugLevel() -> int: ...
    @staticmethod
    def fatal(msg: typing.Optional[str]) -> None: ...
    @staticmethod
    def critical(msg: typing.Optional[str]) -> None: ...
    @staticmethod
    def warning(msg: typing.Optional[str]) -> None: ...
    @typing.overload
    @staticmethod
    def debug(msg: typing.Optional[str], debuglevel: int = ..., file: typing.Optional[str] = ..., function: typing.Optional[str] = ..., line: int = ...) -> None: ...
    @typing.overload
    @staticmethod
    def debug(var: typing.Optional[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: typing.Optional[str], func: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def hasFixedMapPosition(self) -> bool: ...
    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[typing.Optional[str], typing.Optional[str]] = ...) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsMapSettings', layerFilterExpression: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsLayerTreeFilterSettings') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapHitTest') -> None: ...

    def legendKeyVisible(self, ruleKey: typing.Optional[str], layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def symbolVisible(self, symbol: typing.Optional['QgsSymbol'], layer: typing.Optional[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: typing.Optional[str], type: 'QgsMapLayerDependency.Type' = ..., origin: 'QgsMapLayerDependency.Origin' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerDependency') -> None: ...

    def __ne__(self, other: object): ...
    def __hash__(self) -> int: ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str], name: typing.Optional[str], type: Qgis.LayerType, options: 'QgsMapLayerFactory.LayerOptions', provider: typing.Optional[str] = ...) -> typing.Optional[QgsMapLayer]: ...
    @staticmethod
    def typeToString(type: Qgis.LayerType) -> str: ...
    @staticmethod
    def typeFromString(string: typing.Optional[str]) -> typing.Tuple[Qgis.LayerType, bool]: ...


class QgsMapLayerLegend(QtCore.QObject):

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

    itemsChanged: typing.ClassVar[QtCore.pyqtSignal]
    @staticmethod
    def defaultPointCloudLegend(layer: typing.Optional['QgsPointCloudLayer']) -> typing.Optional['QgsMapLayerLegend']: ...
    @staticmethod
    def defaultMeshLegend(ml: typing.Optional['QgsMeshLayer']) -> typing.Optional['QgsMapLayerLegend']: ...
    @staticmethod
    def defaultRasterLegend(rl: typing.Optional['QgsRasterLayer']) -> typing.Optional['QgsMapLayerLegend']: ...
    @staticmethod
    def defaultVectorLegend(vl: typing.Optional[QgsVectorLayer]) -> typing.Optional['QgsMapLayerLegend']: ...
    def createLayerTreeModelLegendNodes(self, nodeLayer: typing.Optional['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: typing.Optional['QgsLayerTreeLayer'], nodes: typing.Iterable['QgsLayerTreeModelLegendNode']) -> None: ...
    @staticmethod
    def legendNodeColumnBreak(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> bool: ...
    @staticmethod
    def setLegendNodeColumnBreak(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, columnBreakBeforeNode: bool) -> None: ...
    @staticmethod
    def legendNodeColorRampSettings(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> typing.Optional['QgsColorRampLegendNodeSettings']: ...
    @staticmethod
    def setLegendNodeColorRampSettings(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, settings: typing.Optional['QgsColorRampLegendNodeSettings']) -> None: ...
    @staticmethod
    def legendNodeCustomSymbol(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> typing.Optional['QgsSymbol']: ...
    @staticmethod
    def setLegendNodeCustomSymbol(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, symbol: typing.Optional['QgsSymbol']) -> None: ...
    @staticmethod
    def legendNodeSymbolSize(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> QtCore.QSizeF: ...
    @staticmethod
    def setLegendNodeSymbolSize(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def legendNodePatchShape(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> 'QgsLegendPatchShape': ...
    @staticmethod
    def setLegendNodePatchShape(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, shape: 'QgsLegendPatchShape') -> None: ...
    @staticmethod
    def hasLegendNodeUserLabel(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> bool: ...
    @staticmethod
    def legendNodeUserLabel(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int) -> str: ...
    @staticmethod
    def setLegendNodeUserLabel(nodeLayer: typing.Optional['QgsLayerTreeLayer'], originalIndex: int, newLabel: typing.Optional[str]) -> None: ...
    @staticmethod
    def hasLegendNodeOrder(nodeLayer: typing.Optional['QgsLayerTreeLayer']) -> bool: ...
    @staticmethod
    def legendNodeOrder(nodeLayer: typing.Optional['QgsLayerTreeLayer']) -> typing.List[int]: ...
    @staticmethod
    def setLegendNodeOrder(nodeLayer: typing.Optional['QgsLayerTreeLayer'], order: typing.Iterable[int]) -> None: ...


class QgsDefaultVectorLayerLegend(QgsMapLayerLegend):

    def __init__(self, vl: typing.Optional[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: typing.Optional['QgsLayerTreeLayer']) -> typing.List['QgsLayerTreeModelLegendNode']: ...
    def setTextOnSymbolContent(self, content: typing.Dict[typing.Optional[str], typing.Optional[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: typing.Optional['QgsRasterLayer']) -> None: ...

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


class QgsDefaultMeshLayerLegend(QgsMapLayerLegend):

    def __init__(self, ml: typing.Optional['QgsMeshLayer']) -> None: ...

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


class QgsDefaultPointCloudLayerLegend(QgsMapLayerLegend):

    def __init__(self, layer: typing.Optional['QgsPointCloudLayer']) -> None: ...

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


class QgsMapLayerModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        LayerId = ... # type: QgsMapLayerModel.CustomRole
        Layer = ... # type: QgsMapLayerModel.CustomRole
        Empty = ... # type: QgsMapLayerModel.CustomRole
        Additional = ... # type: QgsMapLayerModel.CustomRole

    @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[typing.Optional[str]]) -> None: ...
    @staticmethod
    def iconForLayer(layer: typing.Optional[QgsMapLayer]) -> QtGui.QIcon: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def dropMimeData(self, data: typing.Optional[QtCore.QMimeData], action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> typing.Optional[QtCore.QMimeData]: ...
    def canDropMimeData(self, data: typing.Optional[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[typing.Optional[str]]) -> None: ...
    def layerFromIndex(self, index: QtCore.QModelIndex) -> typing.Optional[QgsMapLayer]: ...
    def indexFromLayer(self, layer: typing.Optional[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: typing.Optional[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: typing.Optional['QgsProject']) -> None: ...
    def setItemsCheckable(self, checkable: bool) -> None: ...


class QgsMapLayerProxyModel(QtCore.QSortFilterProxyModel):

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

    def setFilterString(self, filter: typing.Optional[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: typing.Optional[QgsMapLayer]) -> bool: ...
    def filterString(self) -> str: ...
    def excludedProviders(self) -> typing.List[str]: ...
    def setExcludedProviders(self, providers: typing.Iterable[typing.Optional[str]]) -> None: ...
    def exceptedLayerIds(self) -> typing.List[str]: ...
    def setExceptedLayerIds(self, ids: typing.Iterable[typing.Optional[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: typing.Optional[QgsMapLayer], filters: typing.Union[Qgis.LayerFilters, Qgis.LayerFilter]) -> bool: ...
    def setProject(self, project: typing.Optional['QgsProject']) -> None: ...
    def filters(self) -> Qgis.LayerFilters: ...
    @typing.overload
    def setFilters(self, filters: typing.Union[Qgis.LayerFilters, Qgis.LayerFilter]) -> typing.Optional['QgsMapLayerProxyModel']: ...
    @typing.overload
    def setFilters(self, filters: int) -> None: ...
    def sourceLayerModel(self) -> typing.Optional[QgsMapLayerModel]: ...


class QgsMapLayerRenderer(PyQt5.sip.wrapper):

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

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


class QgsServerMetadataUrlProperties(PyQt5.sip.wrapper):

    class MetadataUrl(PyQt5.sip.wrapper):

        format = ... # type: typing.Optional[str]
        type = ... # type: typing.Optional[str]
        url = ... # type: typing.Optional[str]

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

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def layer(self) -> typing.Optional[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: typing.Optional[str]
        fieldName = ... # type: typing.Optional[str]
        name = ... # type: typing.Optional[str]
        referenceValue = ... # type: typing.Any
        unitSymbol = ... # type: typing.Optional[str]
        units = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, dimName: typing.Optional[str], dimFieldName: typing.Optional[str], dimEndFieldName: typing.Optional[str] = ..., dimUnits: typing.Optional[str] = ..., dimUnitSymbol: typing.Optional[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) -> typing.Optional[QgsMapLayer]: ...
    def wmsDimensions(self) -> typing.List['QgsServerWmsDimensionProperties.WmsDimensionInfo']: ...
    def setWmsDimensions(self, dimensions: typing.Iterable['QgsServerWmsDimensionProperties.WmsDimensionInfo']) -> None: ...
    def removeWmsDimension(self, wmsDimName: typing.Optional[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) -> typing.Optional[QgsMapLayer]: ...
    def attributionUrl(self) -> str: ...
    def setAttributionUrl(self, url: typing.Optional[str]) -> None: ...
    def attribution(self) -> str: ...
    def setAttribution(self, attrib: typing.Optional[str]) -> None: ...
    def dataUrlFormat(self) -> str: ...
    def setDataUrlFormat(self, dataUrlFormat: typing.Optional[str]) -> None: ...
    def dataUrl(self) -> str: ...
    def setDataUrl(self, dataUrl: typing.Optional[str]) -> None: ...
    def keywordList(self) -> str: ...
    def setKeywordList(self, keywords: typing.Optional[str]) -> None: ...
    def abstract(self) -> str: ...
    def setAbstract(self, abstract: typing.Optional[str]) -> None: ...
    def title(self) -> str: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def shortName(self) -> str: ...
    def setShortName(self, name: typing.Optional[str]) -> None: ...
    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: typing.Optional['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: ...

    layerWasAdded: typing.ClassVar[QtCore.pyqtSignal]
    layersAdded: typing.ClassVar[QtCore.pyqtSignal]
    allLayersRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layerRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layersRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layerWillBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layersWillBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    def transferLayersFromStore(self, other: typing.Optional['QgsMapLayerStore']) -> None: ...
    def removeAllMapLayers(self) -> None: ...
    def takeMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> typing.Optional[QgsMapLayer]: ...
    @typing.overload
    def removeMapLayer(self, id: typing.Optional[str]) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def removeMapLayersById(self, layerIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    def addMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> typing.Optional[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: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, id: typing.Optional[str]) -> typing.Optional[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: typing.Optional[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: typing.Optional[QgsMapLayer]) -> None: ...
    def readFromLayer(self, layer: typing.Optional[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: typing.Optional[QgsMapLayer]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapLayerStyleOverride') -> None: ...

    def setOverrideStyle(self, style: typing.Optional[str]) -> None: ...


class QgsMapLayerStyleManager(QtCore.QObject):

    def __init__(self, layer: typing.Optional[QgsMapLayer]) -> None: ...

    currentStyleChanged: typing.ClassVar[QtCore.pyqtSignal]
    styleRenamed: typing.ClassVar[QtCore.pyqtSignal]
    styleRemoved: typing.ClassVar[QtCore.pyqtSignal]
    styleAdded: typing.ClassVar[QtCore.pyqtSignal]
    def copyStylesFrom(self, other: typing.Optional['QgsMapLayerStyleManager']) -> None: ...
    @staticmethod
    def isDefault(styleName: typing.Optional[str]) -> bool: ...
    def restoreOverrideStyle(self) -> bool: ...
    def setOverrideStyle(self, styleDef: typing.Optional[str]) -> bool: ...
    def setCurrentStyle(self, name: typing.Optional[str]) -> bool: ...
    def currentStyle(self) -> str: ...
    def renameStyle(self, name: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeStyle(self, name: typing.Optional[str]) -> bool: ...
    def addStyleFromLayer(self, name: typing.Optional[str]) -> bool: ...
    def addStyle(self, name: typing.Optional[str], style: QgsMapLayerStyle) -> bool: ...
    def style(self, name: typing.Optional[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) -> typing.Optional[QgsMapLayer]: ...


class QgsMapLayerElevationProperties(QtCore.QObject):

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

    class Property(int):
        ZOffset = ... # type: QgsMapLayerElevationProperties.Property
        ExtrusionHeight = ... # type: QgsMapLayerElevationProperties.Property
        RasterPerBandLowerElevation = ... # type: QgsMapLayerElevationProperties.Property
        RasterPerBandUpperElevation = ... # 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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __xor__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __ior__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __or__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __iand__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __and__(self, f: typing.Union['QgsMapLayerElevationProperties.Flags', 'QgsMapLayerElevationProperties.Flag']) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __invert__(self) -> 'QgsMapLayerElevationProperties.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def copyCommonProperties(self, other: typing.Optional['QgsMapLayerElevationProperties']) -> None: ...
    def readCommonProperties(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    profileGenerationPropertyChanged: typing.ClassVar[QtCore.pyqtSignal]
    profileRenderingPropertyChanged: typing.ClassVar[QtCore.pyqtSignal]
    zScaleChanged: typing.ClassVar[QtCore.pyqtSignal]
    zOffsetChanged: typing.ClassVar[QtCore.pyqtSignal]
    changed: typing.ClassVar[QtCore.pyqtSignal]
    @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 significantZValues(self, layer: typing.Optional[QgsMapLayer]) -> typing.List[float]: ...
    def calculateZRange(self, layer: typing.Optional[QgsMapLayer]) -> 'QgsDoubleRange': ...
    def flags(self) -> 'QgsMapLayerElevationProperties.Flags': ...
    def isVisibleInZRange(self, range: 'QgsDoubleRange', layer: typing.Optional[QgsMapLayer] = ...) -> bool: ...
    def clone(self) -> typing.Optional['QgsMapLayerElevationProperties']: ...
    def htmlSummary(self) -> str: ...
    def setDefaultsFromLayer(self, layer: typing.Optional[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 QgsMapLayerSelectionProperties(QtCore.QObject):

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

    def clone(self) -> typing.Optional['QgsMapLayerSelectionProperties']: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...


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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __xor__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __ior__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __or__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __iand__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __and__(self, f: typing.Union['QgsTemporalProperty.Flags', 'QgsTemporalProperty.Flag']) -> 'QgsTemporalProperty.Flags': ...
        def __invert__(self) -> 'QgsTemporalProperty.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    changed: typing.ClassVar[QtCore.pyqtSignal]
    def flags(self) -> 'QgsTemporalProperty.Flags': ...
    def isActive(self) -> bool: ...
    def setIsActive(self, active: bool) -> None: ...


class QgsMapLayerTemporalProperties(QgsTemporalProperty):

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

    def allTemporalRanges(self, layer: typing.Optional[QgsMapLayer]) -> typing.List['QgsDateTimeRange']: ...
    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: typing.Optional[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: typing.Optional[str]) -> str: ...
    @staticmethod
    def sortLayersByType(layers: typing.Iterable[QgsMapLayer], order: typing.Iterable[Qgis.LayerType]) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def updateLayerSourcePath(layer: typing.Optional[QgsMapLayer], newPath: typing.Optional[str]) -> bool: ...
    @staticmethod
    def layerSourceMatchesPath(layer: typing.Optional[QgsMapLayer], path: typing.Optional[str]) -> bool: ...
    @staticmethod
    def databaseConnection(layer: typing.Optional[QgsMapLayer]) -> typing.Optional['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: typing.Optional['QgsRenderedFeatureHandlerInterface']) -> None: ...
    def setMaskSettings(self, settings: 'QgsMaskRenderSettings') -> None: ...
    def maskSettings(self) -> 'QgsMaskRenderSettings': ...
    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: typing.Optional[QgsMapLayer]) -> 'QgsCoordinateTransform': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: typing.Optional[QgsMapLayer], point: 'QgsPointXY') -> 'QgsPointXY': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: typing.Optional[QgsMapLayer], point: 'QgsPoint') -> 'QgsPoint': ...
    @typing.overload
    def mapToLayerCoordinates(self, layer: typing.Optional[QgsMapLayer], rect: 'QgsRectangle') -> 'QgsRectangle': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: typing.Optional[QgsMapLayer], point: 'QgsPointXY') -> 'QgsPointXY': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: typing.Optional[QgsMapLayer], point: 'QgsPoint') -> 'QgsPoint': ...
    @typing.overload
    def layerToMapCoordinates(self, layer: typing.Optional[QgsMapLayer], rect: 'QgsRectangle') -> 'QgsRectangle': ...
    def outputExtentToLayerExtent(self, layer: typing.Optional[QgsMapLayer], extent: 'QgsRectangle') -> 'QgsRectangle': ...
    def layerExtentToOutputExtent(self, layer: typing.Optional[QgsMapLayer], extent: 'QgsRectangle') -> 'QgsRectangle': ...
    def layerToMapUnits(self, layer: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def mapUnits(self) -> Qgis.DistanceUnit: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def clearCustomRenderingFlag(self, flag: typing.Optional[str]) -> None: ...
    def setCustomRenderingFlag(self, flag: typing.Optional[str], value: typing.Any) -> None: ...
    def customRenderingFlags(self) -> typing.Dict[str, typing.Any]: ...
    def setCustomRenderFlags(self, customRenderFlags: typing.Optional[str]) -> None: ...
    def customRenderFlags(self) -> str: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[typing.Optional[str], typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __xor__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __ior__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __or__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __iand__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        def __and__(self, f: typing.Union['QgsMapSettingsUtils.EffectsCheckFlags', 'QgsMapSettingsUtils.EffectsCheckFlag']) -> 'QgsMapSettingsUtils.EffectsCheckFlags': ...
        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[typing.Optional[str]]
        currentStyle = ... # type: typing.Optional[str]
        expandedLayerNode = ... # type: bool
        expandedLegendItems = ... # type: typing.Iterable[typing.Optional[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: typing.Optional[QgsMapLayer]) -> None: ...
        def layer(self) -> typing.Optional[QgsMapLayer]: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    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[typing.Optional[str]]) -> None: ...
        def setExpandedGroupNodes(self, expandedGroupNodes: typing.Iterable[typing.Optional[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: typing.Optional[QgsMapLayer]) -> None: ...
        def setLayerRecords(self, records: typing.Iterable['QgsMapThemeCollection.MapThemeLayerRecord']) -> None: ...
        def layerRecords(self) -> typing.List['QgsMapThemeCollection.MapThemeLayerRecord']: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

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

    projectChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapThemeRenamed: typing.ClassVar[QtCore.pyqtSignal]
    mapThemeChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapThemesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def masterVisibleLayers(self) -> typing.List[QgsMapLayer]: ...
    def masterLayerOrder(self) -> typing.List[QgsMapLayer]: ...
    def setProject(self, project: typing.Optional['QgsProject']) -> None: ...
    def project(self) -> typing.Optional['QgsProject']: ...
    def applyTheme(self, name: typing.Optional[str], root: typing.Optional['QgsLayerTreeGroup'], model: typing.Optional['QgsLayerTreeModel']) -> None: ...
    @staticmethod
    def createThemeFromCurrentState(root: typing.Optional['QgsLayerTreeGroup'], model: typing.Optional['QgsLayerTreeModel']) -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, doc: QtXml.QDomDocument) -> None: ...
    def mapThemeStyleOverrides(self, name: typing.Optional[str]) -> typing.Dict[str, str]: ...
    def mapThemeVisibleLayers(self, name: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    def mapThemeVisibleLayerIds(self, name: typing.Optional[str]) -> typing.List[str]: ...
    def mapThemeState(self, name: typing.Optional[str]) -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def mapThemes(self) -> typing.List[str]: ...
    def clear(self) -> None: ...
    def renameMapTheme(self, name: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeMapTheme(self, name: typing.Optional[str]) -> None: ...
    def update(self, name: typing.Optional[str], state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def insert(self, name: typing.Optional[str], state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def hasMapTheme(self, name: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional['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

    @typing.overload
    def __init__(self, simplifyFlags: int, tolerance: float, simplifyAlgorithm: Qgis.VectorSimplificationAlgorithm = ...) -> 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: typing.Optional['QgsAbstractGeometry']) -> typing.Optional['QgsAbstractGeometry']: ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: Qgis.VectorSimplificationAlgorithm) -> None: ...
    def simplifyAlgorithm(self) -> Qgis.VectorSimplificationAlgorithm: ...
    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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __eq__(self, other: object): ...
    def __ne__(self, other: object): ...
    @typing.overload
    def __add__(self, m2: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __add__(self, rhs: float) -> 'QgsMargins': ...
    def __radd__(self, lhs: float) -> 'QgsMargins': ...
    @typing.overload
    def __sub__(self, m2: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __sub__(self, rhs: float) -> 'QgsMargins': ...
    def __mul__(self, factor: float) -> 'QgsMargins': ...
    def __rmul__(self, factor: float) -> 'QgsMargins': ...
    def __truediv__(self, divisor: float) -> 'QgsMargins': ...
    def __pos__(self) -> 'QgsMargins': ...
    def __neg__(self) -> 'QgsMargins': ...
    @staticmethod
    def fromString(string: typing.Optional[str]) -> 'QgsMargins': ...
    def toString(self) -> str: ...
    def __itruediv__(self, divisor: float) -> 'QgsMargins': ...
    def __imul__(self, factor: float) -> 'QgsMargins': ...
    @typing.overload
    def __isub__(self, margins: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __isub__(self, subtrahend: float) -> 'QgsMargins': ...
    @typing.overload
    def __iadd__(self, margins: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __iadd__(self, addend: float) -> 'QgsMargins': ...
    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: typing.Optional[str] = ..., labelRuleId: typing.Optional[str] = ...) -> int: ...
    def insertLabelLayer(self, layerId: typing.Optional[str], ruleId: typing.Optional[str], maskedSymbolLayers: typing.Iterable['QgsSymbolLayerReference']) -> int: ...


class QgsMaskRenderSettings(PyQt5.sip.wrapper):

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

    def setSimplificationTolerance(self, tolerance: float) -> None: ...
    def simplifyTolerance(self) -> float: ...


class QgsMatrix4x4(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, m11: float, m12: float, m13: float, m14: float, m21: float, m22: float, m23: float, m24: float, m31: float, m32: float, m33: float, m34: float, m41: float, m42: float, m43: float, m44: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMatrix4x4') -> None: ...

    @typing.overload
    def __mul__(self, vector: 'QgsVector3D') -> 'QgsVector3D': ...
    @typing.overload
    def __mul__(self, m2: 'QgsMatrix4x4') -> 'QgsMatrix4x4': ...
    def __repr__(self) -> typing.Any: ...
    def setToIdentity(self) -> None: ...
    def isIdentity(self) -> bool: ...
    def map(self, vector: 'QgsVector3D') -> 'QgsVector3D': ...
    def translate(self, vector: 'QgsVector3D') -> None: ...
    def data(self) -> typing.List[float]: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsMessageLog(QtCore.QObject):

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

    messageReceived: typing.ClassVar[QtCore.pyqtSignal]
    @staticmethod
    def logMessage(message: typing.Optional[str], tag: typing.Optional[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: typing.Optional[str], tag: typing.Optional[str], level: Qgis.MessageLevel) -> None: ...
    def formatLogMessage(self, message: typing.Optional[str], tag: typing.Optional[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() -> typing.Optional['QgsMessageOutput']: ...
    @typing.overload
    def showMessage(self, blocking: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def showMessage(title: typing.Optional[str], message: typing.Optional[str], msgType: 'QgsMessageOutput.MessageType') -> None: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def appendMessage(self, message: typing.Optional[str]) -> None: ...
    def setMessage(self, message: typing.Optional[str], msgType: 'QgsMessageOutput.MessageType') -> None: ...


class QgsMessageOutputConsole(QtCore.QObject, QgsMessageOutput):

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

    destroyed: typing.ClassVar[QtCore.pyqtSignal]
    def showMessage(self, blocking: bool = ...) -> None: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def appendMessage(self, message: typing.Optional[str]) -> None: ...
    def setMessage(self, message: typing.Optional[str], msgType: QgsMessageOutput.MessageType) -> None: ...


class QgsMimeDataUtils(PyQt5.sip.wrapper):

    class Uri(PyQt5.sip.wrapper):

        filePath = ... # type: typing.Optional[str]
        layerId = ... # type: typing.Optional[str]
        layerType = ... # type: typing.Optional[str]
        name = ... # type: typing.Optional[str]
        pId = ... # type: typing.Optional[str]
        providerKey = ... # type: typing.Optional[str]
        supportedCrs = ... # type: typing.Iterable[typing.Optional[str]]
        supportedFormats = ... # type: typing.Iterable[typing.Optional[str]]
        uri = ... # type: typing.Optional[str]
        wkbType = ... # type: Qgis.WkbType

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, encData: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMimeDataUtils.Uri') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def mapLayer(self) -> typing.Optional[QgsMapLayer]: ...
        def meshLayer(self, error: typing.Optional[str]) -> typing.Tuple[typing.Optional['QgsMeshLayer'], bool]: ...
        def rasterLayer(self, error: typing.Optional[str]) -> typing.Tuple[typing.Optional['QgsRasterLayer'], bool]: ...
        def vectorLayer(self, error: typing.Optional[str]) -> typing.Tuple[typing.Optional[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: typing.Optional[QtCore.QMimeData]) -> typing.List['QgsMimeDataUtils.Uri']: ...
    @staticmethod
    def isUriList(data: typing.Optional[QtCore.QMimeData]) -> bool: ...
    @staticmethod
    def encodeUriList(layers: typing.Iterable['QgsMimeDataUtils.Uri']) -> typing.Optional[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: typing.Optional[QtGui.QImage]) -> None: ...
    def controlImagePath(self) -> str: ...
    def markdownReport(self) -> str: ...
    def report(self) -> str: ...
    def runTest(self, testName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def setControlPathPrefix(self, prefix: typing.Optional[str]) -> None: ...
    def setFileFunctionLine(self, file: typing.Optional[str], function: typing.Optional[str], line: int) -> None: ...
    def setControlName(self, name: typing.Optional[str]) -> None: ...


class QgsLayoutChecker(QgsMultiRenderChecker):

    @typing.overload
    def __init__(self, testName: typing.Optional[str], layout: typing.Optional['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 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: typing.Optional[str] = ...) -> None: ...
    def contains(self, key: typing.Optional[str]) -> bool: ...
    def remove(self, key: typing.Optional[str]) -> None: ...
    def value(self, key: typing.Optional[str], defaultValue: typing.Any = ...) -> typing.Any: ...
    def setValue(self, key: typing.Optional[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: ...

    warning: typing.ClassVar[QtCore.pyqtSignal]
    progressStopped: typing.ClassVar[QtCore.pyqtSignal]
    progressUpdated: typing.ClassVar[QtCore.pyqtSignal]
    progressModeSet: typing.ClassVar[QtCore.pyqtSignal]
    layerProgressUpdated: typing.ClassVar[QtCore.pyqtSignal]
    progressStarted: typing.ClassVar[QtCore.pyqtSignal]
    def synchronize(self, useTransaction: bool = ...) -> None: ...
    def isOfflineProject(self) -> bool: ...
    def convertToOfflineProject(self, offlineDataPath: typing.Optional[str], offlineDbFile: typing.Optional[str], layerIds: typing.Iterable[typing.Optional[str]], onlySelected: bool = ..., containerType: 'QgsOfflineEditing.ContainerType' = ..., layerNameSuffix: typing.Optional[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[typing.Optional[str]] = ..., requiresFilterElement: bool = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionToOgcExpression(exp: 'QgsExpression', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', filterVersion: 'QgsOgcUtils.FilterVersion', geometryName: typing.Optional[str], srsName: typing.Optional[str], honourAxisOrientation: bool, invertAxisOrientation: bool, errorMessage: typing.Optional[typing.Optional[str]] = ..., requiresFilterElement: bool = ..., fieldNameToXPathMap: typing.Dict[typing.Optional[str], typing.Optional[str]] = ..., namespacePrefixToUriMap: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def expressionToOgcFilter(exp: 'QgsExpression', doc: QtXml.QDomDocument, errorMessage: typing.Optional[typing.Optional[str]] = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, layer: typing.Optional[QgsVectorLayer] = ...) -> typing.Optional['QgsExpression']: ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, version: 'QgsOgcUtils.FilterVersion', layer: typing.Optional[QgsVectorLayer] = ...) -> typing.Optional['QgsExpression']: ...
    @staticmethod
    def colorFromOgcFill(fillElement: QtXml.QDomElement) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: typing.Optional['QgsRectangle'], doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: typing.Optional['QgsRectangle'], doc: QtXml.QDomDocument, srsName: typing.Optional[str], invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: typing.Optional['QgsRectangle'], doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: typing.Optional['QgsRectangle'], doc: QtXml.QDomDocument, srsName: typing.Optional[str], invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', srsName: typing.Optional[str], invertAxisOrientation: bool, gmlIdBase: typing.Optional[str], precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, format: typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def setData(self, data: 'QgsExpression') -> None: ...
    def data(self) -> 'QgsExpression': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def __int__(self) -> bool: ...
    def __eq__(self, other: object): ...


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: typing.Optional[str], connName: typing.Optional[str]) -> None: ...

    @staticmethod
    def setSelectedConnection(service: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    @staticmethod
    def selectedConnection(service: typing.Optional[str]) -> str: ...
    @staticmethod
    def deleteConnection(service: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    @staticmethod
    def connectionList(service: typing.Optional[str]) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def addWfsConnectionSettings(uri: QgsDataSourceUri, settingsKey: typing.Optional[str]) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWfsConnectionSettings(uri: QgsDataSourceUri, service: typing.Optional[str], connName: typing.Optional[str]) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWmsWcsConnectionSettings(uri: QgsDataSourceUri, settingsKey: typing.Optional[str]) -> QgsDataSourceUri: ...
    @typing.overload
    @staticmethod
    def addWmsWcsConnectionSettings(uri: QgsDataSourceUri, service: typing.Optional[str], connName: typing.Optional[str]) -> QgsDataSourceUri: ...
    def uri(self) -> QgsDataSourceUri: ...
    def service(self) -> str: ...
    def connectionInfo(self) -> str: ...
    def connectionName(self) -> str: ...


class QgsPathResolver(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, baseFileName: typing.Optional[str] = ..., attachmentDir: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPathResolver') -> None: ...

    @staticmethod
    def removePathWriter(id: typing.Optional[str]) -> None: ...
    @staticmethod
    def setPathWriter(a0: typing.Optional[typing.Callable[..., None]]) -> str: ...
    @staticmethod
    def removePathPreprocessor(id: typing.Optional[str]) -> None: ...
    @staticmethod
    def setPathPreprocessor(a0: typing.Optional[typing.Callable[..., None]]) -> str: ...
    def readPath(self, filename: typing.Optional[str]) -> str: ...
    def writePath(self, filename: typing.Optional[str]) -> str: ...


class QgsPluginLayer(QgsMapLayer):

    def __init__(self, layerType: typing.Optional[str], layerName: typing.Optional[str] = ...) -> None: ...

    def dataProvider(self) -> typing.Optional['QgsDataProvider']: ...
    def setSource(self, source: typing.Optional[str]) -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def pluginLayerType(self) -> str: ...
    def clone(self) -> typing.Optional['QgsPluginLayer']: ...
    def __repr__(self) -> typing.Any: ...


class QgsPluginLayerType(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPluginLayerType') -> None: ...

    def showLayerProperties(self, layer: typing.Optional[QgsPluginLayer]) -> bool: ...
    @typing.overload
    def createLayer(self) -> typing.Optional[QgsPluginLayer]: ...
    @typing.overload
    def createLayer(self, uri: typing.Optional[str]) -> typing.Optional[QgsPluginLayer]: ...
    def name(self) -> str: ...


class QgsPluginLayerRegistry(PyQt5.sip.wrapper):

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

    def createLayer(self, typeName: typing.Optional[str], uri: typing.Optional[str] = ...) -> typing.Optional[QgsPluginLayer]: ...
    def pluginLayerType(self, typeName: typing.Optional[str]) -> typing.Optional[QgsPluginLayerType]: ...
    def removePluginLayerType(self, typeName: typing.Optional[str]) -> bool: ...
    def addPluginLayerType(self, pluginLayerType: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        def __xor__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        def __ior__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        def __or__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        def __iand__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        def __and__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> 'QgsPointLocator.Types': ...
        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: typing.Optional[QgsVectorLayer], fid: int, dist: float, pt: 'QgsPointXY', vertexIndex: int = ..., edgePoints: typing.Optional['QgsPointXY'] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointLocator.Match') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def interpolatedPoint(self, destinationCrs: 'QgsCoordinateReferenceSystem' = ...) -> 'QgsPoint': ...
        def edgePoints(self) -> typing.Tuple['QgsPointXY', 'QgsPointXY']: ...
        def featureId(self) -> int: ...
        def layer(self) -> typing.Optional[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: typing.Optional[QgsVectorLayer], destinationCrs: 'QgsCoordinateReferenceSystem' = ..., transformContext: 'QgsCoordinateTransformContext' = ..., extent: typing.Optional['QgsRectangle'] = ...) -> None: ...

    def destroyIndex(self) -> None: ...
    def rebuildIndex(self, maxFeaturesToIndex: int = ...) -> bool: ...
    initFinished: typing.ClassVar[QtCore.pyqtSignal]
    def waitForIndexingFinished(self) -> None: ...
    def isIndexing(self) -> bool: ...
    def cachedGeometryCount(self) -> int: ...
    def pointInPolygon(self, point: 'QgsPointXY', relaxed: bool = ..., filter: typing.Optional['QgsPointLocator.MatchFilter'] = ...) -> 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: typing.Optional['QgsRenderContext']) -> None: ...
    def setExtent(self, extent: typing.Optional['QgsRectangle']) -> None: ...
    def extent(self) -> typing.Optional['QgsRectangle']: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def layer(self) -> typing.Optional[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 __itruediv__(self, scalar: float) -> 'QgsPointXY': ...
    def __imul__(self, scalar: float) -> 'QgsPointXY': ...
    def __truediv__(self, scalar: float) -> 'QgsPointXY': ...
    def __mul__(self, scalar: float) -> 'QgsPointXY': ...
    def __add__(self, v: 'QgsVector') -> 'QgsPointXY': ...
    def __isub__(self, v: 'QgsVector') -> 'QgsPointXY': ...
    def __iadd__(self, v: 'QgsVector') -> 'QgsPointXY': ...
    @typing.overload
    def __sub__(self, p: 'QgsPointXY') -> 'QgsVector': ...
    @typing.overload
    def __sub__(self, v: 'QgsVector') -> 'QgsPointXY': ...
    def multiply(self, scalar: float) -> None: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def distanceCompare(self, other: 'QgsPointXY', epsilon: float = ...) -> bool: ...
    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: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], type: 'QgsPropertyDefinition.StandardPropertyTemplate', origin: typing.Optional[str] = ..., comment: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], dataType: 'QgsPropertyDefinition.DataType', description: typing.Optional[str], helpText: typing.Optional[str], origin: typing.Optional[str] = ..., comment: typing.Optional[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: typing.Optional[str]) -> None: ...
    def comment(self) -> str: ...
    def description(self) -> str: ...
    def setOrigin(self, origin: typing.Optional[str]) -> None: ...
    def origin(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...


class QgsProperty(PyQt5.sip.wrapper):

    @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) -> typing.Optional['QgsPropertyTransformer']: ...
    def setTransformer(self, transformer: typing.Optional['QgsPropertyTransformer']) -> None: ...
    def loadVariant(self, property: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def valueAsBool(self, context: QgsExpressionContext, defaultValue: bool = ...) -> typing.Tuple[bool, typing.Optional[bool]]: ...
    def valueAsInt(self, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, typing.Optional[bool]]: ...
    def valueAsDouble(self, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, typing.Optional[bool]]: ...
    def valueAsColor(self, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, typing.Optional[bool]]: ...
    def valueAsString(self, context: QgsExpressionContext, defaultString: typing.Optional[str] = ...) -> typing.Tuple[str, typing.Optional[bool]]: ...
    def valueAsDateTime(self, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, typing.Optional[bool]]: ...
    def value(self, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Tuple[typing.Any, typing.Optional[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: typing.Optional[str]) -> None: ...
    def field(self) -> str: ...
    def setField(self, field: typing.Optional[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) -> Qgis.PropertyType: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def __int__(self) -> bool: ...
    @staticmethod
    def fromValue(value: typing.Any, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def fromField(fieldName: typing.Optional[str], isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def fromExpression(expression: typing.Optional[str], isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def variantMapToPropertyMap(variantMap: typing.Dict[str, typing.Any]) -> typing.Dict[str, 'QgsProperty']: ...
    @staticmethod
    def propertyMapToVariantMap(propertyMap: typing.Dict[typing.Optional[str], 'QgsProperty']) -> typing.Dict[str, typing.Any]: ...


class QgsAbstractPropertyCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[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, typing.Optional[bool]]: ...
    def valueAsInt(self, key: int, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, typing.Optional[bool]]: ...
    def valueAsDouble(self, key: int, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, typing.Optional[bool]]: ...
    def valueAsColor(self, key: int, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, typing.Optional[bool]]: ...
    def valueAsString(self, key: int, context: QgsExpressionContext, defaultString: typing.Optional[str] = ...) -> typing.Tuple[str, typing.Optional[bool]]: ...
    def valueAsDateTime(self, key: int, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, typing.Optional[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: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...


class QgsPropertyCollection(QgsAbstractPropertyCollection):

    @typing.overload
    def __init__(self, name: typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[str]) -> typing.Optional[QgsPropertyCollection]: ...
    def at(self, index: int) -> typing.Optional[QgsPropertyCollection]: ...
    def appendCollection(self, collection: typing.Optional[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: typing.Optional[str]) -> typing.Tuple[typing.Optional['QgsPropertyTransformer'], str, str]: ...
    def toExpression(self, baseExpression: typing.Optional[str]) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def setCurveTransform(self, transform: typing.Optional[QgsCurveTransform]) -> None: ...
    def curveTransform(self) -> typing.Optional[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) -> typing.Optional['QgsPropertyTransformer']: ...
    def transformerType(self) -> 'QgsPropertyTransformer.Type': ...
    @staticmethod
    def create(type: 'QgsPropertyTransformer.Type') -> typing.Optional['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: typing.Optional[str]) -> typing.Tuple[typing.Optional['QgsGenericNumericTransformer'], str, str]: ...
    def toExpression(self, baseExpression: typing.Optional[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) -> typing.Optional['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: typing.Optional[str]) -> typing.Tuple[typing.Optional['QgsSizeScaleTransformer'], str, str]: ...
    def toExpression(self, baseExpression: typing.Optional[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) -> typing.Optional['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] = ..., rampName: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampTransformer') -> None: ...

    def setRampName(self, name: typing.Optional[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: typing.Optional[QgsColorRamp]) -> None: ...
    def colorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def toExpression(self, baseExpression: typing.Optional[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) -> typing.Optional['QgsColorRampTransformer']: ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsProviderConnectionModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        ConnectionName = ... # type: QgsProviderConnectionModel.CustomRole
        Uri = ... # type: QgsProviderConnectionModel.CustomRole
        Configuration = ... # type: QgsProviderConnectionModel.CustomRole
        Empty = ... # type: QgsProviderConnectionModel.CustomRole

    def __init__(self, provider: typing.Optional[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: typing.Optional[QgsFeatureSink]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProxyFeatureSink') -> None: ...

    def destinationSink(self) -> typing.Optional[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: typing.Optional[str], canCancel: bool = ...) -> None: ...

    canceled: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[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: typing.Optional[str], result: typing.Optional[str]) -> bool: ...
    def runCommand(self, command: typing.Optional[str], messageOnError: typing.Optional[str] = ...) -> bool: ...
    @staticmethod
    def setInstance(runner: typing.Optional['QgsPythonRunner']) -> None: ...
    @staticmethod
    def eval(command: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def run(command: typing.Optional[str], messageOnError: typing.Optional[str] = ...) -> bool: ...
    @staticmethod
    def isValid() -> bool: ...


class QgsQueryResultModel(QtCore.QAbstractTableModel):

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

    fetchingStarted: typing.ClassVar[QtCore.pyqtSignal]
    fetchMoreRows: typing.ClassVar[QtCore.pyqtSignal]
    fetchingComplete: typing.ClassVar[QtCore.pyqtSignal]
    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, lower: float, upper: float, limits: Qgis.RangeLimits) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRangedoubleBase') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 rangeLimits(self) -> Qgis.RangeLimits: ...
    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, limits: Qgis.RangeLimits) -> None: ...
    @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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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, lower: int, upper: int, limits: Qgis.RangeLimits) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRangeintBase') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 rangeLimits(self) -> Qgis.RangeLimits: ...
    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, limits: Qgis.RangeLimits) -> None: ...
    @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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str] = ..., level: Qgis.MessageLevel = ..., categories: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsReadWriteContext.ReadWriteMessage') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        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: typing.Optional['QgsProjectTranslator']) -> None: ...
    def projectTranslator(self) -> typing.Optional['QgsProjectTranslator']: ...
    def takeMessages(self) -> typing.List['QgsReadWriteContext.ReadWriteMessage']: ...
    def _enterCategory(self, category: typing.Optional[str], details: typing.Optional[str] = ...) -> 'QgsReadWriteContextCategoryPopper': ...
    def pushMessage(self, message: typing.Optional[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: typing.Optional[str]) -> typing.Optional['QgsSymbol']: ...
    def pushRecentSymbol(self, identifier: typing.Optional[str], symbol: typing.Optional['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: typing.Optional[str]) -> None: ...
    def updateRelationStatus(self) -> None: ...
    def resolveReferencingField(self, referencedField: typing.Optional[str]) -> str: ...
    def resolveReferencedField(self, referencingField: typing.Optional[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) -> typing.Optional[QgsVectorLayer]: ...
    def referencedLayerId(self) -> str: ...
    def referencingLayer(self) -> typing.Optional[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: typing.Optional[str], referencedField: typing.Optional[str]) -> None: ...
    def setReferencedLayer(self, id: typing.Optional[str]) -> None: ...
    def setReferencingLayer(self, id: typing.Optional[str]) -> None: ...
    def setStrength(self, strength: Qgis.RelationshipStrength) -> None: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def setId(self, id: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> str: ...
    def generateRelations(self) -> typing.List[QgsRelation]: ...
    def referencedLayerIds(self) -> typing.List[str]: ...
    def setReferencedLayerIds(self, childRelationIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    def referencedLayerExpression(self) -> str: ...
    def setReferencedLayerExpression(self, expression: typing.Optional[str]) -> None: ...
    def referencedLayerField(self) -> str: ...
    def setReferencedLayerField(self, referencedLayerField: typing.Optional[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: typing.Optional[str]) -> typing.List[int]: ...
    def fieldPairs(self) -> typing.Dict[str, str]: ...
    def referencingLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def referencingLayerId(self) -> str: ...
    def generateId(self) -> None: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def addFieldPair(self, referencingField: typing.Optional[str], referencedField: typing.Optional[str]) -> None: ...
    def setReferencingLayer(self, id: typing.Optional[str]) -> None: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def setId(self, id: typing.Optional[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) -> typing.Optional['QgsProject']: ...


class QgsRemappingSinkDefinition(PyQt5.sip.wrapper):

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

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str], property: QgsProperty) -> None: ...
    def setFieldMap(self, map: typing.Dict[typing.Optional[str], QgsProperty]) -> None: ...
    def fieldMap(self) -> typing.Dict[str, QgsProperty]: ...


class QgsRemappingProxyFeatureSink(QgsFeatureSink):

    @typing.overload
    def __init__(self, mappingDefinition: QgsRemappingSinkDefinition, sink: typing.Optional[QgsFeatureSink]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRemappingProxyFeatureSink') -> None: ...

    def destinationSink(self) -> typing.Optional[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: typing.Optional[str], relationName: typing.Optional[str], strength: Qgis.RelationshipStrength, referencingLayerId: typing.Optional[str], referencingLayerName: typing.Optional[str], referencingLayerSource: typing.Optional[str], referencingLayerProviderKey: typing.Optional[str], referencedLayerId: typing.Optional[str], referencedLayerName: typing.Optional[str], referencedLayerSource: typing.Optional[str], referencedLayerProviderKey: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsWeakRelation') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def writeXml(layer: typing.Optional[QgsVectorLayer], type: 'QgsWeakRelation.WeakRelationType', relation: QgsRelation, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def readXml(layer: typing.Optional[QgsVectorLayer], type: 'QgsWeakRelation.WeakRelationType', node: QtXml.QDomNode, resolver: QgsPathResolver) -> 'QgsWeakRelation': ...
    def setRelatedTableType(self, type: typing.Optional[str]) -> None: ...
    def relatedTableType(self) -> str: ...
    def setBackwardPathLabel(self, label: typing.Optional[str]) -> None: ...
    def setForwardPathLabel(self, label: typing.Optional[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[typing.Optional[str]]) -> None: ...
    def mappingReferencedLayerFields(self) -> typing.List[str]: ...
    def setReferencedLayerFields(self, fields: typing.Iterable[typing.Optional[str]]) -> None: ...
    def referencedLayerFields(self) -> typing.List[str]: ...
    def setMappingReferencingLayerFields(self, fields: typing.Iterable[typing.Optional[str]]) -> None: ...
    def mappingReferencingLayerFields(self) -> typing.List[str]: ...
    def setReferencingLayerFields(self, fields: typing.Iterable[typing.Optional[str]]) -> None: ...
    def referencingLayerFields(self) -> typing.List[str]: ...
    def setMappingTable(self, sourceUri: typing.Optional[str], provider: typing.Optional[str]) -> None: ...
    def mappingTableName(self) -> str: ...
    def mappingTableProvider(self) -> str: ...
    def mappingTableSource(self) -> str: ...
    def setReferencedLayer(self, sourceUri: typing.Optional[str], provider: typing.Optional[str]) -> None: ...
    def referencedLayerName(self) -> str: ...
    def referencedLayerProvider(self) -> str: ...
    def referencedLayerSource(self) -> str: ...
    def setReferencingLayer(self, sourceUri: typing.Optional[str], provider: typing.Optional[str]) -> None: ...
    def referencingLayerName(self) -> str: ...
    def referencingLayerProvider(self) -> str: ...
    def referencingLayerSource(self) -> str: ...
    def name(self) -> str: ...
    def id(self) -> str: ...
    def resolvedRelations(self, project: typing.Optional['QgsProject']) -> typing.List[QgsRelation]: ...


class QgsRelationManager(QtCore.QObject):

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

    def updateRelationsStatus(self) -> None: ...
    changed: typing.ClassVar[QtCore.pyqtSignal]
    relationsLoaded: typing.ClassVar[QtCore.pyqtSignal]
    def setPolymorphicRelations(self, relations: typing.Iterable[QgsPolymorphicRelation]) -> None: ...
    def removePolymorphicRelation(self, polymorphicRelationId: typing.Optional[str]) -> None: ...
    def addPolymorphicRelation(self, polymorphicRelation: QgsPolymorphicRelation) -> None: ...
    def polymorphicRelation(self, polymorphicRelationId: typing.Optional[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: typing.Optional[str]) -> typing.List[QgsRelation]: ...
    def relation(self, id: typing.Optional[str]) -> QgsRelation: ...
    @typing.overload
    def removeRelation(self, id: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        def __xor__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        def __ior__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        def __or__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        def __iand__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        def __and__(self, f: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag']) -> 'QgsRenderChecker.Flags': ...
        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: ...

    @staticmethod
    def sourcePath() -> str: ...
    def dartMeasurements(self) -> typing.List[QgsDartMeasurement]: ...
    def enableDashBuffering(self, enable: bool) -> None: ...
    def expectedImageFile(self) -> str: ...
    @staticmethod
    def drawBackground(image: typing.Optional[QtGui.QImage]) -> None: ...
    def isKnownAnomaly(self, diffImageFile: typing.Optional[str]) -> bool: ...
    @typing.overload
    def compareImages(self, testName: typing.Optional[str], mismatchCount: int = ..., renderedImageFile: typing.Optional[str] = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    @typing.overload
    def compareImages(self, testName: typing.Optional[str], referenceImageFile: typing.Optional[str], renderedImageFile: typing.Optional[str], mismatchCount: int = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    def runTest(self, testName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def imageToHash(self, imageFile: typing.Optional[str]) -> str: ...
    def setControlPathSuffix(self, name: typing.Optional[str]) -> None: ...
    def setControlPathPrefix(self, name: typing.Optional[str]) -> None: ...
    def setControlExtension(self, extension: typing.Optional[str]) -> None: ...
    def setControlName(self, name: typing.Optional[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 markdownReport(self, ignoreSuccess: bool = ...) -> str: ...
    def report(self, ignoreSuccess: bool = ...) -> str: ...
    def setControlImagePath(self, path: typing.Optional[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: typing.Optional[QgsElevationMap]) -> None: ...
    def elevationMap(self) -> typing.Optional[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 symbolLayerClipGeometries(self, symbolLayerId: typing.Optional[str]) -> typing.List['QgsGeometry']: ...
    def symbolLayerHasClipGeometries(self, symbolLayerId: typing.Optional[str]) -> bool: ...
    def addSymbolLayerClipGeometry(self, symbolLayerId: typing.Optional[str], geometry: 'QgsGeometry') -> None: ...
    def symbolLayerClipPaths(self, symbolLayerId: typing.Optional[str]) -> typing.List[QtGui.QPainterPath]: ...
    def addSymbolLayerClipPath(self, symbolLayerId: typing.Optional[str], path: QtGui.QPainterPath) -> None: ...
    def setMaskSettings(self, settings: QgsMaskRenderSettings) -> None: ...
    def maskSettings(self) -> QgsMaskRenderSettings: ...
    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: typing.Optional[str]) -> None: ...
    def setCustomRenderingFlag(self, flag: typing.Optional[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) -> typing.Optional[QgsMaskIdProvider]: ...
    def setMaskIdProvider(self, provider: typing.Optional[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) -> typing.Optional[QgsFeatureFilterProvider]: ...
    def setFeatureFilterProvider(self, ffp: typing.Optional[QgsFeatureFilterProvider]) -> None: ...
    def setGeometry(self, geometry: typing.Optional['QgsAbstractGeometry']) -> None: ...
    def geometry(self) -> typing.Optional['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: typing.Optional[QtGui.QPainter], id: int = ...) -> None: ...
    def setPreviewRenderPainter(self, painter: typing.Optional[QtGui.QPainter]) -> None: ...
    def setPainter(self, p: typing.Optional[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) -> typing.Optional[QgsFeedback]: ...
    def setFeedback(self, feedback: typing.Optional[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: typing.Optional['QgsSymbolLayer']) -> bool: ...
    def disabledSymbolLayersV2(self) -> typing.Set[str]: ...
    def disabledSymbolLayers(self) -> typing.Set['QgsSymbolLayer']: ...
    def setDisabledSymbolLayersV2(self, symbolLayers: typing.Iterable[typing.Optional[str]]) -> None: ...
    def setDisabledSymbolLayers(self, symbolLayers: typing.Iterable['QgsSymbolLayer']) -> None: ...
    def maskPainter(self, id: int = ...) -> typing.Optional[QtGui.QPainter]: ...
    def setPainterFlagsUsingContext(self, painter: typing.Optional[QtGui.QPainter] = ...) -> None: ...
    def previewRenderPainter(self) -> typing.Optional[QtGui.QPainter]: ...
    def painter(self) -> typing.Optional[QtGui.QPainter]: ...
    @staticmethod
    def fromQPainter(painter: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def create(action: typing.Optional[str], capture: bool) -> typing.Optional['QgsRunProcess']: ...


class QgsBlockingProcess(QtCore.QObject):

    def __init__(self, program: typing.Optional[str], arguments: typing.Iterable[typing.Optional[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.Optional[typing.Callable[..., None]]) -> None: ...
    def setStdOutHandler(self, a0: typing.Optional[typing.Callable[..., None]]) -> None: ...


class QgsRuntimeProfiler(QtCore.QAbstractItemModel):

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

    def groupAdded(self, group: typing.Optional[str]) -> None: ...
    def asText(self, group: typing.Optional[str] = ...) -> str: ...
    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: typing.Optional[str]) -> str: ...
    def groupIsActive(self, group: typing.Optional[str]) -> bool: ...
    def groups(self) -> typing.Set[str]: ...
    def totalTime(self, group: typing.Optional[str] = ...) -> float: ...
    def clear(self, group: typing.Optional[str] = ...) -> None: ...
    def profileTime(self, name: typing.Optional[str], group: typing.Optional[str] = ...) -> float: ...
    def record(self, name: typing.Optional[str], time: float, group: typing.Optional[str] = ..., id: typing.Optional[str] = ...) -> None: ...
    def end(self, group: typing.Optional[str] = ...) -> None: ...
    def start(self, name: typing.Optional[str], group: typing.Optional[str] = ..., id: typing.Optional[str] = ...) -> None: ...
    def childGroups(self, parent: typing.Optional[str] = ..., group: typing.Optional[str] = ...) -> typing.List[str]: ...
    def endGroup(self) -> None: ...
    def beginGroup(self, name: typing.Optional[str]) -> None: ...


class QgsScopedRuntimeProfile(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], group: typing.Optional[str] = ..., id: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScopedRuntimeProfile') -> None: ...

    def switchTask(self, name: typing.Optional[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: typing.Optional[str], scales: typing.Iterable[typing.Optional[str]], errorMessage: typing.Optional[str]) -> bool: ...
    @staticmethod
    def saveScaleList(fileName: typing.Optional[str], scales: typing.Iterable[typing.Optional[str]], errorMessage: typing.Optional[str]) -> bool: ...


class QgsScreenProperties(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, screen: typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @staticmethod
    def createGeometrySimplifier(simplifyMethod: 'QgsSimplifyMethod') -> typing.Optional[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: typing.Optional[str] = ..., data: typing.Dict[int, typing.Any] = ..., flags: typing.Union[QtCore.Qt.ItemFlags, QtCore.Qt.ItemFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[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: typing.Optional[str]) -> None: ...

    def setExportFilePath(self, exportFilePath: typing.Optional[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 __eq__(self, other: object): ...
        def __ne__(self, other: object): ...
        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: typing.Optional['QgsProject']) -> None: ...
    def project(self) -> typing.Optional['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 __ne__(self, other: object): ...
    def clearIndividualLayerSettings(self) -> None: ...
    def setIndividualLayerSettings(self, vl: typing.Optional[QgsVectorLayer], individualLayerSettings: 'QgsSnappingConfig.IndividualLayerSettings') -> None: ...
    @typing.overload
    def individualLayerSettings(self) -> typing.Dict: ...
    @typing.overload
    def individualLayerSettings(self, vl: typing.Optional[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: ...
    def __eq__(self, other: object): ...
    @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: typing.Optional[QgsVectorLayer], t: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type], tol: float, u: Qgis.MapToolUnit) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSnappingUtils.LayerConfig') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    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: ...
    configChanged: typing.ClassVar[QtCore.pyqtSignal]
    def toggleEnabled(self) -> None: ...
    def setConfig(self, snappingConfig: QgsSnappingConfig) -> None: ...
    def getExtraSnapLayers(self) -> typing.Set[QgsVectorLayer]: ...
    def removeExtraSnapLayer(self, vl: typing.Optional[QgsVectorLayer]) -> None: ...
    def addExtraSnapLayer(self, vl: typing.Optional[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) -> typing.Optional[QgsVectorLayer]: ...
    def setCurrentLayer(self, layer: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        def __xor__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        def __ior__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        def __or__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        def __iand__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        def __and__(self, f: typing.Union['QgsSpatialIndex.Flags', 'QgsSpatialIndex.Flag']) -> 'QgsSpatialIndex.Flags': ...
        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]: ...
    @typing.overload
    def deleteFeature(self, feature: QgsFeature) -> bool: ...
    @typing.overload
    def deleteFeature(self, id: int, bounds: 'QgsRectangle') -> 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: ...

    remoteSourceFetched: typing.ClassVar[QtCore.pyqtSignal]
    def localFilePath(self, path: typing.Optional[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: typing.Optional[str]) -> str: ...
    @staticmethod
    def quotedString(value: typing.Optional[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) -> typing.Optional['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) -> typing.Optional['QgsSQLStatement.NodeList']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def count(self) -> int: ...
        def list(self) -> typing.List['QgsSQLStatement.Node']: ...
        def append(self, node: typing.Optional['QgsSQLStatement.Node']) -> None: ...

    class NodeUnaryOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, op: 'QgsSQLStatement.UnaryOperator', operand: typing.Optional['QgsSQLStatement.Node']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...

        def clone(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def operand(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def op(self) -> 'QgsSQLStatement.UnaryOperator': ...

    class NodeBinaryOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, op: 'QgsSQLStatement.BinaryOperator', opLeft: typing.Optional['QgsSQLStatement.Node'], opRight: typing.Optional['QgsSQLStatement.Node']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...

        def leftAssociative(self) -> bool: ...
        def precedence(self) -> int: ...
        def clone(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def opRight(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def opLeft(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def op(self) -> 'QgsSQLStatement.BinaryOperator': ...

    class NodeInOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: typing.Optional['QgsSQLStatement.Node'], list: typing.Optional['QgsSQLStatement.NodeList'], notin: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeInOperator') -> None: ...

        def clone(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def list(self) -> typing.Optional['QgsSQLStatement.NodeList']: ...
        def isNotIn(self) -> bool: ...
        def node(self) -> typing.Optional['QgsSQLStatement.Node']: ...

    class NodeBetweenOperator('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: typing.Optional['QgsSQLStatement.Node'], minVal: typing.Optional['QgsSQLStatement.Node'], maxVal: typing.Optional['QgsSQLStatement.Node'], notBetween: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...

        def clone(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def maxVal(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def minVal(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def isNotBetween(self) -> bool: ...
        def node(self) -> typing.Optional['QgsSQLStatement.Node']: ...

    class NodeFunction('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: typing.Optional[str], args: typing.Optional['QgsSQLStatement.NodeList']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeFunction') -> None: ...

        def clone(self) -> typing.Optional['QgsSQLStatement.Node']: ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def args(self) -> typing.Optional['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) -> typing.Optional['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: typing.Optional[str], star: bool) -> None: ...
        @typing.overload
        def __init__(self, tableName: typing.Optional[str], name: typing.Optional[str], star: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeColumnRef') -> None: ...

        def cloneThis(self) -> typing.Optional['QgsSQLStatement.NodeColumnRef']: ...
        def clone(self) -> typing.Optional['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: typing.Optional['QgsSQLStatement.Node']) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...

        def cloneThis(self) -> typing.Optional['QgsSQLStatement.NodeSelectedColumn']: ...
        def clone(self) -> typing.Optional['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) -> typing.Optional['QgsSQLStatement.Node']: ...
        def setAlias(self, alias: typing.Optional[str]) -> None: ...

    class NodeCast('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: typing.Optional['QgsSQLStatement.Node'], type: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeCast') -> None: ...

        def clone(self) -> typing.Optional['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) -> typing.Optional['QgsSQLStatement.Node']: ...

    class NodeTableDef('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, name: typing.Optional[str], alias: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, schema: typing.Optional[str], name: typing.Optional[str], alias: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeTableDef') -> None: ...

        def cloneThis(self) -> typing.Optional['QgsSQLStatement.NodeTableDef']: ...
        def clone(self) -> typing.Optional['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: typing.Optional['QgsSQLStatement.NodeTableDef'], onExpr: typing.Optional['QgsSQLStatement.Node'], type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, tabledef: typing.Optional['QgsSQLStatement.NodeTableDef'], usingColumns: typing.Iterable[typing.Optional[str]], type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeJoin') -> None: ...

        def cloneThis(self) -> typing.Optional['QgsSQLStatement.NodeJoin']: ...
        def clone(self) -> typing.Optional['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) -> typing.Optional['QgsSQLStatement.Node']: ...
        def tableDef(self) -> typing.Optional['QgsSQLStatement.NodeTableDef']: ...

    class NodeColumnSorted('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, column: typing.Optional['QgsSQLStatement.NodeColumnRef'], asc: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeColumnSorted') -> None: ...

        def cloneThis(self) -> typing.Optional['QgsSQLStatement.NodeColumnSorted']: ...
        def clone(self) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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: typing.Optional['QgsSQLStatement.Node']) -> None: ...
        def appendJoin(self, join: typing.Optional['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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSQLStatement') -> None: ...
    @typing.overload
    def __init__(self, statement: typing.Optional[str], allowFragments: bool) -> None: ...

    def acceptVisitor(self, v: 'QgsSQLStatement.Visitor') -> None: ...
    @staticmethod
    def quotedString(text: typing.Optional[str]) -> str: ...
    @staticmethod
    def stripMsQuotedIdentifier(text: typing.Optional[str]) -> str: ...
    @staticmethod
    def stripQuotedIdentifier(text: typing.Optional[str]) -> str: ...
    @staticmethod
    def quotedIdentifierIfNeeded(name: typing.Optional[str]) -> str: ...
    @staticmethod
    def quotedIdentifier(name: typing.Optional[str]) -> str: ...
    def dump(self) -> str: ...
    def statement(self) -> str: ...
    def rootNode(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSQLStatementFragment') -> None: ...


class QgsStatisticalSummary(PyQt5.sip.wrapper):

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

    @staticmethod
    def shortName(statistic: Qgis.Statistic) -> str: ...
    @staticmethod
    def displayName(statistic: Qgis.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: Qgis.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[Qgis.Statistics, Qgis.Statistic]) -> None: ...
    def statistics(self) -> Qgis.Statistics: ...


class QgsStoredExpression(PyQt5.sip.wrapper):

    class Category(int):
        FilterExpression = ... # type: QgsStoredExpression.Category
        DefaultValueExpression = ... # type: QgsStoredExpression.Category
        All = ... # type: QgsStoredExpression.Category

    expression = ... # type: typing.Optional[str]
    id = ... # type: typing.Optional[str]
    name = ... # type: typing.Optional[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: typing.Optional[str], tag: QgsStoredExpression.Category = ...) -> QgsStoredExpression: ...
    def storedExpression(self, id: typing.Optional[str]) -> QgsStoredExpression: ...
    def storedExpressions(self, tag: QgsStoredExpression.Category = ...) -> typing.List[QgsStoredExpression]: ...
    def addStoredExpressions(self, storedExpressions: typing.Iterable[QgsStoredExpression]) -> None: ...
    def updateStoredExpression(self, id: typing.Optional[str], name: typing.Optional[str], expression: typing.Optional[str], tag: QgsStoredExpression.Category) -> None: ...
    def removeStoredExpression(self, id: typing.Optional[str]) -> None: ...
    def addStoredExpression(self, name: typing.Optional[str], expression: typing.Optional[str], tag: QgsStoredExpression.Category = ...) -> str: ...


class QgsStringStatisticalSummary(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, stats: typing.Union[Qgis.StringStatistics, Qgis.StringStatistic] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringStatisticalSummary') -> None: ...

    @staticmethod
    def displayName(statistic: Qgis.StringStatistic) -> 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: Qgis.StringStatistic) -> typing.Any: ...
    def finalize(self) -> None: ...
    def addValue(self, value: typing.Any) -> None: ...
    def addString(self, string: typing.Optional[str]) -> None: ...
    def calculateFromVariants(self, values: typing.Iterable[typing.Any]) -> None: ...
    def calculate(self, values: typing.Iterable[typing.Optional[str]]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union[Qgis.StringStatistics, Qgis.StringStatistic]) -> None: ...
    def statistics(self) -> Qgis.StringStatistics: ...


class QgsStringReplacement(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, match: typing.Optional[str], replacement: typing.Optional[str], caseSensitive: bool = ..., wholeWordOnly: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringReplacement') -> None: ...

    def __ne__(self, other: object): ...
    @staticmethod
    def fromProperties(properties: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> 'QgsStringReplacement': ...
    def properties(self) -> typing.Dict[str, str]: ...
    def __eq__(self, other: object): ...
    def process(self, input: typing.Optional[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: typing.Optional[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: typing.Optional[str], maxLength: int) -> str: ...
    @staticmethod
    def qRegExpEscape(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def htmlToMarkdown(html: typing.Optional[str]) -> str: ...
    @staticmethod
    def substituteVerticalCharacters(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def wordWrap(string: typing.Optional[str], length: int, useMaxLineLength: bool = ..., customDelimiter: typing.Optional[str] = ...) -> str: ...
    @staticmethod
    def isUrl(string: typing.Optional[str]) -> bool: ...
    @staticmethod
    def insertLinks(string: typing.Optional[str]) -> typing.Tuple[str, typing.Optional[bool]]: ...
    @staticmethod
    def fuzzyScore(candidate: typing.Optional[str], search: typing.Optional[str]) -> float: ...
    @staticmethod
    def soundex(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def hammingDistance(string1: typing.Optional[str], string2: typing.Optional[str], caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def longestCommonSubstring(string1: typing.Optional[str], string2: typing.Optional[str], caseSensitive: bool = ...) -> str: ...
    @staticmethod
    def levenshteinDistance(string1: typing.Optional[str], string2: typing.Optional[str], caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def ampersandEncode(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def capitalize(string: typing.Optional[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: typing.Optional['QgsNumericFormat']) -> None: ...
    def numericFormat(self) -> typing.Optional['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: typing.Optional[QgsTask], dependentTasks: typing.Iterable[QgsTask] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTaskManager.TaskDefinition') -> None: ...

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

    taskTriggered: typing.ClassVar[QtCore.pyqtSignal]
    countActiveTasksChanged: typing.ClassVar[QtCore.pyqtSignal]
    allTasksFinished: typing.ClassVar[QtCore.pyqtSignal]
    taskAboutToBeDeleted: typing.ClassVar[QtCore.pyqtSignal]
    taskAdded: typing.ClassVar[QtCore.pyqtSignal]
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    finalTaskProgressChanged: typing.ClassVar[QtCore.pyqtSignal]
    progressChanged: typing.ClassVar[QtCore.pyqtSignal]
    def triggerTask(self, task: typing.Optional[QgsTask]) -> None: ...
    def countActiveTasks(self, includeHidden: bool = ...) -> int: ...
    def activeTasks(self) -> typing.List[QgsTask]: ...
    def tasksDependentOnLayer(self, layer: typing.Optional[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: typing.Optional[QgsTask]) -> int: ...
    def count(self) -> int: ...
    def tasks(self) -> typing.List[QgsTask]: ...
    def task(self, id: int) -> typing.Optional[QgsTask]: ...
    @typing.overload
    def addTask(self, task: typing.Optional[QgsTask], priority: int = ...) -> int: ...
    @typing.overload
    def addTask(self, task: 'QgsTaskManager.TaskDefinition', priority: int = ...) -> int: ...
    def threadPool(self) -> typing.Optional[QtCore.QThreadPool]: ...


class QgsTaskWithSerialSubTasks(QgsTask):

    def __init__(self, desc: typing.Optional[str] = ...) -> None: ...

    def run(self) -> bool: ...
    def cancel(self) -> None: ...
    def addSubTask(self, subTask: typing.Optional[QgsTask]) -> None: ...


class QgsTemporalController(QtCore.QObject):

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

    updateTemporalRange: typing.ClassVar[QtCore.pyqtSignal]


class QgsTemporalNavigationObject(QgsTemporalController, QgsExpressionContextScopeGenerator):

    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: ...
    totalMovieFramesChanged: typing.ClassVar[QtCore.pyqtSignal]
    temporalFrameDurationChanged: typing.ClassVar[QtCore.pyqtSignal]
    temporalExtentsChanged: typing.ClassVar[QtCore.pyqtSignal]
    navigationModeChanged: typing.ClassVar[QtCore.pyqtSignal]
    stateChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setTotalMovieFrames(self, frames: int) -> None: ...
    def totalMovieFrames(self) -> int: ...
    def createExpressionContextScope(self) -> typing.Optional[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) -> Qgis.TemporalNavigationMode: ...
    def setNavigationMode(self, mode: Qgis.TemporalNavigationMode) -> None: ...
    def animationState(self) -> Qgis.AnimationState: ...
    def setAnimationState(self, state: Qgis.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: typing.Optional[str]
        frameDuration = ... # type: QgsInterval
        frameRate = ... # type: float
        outputDirectory = ... # type: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional['QgsProject']) -> typing.List[QgsDateTimeRange]: ...
    @staticmethod
    def calculateTemporalRangeForProject(project: typing.Optional['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 error(self) -> str: ...
    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: typing.Optional['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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[QgsMapLayer], mapSettings: QgsMapSettings, units: Qgis.MapToolUnit = ...) -> float: ...
    @staticmethod
    def toleranceInProjectUnits(tolerance: float, layer: typing.Optional[QgsMapLayer], mapSettings: QgsMapSettings, units: Qgis.MapToolUnit) -> float: ...
    @staticmethod
    def defaultTolerance(layer: typing.Optional[QgsMapLayer], mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(layer: typing.Optional[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], typing.Optional['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: typing.Optional[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 project(self) -> typing.Optional['QgsProject']: ...
    def setProject(self, project: typing.Optional['QgsProject']) -> None: ...
    def setForceSuppressFormPopup(self, forceSuppressFormPopup: bool) -> None: ...
    def forceSuppressFormPopup(self) -> bool: ...
    def copyMoveFeatures(self, layer: typing.Optional[QgsVectorLayer], request: QgsFeatureRequest, dx: float = ..., dy: float = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ..., childrenInfoMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple[bool, QgsFeatureRequest, typing.Optional[str]]: ...
    def saveEdits(self, layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def stopEditing(self, layer: typing.Optional[QgsVectorLayer], allowCancel: bool = ...) -> bool: ...
    def startEditing(self, layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def addFeatureV2(self, layer: typing.Optional[QgsVectorLayer], defaultValues: typing.Dict[int, typing.Any] = ..., defaultGeometry: 'QgsGeometry' = ..., context: 'QgsVectorLayerToolsContext' = ...) -> typing.Tuple[bool, typing.Optional[QgsFeature]]: ...
    def addFeature(self, layer: typing.Optional[QgsVectorLayer], defaultValues: typing.Dict[int, typing.Any] = ..., defaultGeometry: 'QgsGeometry' = ..., parentWidget: typing.Optional[QtWidgets.QWidget] = ..., showModal: bool = ..., hideParent: bool = ...) -> typing.Tuple[bool, typing.Optional[QgsFeature]]: ...


class QgsTrackedVectorLayerTools(QgsVectorLayerTools):

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

    def rollback(self) -> None: ...
    def setVectorLayerTools(self, tools: typing.Optional[QgsVectorLayerTools]) -> None: ...
    def copyMoveFeatures(self, layer: typing.Optional[QgsVectorLayer], request: QgsFeatureRequest, dx: float = ..., dy: float = ..., errorMsg: typing.Optional[typing.Optional[str]] = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ..., childrenInfoMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def saveEdits(self, layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def stopEditing(self, layer: typing.Optional[QgsVectorLayer], allowCancel: bool) -> bool: ...
    def startEditing(self, layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def addFeatureV2(self, layer: typing.Optional[QgsVectorLayer], defaultValues: typing.Dict[int, typing.Any], defaultGeometry: 'QgsGeometry', context: 'QgsVectorLayerToolsContext') -> typing.Tuple[bool, typing.Optional[QgsFeature]]: ...


class QgsTransaction(QtCore.QObject):

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

    dirtied: typing.ClassVar[QtCore.pyqtSignal]
    afterRollback: typing.ClassVar[QtCore.pyqtSignal]
    def lastSavePointIsDirty(self) -> bool: ...
    def savePoints(self) -> typing.List[str]: ...
    def dirtyLastSavePoint(self) -> None: ...
    def rollbackToSavepoint(self, name: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def createSavepoint(self) -> typing.Tuple[str, str]: ...
    @typing.overload
    def createSavepoint(self, savePointId: typing.Optional[str]) -> typing.Tuple[str, str]: ...
    @staticmethod
    def supportsTransaction(layer: typing.Optional[QgsVectorLayer]) -> bool: ...
    def executeSql(self, sql: typing.Optional[str], isDirty: bool = ..., name: typing.Optional[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: typing.Optional[QgsVectorLayer], addLayersInEditMode: bool = ...) -> bool: ...
    def connectionString(self) -> str: ...
    @typing.overload
    @staticmethod
    def create(connString: typing.Optional[str], providerKey: typing.Optional[str]) -> typing.Optional['QgsTransaction']: ...
    @typing.overload
    @staticmethod
    def create(layers: typing.Iterable[QgsVectorLayer]) -> typing.Optional['QgsTransaction']: ...


class QgsTransactionGroup(QtCore.QObject):

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

    commitError: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def registerTranslation(self, context: typing.Optional[str], source: typing.Optional[str]) -> None: ...
    def setFileName(self, fileName: typing.Optional[str]) -> None: ...
    def fileName(self) -> str: ...
    def setProject(self, project: typing.Optional['QgsProject']) -> None: ...
    def project(self) -> typing.Optional['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: typing.Optional[str]) -> typing.Tuple[Qgis.LayoutUnit, typing.Optional[bool]]: ...
    @staticmethod
    def decodeRenderUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.RenderUnit, typing.Optional[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: typing.Optional[str]) -> typing.Tuple[Qgis.AngleUnit, typing.Optional[bool]]: ...
    @staticmethod
    def volumeToDistanceUnit(volumeUnit: Qgis.VolumeUnit) -> Qgis.DistanceUnit: ...
    @staticmethod
    def distanceToVolumeUnit(distanceUnit: Qgis.DistanceUnit) -> Qgis.VolumeUnit: ...
    @staticmethod
    def stringToVolumeUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.VolumeUnit, typing.Optional[bool]]: ...
    @staticmethod
    def decodeVolumeUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.VolumeUnit, typing.Optional[bool]]: ...
    @staticmethod
    def stringToTemporalUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.TemporalUnit, typing.Optional[bool]]: ...
    @staticmethod
    def decodeTemporalUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.TemporalUnit, typing.Optional[bool]]: ...
    @staticmethod
    def areaToDistanceUnit(areaUnit: Qgis.AreaUnit) -> Qgis.DistanceUnit: ...
    @staticmethod
    def distanceToAreaUnit(distanceUnit: Qgis.DistanceUnit) -> Qgis.AreaUnit: ...
    @staticmethod
    def stringToAreaUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.AreaUnit, typing.Optional[bool]]: ...
    @staticmethod
    def decodeAreaUnit(string: typing.Optional[str]) -> typing.Tuple[Qgis.AreaUnit, typing.Optional[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: typing.Optional[str]) -> typing.Tuple[Qgis.DistanceUnit, typing.Optional[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: typing.Optional[str]) -> typing.Tuple[Qgis.DistanceUnit, typing.Optional[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: typing.Optional[str]) -> typing.Tuple[Qgis.UnitType, typing.Optional[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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUnsetAttributeValue') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def defaultValueClause(self) -> str: ...


class QgsUserProfile(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, folder: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsUserProfile') -> None: ...

    def icon(self) -> QtGui.QIcon: ...
    def setAlias(self, alias: typing.Optional[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: typing.Optional[str] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    profilesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def settings(self) -> typing.Optional[QtCore.QSettings]: ...
    def loadUserProfile(self, name: typing.Optional[str]) -> None: ...
    def setActiveUserProfile(self, profile: typing.Optional[str]) -> None: ...
    def userProfile(self) -> typing.Optional[QgsUserProfile]: ...
    def deleteProfile(self, name: typing.Optional[str]) -> QgsError: ...
    def createUserProfile(self, name: typing.Optional[str]) -> QgsError: ...
    def profileForName(self, name: typing.Optional[str]) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    def defaultProfileName(self) -> str: ...
    def profileExists(self, name: typing.Optional[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: typing.Optional[str]) -> None: ...
    def getProfile(self, defaultProfile: typing.Optional[str] = ..., createNew: bool = ..., initSettings: bool = ...) -> typing.Optional[QgsUserProfile]: ...
    @staticmethod
    def resolveProfilesFolder(basePath: typing.Optional[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: ...
    @typing.overload
    @staticmethod
    def typeToDisplayString(type: QtCore.QMetaType.Type, subType: QtCore.QMetaType.Type = ...) -> str: ...
    @typing.overload
    @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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __isub__(self, other: 'QgsVector') -> 'QgsVector': ...
    def __sub__(self, other: 'QgsVector') -> 'QgsVector': ...
    def __iadd__(self, other: 'QgsVector') -> 'QgsVector': ...
    def __add__(self, other: 'QgsVector') -> 'QgsVector': ...
    def __truediv__(self, scalar: float) -> 'QgsVector': ...
    @typing.overload
    def __mul__(self, scalar: float) -> 'QgsVector': ...
    @typing.overload
    def __mul__(self, v: 'QgsVector') -> 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 __truediv__(self, factor: float) -> 'QgsVector3D': ...
    def __mul__(self, factor: float) -> 'QgsVector3D': ...
    def __sub__(self, other: 'QgsVector3D') -> 'QgsVector3D': ...
    def __add__(self, other: 'QgsVector3D') -> 'QgsVector3D': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def set(self, x: float, y: float, z: float) -> None: ...
    def setZ(self, z: float) -> None: ...
    def setY(self, y: float) -> None: ...
    def setX(self, x: 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: typing.Optional[str]
        type = ... # type: 'QgsVectorFileWriter.OptionType'

        @typing.overload
        def __init__(self, docString: typing.Optional[str], type: 'QgsVectorFileWriter.OptionType') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.Option') -> None: ...

    class SetOption('QgsVectorFileWriter.Option'):

        allowNone = ... # type: bool
        defaultValue = ... # type: typing.Optional[str]
        values = ... # type: typing.Iterable[typing.Optional[str]]

        @typing.overload
        def __init__(self, docString: typing.Optional[str], values: typing.Iterable[typing.Optional[str]], defaultValue: typing.Optional[str], allowNone: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.SetOption') -> None: ...

    class StringOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, docString: typing.Optional[str], defaultValue: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.StringOption') -> None: ...

    class IntOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: int

        @typing.overload
        def __init__(self, docString: typing.Optional[str], defaultValue: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.IntOption') -> None: ...

    class BoolOption('QgsVectorFileWriter.SetOption'):

        @typing.overload
        def __init__(self, docString: typing.Optional[str], defaultValue: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.BoolOption') -> None: ...

    class HiddenOption('QgsVectorFileWriter.Option'):

        mValue = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, value: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.HiddenOption') -> None: ...

    class MetaData(PyQt5.sip.wrapper):

        compulsoryEncoding = ... # type: typing.Optional[str]
        driverOptions = ... # type: typing.Any
        ext = ... # type: typing.Optional[str]
        glob = ... # type: typing.Optional[str]
        layerOptions = ... # type: typing.Any
        longName = ... # type: typing.Optional[str]
        trLongName = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, longName: typing.Optional[str], trLongName: typing.Optional[str], glob: typing.Optional[str], ext: typing.Optional[str], driverOptions: typing.Any, layerOptions: typing.Any, compulsoryEncoding: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __xor__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __ior__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __or__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __iand__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        def __and__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> 'QgsVectorFileWriter.VectorFormatOptions': ...
        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) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __xor__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __ior__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __or__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __iand__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        def __and__(self, f: typing.Union['QgsVectorFileWriter.EditionCapabilities', 'QgsVectorFileWriter.EditionCapability']) -> 'QgsVectorFileWriter.EditionCapabilities': ...
        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[typing.Optional[str]]
        ct = ... # type: 'QgsCoordinateTransform'
        datasourceOptions = ... # type: typing.Iterable[typing.Optional[str]]
        driverName = ... # type: typing.Optional[str]
        feedback = ... # type: QgsFeedback
        fieldNameSource = ... # type: 'QgsVectorFileWriter.FieldNameSource'
        fieldValueConverter = ... # type: 'QgsVectorFileWriter.FieldValueConverter'
        fileEncoding = ... # type: typing.Optional[str]
        filterExtent = ... # type: 'QgsRectangle'
        forceMulti = ... # type: bool
        includeConstraints = ... # type: bool
        includeZ = ... # type: bool
        layerMetadata = ... # type: 'QgsLayerMetadata'
        layerName = ... # type: typing.Optional[str]
        layerOptions = ... # type: typing.Iterable[typing.Optional[str]]
        onlySelectedFeatures = ... # type: bool
        overrideGeometryType = ... # type: Qgis.WkbType
        saveMetadata = ... # type: bool
        setFieldDomains = ... # type: bool
        skipAttributeCreation = ... # type: bool
        sourceDatabaseProviderConnection = ... # type: 'QgsAbstractDatabaseProviderConnection'
        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: typing.Optional[str]
        filterString = ... # type: typing.Optional[str]
        globs = ... # type: typing.Iterable[typing.Optional[str]]

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

    class DriverDetails(PyQt5.sip.wrapper):

        driverName = ... # type: typing.Optional[str]
        longName = ... # type: typing.Optional[str]

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

    def __init__(self, vectorFileName: typing.Optional[str], fileEncoding: typing.Optional[str], fields: QgsFields, geometryType: Qgis.WkbType, srs: 'QgsCoordinateReferenceSystem' = ..., driverName: typing.Optional[str] = ..., datasourceOptions: typing.Iterable[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ..., newFilename: typing.Optional[typing.Optional[str]] = ..., symbologyExport: Qgis.FeatureSymbologyExport = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> None: ...

    @staticmethod
    def areThereNewFieldsToCreate(datasetName: typing.Optional[str], layerName: typing.Optional[str], layer: typing.Optional[QgsVectorLayer], attributes: typing.Iterable[int]) -> bool: ...
    @staticmethod
    def targetLayerExists(datasetName: typing.Optional[str], layerName: typing.Optional[str]) -> bool: ...
    @staticmethod
    def editionCapabilities(datasetName: typing.Optional[str]) -> 'QgsVectorFileWriter.EditionCapabilities': ...
    @staticmethod
    def defaultLayerOptions(driverName: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def defaultDatasetOptions(driverName: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def driverMetadata(driverName: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def addFeatureWithStyle(self, feature: QgsFeature, renderer: typing.Optional['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: typing.Optional[str]) -> str: ...
    @staticmethod
    def filterForDriver(driverName: typing.Optional[str]) -> str: ...
    @staticmethod
    def fileFilterString(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> str: ...
    @staticmethod
    def driverForExtension(extension: typing.Optional[str]) -> str: ...
    @staticmethod
    def ogrDriverList(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List['QgsVectorFileWriter.DriverDetails']: ...
    @staticmethod
    def supportsFeatureStyles(driverName: typing.Optional[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: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions') -> typing.Tuple['QgsVectorFileWriter.WriterError', typing.Optional[str], typing.Optional[str], typing.Optional[str]]: ...
    @staticmethod
    def writeAsVectorFormatV2(layer: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[typing.Optional[str]] = ..., newLayer: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', typing.Optional[str]]: ...
    @staticmethod
    def create(fileName: typing.Optional[str], fields: QgsFields, geometryType: Qgis.WkbType, srs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., newFilename: typing.Optional[typing.Optional[str]] = ..., newLayer: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional['QgsVectorFileWriter']: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], fileEncoding: typing.Optional[str], destCRS: 'QgsCoordinateReferenceSystem' = ..., driverName: typing.Optional[str] = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[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', typing.Optional[str]]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], fileEncoding: typing.Optional[str], ct: 'QgsCoordinateTransform', driverName: typing.Optional[str] = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[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', typing.Optional[str]]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', typing.Optional[str]]: ...


class QgsVectorFileWriterTask(QgsTask):

    def __init__(self, layer: typing.Optional[QgsVectorLayer], fileName: typing.Optional[str], options: QgsVectorFileWriter.SaveVectorOptions) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    writeComplete: typing.ClassVar[QtCore.pyqtSignal]
    def cancel(self) -> None: ...


class QgsVectorSimplifyMethod(PyQt5.sip.wrapper):

    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) -> Qgis.VectorSimplificationAlgorithm: ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: Qgis.VectorSimplificationAlgorithm) -> None: ...
    def simplifyHints(self) -> Qgis.VectorRenderingSimplificationFlags: ...
    def setSimplifyHints(self, simplifyHints: typing.Union[Qgis.VectorRenderingSimplificationFlags, Qgis.VectorRenderingSimplificationFlag]) -> None: ...


class QgsVirtualLayerDefinition(PyQt5.sip.wrapper):

    class SourceLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, name: typing.Optional[str], ref: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, name: typing.Optional[str], source: typing.Optional[str], provider: typing.Optional[str], encoding: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVirtualLayerDefinition') -> None: ...

    def setSubsetString(self, subsetString: typing.Optional[str]) -> None: ...
    def subsetString(self) -> str: ...
    def hasDefinedGeometry(self) -> bool: ...
    def hasReferencedLayers(self) -> bool: ...
    def hasSourceLayer(self, name: typing.Optional[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: typing.Optional[str]) -> None: ...
    def geometryField(self) -> str: ...
    def isLazy(self) -> bool: ...
    def setLazy(self, lazy: bool) -> None: ...
    def setUid(self, uid: typing.Optional[str]) -> None: ...
    def uid(self) -> str: ...
    def setFilePath(self, filePath: typing.Optional[str]) -> None: ...
    def filePath(self) -> str: ...
    def setQuery(self, query: typing.Optional[str]) -> None: ...
    def query(self) -> str: ...
    def sourceLayers(self) -> typing.List['QgsVirtualLayerDefinition.SourceLayer']: ...
    @typing.overload
    def addSource(self, name: typing.Optional[str], ref: typing.Optional[str]) -> None: ...
    @typing.overload
    def addSource(self, name: typing.Optional[str], source: typing.Optional[str], provider: typing.Optional[str], encoding: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> QgsVirtualLayerDefinition: ...


class QgsVirtualLayerTask(QgsTask):

    def __init__(self, definition: QgsVirtualLayerDefinition) -> None: ...

    def setExceptionText(self, exceptionText: typing.Optional[str]) -> None: ...
    def exceptionText(self) -> str: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...
    def definition(self) -> QgsVirtualLayerDefinition: ...
    def takeLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def layer(self) -> typing.Optional[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: typing.Optional[str] = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def writeBox3D(box: 'QgsBox3D', doc: QtXml.QDomDocument, elementName: typing.Optional[str] = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def writeMapUnits(units: Qgis.DistanceUnit, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def readBox3D(element: QtXml.QDomElement) -> 'QgsBox3D': ...
    @staticmethod
    def readRectangle(element: QtXml.QDomElement) -> 'QgsRectangle': ...
    @staticmethod
    def readMapUnits(element: QtXml.QDomElement) -> Qgis.DistanceUnit: ...


class QgsZipUtils(PyQt5.sip.simplewrapper):

    def files(self, zip: typing.Optional[str]) -> typing.List[str]: ...
    def zip(self, zip: typing.Optional[str], files: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def unzip(self, zip: typing.Optional[str], dir: typing.Optional[str], checkConsistency: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def isZipFile(self, filename: typing.Optional[str]) -> bool: ...


class Qgs3DRendererAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgs3DRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['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: typing.Optional[str]) -> typing.Optional[Qgs3DRendererAbstractMetadata]: ...
    def removeRenderer(self, type: typing.Optional[str]) -> None: ...
    def addRenderer(self, metadata: typing.Optional[Qgs3DRendererAbstractMetadata]) -> None: ...


class Qgs3DSymbolAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: typing.Optional[str], visibleName: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'Qgs3DSymbolAbstractMetadata') -> None: ...

    def create(self) -> typing.Optional['QgsAbstract3DSymbol']: ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class Qgs3DSymbolRegistry(PyQt5.sip.wrapper):

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

    def defaultSymbolForGeometryType(self, type: Qgis.GeometryType) -> typing.Optional['QgsAbstract3DSymbol']: ...
    def createSymbol(self, type: typing.Optional[str]) -> typing.Optional['QgsAbstract3DSymbol']: ...
    def addSymbolType(self, metadata: typing.Optional[Qgs3DSymbolAbstractMetadata]) -> bool: ...
    def symbolTypes(self) -> typing.List[str]: ...
    def symbolMetadata(self, type: typing.Optional[str]) -> typing.Optional[Qgs3DSymbolAbstractMetadata]: ...


class QgsAbstract3DSymbol(PyQt5.sip.wrapper):

    class Property(int):
        Height = ... # type: QgsAbstract3DSymbol.Property
        ExtrusionHeight = ... # type: QgsAbstract3DSymbol.Property

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

    def copyBaseSettings(self, destination: typing.Optional['QgsAbstract3DSymbol']) -> None: ...
    def setDefaultPropertiesFromLayer(self, layer: typing.Optional[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) -> typing.Optional['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) -> typing.Optional['QgsAbstract3DRenderer']: ...
    def type(self) -> str: ...


class QgsAbstractPointCloud3DRenderer(QgsAbstract3DRenderer):

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

    def convertFrom2DRenderer(self, renderer: typing.Optional['QgsPointCloudRenderer']) -> bool: ...


class QgsAction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.AttributeActionType, description: typing.Optional[str], command: typing.Optional[str], capture: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.AttributeActionType, description: typing.Optional[str], action: typing.Optional[str], icon: typing.Optional[str], capture: bool, shortTitle: typing.Optional[str] = ..., actionScopes: typing.Iterable[typing.Optional[str]] = ..., notificationMessage: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, id: QtCore.QUuid, type: Qgis.AttributeActionType, description: typing.Optional[str], action: typing.Optional[str], icon: typing.Optional[str], capture: bool, shortTitle: typing.Optional[str] = ..., actionScopes: typing.Iterable[typing.Optional[str]] = ..., notificationMessage: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAction') -> None: ...

    def setCommand(self, newCommand: typing.Optional[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[typing.Optional[str]]) -> None: ...
    def actionScopes(self) -> typing.Set[str]: ...
    @typing.overload
    def run(self, layer: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> None: ...

    def defaultAction(self, actionScope: typing.Optional[str]) -> QgsAction: ...
    def setDefaultAction(self, actionScope: typing.Optional[str], actionId: QtCore.QUuid) -> None: ...
    @typing.overload
    def action(self, id: QtCore.QUuid) -> QgsAction: ...
    @typing.overload
    def action(self, id: typing.Optional[str]) -> QgsAction: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def layer(self) -> typing.Optional[QgsVectorLayer]: ...
    def actions(self, actionScope: typing.Optional[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: typing.Optional[str], command: typing.Optional[str], capture: bool = ...) -> QtCore.QUuid: ...
    @typing.overload
    def addAction(self, type: Qgis.AttributeActionType, name: typing.Optional[str], command: typing.Optional[str], icon: typing.Optional[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: typing.Optional[str], title: typing.Optional[str], description: typing.Optional[str], expressionContextScope: QgsExpressionContextScope = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsActionScope') -> None: ...

    def __ne__(self, other: object): ...
    def __hash__(self) -> int: ...
    def isValid(self) -> bool: ...
    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def title(self) -> str: ...
    def setId(self, id: typing.Optional[str]) -> None: ...
    def id(self) -> str: ...
    def setExpressionContextScope(self, expressionContextScope: QgsExpressionContextScope) -> None: ...
    def expressionContextScope(self) -> QgsExpressionContextScope: ...
    def __eq__(self, other: object): ...


class QgsActionScopeRegistry(QtCore.QObject):

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

    actionScopesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def actionScope(self, id: typing.Optional[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: typing.Optional['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: ...
    mapLayerChanged: typing.ClassVar[QtCore.pyqtSignal]
    moved: typing.ClassVar[QtCore.pyqtSignal]
    appearanceChanged: typing.ClassVar[QtCore.pyqtSignal]
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def setAssociatedFeature(self, feature: QgsFeature) -> None: ...
    def associatedFeature(self) -> QgsFeature: ...
    def setMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def mapLayer(self) -> typing.Optional[QgsMapLayer]: ...
    def markerSymbol(self) -> typing.Optional['QgsMarkerSymbol']: ...
    def setMarkerSymbol(self, symbol: typing.Optional['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) -> typing.Optional['QgsFillSymbol']: ...
    def setFillSymbol(self, symbol: typing.Optional['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) -> typing.Optional['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: typing.Optional['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 setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def setZIndex(self, index: int) -> None: ...
    def zIndex(self) -> int: ...
    def transientEditResults(self, operation: typing.Optional['QgsAbstractAnnotationItemEditOperation']) -> typing.Optional['QgsAnnotationItemEditOperationTransientResults']: ...
    def applyEdit(self, operation: typing.Optional['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: typing.Optional[QgsFeedback]) -> None: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str], visibleName: typing.Optional[str], visiblePluralName: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemAbstractMetadata') -> None: ...

    def createItem(self) -> typing.Optional[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: ...

    typeAdded: typing.ClassVar[QtCore.pyqtSignal]
    def itemTypes(self) -> typing.Dict[str, str]: ...
    def createItem(self, type: typing.Optional[str]) -> typing.Optional[QgsAnnotationItem]: ...
    def addItemType(self, metadata: typing.Optional[QgsAnnotationItemAbstractMetadata]) -> bool: ...
    def itemMetadata(self, type: typing.Optional[str]) -> typing.Optional[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: typing.Optional[str], options: 'QgsAnnotationLayer.LayerOptions') -> None: ...

    def setPaintEffect(self, effect: typing.Optional['QgsPaintEffect']) -> None: ...
    def paintEffect(self) -> typing.Optional['QgsPaintEffect']: ...
    def htmlMetadata(self) -> str: ...
    def dataProvider(self) -> typing.Optional['QgsDataProvider']: ...
    def supportsEditing(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory]) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory]) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[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) -> typing.Optional[QgsMapLayerRenderer]: ...
    def clone(self) -> typing.Optional['QgsAnnotationLayer']: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def applyEdit(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> Qgis.AnnotationItemEditOperationResult: ...
    def itemsInBounds(self, bounds: 'QgsRectangle', context: QgsRenderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[str]: ...
    def item(self, id: typing.Optional[str]) -> typing.Optional[QgsAnnotationItem]: ...
    def items(self) -> typing.Any: ...
    def isEmpty(self) -> bool: ...
    def clear(self) -> None: ...
    def removeItem(self, id: typing.Optional[str]) -> bool: ...
    def replaceItem(self, id: typing.Optional[str], item: typing.Optional[QgsAnnotationItem]) -> None: ...
    def addItem(self, item: typing.Optional[QgsAnnotationItem]) -> str: ...
    def reset(self) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsAnnotationLineItem(QgsAnnotationItem):

    def __init__(self, curve: typing.Optional['QgsCurve']) -> None: ...

    def setSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setGeometry(self, geometry: typing.Optional['QgsCurve']) -> None: ...
    def geometry(self) -> typing.Optional['QgsCurve']: ...
    def clone(self) -> typing.Optional['QgsAnnotationLineItem']: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> typing.Optional['QgsAnnotationLineItem']: ...
    def transientEditResults(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> typing.Optional[QgsAnnotationItemEditOperationTransientResults]: ...
    def applyEdit(self, operation: typing.Optional[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: typing.Optional[QgsFeedback]) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationLineTextItem(QgsAnnotationItem):

    def __init__(self, text: typing.Optional[str], curve: typing.Optional['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: typing.Optional[str]) -> None: ...
    def text(self) -> str: ...
    def setGeometry(self, geometry: typing.Optional['QgsCurve']) -> None: ...
    def geometry(self) -> typing.Optional['QgsCurve']: ...
    def clone(self) -> typing.Optional['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() -> typing.Optional['QgsAnnotationLineTextItem']: ...
    def transientEditResults(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> typing.Optional[QgsAnnotationItemEditOperationTransientResults]: ...
    def applyEdit(self, operation: typing.Optional[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: typing.Optional[QgsFeedback]) -> None: ...
    def type(self) -> str: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAnnotationMarkerItem(QgsAnnotationItem):

    def __init__(self, point: 'QgsPoint') -> None: ...

    def setSymbol(self, symbol: typing.Optional['QgsMarkerSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['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) -> typing.Optional['QgsAnnotationMarkerItem']: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> typing.Optional['QgsAnnotationMarkerItem']: ...
    def transientEditResults(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> typing.Optional[QgsAnnotationItemEditOperationTransientResults]: ...
    def applyEdit(self, operation: typing.Optional[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: typing.Optional[QgsFeedback]) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationManager(QtCore.QObject):

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

    annotationAboutToBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    annotationRemoved: typing.ClassVar[QtCore.pyqtSignal]
    annotationAdded: typing.ClassVar[QtCore.pyqtSignal]
    def accept(self, visitor: typing.Optional['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: typing.Optional[QgsAnnotation]) -> bool: ...
    def addAnnotation(self, annotation: typing.Optional[QgsAnnotation]) -> bool: ...


class QgsAnnotationPointTextItem(QgsAnnotationItem):

    def __init__(self, text: typing.Optional[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: typing.Optional[str]) -> None: ...
    def text(self) -> str: ...
    def setPoint(self, point: QgsPointXY) -> None: ...
    def point(self) -> QgsPointXY: ...
    def transientEditResults(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> typing.Optional[QgsAnnotationItemEditOperationTransientResults]: ...
    def applyEdit(self, operation: typing.Optional[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) -> typing.Optional['QgsAnnotationPointTextItem']: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> typing.Optional['QgsAnnotationPointTextItem']: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: typing.Optional[QgsFeedback]) -> None: ...
    def type(self) -> str: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAnnotationPolygonItem(QgsAnnotationItem):

    def __init__(self, polygon: typing.Optional['QgsCurvePolygon']) -> None: ...

    def setSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setGeometry(self, geometry: typing.Optional['QgsCurvePolygon']) -> None: ...
    def geometry(self) -> typing.Optional['QgsCurvePolygon']: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clone(self) -> typing.Optional['QgsAnnotationPolygonItem']: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> typing.Optional['QgsAnnotationPolygonItem']: ...
    def transientEditResults(self, operation: typing.Optional[QgsAbstractAnnotationItemEditOperation]) -> typing.Optional[QgsAnnotationItemEditOperationTransientResults]: ...
    def applyEdit(self, operation: typing.Optional[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: typing.Optional[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() -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def sourceFile(self) -> str: ...
    def setSourceFile(self, htmlFile: typing.Optional[str]) -> None: ...
    def minimumFrameSize(self) -> QtCore.QSizeF: ...
    def clone(self) -> typing.Optional['QgsHtmlAnnotation']: ...


class QgsRenderedAnnotationItemDetails(QgsRenderedItemDetails):

    @typing.overload
    def __init__(self, layerId: typing.Optional[str], itemId: typing.Optional[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() -> typing.Optional['QgsSvgAnnotation']: ...
    def filePath(self) -> str: ...
    def setFilePath(self, file: typing.Optional[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) -> typing.Optional['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() -> typing.Optional['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: typing.Optional[QtGui.QTextDocument]) -> None: ...
    def document(self) -> typing.Optional[QtGui.QTextDocument]: ...
    def clone(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[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: typing.Optional[str], pemtext: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> str: ...
    @staticmethod
    def certsToPemText(certs: typing.Iterable[QtNetwork.QSslCertificate]) -> QtCore.QByteArray: ...
    @staticmethod
    def pkcs12BundleCas(bundlepath: typing.Optional[str], bundlepass: typing.Optional[str] = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def pkcs12BundleToPem(bundlepath: typing.Optional[str], bundlepass: typing.Optional[str] = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def pemIsPkcs8(keyPemTxt: typing.Optional[str]) -> bool: ...
    @staticmethod
    def certKeyBundleToPem(certpath: typing.Optional[str], keypath: typing.Optional[str], keypass: typing.Optional[str] = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def casRemoveSelfSigned(caList: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromString(pemtext: typing.Optional[str]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def keyFromFile(keypath: typing.Optional[str], keypass: typing.Optional[str] = ..., algtype: typing.Optional[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: typing.Optional[str]) -> QtNetwork.QSslCertificate: ...
    @staticmethod
    def casFromFile(certspath: typing.Optional[str]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromFile(certspath: typing.Optional[str]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def fileData(path: typing.Optional[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: typing.Optional[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: typing.Optional[str], resource: typing.Optional[typing.Optional[str]], withpath: bool = ...) -> bool: ...
    def clearConfigMap(self) -> None: ...
    def hasConfig(self, key: typing.Optional[str]) -> bool: ...
    def configList(self, key: typing.Optional[str]) -> typing.List[str]: ...
    def config(self, key: typing.Optional[str], defaultvalue: typing.Optional[str] = ...) -> str: ...
    def removeConfig(self, key: typing.Optional[str]) -> int: ...
    def setConfigList(self, key: typing.Optional[str], value: typing.Iterable[typing.Optional[str]]) -> None: ...
    def setConfig(self, key: typing.Optional[str], value: typing.Optional[str]) -> None: ...
    def setConfigMap(self, map: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> None: ...
    def configMap(self) -> typing.Dict[str, str]: ...
    def loadConfigString(self, configstr: typing.Optional[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: typing.Optional[str]) -> None: ...
    def method(self) -> str: ...
    def setUri(self, uri: typing.Optional[str]) -> None: ...
    def uri(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: typing.Optional[str]) -> None: ...
    def id(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[str], bundlepass: typing.Optional[str] = ...) -> 'QgsPkiBundle': ...
    @staticmethod
    def fromPemPaths(certPath: typing.Optional[str], keyPath: typing.Optional[str], keyPass: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str]
    AUTH_PASSWORD_HELPER_DISPLAY_NAME = ... # type: typing.Optional[str]

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

    def clearCachedConfig(self, authcfg: typing.Optional[str]) -> None: ...
    def clearAllCachedConfigs(self) -> None: ...
    authDatabaseChanged: typing.ClassVar[QtCore.pyqtSignal]
    authDatabaseEraseRequested: typing.ClassVar[QtCore.pyqtSignal]
    masterPasswordVerified: typing.ClassVar[QtCore.pyqtSignal]
    passwordHelperMessageOut: typing.ClassVar[QtCore.pyqtSignal]
    messageOut: typing.ClassVar[QtCore.pyqtSignal]
    passwordHelperSuccess: typing.ClassVar[QtCore.pyqtSignal]
    passwordHelperFailure: typing.ClassVar[QtCore.pyqtSignal]
    def passwordHelperSync(self) -> bool: ...
    def setPasswordHelperEnabled(self, enabled: bool) -> None: ...
    @staticmethod
    def passwordHelperEnabled() -> 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]: ...
    @staticmethod
    def systemRootCAs() -> typing.List[QtNetwork.QSslCertificate]: ...
    def removeCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def existsCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def certAuthority(self, id: typing.Optional[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: typing.Optional[str], errors: typing.Iterable[QtNetwork.QSslError]) -> bool: ...
    def updateIgnoredSslErrorsCacheFromConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def dumpIgnoredSslErrorsCache_(self) -> None: ...
    def removeSslCertCustomConfig(self, id: typing.Optional[str], hostport: typing.Optional[str]) -> bool: ...
    def existsSslCertCustomConfig(self, id: typing.Optional[str], hostport: typing.Optional[str]) -> bool: ...
    def sslCertCustomConfigs(self) -> typing.List[QgsAuthConfigSslServer]: ...
    def sslCertCustomConfigByHost(self, hostport: typing.Optional[str]) -> QgsAuthConfigSslServer: ...
    def sslCertCustomConfig(self, id: typing.Optional[str], hostport: typing.Optional[str]) -> QgsAuthConfigSslServer: ...
    def storeSslCertCustomConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def removeCertIdentity(self, id: typing.Optional[str]) -> bool: ...
    def existsCertIdentity(self, id: typing.Optional[str]) -> bool: ...
    def certIdentityIds(self) -> typing.List[str]: ...
    def certIdentities(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def certIdentityBundleToPem(self, id: typing.Optional[str]) -> typing.List[str]: ...
    def certIdentity(self, id: typing.Optional[str]) -> QtNetwork.QSslCertificate: ...
    def storeCertIdentity(self, cert: QtNetwork.QSslCertificate, key: QtNetwork.QSslKey) -> bool: ...
    def initSslCaches(self) -> bool: ...
    def removeAuthSetting(self, key: typing.Optional[str]) -> bool: ...
    def existsAuthSetting(self, key: typing.Optional[str]) -> bool: ...
    def authSetting(self, key: typing.Optional[str], defaultValue: typing.Any = ..., decrypt: bool = ...) -> typing.Any: ...
    def storeAuthSetting(self, key: typing.Optional[str], value: typing.Any, encrypt: bool = ...) -> bool: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> typing.Tuple[bool, QtNetwork.QNetworkProxy]: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[typing.Optional[str]], authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def updateNetworkReply(self, reply: typing.Optional[QtNetwork.QNetworkReply], authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> typing.Tuple[bool, QtNetwork.QNetworkRequest]: ...
    def eraseAuthenticationDatabase(self, backup: bool, backuppath: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def backupAuthenticationDatabase(self, backuppath: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def removeAllAuthenticationConfigs(self) -> bool: ...
    def importAuthenticationConfigsFromXml(self, filename: typing.Optional[str], password: typing.Optional[str] = ..., overwrite: bool = ...) -> bool: ...
    def exportAuthenticationConfigsToXml(self, filename: typing.Optional[str], authcfgs: typing.Iterable[typing.Optional[str]], password: typing.Optional[str] = ...) -> bool: ...
    def removeAuthenticationConfig(self, authcfg: typing.Optional[str]) -> bool: ...
    def loadAuthenticationConfig(self, authcfg: typing.Optional[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: ...
    @staticmethod
    def hasConfigId(txt: typing.Optional[str]) -> bool: ...
    def configIdUnique(self, id: typing.Optional[str]) -> bool: ...
    def uniqueConfigId(self) -> str: ...
    def supportedAuthMethodExpansions(self, authcfg: typing.Optional[str]) -> 'QgsAuthMethod.Expansions': ...
    def authMethodEditWidget(self, authMethodKey: typing.Optional[str], parent: typing.Optional[QtWidgets.QWidget]) -> typing.Optional[QtWidgets.QWidget]: ...
    def authMethod(self, authMethodKey: typing.Optional[str]) -> typing.Optional['QgsAuthMethod']: ...
    def authMethodsKeys(self, dataprovider: typing.Optional[str] = ...) -> typing.List[str]: ...
    def configAuthMethodKey(self, authcfg: typing.Optional[str]) -> str: ...
    def configAuthMethod(self, authcfg: typing.Optional[str]) -> typing.Optional['QgsAuthMethod']: ...
    def updateConfigAuthMethods(self) -> None: ...
    def availableAuthMethodConfigs(self, dataprovider: typing.Optional[str] = ...) -> typing.Dict[str, QgsAuthMethodConfig]: ...
    def registerCoreAuthMethods(self) -> bool: ...
    def authManTag(self) -> str: ...
    def setScheduledAuthDatabaseEraseRequestEmitted(self, emitted: bool) -> None: ...
    def resetMasterPassword(self, newpass: typing.Optional[str], oldpass: typing.Optional[str], keepbackup: bool, backuppath: typing.Optional[typing.Optional[str]] = ...) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def masterPasswordSame(self, pass_: typing.Optional[str]) -> bool: ...
    def clearMasterPassword(self) -> None: ...
    def masterPasswordHashInDatabase(self) -> bool: ...
    def masterPasswordIsSet(self) -> bool: ...
    def verifyMasterPassword(self, compare: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, verify: bool = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, pass_: typing.Optional[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 setup(self, pluginPath: typing.Optional[str] = ..., authDatabasePath: typing.Optional[str] = ...) -> None: ...
    def init(self, pluginPath: typing.Optional[str] = ..., authDatabasePath: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __xor__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __ior__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __or__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __iand__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __and__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> 'QgsAuthMethod.Expansions': ...
        def __invert__(self) -> 'QgsAuthMethod.Expansions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def setDataProviders(self, dataproviders: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> None: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> bool: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[typing.Optional[str]], authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> bool: ...
    def updateNetworkReply(self, reply: typing.Optional[QtNetwork.QNetworkReply], authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: typing.Optional[str], dataprovider: typing.Optional[str] = ...) -> bool: ...
    def supportedDataProviders(self) -> typing.List[str]: ...
    def supportedExpansions(self) -> 'QgsAuthMethod.Expansions': ...
    def editWidget(self, parent: typing.Optional[QtWidgets.QWidget]) -> typing.Optional[QtWidgets.QWidget]: ...
    def version(self) -> int: ...
    def displayDescription(self) -> str: ...
    def description(self) -> str: ...
    def key(self) -> str: ...


class QgsBrowserModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        Path = ... # type: QgsBrowserModel.CustomRole
        Comment = ... # type: QgsBrowserModel.CustomRole
        Sort = ... # type: QgsBrowserModel.CustomRole
        ProviderKey = ... # type: QgsBrowserModel.CustomRole
        LayerMetadata = ... # type: QgsBrowserModel.CustomRole

    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: typing.Optional['QgsDataItem']) -> None: ...
    def updateProjectHome(self) -> None: ...
    def removeFavorite(self, index: QtCore.QModelIndex) -> None: ...
    def addFavoriteDirectory(self, directory: typing.Optional[str], name: typing.Optional[str] = ...) -> None: ...
    def itemStateChanged(self, item: typing.Optional['QgsDataItem'], oldState: Qgis.BrowserItemState) -> None: ...
    def itemDataChanged(self, item: typing.Optional['QgsDataItem']) -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: typing.Optional['QgsDataItem'], first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: typing.Optional['QgsDataItem'], first: int, last: int) -> None: ...
    def refreshDrives(self) -> None: ...
    def reload(self) -> None: ...
    connectionsChanged: typing.ClassVar[QtCore.pyqtSignal]
    stateChanged: typing.ClassVar[QtCore.pyqtSignal]
    def rootItems(self) -> typing.List['QgsDataItem']: ...
    def driveItems(self) -> typing.Any: ...
    def initialized(self) -> bool: ...
    def connectItem(self, item: typing.Optional['QgsDataItem']) -> None: ...
    def findUri(self, uri: typing.Optional[str], index: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def findPath(self, path: typing.Optional[str], matchFlag: QtCore.Qt.MatchFlag = ...) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: typing.Optional[str]) -> None: ...
    @typing.overload
    def refresh(self, index: QtCore.QModelIndex = ...) -> None: ...
    def dataItem(self, idx: QtCore.QModelIndex) -> typing.Optional['QgsDataItem']: ...
    def findItem(self, item: typing.Optional['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: typing.Optional[QtCore.QMimeData], action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> typing.Optional[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[typing.Optional[str]]) -> None: ...
    def setHiddenDataItemProviderKeyFilter(self, hiddenItemsFilter: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> None: ...
    def filterSyntax(self) -> 'QgsBrowserProxyModel.FilterSyntax': ...
    def setFilterSyntax(self, syntax: 'QgsBrowserProxyModel.FilterSyntax') -> None: ...
    def dataItem(self, index: QtCore.QModelIndex) -> typing.Optional['QgsDataItem']: ...
    def browserModel(self) -> typing.Optional[QgsBrowserModel]: ...
    def setBrowserModel(self, model: typing.Optional[QgsBrowserModel]) -> None: ...


class QgsDataItem(QtCore.QObject):

    def __init__(self, type: Qgis.BrowserItemType, parent: typing.Optional['QgsDataItem'], name: typing.Optional[str], path: typing.Optional[str], providerKey: typing.Optional[str] = ...) -> None: ...

    def updateIcon(self) -> None: ...
    connectionsChanged: typing.ClassVar[QtCore.pyqtSignal]
    stateChanged: typing.ClassVar[QtCore.pyqtSignal]
    dataChanged: typing.ClassVar[QtCore.pyqtSignal]
    endRemoveItems: typing.ClassVar[QtCore.pyqtSignal]
    beginRemoveItems: typing.ClassVar[QtCore.pyqtSignal]
    endInsertItems: typing.ClassVar[QtCore.pyqtSignal]
    beginInsertItems: typing.ClassVar[QtCore.pyqtSignal]
    def childrenCreated(self) -> None: ...
    def refreshConnections(self, providerKey: typing.Optional[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) -> typing.Optional['QgsAbstractDatabaseProviderConnection']: ...
    def moveToThread(self, targetThread: typing.Optional[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: typing.Optional[str]) -> None: ...
    def setIconName(self, iconName: typing.Optional[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: typing.Optional[str]) -> str: ...
    def setProviderKey(self, value: typing.Optional[str]) -> None: ...
    def providerKey(self) -> str: ...
    def setPath(self, path: typing.Optional[str]) -> None: ...
    def path(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def children(self) -> typing.List['QgsDataItem']: ...
    def setParent(self, parent: typing.Optional['QgsDataItem']) -> None: ...
    def parent(self) -> typing.Optional['QgsDataItem']: ...
    def type(self) -> Qgis.BrowserItemType: ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsDataItem'], item: typing.Optional['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: typing.Optional[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: typing.Optional[QtCore.QMimeData], a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def menus(self, parent: typing.Optional[QtWidgets.QWidget]) -> typing.List[QtWidgets.QMenu]: ...
    def actions(self, parent: typing.Optional[QtWidgets.QWidget]) -> typing.List[QtWidgets.QAction]: ...
    def paramWidget(self) -> typing.Optional[QtWidgets.QWidget]: ...
    def equal(self, other: typing.Optional['QgsDataItem']) -> bool: ...
    def removeChildItem(self, child: typing.Optional['QgsDataItem']) -> typing.Optional['QgsDataItem']: ...
    def deleteChildItem(self, child: typing.Optional['QgsDataItem']) -> None: ...
    def addChildItem(self, child: typing.Optional['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: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str] = ..., providerKey: typing.Optional[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) -> typing.Optional['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: typing.Optional[QgsDataItem]) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsConnectionsRootItem(QgsDataCollectionItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str] = ..., providerKey: typing.Optional[str] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...


class QgsDatabaseSchemaItem(QgsDataCollectionItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str] = ..., providerKey: typing.Optional[str] = ...) -> None: ...

    @staticmethod
    def iconDataCollection() -> QtGui.QIcon: ...
    def databaseConnection(self) -> typing.Optional['QgsAbstractDatabaseProviderConnection']: ...
    def __repr__(self) -> typing.Any: ...


class QgsErrorItem(QgsDataItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], error: typing.Optional[str], path: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def createDataItems(self, path: typing.Optional[str], parentItem: typing.Optional[QgsDataItem]) -> typing.List[QgsDataItem]: ...
    def createDataItem(self, path: typing.Optional[str], parentItem: typing.Optional[QgsDataItem]) -> typing.Optional[QgsDataItem]: ...
    def capabilities(self) -> Qgis.DataItemProviderCapabilities: ...
    def dataProviderKey(self) -> str: ...
    def name(self) -> str: ...


class QgsDataItemProviderRegistry(QtCore.QObject):

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

    providerWillBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    providerAdded: typing.ClassVar[QtCore.pyqtSignal]
    def dataProviderKey(self, dataItemProviderName: typing.Optional[str]) -> str: ...
    def removeProvider(self, provider: typing.Optional[QgsDataItemProvider]) -> None: ...
    def addProvider(self, provider: typing.Optional[QgsDataItemProvider]) -> None: ...
    def provider(self, providerName: typing.Optional[str]) -> typing.Optional[QgsDataItemProvider]: ...
    def providers(self) -> typing.List[QgsDataItemProvider]: ...


class QgsDirectoryItem(QgsDataCollectionItem):

    @typing.overload
    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], dirPath: typing.Optional[str], path: typing.Optional[str], providerKey: typing.Optional[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: typing.Optional[str]) -> bool: ...
    @staticmethod
    def monitoringForPath(path: typing.Optional[str]) -> Qgis.BrowserDirectoryMonitoring: ...
    @staticmethod
    def hiddenPath(path: typing.Optional[str]) -> bool: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def paramWidget(self) -> typing.Optional[QtWidgets.QWidget]: ...
    @staticmethod
    def setCustomColor(directory: typing.Optional[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: typing.Optional[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: typing.Optional[str], parent: typing.Optional[QtWidgets.QWidget] = ...) -> None: ...

    def showHideColumn(self) -> None: ...
    def mousePressEvent(self, event: typing.Optional[QtGui.QMouseEvent]) -> None: ...


class QgsFavoritesItem(QgsDataCollectionItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str] = ...) -> None: ...

    def sortKey(self) -> typing.Any: ...
    @staticmethod
    def iconFavorites() -> QtGui.QIcon: ...
    def renameFavorite(self, path: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    def removeDirectory(self, item: typing.Optional[QgsDirectoryItem]) -> None: ...
    def addDirectory(self, directory: typing.Optional[str], name: typing.Optional[str] = ...) -> None: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldDomainsItem(QgsDataItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], path: typing.Optional[str], connectionUri: typing.Optional[str], providerKey: typing.Optional[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: typing.Optional[QgsDataItem], domain: typing.Optional['QgsFieldDomain']) -> None: ...

    def fieldDomain(self) -> typing.Optional['QgsFieldDomain']: ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldsItem(QgsDataItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], path: typing.Optional[str], connectionUri: typing.Optional[str], providerKey: typing.Optional[str], schema: typing.Optional[str], tableName: typing.Optional[str]) -> None: ...

    def canRenameFields(self) -> bool: ...
    def tableProperty(self) -> typing.Optional['QgsAbstractDatabaseProviderConnection.TableProperty']: ...
    def layer(self) -> typing.Optional[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: typing.Optional[QgsDataItem], field: QgsField) -> None: ...

    def equal(self, other: typing.Optional[QgsDataItem]) -> bool: ...
    def field(self) -> QgsField: ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerItem(QgsDataItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str], uri: typing.Optional[str], layerType: Qgis.BrowserLayerType, providerKey: typing.Optional[str]) -> None: ...

    def setLayerMetadata(self, metadata: 'QgsLayerMetadata') -> None: ...
    def layerMetadata(self) -> 'QgsLayerMetadata': ...
    def databaseConnection(self) -> typing.Optional['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: typing.Optional[QgsMapLayer]) -> Qgis.BrowserLayerType: ...
    def mapLayerType(self) -> Qgis.LayerType: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def equal(self, other: typing.Optional[QgsDataItem]) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsProjectItem(QgsDataItem):

    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str], providerKey: typing.Optional[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: typing.Optional[QgsDataItem], path: typing.Optional[str], connectionUri: typing.Optional[str], providerKey: typing.Optional[str], schema: typing.Optional[str] = ..., tableName: typing.Optional[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: typing.Optional[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[typing.Optional[str]]

    @typing.overload
    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[QgsDataItem], name: typing.Optional[str], filePath: typing.Optional[str], path: typing.Optional[str], providerKey: typing.Optional[str] = ...) -> None: ...

    @staticmethod
    def iconZip() -> QtGui.QIcon: ...
    @staticmethod
    def itemFromFilePath(parent: typing.Optional[QgsDataItem], filePath: typing.Optional[str], name: typing.Optional[str], path: typing.Optional[str]) -> typing.Optional[QgsDataItem]: ...
    @staticmethod
    def itemFromPath(parent: typing.Optional[QgsDataItem], path: typing.Optional[str], name: typing.Optional[str]) -> typing.Optional[QgsDataItem]: ...
    @staticmethod
    def vsiPrefix(uri: typing.Optional[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: typing.Optional['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: typing.Optional[str]) -> typing.Tuple['QgsCallout.LabelAnchorPoint', typing.Optional[bool]]: ...
    @staticmethod
    def encodeLabelAnchorPoint(anchor: 'QgsCallout.LabelAnchorPoint') -> str: ...
    def setLabelAnchorPoint(self, anchor: 'QgsCallout.LabelAnchorPoint') -> None: ...
    def labelAnchorPoint(self) -> 'QgsCallout.LabelAnchorPoint': ...
    @staticmethod
    def decodeAnchorPoint(name: typing.Optional[str]) -> typing.Tuple['QgsCallout.AnchorPoint', typing.Optional[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) -> typing.Optional['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) -> typing.Optional['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: typing.Optional['QgsLineSymbol']) -> None: ...
    def lineSymbol(self) -> typing.Optional['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) -> typing.Optional['QgsSimpleLineCallout']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> typing.Optional[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) -> typing.Optional['QgsCurve']: ...
    def clone(self) -> typing.Optional['QgsManhattanLineCallout']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> typing.Optional[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) -> typing.Optional['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) -> typing.Optional['QgsCurvedLineCallout']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> typing.Optional[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: typing.Optional['QgsFillSymbol']) -> None: ...
    def fillSymbol(self) -> typing.Optional['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) -> typing.Optional['QgsBalloonCallout']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> typing.Optional[QgsCallout]: ...


class QgsCalloutAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], visibleName: typing.Optional[str], icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCalloutAbstractMetadata') -> None: ...

    def createCalloutWidget(self, a0: typing.Optional[QgsVectorLayer]) -> typing.Optional[QgsCalloutWidget]: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> typing.Optional[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: typing.Optional[QgsVectorLayer]) -> typing.Optional[QgsCalloutWidget]: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> typing.Optional[QgsCallout]: ...


class QgsCalloutRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def defaultCallout() -> typing.Optional[QgsCallout]: ...
    def calloutTypes(self) -> typing.List[str]: ...
    @typing.overload
    def createCallout(self, type: typing.Optional[str], properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> typing.Optional[QgsCallout]: ...
    @typing.overload
    def createCallout(self, type: typing.Optional[str], element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsCallout]: ...
    def addCalloutType(self, metadata: typing.Optional[QgsCalloutAbstractMetadata]) -> bool: ...
    def calloutMetadata(self, type: typing.Optional[str]) -> typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        def __xor__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        def __ior__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        def __or__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        def __iand__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        def __and__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> 'QgsClassificationMethod.MethodProperties': ...
        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: typing.Optional['QgsProcessingParameterDefinition']) -> None: ...
    def formatNumber(self, value: float) -> str: ...
    def copyBase(self, c: typing.Optional['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: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterDefinition']: ...
    @staticmethod
    def makeBreaksSymmetric(breaks: typing.Iterable[float], symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsClassificationMethod']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def classesV2(self, layer: typing.Optional[QgsVectorLayer], expression: typing.Optional[str], nclasses: int) -> typing.Tuple[typing.List['QgsClassificationRange'], str]: ...
    @typing.overload
    def classes(self, layer: typing.Optional[QgsVectorLayer], expression: typing.Optional[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: typing.Optional[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) -> typing.Optional['QgsClassificationMethod']: ...


class QgsClassificationCustom(QgsClassificationMethod):

    METHOD_ID = ... # type: typing.Optional[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) -> typing.Optional[QgsClassificationMethod]: ...


class QgsClassificationEqualInterval(QgsClassificationMethod):

    METHOD_ID = ... # type: typing.Optional[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) -> typing.Optional[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) -> typing.Optional[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) -> typing.Optional[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) -> typing.Optional[QgsClassificationMethod]: ...


class QgsClassificationRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, label: typing.Optional[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: typing.Optional[str]) -> QtGui.QIcon: ...
    def methodNames(self) -> typing.Dict[str, str]: ...
    def method(self, id: typing.Optional[str]) -> typing.Optional[QgsClassificationMethod]: ...
    def addMethod(self, method: typing.Optional[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) -> typing.Optional[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) -> typing.Optional[QgsClassificationMethod]: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationStandardDeviation(QgsClassificationMethod):

    METHOD_ID = ... # type: typing.Optional[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) -> typing.Optional[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, typing.Union[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: typing.Optional[str], context: QgsExpressionContext) -> typing.Optional['QgsExpression']: ...
    def clearCache(self) -> None: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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
        FlagOnlySelectedFeatures = ... # type: QgsDxfExport.Flag
        FlagHairlineWidthExport = ... # type: QgsDxfExport.Flag

    class DxfLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, vl: typing.Optional[QgsVectorLayer], layerOutputAttributeIndex: int = ..., buildDDBlocks: bool = ..., ddBlocksMaxNumberOfClasses: int = ..., overriddenName: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDxfExport.DxfLayer') -> None: ...

        def overriddenName(self) -> str: ...
        def dataDefinedBlocksMaximumNumberOfClasses(self) -> int: ...
        def buildDataDefinedBlocks(self) -> bool: ...
        def splitLayerAttribute(self) -> str: ...
        def layerOutputAttributeIndex(self) -> int: ...
        def layer(self) -> typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        def __xor__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        def __ior__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        def __or__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        def __iand__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        def __and__(self, f: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> 'QgsDxfExport.Flags': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __xor__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __ior__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __or__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __iand__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __and__(self, f: typing.Union['QgsDxfExport.DxfPolylineFlags', 'QgsDxfExport.DxfPolylineFlag']) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __invert__(self) -> 'QgsDxfExport.DxfPolylineFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def registerDxfLayer(self, layerId: typing.Optional[str], fid: int, layer: typing.Optional[str]) -> None: ...
    @staticmethod
    def encodings() -> typing.List[str]: ...
    @staticmethod
    def dxfEncoding(name: typing.Optional[str]) -> str: ...
    @staticmethod
    def dxfLayerName(name: typing.Optional[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: typing.Optional[str], text: typing.Optional[str], pt: 'QgsPoint', width: float, angle: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def writeTextV2(self, layer: typing.Optional[str], text: typing.Optional[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: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float, lineStyleName: typing.Optional[str], width: float) -> None: ...
    def writeFillCircleV2(self, layer: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float) -> None: ...
    def writePointV2(self, layer: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint') -> None: ...
    def writeLine(self, pt1: 'QgsPoint', pt2: 'QgsPoint', layer: typing.Optional[str], lineStyleName: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], width: float = ...) -> None: ...
    def writeHandle(self, code: int = ..., handle: int = ...) -> int: ...
    def writeString(self, s: typing.Optional[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: typing.Optional[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: typing.Optional[str], f: QgsFeature) -> str: ...
    @typing.overload
    def layerName(self, vl: typing.Optional[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 feedbackMessage(self) -> str: ...
    def writeToFile(self, d: typing.Optional[QtCore.QIODevice], codec: typing.Optional[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[typing.Optional[str]]
        mName = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, name: typing.Optional[str], fields: typing.Iterable[typing.Optional[str]]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEditFormConfig.GroupData') -> None: ...

    class TabData(PyQt5.sip.wrapper):

        mFields = ... # type: typing.Iterable[typing.Optional[str]]
        mGroups = ... # type: typing.Iterable['QgsEditFormConfig.GroupData']
        mName = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, name: typing.Optional[str], fields: typing.Iterable[typing.Optional[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: ...

    def __ne__(self, other: object): ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def dataDefinedFieldProperties(self, fieldName: typing.Optional[str]) -> QgsPropertyCollection: ...
    def setDataDefinedFieldProperties(self, fieldName: typing.Optional[str], properties: QgsPropertyCollection) -> None: ...
    def attributeEditorElementFromDomElement(self, elem: QtXml.QDomElement, parent: typing.Optional['QgsAttributeEditorElement'], layerId: typing.Optional[str] = ..., context: QgsReadWriteContext = ...) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def initFilePath(self) -> str: ...
    def setInitCode(self, code: typing.Optional[str]) -> None: ...
    def initCode(self) -> str: ...
    def setInitFunction(self, function: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def widgetConfig(self, widgetName: typing.Optional[str]) -> typing.Dict[str, typing.Any]: ...
    def setWidgetConfig(self, widgetName: typing.Optional[str], config: typing.Dict[str, typing.Any]) -> bool: ...
    def setUiForm(self, ui: typing.Optional[str]) -> None: ...
    def uiForm(self) -> str: ...
    def setLayout(self, editorLayout: Qgis.AttributeFormLayout) -> None: ...
    def layout(self) -> Qgis.AttributeFormLayout: ...
    def invisibleRootContainer(self) -> typing.Optional['QgsAttributeEditorContainer']: ...
    def clearTabs(self) -> None: ...
    def tabs(self) -> typing.List['QgsAttributeEditorElement']: ...
    def addTab(self, data: typing.Optional['QgsAttributeEditorElement']) -> None: ...
    def __eq__(self, other: object): ...


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: typing.Optional[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: typing.Optional['QgsAttributeEditorElement']) -> typing.Optional['QgsAttributeEditorElement']: ...
    def toDomElement(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def parent(self) -> typing.Optional['QgsAttributeEditorElement']: ...
    def type(self) -> Qgis.AttributeEditorType: ...
    def name(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, layerId: typing.Optional[str], fields: QgsFields, context: QgsReadWriteContext, parent: typing.Optional['QgsAttributeEditorElement'] = ...) -> typing.Optional['QgsAttributeEditorElement']: ...


class QgsAttributeEditorAction(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, action: QgsAction, parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, uuid: QtCore.QUuid, parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorAction') -> None: ...

    def setAction(self, newAction: QgsAction) -> None: ...
    def action(self, layer: typing.Optional[QgsVectorLayer]) -> QgsAction: ...
    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...


class QgsAttributeEditorContainer(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional[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: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...
    def setColumnCount(self, columnCount: int) -> None: ...
    def columnCount(self) -> int: ...
    def setName(self, name: typing.Optional[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: typing.Optional[QgsAttributeEditorElement]) -> None: ...


class QgsAttributeEditorField(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], idx: int, parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorField') -> None: ...

    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __xor__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __ior__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __or__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __iand__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __and__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __invert__(self) -> 'QgsAttributeEditorRelation.Buttons': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, name: typing.Optional[str], relationId: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], relation: QgsRelation, parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, relationId: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, relation: QgsRelation, parent: typing.Optional[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: typing.Optional[str]) -> None: ...
    def relationWidgetTypeId(self) -> str: ...
    def setLabel(self, label: typing.Optional[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: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...
    def init(self, relManager: typing.Optional[QgsRelationManager]) -> bool: ...
    def relation(self) -> QgsRelation: ...


class QgsAttributeEditorHtmlElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorHtmlElement') -> None: ...

    def setHtmlCode(self, htmlCode: typing.Optional[str]) -> None: ...
    def htmlCode(self) -> str: ...
    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...


class QgsAttributeEditorTextElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorTextElement') -> None: ...

    def setText(self, text: typing.Optional[str]) -> None: ...
    def text(self) -> str: ...
    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...


class QgsAttributeEditorQmlElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorQmlElement') -> None: ...

    def setQmlCode(self, qmlCode: typing.Optional[str]) -> None: ...
    def qmlCode(self) -> str: ...
    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[QgsAttributeEditorElement]: ...


class QgsAttributeEditorSpacerElement(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional[QgsAttributeEditorElement]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorSpacerElement') -> None: ...

    def setDrawLine(self, drawLine: bool) -> None: ...
    def drawLine(self) -> bool: ...
    def clone(self, parent: typing.Optional[QgsAttributeEditorElement]) -> typing.Optional[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) -> typing.Optional[QgsMapLayer]: ...


class QgsAbstractProfileResults(PyQt5.sip.wrapper):

    class Feature(PyQt5.sip.wrapper):

        attributes = ... # type: typing.Dict[str, typing.Any]
        geometry = ... # type: 'QgsGeometry'
        layerIdentifier = ... # type: typing.Optional[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: typing.Optional['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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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) -> typing.Optional[QgsAbstractProfileResults]: ...
    def feedback(self) -> typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: ...

    generationFinished: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str] = ...) -> None: ...
    def renderToImage(self, width: int, height: int, distanceMin: float, distanceMax: float, zMin: float, zMax: float, sourceId: typing.Optional[str] = ..., devicePixelRatio: float = ...) -> QtGui.QImage: ...
    def zRange(self) -> QgsDoubleRange: ...
    def regenerateInvalidatedResults(self) -> None: ...
    def invalidateResults(self, source: typing.Optional[QgsAbstractProfileSource]) -> bool: ...
    def replaceSource(self, source: typing.Optional[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: typing.Optional['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) -> typing.Optional['QgsAbstractTerrainProvider']: ...
    def setTerrainProvider(self, provider: typing.Optional['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) -> typing.Optional['QgsCurve']: ...
    def setProfileCurve(self, curve: typing.Optional['QgsCurve']) -> 'QgsProfileRequest': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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 QgsProfileSourceRegistry(PyQt5.sip.wrapper):

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

    def unregisterProfileSource(self, source: typing.Optional[QgsAbstractProfileSource]) -> None: ...
    def registerProfileSource(self, source: typing.Optional[QgsAbstractProfileSource]) -> None: ...
    def profileSources(self) -> typing.List[QgsAbstractProfileSource]: ...


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) -> typing.Optional['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: typing.Optional['QgsProject']) -> None: ...
    def equals(self, other: typing.Optional['QgsAbstractTerrainProvider']) -> bool: ...


class QgsFlatTerrainProvider(QgsAbstractTerrainProvider):

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

    def equals(self, other: typing.Optional[QgsAbstractTerrainProvider]) -> bool: ...
    def prepare(self) -> None: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['QgsRasterLayer']: ...
    def setLayer(self, layer: typing.Optional['QgsRasterLayer']) -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: typing.Optional[QgsAbstractTerrainProvider]) -> bool: ...
    def clone(self) -> typing.Optional['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: typing.Optional['QgsProject']) -> None: ...
    def type(self) -> str: ...


class QgsMeshTerrainProvider(QgsAbstractTerrainProvider):

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

    def layer(self) -> typing.Optional['QgsMeshLayer']: ...
    def setLayer(self, layer: typing.Optional['QgsMeshLayer']) -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: typing.Optional[QgsAbstractTerrainProvider]) -> bool: ...
    def clone(self) -> typing.Optional['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: typing.Optional['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: typing.Optional[str], authCfg: typing.Optional[str] = ...) -> typing.Optional['QgsExternalStorageFetchedContent']: ...
    def doStore(self, filePath: typing.Optional[str], url: typing.Optional[str], authCfg: typing.Optional[str] = ...) -> typing.Optional['QgsExternalStorageStoredContent']: ...
    def fetch(self, url: typing.Optional[str], authCfg: typing.Optional[str] = ..., fetchingMode: Qgis.ActionStart = ...) -> typing.Optional['QgsExternalStorageFetchedContent']: ...
    def store(self, filePath: typing.Optional[str], url: typing.Optional[str], authCfg: typing.Optional[str] = ..., storingMode: Qgis.ActionStart = ...) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    canceled: typing.ClassVar[QtCore.pyqtSignal]
    progressChanged: typing.ClassVar[QtCore.pyqtSignal]
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    def cancel(self) -> None: ...
    def errorString(self) -> str: ...
    def status(self) -> Qgis.ContentStatus: ...


class QgsExternalStorageFetchedContent(QgsExternalStorageContent):

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

    fetched: typing.ClassVar[QtCore.pyqtSignal]
    def fetch(self) -> None: ...
    def filePath(self) -> str: ...


class QgsExternalStorageStoredContent(QgsExternalStorageContent):

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

    stored: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[QgsExternalStorage]) -> None: ...
    def registerExternalStorage(self, storage: typing.Optional[QgsExternalStorage]) -> None: ...
    def externalStorages(self) -> typing.List[QgsExternalStorage]: ...
    def externalStorageFromType(self, type: typing.Optional[str]) -> typing.Optional[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: typing.Optional[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) -> typing.Optional[QtGui.QImage]: ...
    def source(self) -> typing.Optional[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) -> typing.Optional['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) -> typing.Optional['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]) -> typing.Optional[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) -> typing.Optional['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]) -> typing.Optional[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) -> typing.Optional[QgsPaintEffect]: ...
    def count(self) -> int: ...
    def effectList(self) -> typing.Optional[typing.List[QgsPaintEffect]]: ...
    def takeEffect(self, index: int) -> typing.Optional[QgsPaintEffect]: ...
    def changeEffect(self, index: int, effect: typing.Optional[QgsPaintEffect]) -> bool: ...
    def insertEffect(self, index: int, effect: typing.Optional[QgsPaintEffect]) -> bool: ...
    def appendEffect(self, effect: typing.Optional[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) -> typing.Optional['QgsEffectStack']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[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) -> typing.Optional[QgsColorRamp]: ...
    def setRamp(self, ramp: typing.Optional[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) -> typing.Optional['QgsOuterGlowEffect']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[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) -> typing.Optional['QgsInnerGlowEffect']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[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] = ...) -> typing.Optional[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) -> typing.Optional['QgsDrawSourceEffect']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[QgsPaintEffect]: ...


class QgsEffectPainter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, renderContext: QgsRenderContext) -> None: ...
    @typing.overload
    def __init__(self, renderContext: QgsRenderContext, effect: typing.Optional[QgsPaintEffect]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEffectPainter') -> None: ...

    def setEffect(self, effect: typing.Optional[QgsPaintEffect]) -> None: ...


class QgsPaintEffectAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], visibleName: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPaintEffectAbstractMetadata') -> None: ...

    def createWidget(self) -> typing.Optional[QgsPaintEffectWidget]: ...
    def createPaintEffect(self, map: typing.Dict[str, typing.Any]) -> typing.Optional[QgsPaintEffect]: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsPaintEffectRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def isDefaultStack(effect: typing.Optional[QgsPaintEffect]) -> bool: ...
    @staticmethod
    def defaultStack() -> typing.Optional[QgsPaintEffect]: ...
    def effects(self) -> typing.List[str]: ...
    @typing.overload
    def createEffect(self, name: typing.Optional[str], properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsPaintEffect]: ...
    @typing.overload
    def createEffect(self, element: QtXml.QDomElement) -> typing.Optional[QgsPaintEffect]: ...
    def addEffectType(self, metadata: typing.Optional[QgsPaintEffectAbstractMetadata]) -> bool: ...
    def effectMetadata(self, name: typing.Optional[str]) -> typing.Optional[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) -> typing.Optional['QgsDropShadowEffect']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[QgsPaintEffect]: ...


class QgsInnerShadowEffect(QgsShadowEffect):

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

    def exteriorShadow(self) -> bool: ...
    def clone(self) -> typing.Optional['QgsInnerShadowEffect']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> typing.Optional[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) -> typing.Optional['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]) -> typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsExpression') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def attemptReduceToInClause(expressions: typing.Iterable[typing.Optional[str]]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def isFieldEqualityExpression(expression: typing.Optional[str]) -> typing.Tuple[bool, str, typing.Any]: ...
    @typing.overload
    @staticmethod
    def createFieldEqualityExpression(fieldName: typing.Optional[str], value: typing.Any, fieldType: QtCore.QMetaType.Type = ...) -> str: ...
    @typing.overload
    @staticmethod
    def createFieldEqualityExpression(fieldName: typing.Optional[str], value: typing.Any, fieldType: QtCore.QVariant.Type) -> str: ...
    @staticmethod
    def formatPreviewString(value: typing.Any, htmlOutput: bool = ..., maximumPreviewLength: int = ...) -> str: ...
    @staticmethod
    def group(group: typing.Optional[str]) -> str: ...
    @staticmethod
    def formatVariableHelp(description: typing.Optional[str], showValue: bool = ..., value: typing.Any = ...) -> str: ...
    @staticmethod
    def variableHelpText(variableName: typing.Optional[str]) -> str: ...
    @staticmethod
    def addVariableHelpText(name: typing.Optional[str], description: typing.Optional[str]) -> bool: ...
    @staticmethod
    def tags(name: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def helpText(name: typing.Optional[str]) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any, type: QtCore.QMetaType.Type) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any, type: QtCore.QVariant.Type) -> str: ...
    @staticmethod
    def quotedString(text: typing.Optional[str]) -> str: ...
    @staticmethod
    def quotedColumnRef(name: typing.Optional[str]) -> str: ...
    @staticmethod
    def functionCount() -> int: ...
    @staticmethod
    def functionIndex(name: typing.Optional[str]) -> int: ...
    @staticmethod
    def isFunctionName(name: typing.Optional[str]) -> bool: ...
    @staticmethod
    def cleanRegisteredFunctions() -> None: ...
    @staticmethod
    def unregisterFunction(name: typing.Optional[str]) -> bool: ...
    @staticmethod
    def registerFunction(function: typing.Optional[QgsExpressionFunction], transferOwnership: bool = ...) -> bool: ...
    @staticmethod
    def BuiltinFunctions() -> typing.List[str]: ...
    @staticmethod
    def Functions() -> typing.List[QgsExpressionFunction]: ...
    @staticmethod
    def evaluateToDouble(text: typing.Optional[str], fallbackValue: float) -> float: ...
    @staticmethod
    def replaceExpressionText(action: typing.Optional[str], context: typing.Optional[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: typing.Optional[QgsDistanceArea]) -> None: ...
    def geomCalculator(self) -> typing.Optional[QgsDistanceArea]: ...
    def dump(self) -> str: ...
    def expression(self) -> str: ...
    def setExpression(self, expression: typing.Optional[str]) -> None: ...
    @staticmethod
    def checkExpression(text: typing.Optional[str], context: typing.Optional[QgsExpressionContext]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def quoteFieldExpression(expression: typing.Optional[str], layer: typing.Optional[QgsVectorLayer]) -> str: ...
    @staticmethod
    def expressionToLayerFieldIndex(expression: typing.Optional[str], layer: typing.Optional[QgsVectorLayer]) -> int: ...
    def isField(self) -> bool: ...
    def setEvalErrorString(self, str: typing.Optional[str]) -> None: ...
    def evalErrorString(self) -> str: ...
    def hasEvalError(self) -> bool: ...
    @typing.overload
    def evaluate(self) -> typing.Any: ...
    @typing.overload
    def evaluate(self, context: typing.Optional[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: typing.Optional[str]) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def prepare(self, context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def rootNode(self) -> typing.Optional['QgsExpressionNode']: ...
    def parserErrors(self) -> typing.List['QgsExpression.ParserError']: ...
    def parserErrorString(self) -> str: ...
    def hasParserError(self) -> bool: ...
    def isValid(self) -> bool: ...
    def __eq__(self, other: object): ...


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') -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def registerContextFunctions() -> None: ...
    @staticmethod
    def notificationScope(message: typing.Optional[str] = ...) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def processingModelAlgorithmScope(model: typing.Optional['QgsProcessingModelAlgorithm'], parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def processingAlgorithmScope(algorithm: typing.Optional['QgsProcessingAlgorithm'], parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def createFeatureBasedContext(feature: QgsFeature, fields: QgsFields) -> QgsExpressionContext: ...
    @staticmethod
    def setLayoutMultiFrameVariables(frame: typing.Optional['QgsLayoutMultiFrame'], variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutMultiFrameVariable(frame: typing.Optional['QgsLayoutMultiFrame'], name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def multiFrameScope(frame: typing.Optional['QgsLayoutMultiFrame']) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def setLayoutItemVariables(item: typing.Optional['QgsLayoutItem'], variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutItemVariable(item: typing.Optional['QgsLayoutItem'], name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def layoutItemScope(item: typing.Optional['QgsLayoutItem']) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def atlasScope(atlas: typing.Optional['QgsLayoutAtlas']) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def setLayoutVariables(layout: typing.Optional['QgsLayout'], variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutVariable(layout: typing.Optional['QgsLayout'], name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def layoutScope(layout: typing.Optional['QgsLayout']) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def updateSymbolScope(symbol: typing.Optional['QgsSymbol'], symbolScope: typing.Optional[QgsExpressionContextScope] = ...) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def mapLayerPositionScope(position: QgsPointXY) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def mapToolCaptureScope(matches: typing.Iterable[QgsPointLocator.Match]) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def mapSettingsScope(mapSettings: QgsMapSettings) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def setLayerVariables(layer: typing.Optional[QgsMapLayer], variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayerVariable(layer: typing.Optional[QgsMapLayer], name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def globalProjectLayerScopes(layer: typing.Optional[QgsMapLayer]) -> typing.List[QgsExpressionContextScope]: ...
    @staticmethod
    def layerScope(layer: typing.Optional[QgsMapLayer]) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def removeProjectVariable(project: typing.Optional['QgsProject'], name: typing.Optional[str]) -> None: ...
    @staticmethod
    def setProjectVariables(project: typing.Optional['QgsProject'], variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setProjectVariable(project: typing.Optional['QgsProject'], name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def projectScope(project: typing.Optional['QgsProject']) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def removeGlobalVariable(name: typing.Optional[str]) -> None: ...
    @staticmethod
    def setGlobalVariables(variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setGlobalVariable(name: typing.Optional[str], value: typing.Any) -> None: ...
    @staticmethod
    def parentFormScope(formFeature: QgsFeature = ..., formMode: typing.Optional[str] = ...) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def formScope(formFeature: QgsFeature = ..., formMode: typing.Optional[str] = ...) -> typing.Optional[QgsExpressionContextScope]: ...
    @staticmethod
    def globalScope() -> typing.Optional[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: typing.Optional[str]
        node = ... # type: 'QgsExpressionNode'

        @typing.overload
        def __init__(self, name: typing.Optional[str], node: typing.Optional['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) -> typing.Optional['QgsExpressionNode.NodeList']: ...
        def names(self) -> typing.List[str]: ...
        def at(self, i: int) -> typing.Optional['QgsExpressionNode']: ...
        def list(self) -> typing.List['QgsExpressionNode']: ...
        def hasNamedNodes(self) -> bool: ...
        def reserve(self, size: int) -> None: ...
        def count(self) -> int: ...
        @typing.overload
        def append(self, node: typing.Optional['QgsExpressionNode']) -> None: ...
        @typing.overload
        def append(self, node: typing.Optional['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) -> typing.Optional['QgsExpressionNode']: ...
    def cachedStaticValue(self) -> typing.Any: ...
    def hasCachedStaticValue(self) -> bool: ...
    def prepare(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[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) -> typing.Optional['QgsExpressionNode']: ...
    def eval(self, parent: typing.Optional[QgsExpression], context: typing.Optional[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: typing.Optional[QgsExpressionNode]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeUnaryOperator') -> None: ...

    def text(self) -> str: ...
    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def operand(self) -> typing.Optional[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: typing.Optional[QgsExpressionNode], opRight: typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def opRight(self) -> typing.Optional[QgsExpressionNode]: ...
    def opLeft(self) -> typing.Optional[QgsExpressionNode]: ...
    def op(self) -> 'QgsExpressionNodeBinaryOperator.BinaryOperator': ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeIndexOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, container: typing.Optional[QgsExpressionNode], index: typing.Optional[QgsExpressionNode]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeIndexOperator') -> None: ...

    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def index(self) -> typing.Optional[QgsExpressionNode]: ...
    def container(self) -> typing.Optional[QgsExpressionNode]: ...


class QgsExpressionNodeBetweenOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, node: typing.Optional[QgsExpressionNode], nodeLowerBound: typing.Optional[QgsExpressionNode], nodeHigherBound: typing.Optional[QgsExpressionNode], negate: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeBetweenOperator') -> None: ...

    def negate(self) -> bool: ...
    def higherBound(self) -> typing.Optional[QgsExpressionNode]: ...
    def lowerBound(self) -> typing.Optional[QgsExpressionNode]: ...
    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def node(self) -> typing.Optional[QgsExpressionNode]: ...


class QgsExpressionNodeInOperator(QgsExpressionNode):

    @typing.overload
    def __init__(self, node: typing.Optional[QgsExpressionNode], list: typing.Optional[QgsExpressionNode.NodeList], notin: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeInOperator') -> None: ...

    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def list(self) -> typing.Optional[QgsExpressionNode.NodeList]: ...
    def isNotIn(self) -> bool: ...
    def node(self) -> typing.Optional[QgsExpressionNode]: ...


class QgsExpressionNodeFunction(QgsExpressionNode):

    @typing.overload
    def __init__(self, fnIndex: int, args: typing.Optional[QgsExpressionNode.NodeList]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeFunction') -> None: ...

    @staticmethod
    def validateParams(fnIndex: int, args: typing.Optional[QgsExpressionNode.NodeList], error: typing.Optional[str]) -> bool: ...
    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def args(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeColumnRef') -> None: ...

    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> typing.Any: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[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: typing.Optional[QgsExpressionNode], thenExp: typing.Optional[QgsExpressionNode]) -> None: ...

        def thenExp(self) -> typing.Optional[QgsExpressionNode]: ...
        def whenExp(self) -> typing.Optional[QgsExpressionNode]: ...
        def clone(self) -> typing.Optional['QgsExpressionNodeCondition.WhenThen']: ...

    @typing.overload
    def __init__(self, conditions: typing.Optional[typing.Iterable['QgsExpressionNodeCondition.WhenThen']], elseExp: typing.Optional[QgsExpressionNode] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeCondition') -> None: ...

    def isStatic(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsExpressionNode]: ...
    def conditions(self) -> typing.List['QgsExpressionNodeCondition.WhenThen']: ...
    def dump(self) -> str: ...
    def prepareNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[QgsExpressionContext]) -> bool: ...
    def evalNode(self, parent: typing.Optional[QgsExpression], context: typing.Optional[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: typing.Optional[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: typing.Optional[str]
    DATETIME_FORMAT = ... # type: typing.Optional[str]
    DATE_DISPLAY_FORMAT = ... # type: typing.Optional[str]
    DATE_FORMAT = ... # type: typing.Optional[str]
    DISPLAY_FOR_ISO_FORMAT = ... # type: typing.Optional[str]
    QT_ISO_FORMAT = ... # type: typing.Optional[str]
    TIME_FORMAT = ... # type: typing.Optional[str]

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

    @typing.overload
    @staticmethod
    def defaultDisplayFormat(type: QtCore.QMetaType.Type) -> str: ...
    @typing.overload
    @staticmethod
    def defaultDisplayFormat(type: QtCore.QVariant.Type) -> str: ...
    @typing.overload
    @staticmethod
    def defaultFormat(type: QtCore.QMetaType.Type) -> str: ...
    @typing.overload
    @staticmethod
    def defaultFormat(type: QtCore.QVariant.Type) -> str: ...
    def representValue(self, layer: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def sortValue(self, layer: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: typing.Optional[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: typing.Optional[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: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: typing.Optional[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: typing.Optional[str]
        group = ... # type: typing.Any
        key = ... # type: typing.Any
        value = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, key: typing.Any, value: typing.Optional[str], description: typing.Optional[str] = ..., group: typing.Any = ...) -> 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: typing.Optional['QgsProject']) -> typing.Optional[QgsVectorLayer]: ...
    @staticmethod
    def expressionIsUsable(expression: typing.Optional[str], feature: QgsFeature, parentFeature: QgsFeature = ...) -> bool: ...
    @staticmethod
    def expressionParentFormVariables(expression: typing.Optional[str]) -> typing.Set[str]: ...
    @staticmethod
    def expressionParentFormAttributes(expression: typing.Optional[str]) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresParentFormScope(expression: typing.Optional[str]) -> bool: ...
    @staticmethod
    def expressionFormVariables(expression: typing.Optional[str]) -> typing.Set[str]: ...
    @staticmethod
    def expressionFormAttributes(expression: typing.Optional[str]) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresFormScope(expression: typing.Optional[str]) -> bool: ...
    @staticmethod
    def valueToStringList(value: typing.Any) -> typing.List[str]: ...
    @typing.overload
    def createCache(self, layer: typing.Optional[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: typing.Optional[QgsVectorLayer], fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __xor__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __ior__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __or__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __iand__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __and__(self, f: typing.Union['QgsLocatorFilter.Flags', 'QgsLocatorFilter.Flag']) -> 'QgsLocatorFilter.Flags': ...
        def __invert__(self) -> 'QgsLocatorFilter.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    resultFetched: typing.ClassVar[QtCore.pyqtSignal]
    finished: typing.ClassVar[QtCore.pyqtSignal]
    def setFetchResultsDelay(self, delay: int) -> None: ...
    def fetchResultsDelay(self) -> int: ...
    def logMessage(self, message: typing.Optional[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: typing.Optional[str], search: typing.Optional[str]) -> float: ...
    @staticmethod
    def stringMatches(candidate: typing.Optional[str], search: typing.Optional[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: typing.Optional[str], context: 'QgsLocatorContext', feedback: typing.Optional[QgsFeedback]) -> None: ...
    def prepare(self, string: typing.Optional[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) -> typing.Optional['QgsLocatorFilter']: ...


class QgsAbstractGeocoderLocatorFilter(QgsLocatorFilter):

    def __init__(self, name: typing.Optional[str], displayName: typing.Optional[str], prefix: typing.Optional[str], geocoder: typing.Optional['QgsGeocoderInterface'], boundingBox: 'QgsRectangle' = ...) -> None: ...

    def geocoderResultToLocatorResult(self, result: 'QgsGeocoderResult') -> 'QgsLocatorResult': ...
    def locatorResultToGeocoderResult(self, result: 'QgsLocatorResult') -> 'QgsGeocoderResult': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def geocoder(self) -> typing.Optional['QgsGeocoderInterface']: ...
    def triggerResult(self, result: 'QgsLocatorResult') -> None: ...
    def fetchResults(self, string: typing.Optional[str], context: 'QgsLocatorContext', feedback: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        def __xor__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        def __ior__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        def __or__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        def __iand__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        def __and__(self, f: typing.Union['QgsGeocoderInterface.Flags', 'QgsGeocoderInterface.Flag']) -> 'QgsGeocoderInterface.Flags': ...
        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: typing.Optional[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: typing.Optional[str], geometry: 'QgsGeometry', crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeocoderResult') -> None: ...

    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setGroup(self, group: typing.Optional[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: typing.Optional[str]) -> 'QgsGeocoderResult': ...


class QgsNominatimGeocoder(QgsGeocoderInterface):

    @typing.overload
    def __init__(self, countryCodes: typing.Optional[str] = ..., endpoint: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNominatimGeocoder') -> None: ...

    def setCountryCodes(self, countryCodes: typing.Optional[str]) -> None: ...
    def countryCodes(self) -> str: ...
    def setRequestsPerSecond(self, number: float) -> None: ...
    def requestsPerSecond(self) -> float: ...
    def setEndpoint(self, endpoint: typing.Optional[str]) -> None: ...
    def endpoint(self) -> str: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: typing.Optional[str], bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: typing.Optional[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: typing.Optional[str], regionBias: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGoogleMapsGeocoder') -> None: ...

    def setRegion(self, region: typing.Optional[str]) -> None: ...
    def region(self) -> str: ...
    def setApiKey(self, key: typing.Optional[str]) -> None: ...
    def apiKey(self) -> str: ...
    def setEndpoint(self, endpoint: typing.Optional[str]) -> None: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: typing.Optional[str], bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __xor__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __ior__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __or__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __iand__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        def __and__(self, f: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag']) -> 'QgsAbstractGeometry.WkbFlags': ...
        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 calculateBoundingBox3D(self) -> 'QgsBox3D': ...
    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def setZMTypeFromSubGeometry(self, subggeom: typing.Optional['QgsAbstractGeometry'], baseGeomType: Qgis.WkbType) -> None: ...
    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childGeometry(self, index: int) -> typing.Optional['QgsAbstractGeometry']: ...
    def childCount(self) -> int: ...
    def hasChildGeometries(self) -> bool: ...
    def compareToSameClass(self, other: typing.Optional['QgsAbstractGeometry']) -> int: ...
    def sortIndex(self) -> int: ...
    def createEmptyWithSameType(self) -> typing.Optional['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) -> typing.Optional['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 simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsAbstractGeometry']: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['QgsAbstractGeometry']: ...
    def toCurveType(self) -> typing.Optional['QgsAbstractGeometry']: ...
    def segmentize(self, tolerance: float = ..., toleranceType: 'QgsAbstractGeometry.SegmentationToleranceType' = ...) -> typing.Optional['QgsAbstractGeometry']: ...
    @typing.overload
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, box3d: 'QgsBox3D') -> 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', typing.Optional[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: typing.Optional['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: typing.Optional[str] = ..., axisOrder: 'QgsAbstractGeometry.AxisOrder' = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def normalize(self) -> None: ...
    def boundary(self) -> typing.Optional['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 boundingBox3D(self) -> 'QgsBox3D': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clear(self) -> None: ...
    def compareTo(self, other: typing.Optional['QgsAbstractGeometry']) -> int: ...
    def clone(self) -> typing.Optional['QgsAbstractGeometry']: ...
    def fuzzyDistanceEqual(self, other: 'QgsAbstractGeometry', epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: 'QgsAbstractGeometry', epsilon: float = ...) -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsVertexIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geometry: typing.Optional[QgsAbstractGeometry]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVertexIterator') -> None: ...

    def __next__(self) -> 'QgsPoint': ...
    def __iter__(self) -> typing.Optional['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: typing.Optional[QgsAbstractGeometry]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryPartIterator') -> None: ...

    def __next__(self) -> QgsAbstractGeometry: ...
    def __iter__(self) -> typing.Optional['QgsGeometryPartIterator']: ...
    def next(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def hasNext(self) -> bool: ...


class QgsGeometryConstPartIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, geometry: typing.Optional[QgsAbstractGeometry]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryConstPartIterator') -> None: ...

    def __next__(self) -> QgsAbstractGeometry: ...
    def __iter__(self) -> typing.Optional['QgsGeometryConstPartIterator']: ...
    def next(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def hasNext(self) -> bool: ...


class QgsBox3D(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, x: typing.Optional[typing.Union['QgsPoint', 'QgsRectangle', float]] = ..., y: typing.Optional['QgsPoint', float] = ..., z: typing.Optional[typing.Union[bool, float]] = ..., x2: typing.Optional[typing.Union[bool, float]] = ..., y2: typing.Optional[float] = ..., z2: typing.Optional[float] = ..., n: typing.Optional[bool] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBox3D') -> None: ...

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    def __iadd__(self, v: QgsVector3D) -> 'QgsBox3D': ...
    def __isub__(self, v: QgsVector3D) -> 'QgsBox3D': ...
    def __add__(self, v: QgsVector3D) -> 'QgsBox3D': ...
    def __sub__(self, v: QgsVector3D) -> 'QgsBox3D': ...
    def corners(self) -> typing.List[QgsVector3D]: ...
    def toString(self, precision: int = ...) -> str: ...
    def isEmpty(self) -> bool: ...
    def isNull(self) -> bool: ...
    @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 __eq__(self, other: object): ...
    def distanceTo(self, point: QtGui.QVector3D) -> float: ...
    def toRectangle(self) -> 'QgsRectangle': ...
    @typing.overload
    def combineWith(self, box: 'QgsBox3D') -> None: ...
    @typing.overload
    def combineWith(self, x: float, y: float, z: float) -> None: ...
    @typing.overload
    def contains(self, other: 'QgsBox3D') -> bool: ...
    @typing.overload
    def contains(self, point: 'QgsPoint') -> bool: ...
    @typing.overload
    def contains(self, x: float, y: float, z: float) -> bool: ...
    def intersects(self, other: 'QgsBox3D') -> bool: ...
    def is3D(self) -> bool: ...
    def is2d(self) -> bool: ...
    def intersect(self, other: 'QgsBox3D') -> 'QgsBox3D': ...
    def volume(self) -> float: ...
    def center(self) -> QgsVector3D: ...
    def depth(self) -> float: ...
    def height(self) -> float: ...
    def width(self) -> float: ...
    def normalize(self) -> None: ...
    def setNull(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) -> typing.Optional['QgsPolygon']: ...
    def toLineString(self, segments: int = ...) -> typing.Optional['QgsLineString']: ...
    def toPolygon(self, segments: int = ...) -> typing.Optional['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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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 = ...) -> typing.Optional['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) -> typing.Optional['QgsCurve']: ...
    def interpolatePoint(self, distance: float) -> typing.Optional['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 boundingBox3D(self) -> QgsBox3D: ...
    def normalize(self) -> None: ...
    def toCurveType(self) -> typing.Optional['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 = ...) -> typing.Optional['QgsCurve']: ...
    def asKml(self, precision: int = ...) -> str: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def reversed(self) -> typing.Optional['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 = ...) -> typing.Optional['QgsLineString']: ...
    def isRing(self) -> bool: ...
    def isClosed2D(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def clone(self) -> typing.Optional['QgsCurve']: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 calculateBoundingBox3D(self) -> QgsBox3D: ...
    def compareToSameClass(self, other: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['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) -> typing.Optional['QgsCircularString']: ...
    def interpolatePoint(self, distance: float) -> typing.Optional['QgsPoint']: ...
    def reversed(self) -> typing.Optional['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', typing.Optional[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: typing.Optional['QgsAbstractGeometryTransformer'], feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional[QgsAbstractGeometry]: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['QgsCircularString']: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> typing.Optional['QgsLineString']: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length(self) -> float: ...
    def append(self, string: typing.Optional['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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['QgsCircularString']: ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> 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 calculateBoundingBox3D(self) -> QgsBox3D: ...
    def compareToSameClass(self, other: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['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) -> typing.Optional['QgsCompoundCurve']: ...
    def interpolatePoint(self, distance: float) -> typing.Optional['QgsPoint']: ...
    def reversed(self) -> typing.Optional['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', typing.Optional[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: typing.Optional['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: typing.Optional[QgsCurve], extendPrevious: bool = ...) -> None: ...
    def curveAt(self, i: int) -> typing.Optional[QgsCurve]: ...
    def nCurves(self) -> int: ...
    def simplifiedTypeRef(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def boundingBoxIntersects(self, box3d: QgsBox3D) -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional[QgsAbstractGeometry]: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['QgsCompoundCurve']: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> typing.Optional['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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['QgsCompoundCurve']: ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> 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 boundingBox3D(self) -> QgsBox3D: ...
    def surfaceToPolygon(self) -> typing.Optional['QgsPolygon']: ...


class QgsCurvePolygon(QgsSurface):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p: 'QgsCurvePolygon') -> None: ...

    def calculateBoundingBox3D(self) -> QgsBox3D: ...
    def compareToSameClass(self, other: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def childGeometry(self, index: int) -> typing.Optional[QgsAbstractGeometry]: ...
    def childCount(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsCurvePolygon']: ...
    def toCurveType(self) -> typing.Optional['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 = ...) -> typing.Optional[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', typing.Optional[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: typing.Optional['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: typing.Optional[QgsCurve]) -> None: ...
    def setInteriorRings(self, rings: typing.Iterable[QgsCurve]) -> None: ...
    def setExteriorRing(self, ring: typing.Optional[QgsCurve]) -> None: ...
    def toPolygon(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> typing.Optional['QgsPolygon']: ...
    def interiorRing(self, i: int) -> QgsCurve: ...
    def exteriorRing(self) -> typing.Optional[QgsCurve]: ...
    def numInteriorRings(self) -> int: ...
    def roundness(self) -> float: ...
    def boundingBoxIntersects(self, box3d: QgsBox3D) -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsCurvePolygon']: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['QgsCurvePolygon']: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def surfaceToPolygon(self) -> typing.Optional['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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['QgsCurvePolygon']: ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...


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: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, m: typing.Optional[str], p: QgsPointXY) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsGeometry.Error') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        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: typing.Optional[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: typing.Optional[QgsAbstractGeometry], precision: float = ...) -> typing.Optional['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 isPolygonClockwise(self) -> bool: ...
    def isPolygonCounterClockwise(self) -> bool: ...
    def polygonOrientation(self) -> Qgis.AngularDirection: ...
    def makeValid(self, method: Qgis.MakeValidMethod = ..., keepCollapsed: bool = ...) -> 'QgsGeometry': ...
    def avoidIntersectionsV2(self, avoidIntersectionsLayers: typing.Iterable[QgsVectorLayer]) -> Qgis.GeometryOperationResult: ...
    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 unionCoverage(self) -> 'QgsGeometry': ...
    def simplifyCoverageVW(self, tolerance: float, preserveBoundary: bool) -> 'QgsGeometry': ...
    def validateCoverage(self, gapWidth: float) -> typing.Tuple[Qgis.CoverageValidityResult, typing.Optional['QgsGeometry']]: ...
    def constrainedDelaunayTriangulation(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', typing.Optional[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: typing.Optional[QgsPointXY]) -> bool: ...
    @typing.overload
    def contains(self, x: float, y: float) -> 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 boundingBox3D(self) -> QgsBox3D: ...
    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: typing.Optional[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 addPartV2(self, part: typing.Optional[QgsAbstractGeometry], wkbType: Qgis.WkbType = ...) -> Qgis.GeometryOperationResult: ...
    def addPart(self, part: typing.Optional[QgsAbstractGeometry], geomType: Qgis.GeometryType = ...) -> Qgis.GeometryOperationResult: ...
    def addPointsV2(self, points: typing.Iterable['QgsPoint'], wkbType: Qgis.WkbType = ...) -> Qgis.GeometryOperationResult: ...
    def addPoints(self, points: typing.Iterable['QgsPoint'], geomType: Qgis.GeometryType = ...) -> Qgis.GeometryOperationResult: ...
    def addPointsXYV2(self, points: typing.Iterable[QgsPointXY], wkbType: Qgis.WkbType = ...) -> 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: typing.Optional[QgsCurve]) -> Qgis.GeometryOperationResult: ...
    def closestSegmentWithContext(self, point: QgsPointXY, epsilon: float = ...) -> typing.Tuple[float, QgsPointXY, int, typing.Optional[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: ...
    def addTopologicalPoint(self, point: 'QgsPoint', snappingTolerance: float = ..., segmentSearchEpsilon: float = ...) -> 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 fromBox3D(box: QgsBox3D) -> '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 fromPoint(point: 'QgsPoint') -> 'QgsGeometry': ...
    @staticmethod
    def fromPointXY(point: QgsPointXY) -> 'QgsGeometry': ...
    @staticmethod
    def fromWkt(wkt: typing.Optional[str]) -> 'QgsGeometry': ...
    def isNull(self) -> bool: ...
    def set(self, geometry: typing.Optional[QgsAbstractGeometry]) -> None: ...
    def get(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def constGet(self) -> typing.Optional[QgsAbstractGeometry]: ...


class QgsGeometryCollection(QgsAbstractGeometry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, c: 'QgsGeometryCollection') -> None: ...

    def clearCache(self) -> None: ...
    def calculateBoundingBox3D(self) -> QgsBox3D: ...
    def fromCollectionWkt(self, wkt: typing.Optional[str], subtypes: typing.Iterable[QgsAbstractGeometry], defaultChildWkbType: typing.Optional[str] = ...) -> bool: ...
    def wktOmitChildType(self) -> bool: ...
    def compareToSameClass(self, other: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def childGeometry(self, index: int) -> typing.Optional[QgsAbstractGeometry]: ...
    def childCount(self) -> int: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsGeometryCollection']: ...
    def extractPartsByType(self, type: Qgis.WkbType, useFlatType: bool = ...) -> typing.Optional['QgsGeometryCollection']: ...
    def __iter__(self) -> QgsGeometryPartIterator: ...
    def __delitem__(self, index: int) -> None: ...
    def __getitem__(self, index: int) -> QgsAbstractGeometry: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsGeometryCollection']: ...
    def simplifiedTypeRef(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def toCurveType(self) -> typing.Optional['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 = ...) -> typing.Optional[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', typing.Optional[int]]: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def boundingBox3D(self) -> QgsBox3D: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[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: typing.Optional['QgsAbstractGeometryTransformer'], feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def normalize(self) -> None: ...
    def takeGeometries(self) -> typing.List[QgsAbstractGeometry]: ...
    def removeGeometry(self, nr: int) -> bool: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def reserve(self, size: int) -> None: ...
    def boundingBoxIntersects(self, box3d: QgsBox3D) -> bool: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['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) -> typing.Optional['QgsGeometryCollection']: ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[QgsAbstractGeometry]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryEngine') -> None: ...

    def logError(self, engineName: typing.Optional[str], message: typing.Optional[str]) -> None: ...
    def setLogErrors(self, enabled: bool) -> None: ...
    def offsetCurve(self, distance: float, segments: int, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def splitGeometry(self, splitLine: 'QgsLineString', topological: bool, topologyTestPoints: typing.Iterable['QgsPoint'], errorMsg: typing.Optional[typing.Optional[str]] = ..., skipIntersectionCheck: bool = ...) -> typing.Tuple['QgsGeometryEngine.EngineOperationResult', typing.List[QgsGeometry]]: ...
    def isSimple(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def isEmpty(self, errorMsg: typing.Optional[typing.Optional[str]]) -> bool: ...
    def isEqual(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def isValid(self, errorMsg: typing.Optional[typing.Optional[str]] = ..., allowSelfTouchingHoles: bool = ..., errorLoc: typing.Optional[QgsGeometry] = ...) -> bool: ...
    def length(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> float: ...
    def area(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> float: ...
    def relatePattern(self, geom: typing.Optional[QgsAbstractGeometry], pattern: typing.Optional[str], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def relate(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> str: ...
    def disjoint(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def contains(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def overlaps(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def within(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def crosses(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def touches(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def intersects(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def distanceWithin(self, geom: typing.Optional[QgsAbstractGeometry], maxdistance: float, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> bool: ...
    def distance(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ...) -> float: ...
    def convexHull(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def pointOnSurface(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional['QgsPoint']: ...
    def centroid(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional['QgsPoint']: ...
    def envelope(self, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def interpolate(self, distance: float, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def simplify(self, tolerance: float, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, endCapStyle: Qgis.EndCapStyle, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[typing.Optional[str]] = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def symDifference(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ..., parameters: QgsGeometryParameters = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    @typing.overload
    def combine(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ..., parameters: QgsGeometryParameters = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    @typing.overload
    def combine(self, geomList: typing.Iterable[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]], parameters: QgsGeometryParameters = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    @typing.overload
    def combine(self, geometries: typing.Iterable[QgsGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ..., parameters: QgsGeometryParameters = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def difference(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ..., parameters: QgsGeometryParameters = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def intersection(self, geom: typing.Optional[QgsAbstractGeometry], errorMsg: typing.Optional[typing.Optional[str]] = ..., parameters: QgsGeometryParameters = ...) -> typing.Optional[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 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 circleCenterRadius(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint') -> typing.Tuple[float, float, float]: ...
    @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]: ...
    @staticmethod
    def pointsAreCollinear(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float, epsilon: float) -> 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 pointFractionAlongLine(x1: float, y1: float, x2: float, y2: float, px: float, py: 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 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 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 ccwAngle(dy: float, dx: float) -> float: ...
    @staticmethod
    def perpendicularOffsetPointAlongSegment(x1: float, y1: float, x2: float, y2: float, proportion: float, offset: float) -> typing.Tuple[typing.Optional[float], typing.Optional[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 distance3D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @typing.overload
    @staticmethod
    def distance2D(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @typing.overload
    @staticmethod
    def distance2D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @staticmethod
    def sqrDistance3D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @typing.overload
    @staticmethod
    def sqrDistance2D(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @typing.overload
    @staticmethod
    def sqrDistance2D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 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 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 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 interpolatePointOnArc(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: 'QgsPoint', directionPoint: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @typing.overload
    @staticmethod
    def leftOfLine(point: 'QgsPoint', p1: 'QgsPoint', p2: 'QgsPoint') -> int: ...
    @typing.overload
    @staticmethod
    def leftOfLine(x: float, y: float, x1: float, y1: float, x2: float, y2: float) -> 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 distToInfiniteLine(point: 'QgsPoint', linePoint1: 'QgsPoint', linePoint2: 'QgsPoint', epsilon: float = ...) -> 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: typing.Optional[QgsAbstractGeometry]) -> typing.List['QgsLineString']: ...


class QgsGeometryUtilsBase(PyQt5.sip.wrapper):

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

    @staticmethod
    def azimuth(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def project(aX: float, aY: float, aZ: float, distance: float, azimuth: float, inclination: float) -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def segmentIntersection(p1x: float, p1y: float, p2x: float, p2y: float, q1x: float, q1y: float, q2x: float, q2y: float, tolerance: float = ..., acceptImproperIntersection: bool = ...) -> typing.Tuple[bool, float, float, bool]: ...
    @staticmethod
    def lineIntersection(p1x: float, p1y: float, v1: QgsVector, p2x: float, p2y: float, v2: QgsVector) -> typing.Tuple[bool, float, float]: ...
    @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]: ...
    @staticmethod
    def pointsAreCollinear(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float, epsilon: float) -> 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 pointFractionAlongLine(x1: float, y1: float, x2: float, y2: float, px: float, py: 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 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 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(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def ccwAngle(dy: float, dx: float) -> float: ...
    @staticmethod
    def perpendicularOffsetPointAlongSegment(x1: float, y1: float, x2: float, y2: float, proportion: float, offset: float) -> typing.Tuple[typing.Optional[float], typing.Optional[float]]: ...
    @staticmethod
    def leftOfLine(x: float, y: float, x1: float, y1: float, x2: float, y2: float) -> int: ...
    @staticmethod
    def sqrDistToLine(ptX: float, ptY: float, x1: float, y1: float, x2: float, y2: float, epsilon: float) -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def distance2D(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def sqrDistance2D(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def distance3D(x1: float, y1: float, z1: float, x2: float, y2: float, z2: float) -> float: ...
    @staticmethod
    def sqrDistance3D(x1: float, y1: float, z1: float, x2: float, y2: float, z2: float) -> float: ...


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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 compareToSameClass(self, other: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def interpolateM(self, use3DDistance: bool = ...) -> typing.Optional['QgsLineString']: ...
    def measuredLine(self, start: float, end: float) -> typing.Optional['QgsLineString']: ...
    def calculateBoundingBox3D(self) -> QgsBox3D: ...
    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) -> typing.Optional['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', typing.Optional[int]]: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> typing.Optional['QgsLineString']: ...
    def interpolatePoint(self, distance: float) -> typing.Optional['QgsPoint']: ...
    def reversed(self) -> typing.Optional['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: typing.Optional[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 = ...) -> typing.Optional['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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsLineString']: ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def collectDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> typing.List['QgsVertexId']: ...
    @typing.overload
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, box3d: QgsBox3D) -> 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 = ..., removeRedundantPoints: bool = ...) -> typing.Optional['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) -> typing.Optional['QgsLineString']: ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def extend(self, startDistance: float, endDistance: float) -> None: ...
    def toCurveType(self) -> typing.Optional[QgsCompoundCurve]: ...
    def close(self) -> None: ...
    def addVertex(self, pt: 'QgsPoint') -> None: ...
    def append(self, line: typing.Optional['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: ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    @staticmethod
    def fromQPolygonF(polygon: QtGui.QPolygonF) -> typing.Optional['QgsLineString']: ...
    @staticmethod
    def fromBezierCurve(start: 'QgsPoint', controlPoint1: 'QgsPoint', controlPoint2: 'QgsPoint', end: 'QgsPoint', segments: int = ...) -> typing.Optional['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) -> typing.Optional['QgsMultiCurve']: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def reversed(self) -> typing.Optional['QgsMultiCurve']: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsMultiCurve']: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def toCurveType(self) -> typing.Optional['QgsMultiCurve']: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['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, linestrings: typing.Iterable[QgsLineString]) -> None: ...
    @typing.overload
    def __init__(self, linestrings: typing.Iterable[QgsLineString]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiLineString') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def measuredLine(self, start: float, end: float) -> typing.Optional['QgsMultiLineString']: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsMultiLineString']: ...
    def toCurveType(self) -> typing.Optional[QgsMultiCurve]: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsMultiLineString']: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['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, points: typing.Sequence[typing.Union['QgsPoint', QgsPointXY, typing.Sequence[float]]]) -> 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: 'QgsMultiPoint') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsMultiPoint']: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['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) -> typing.Optional[QgsAbstractGeometry]: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def nCoordinates(self) -> int: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def clear(self) -> None: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def toCurveType(self) -> typing.Optional['QgsMultiPoint']: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['QgsMultiSurface']: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsMultiSurface']: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def toCurveType(self) -> typing.Optional['QgsMultiSurface']: ...
    def clone(self) -> typing.Optional['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, polygons: typing.Iterable['QgsPolygon']) -> None: ...
    @typing.overload
    def __init__(self, polygons: typing.Iterable['QgsPolygon']) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMultiPolygon') -> None: ...

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsMultiPolygon']: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def toCurveType(self) -> typing.Optional[QgsMultiSurface]: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsMultiPolygon']: ...
    def insertGeometry(self, g: typing.Optional[QgsAbstractGeometry], index: int) -> bool: ...
    def addGeometries(self, geometries: typing.Iterable[QgsAbstractGeometry]) -> bool: ...
    def addGeometry(self, g: typing.Optional[QgsAbstractGeometry]) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def clone(self) -> typing.Optional['QgsMultiPolygon']: ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def polygonN(self, index: int) -> 'QgsPolygon': ...


class QgsOrientedBox3D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: typing.Iterable[float], halfAxes: typing.Iterable[float]) -> None: ...
    @typing.overload
    def __init__(self, center: QgsVector3D, halfAxes: typing.Iterable[QgsVector3D]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOrientedBox3D') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def intersects(self, other: 'QgsOrientedBox3D') -> bool: ...
    def transformed(self, transform: QgsMatrix4x4) -> 'QgsOrientedBox3D': ...
    def reprojectedExtent(self, ct: 'QgsCoordinateTransform') -> QgsBox3D: ...
    def size(self) -> QgsVector3D: ...
    def corners(self) -> typing.List[QgsVector3D]: ...
    def extent(self) -> QgsBox3D: ...
    def halfAxes(self) -> typing.List[float]: ...
    def center(self) -> QgsVector3D: ...
    def centerZ(self) -> float: ...
    def centerY(self) -> float: ...
    def centerX(self) -> float: ...
    def isNull(self) -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @staticmethod
    def fromBox3D(box: QgsBox3D) -> 'QgsOrientedBox3D': ...


class QgsPoint(QgsAbstractGeometry):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, x: typing.Optional[typing.Union['QgsPoint', typing.Union[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: typing.Optional[QgsAbstractGeometry]) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['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: ...
    @typing.overload
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, box3d: QgsBox3D) -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def toCurveType(self) -> typing.Optional['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', typing.Optional[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) -> typing.Optional[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: typing.Optional[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: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def simplifyByDistance(self, tolerance: float) -> typing.Optional['QgsPoint']: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ..., removeRedundantPoints: bool = ...) -> typing.Optional['QgsPoint']: ...
    def clone(self) -> typing.Optional['QgsPoint']: ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def boundingBox3D(self) -> QgsBox3D: ...
    def isEmpty(self) -> bool: ...
    def normalize(self) -> None: ...
    def __add__(self, v: QgsVector) -> 'QgsPoint': ...
    def __isub__(self, v: QgsVector) -> 'QgsPoint': ...
    def __iadd__(self, v: QgsVector) -> 'QgsPoint': ...
    @typing.overload
    def __sub__(self, p: 'QgsPoint') -> QgsVector: ...
    @typing.overload
    def __sub__(self, v: QgsVector) -> 'QgsPoint': ...
    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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def fuzzyDistanceEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...
    def fuzzyEqual(self, other: QgsAbstractGeometry, epsilon: float = ...) -> bool: ...


class QgsPolygon(QgsCurvePolygon):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, exterior: typing.Optional[QgsLineString], rings: typing.Iterable[QgsLineString] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPolygon') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> typing.Optional['QgsPolygon']: ...
    def pointDistanceToBoundary(self, x: float, y: float) -> float: ...
    def boundary(self) -> typing.Optional[QgsAbstractGeometry]: ...
    def setExteriorRing(self, ring: typing.Optional[QgsCurve]) -> None: ...
    def addInteriorRing(self, ring: typing.Optional[QgsCurve]) -> None: ...
    def toCurveType(self) -> typing.Optional[QgsCurvePolygon]: ...
    def surfaceToPolygon(self) -> typing.Optional['QgsPolygon']: ...
    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 fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['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 = ...) -> typing.Optional[QgsLineString]: ...
    def toPolygon(self, force2D: bool = ...) -> typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __iadd__(self, v: QgsVector) -> 'QgsRectangle': ...
    def __isub__(self, v: QgsVector) -> 'QgsRectangle': ...
    def __add__(self, v: QgsVector) -> 'QgsRectangle': ...
    def __sub__(self, v: QgsVector) -> 'QgsRectangle': ...
    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 setNull(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: typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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) -> typing.Optional[QgsLineString]: ...
    def toPolygon(self) -> typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsSphere(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, x: float, y: float, z: float, radius: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSphere') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def boundingBox(self) -> QgsBox3D: ...
    def toCircle(self) -> QgsCircle: ...
    def surfaceArea(self) -> float: ...
    def volume(self) -> float: ...
    def diameter(self) -> float: ...
    def setRadius(self, radius: float) -> None: ...
    def radius(self) -> float: ...
    @typing.overload
    def setCenter(self, center: QgsPoint) -> None: ...
    @typing.overload
    def setCenter(self, x: float, y: float, z: float) -> None: ...
    def centerZ(self) -> float: ...
    def centerY(self) -> float: ...
    def centerX(self) -> float: ...
    def centerVector(self) -> QgsVector3D: ...
    def center(self) -> QgsPoint: ...
    def isEmpty(self) -> bool: ...
    def isNull(self) -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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], p2: typing.Union[QtCore.QPointF, QtCore.QPoint], p3: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTriangle') -> None: ...

    def createEmptyWithSameType(self) -> typing.Optional['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) -> typing.Optional[QgsCurve]: ...
    def setExteriorRing(self, ring: typing.Optional[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: typing.Optional[QgsCurve]) -> None: ...
    def toCurveType(self) -> typing.Optional[QgsCurvePolygon]: ...
    def surfaceToPolygon(self) -> typing.Optional[QgsPolygon]: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: typing.Optional[str] = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def fromWkb(self, wkbPtr: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['QgsTriangle']: ...
    def geometryType(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @typing.overload
    def isValid(self) -> bool: ...
    @typing.overload
    def isValid(self, geom: typing.Optional[QgsAbstractGeometry]) -> bool: ...


class QgsWkbPtr(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, p: typing.Optional[PyQt5.sip.array[bytes]]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsWkbPtr') -> None: ...


class QgsConstWkbPtr(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, p: typing.Optional[PyQt5.sip.array[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: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractBabelFormat') -> None: ...

    @staticmethod
    def featureTypeToArgument(type: Qgis.GpsFeatureType) -> str: ...
    def exportCommand(self, babel: typing.Optional[str], featureType: Qgis.GpsFeatureType, input: typing.Optional[str], output: typing.Optional[str], flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: typing.Optional[str], featureType: Qgis.GpsFeatureType, input: typing.Optional[str], output: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], capabilities: typing.Union[Qgis.BabelFormatCapabilities, Qgis.BabelFormatCapability], extensions: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBabelSimpleImportFormat') -> None: ...

    def importCommand(self, babel: typing.Optional[str], featureType: Qgis.GpsFeatureType, input: typing.Optional[str], output: typing.Optional[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: typing.Optional[str]) -> typing.Optional['QgsBabelGpsDeviceFormat']: ...
    def deviceNames(self) -> typing.List[str]: ...
    def importFileFilter(self) -> str: ...
    def importFormatByDescription(self, description: typing.Optional[str]) -> typing.Optional[QgsBabelSimpleImportFormat]: ...
    def importFormat(self, name: typing.Optional[str]) -> typing.Optional[QgsBabelSimpleImportFormat]: ...
    def importFormatNames(self) -> typing.List[str]: ...


class QgsBabelGpsDeviceFormat(QgsAbstractBabelFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, waypointDownloadCommand: typing.Optional[str], waypointUploadCommand: typing.Optional[str], routeDownloadCommand: typing.Optional[str], routeUploadCommand: typing.Optional[str], trackDownloadCommand: typing.Optional[str], trackUploadCommand: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBabelGpsDeviceFormat') -> None: ...

    def exportCommand(self, babel: typing.Optional[str], type: Qgis.GpsFeatureType, in_: typing.Optional[str], out: typing.Optional[str], flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: typing.Optional[str], type: Qgis.GpsFeatureType, in_: typing.Optional[str], out: typing.Optional[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: typing.Optional[QtCore.QIODevice]) -> None: ...

    def parseData(self) -> None: ...
    positionChanged: typing.ClassVar[QtCore.pyqtSignal]
    fixStatusChanged: typing.ClassVar[QtCore.pyqtSignal]
    nmeaSentenceReceived: typing.ClassVar[QtCore.pyqtSignal]
    stateChanged: typing.ClassVar[QtCore.pyqtSignal]
    def lastValidLocation(self) -> QgsPoint: ...
    def currentGPSInformation(self) -> 'QgsGpsInformation': ...
    def status(self) -> 'QgsGpsConnection.Status': ...
    def setSource(self, source: typing.Optional[QtCore.QIODevice]) -> None: ...
    def close(self) -> bool: ...
    def connect(self) -> bool: ...


class QgsNmeaConnection(QgsGpsConnection):

    def __init__(self, device: typing.Optional[QtCore.QIODevice]) -> None: ...

    def processHchdtSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processHchdgSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processHdtSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processGstSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processGsaSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processVtgSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processGsvSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processRmcSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processGgaSentence(self, data: typing.Optional[str], len: int) -> None: ...
    def processStringBuffer(self) -> None: ...
    def parseData(self) -> None: ...


class QgsGpsdConnection(QgsNmeaConnection):

    def __init__(self, host: typing.Optional[str], port: int, device: typing.Optional[str]) -> None: ...


class QgsGpsDetector(QtCore.QObject):

    def __init__(self, portName: typing.Optional[str] = ..., useUnsafeSignals: bool = ...) -> None: ...

    detectionFailed: typing.ClassVar[QtCore.pyqtSignal]
    connectionDetected: typing.ClassVar[QtCore.pyqtSignal]
    def connDestroyed(self, a0: typing.Optional[QtCore.QObject]) -> None: ...
    detected: typing.ClassVar[QtCore.pyqtSignal]
    def advance(self) -> None: ...
    @staticmethod
    def availablePorts() -> typing.List[typing.Tuple[str, str]]: ...
    def takeConnection(self) -> typing.Optional[QgsGpsConnection]: ...


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 setNavigationStatus(self, status: Qgis.GpsNavigationStatus) -> None: ...
    def navigationStatus(self) -> Qgis.GpsNavigationStatus: ...
    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: typing.Optional[QgsGpsConnection], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addTrackVertex(self) -> None: ...
    distanceAreaChanged: typing.ClassVar[QtCore.pyqtSignal]
    stateChanged: typing.ClassVar[QtCore.pyqtSignal]
    trackVertexAdded: typing.ClassVar[QtCore.pyqtSignal]
    trackReset: typing.ClassVar[QtCore.pyqtSignal]
    trackIsEmptyChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> None: ...
    def setConnection(self, connection: typing.Optional[QgsGpsConnection]) -> None: ...
    def connection(self) -> typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def constellation(self) -> Qgis.GnssConstellation: ...


class QgsVectorLayerGpsLogger(QgsGpsLogger):

    def __init__(self, connection: typing.Optional[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: typing.Optional[str]) -> None: ...
    def tracksLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def pointsLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def setTracksLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def setPointsLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def setWriteToEditBuffer(self, buffer: bool) -> None: ...
    def writeToEditBuffer(self) -> bool: ...


class QgsCalloutPosition(PyQt5.sip.wrapper):

    featureId = ... # type: int
    layerID = ... # type: typing.Optional[str]
    providerID = ... # type: typing.Optional[str]

    @typing.overload
    def __init__(self, id: int, layer: typing.Optional[str], providerId: typing.Optional[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]) -> None: ...
    def destination(self) -> QtCore.QPointF: ...
    def setOrigin(self, origin: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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: typing.Optional['QgsProject']) -> None: ...
    def readSettingsFromProject(self, project: typing.Optional['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: typing.Optional[str]) -> None: ...
    def rightDirectionSymbol(self) -> str: ...
    def setLeftDirectionSymbol(self, symbol: typing.Optional[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 setPrioritization(self, prioritization: Qgis.LabelPrioritization) -> None: ...
    def prioritization(self) -> Qgis.LabelPrioritization: ...
    def setAllowDegradedPlacement(self, allow: bool) -> None: ...
    def allowDegradedPlacement(self) -> bool: ...
    def setOverlapHandling(self, handling: Qgis.LabelOverlapHandling) -> None: ...
    def overlapHandling(self) -> Qgis.LabelOverlapHandling: ...


class QgsLabelPointSettings(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def setMaximumDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def maximumDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setMaximumDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maximumDistanceUnit(self) -> Qgis.RenderUnit: ...
    def setMaximumDistance(self, distance: float) -> None: ...
    def maximumDistance(self) -> float: ...
    def setPredefinedPositionOrder(self, order: typing.Iterable[Qgis.LabelPredefinedPointPosition]) -> None: ...
    def predefinedPositionOrder(self) -> typing.List[Qgis.LabelPredefinedPointPosition]: ...
    def setQuadrant(self, quadrant: Qgis.LabelQuadrantPosition) -> None: ...
    def quadrant(self) -> Qgis.LabelQuadrantPosition: ...
    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...


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: typing.Optional[str]
    layerID = ... # type: typing.Optional[str]
    providerID = ... # type: typing.Optional[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: typing.Optional[str], labeltext: typing.Optional[str], labelfont: QtGui.QFont, upside_down: bool, diagram: bool = ..., pinned: bool = ..., providerId: typing.Optional[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
        TabStopDistance = ... # 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
        MaximumDistance = ... # 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

    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: typing.Optional[str]
    fitInPolygonOnly = ... # type: bool
    fontLimitPixelSize = ... # type: bool
    fontMaxPixelSize = ... # type: int
    fontMinPixelSize = ... # type: int
    formatNumbers = ... # type: bool
    geometryGenerator = ... # type: typing.Optional[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
    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: typing.Optional[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: typing.Optional[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 setPointSettings(self, settings: QgsLabelPointSettings) -> None: ...
    def pointSettings(self) -> QgsLabelPointSettings: ...
    def setLineSettings(self, settings: QgsLabelLineSettings) -> None: ...
    def lineSettings(self) -> QgsLabelLineSettings: ...
    def setCallout(self, callout: typing.Optional[QgsCallout]) -> None: ...
    def callout(self) -> typing.Optional[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: typing.Optional[QtGui.QFontMetricsF], text: typing.Optional[str], f: typing.Optional[QgsFeature] = ..., context: typing.Optional[QgsRenderContext] = ...) -> typing.Tuple[float, float, typing.Optional[float], typing.Optional[float]]: ...
    def legendString(self) -> str: ...
    def setLegendString(self, legendString: typing.Optional[str]) -> None: ...
    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) -> typing.Optional[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[typing.Optional[str]], fields: QgsFields, mapSettings: QgsMapSettings, crs: 'QgsCoordinateReferenceSystem') -> typing.Tuple[bool, typing.Set[str]]: ...


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: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def splitToLines(text: typing.Optional[str], wrapCharacter: typing.Optional[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: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> QgsPalLayerSettings: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsAbstractVectorLayerLabeling']: ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: typing.Optional[QgsPalLayerSettings], providerId: typing.Optional[str] = ...) -> None: ...
    def settings(self, providerId: typing.Optional[str] = ...) -> QgsPalLayerSettings: ...
    def subProviders(self) -> typing.List[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional['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: typing.Optional[QgsPalLayerSettings], maximumScale: float = ..., minimumScale: float = ..., filterExp: typing.Optional[str] = ..., description: typing.Optional[str] = ..., elseRule: bool = ...) -> None: ...

        def accept(self, visitor: typing.Optional['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 = ...) -> typing.Optional['QgsRuleBasedLabeling.Rule']: ...
        def clone(self) -> typing.Optional['QgsRuleBasedLabeling.Rule']: ...
        def findRuleByKey(self, key: typing.Optional[str]) -> typing.Optional['QgsRuleBasedLabeling.Rule']: ...
        def removeChildAt(self, i: int) -> None: ...
        def insertChild(self, i: int, rule: typing.Optional['QgsRuleBasedLabeling.Rule']) -> None: ...
        def appendChild(self, rule: typing.Optional['QgsRuleBasedLabeling.Rule']) -> None: ...
        def parent(self) -> typing.Optional['QgsRuleBasedLabeling.Rule']: ...
        def descendants(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def children(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def setRuleKey(self, key: typing.Optional[str]) -> None: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: typing.Optional[str]) -> None: ...
        def setFilterExpression(self, filterExp: typing.Optional[str]) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setSettings(self, settings: typing.Optional[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) -> typing.Optional[QgsPalLayerSettings]: ...

    def __init__(self, root: typing.Optional['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: typing.Optional[QgsPalLayerSettings], providerId: typing.Optional[str] = ...) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def settings(self, providerId: typing.Optional[str] = ...) -> QgsPalLayerSettings: ...
    def subProviders(self) -> typing.List[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional['QgsRuleBasedLabeling']: ...
    def type(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsRuleBasedLabeling']: ...
    def rootRule(self) -> typing.Optional['QgsRuleBasedLabeling.Rule']: ...


class QgsVectorLayerSimpleLabeling(QgsAbstractVectorLayerLabeling):

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

    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['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: typing.Optional[QgsPalLayerSettings], providerId: typing.Optional[str] = ...) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def settings(self, providerId: typing.Optional[str] = ...) -> QgsPalLayerSettings: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional[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 CustomRole(int):
        RuleKey = ... # type: QgsLayerTreeModelLegendNode.CustomRole
        ParentRuleKey = ... # type: QgsLayerTreeModelLegendNode.CustomRole
        NodeType = ... # type: QgsLayerTreeModelLegendNode.CustomRole
        IsDataDefinedSize = ... # type: QgsLayerTreeModelLegendNode.CustomRole

    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]
        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: typing.Optional['QgsLayerTreeLayer'], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def createTemporaryRenderContext(self) -> typing.Optional[QgsRenderContext]: ...
    sizeChanged: typing.ClassVar[QtCore.pyqtSignal]
    dataChanged: typing.ClassVar[QtCore.pyqtSignal]
    def toggleAllItems(self) -> None: ...
    def uncheckAllItems(self) -> None: ...
    def checkAllItems(self) -> None: ...
    def __repr__(self) -> typing.Any: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: typing.Optional['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: typing.Optional['QgsLayerTreeModelLegendNode.ItemContext'], itemHeight: float) -> QtCore.QSizeF: ...
    def exportToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def draw(self, settings: QgsLegendSettings, ctx: typing.Optional['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: typing.Optional[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) -> typing.Optional['QgsLayerTreeModel']: ...
    def layerNode(self) -> typing.Optional['QgsLayerTreeLayer']: ...


class QgsColorRampLegendNode(QgsLayerTreeModelLegendNode):

    @typing.overload
    def __init__(self, nodeLayer: typing.Optional['QgsLayerTreeLayer'], ramp: typing.Optional[QgsColorRamp], minimumLabel: typing.Optional[str], maximumLabel: typing.Optional[str], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, nodeLayer: typing.Optional['QgsLayerTreeLayer'], ramp: typing.Optional[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) -> typing.Optional[QgsColorRamp]: ...
    def iconSize(self) -> QtCore.QSize: ...
    def setIconSize(self, size: QtCore.QSize) -> None: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: typing.Optional[QgsLayerTreeModelLegendNode.ItemContext], symbolSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: typing.Optional[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: typing.Optional[str]) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: typing.Optional[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: typing.Optional['QgsNumericFormat']) -> None: ...
    def numericFormat(self) -> typing.Optional['QgsNumericFormat']: ...
    def setMaximumLabel(self, label: typing.Optional[str]) -> None: ...
    def maximumLabel(self) -> str: ...
    def setMinimumLabel(self, label: typing.Optional[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: ...
    nameChanged: typing.ClassVar[QtCore.pyqtSignal]
    expandedChanged: typing.ClassVar[QtCore.pyqtSignal]
    customPropertyChanged: typing.ClassVar[QtCore.pyqtSignal]
    visibilityChanged: typing.ClassVar[QtCore.pyqtSignal]
    removedChildren: typing.ClassVar[QtCore.pyqtSignal]
    willRemoveChildren: typing.ClassVar[QtCore.pyqtSignal]
    addedChildren: typing.ClassVar[QtCore.pyqtSignal]
    willAddChildren: typing.ClassVar[QtCore.pyqtSignal]
    def takeChild(self, node: typing.Optional['QgsLayerTreeNode']) -> bool: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: typing.Optional[str]) -> None: ...
    def customProperty(self, key: typing.Optional[str], defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: typing.Optional[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: typing.Optional['QgsProject'], looseMatching: bool = ...) -> None: ...
    def clone(self) -> typing.Optional['QgsLayerTreeNode']: ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsLayerTreeNode']: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: typing.Optional['QgsProject']) -> typing.Optional['QgsLayerTreeNode']: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def children(self) -> typing.List['QgsLayerTreeNode']: ...
    def parent(self) -> typing.Optional['QgsLayerTreeNode']: ...
    def nodeType(self) -> 'QgsLayerTreeNode.NodeType': ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTreeGroup(QgsLayerTreeNode):

    def __init__(self, name: typing.Optional[str] = ..., checked: bool = ...) -> None: ...

    def updateChildVisibilityMutuallyExclusive(self) -> None: ...
    def nodeVisibilityChanged(self, node: typing.Optional[QgsLayerTreeNode]) -> None: ...
    def convertToGroupLayer(self, options: QgsGroupLayer.LayerOptions) -> typing.Optional[QgsGroupLayer]: ...
    def setGroupLayer(self, layer: typing.Optional[QgsGroupLayer]) -> None: ...
    def groupLayer(self) -> typing.Optional[QgsGroupLayer]: ...
    def setIsMutuallyExclusive(self, enabled: bool, initialChildIndex: int = ...) -> None: ...
    def isMutuallyExclusive(self) -> bool: ...
    def setItemVisibilityCheckedRecursive(self, checked: bool) -> None: ...
    def resolveReferences(self, project: typing.Optional['QgsProject'], looseMatching: bool = ...) -> None: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['QgsLayerTreeGroup']: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: typing.Optional['QgsProject'], context: QgsReadWriteContext) -> typing.Optional['QgsLayerTreeGroup']: ...
    def findGroups(self, recursive: bool = ...) -> typing.List['QgsLayerTreeGroup']: ...
    def findGroup(self, name: typing.Optional[str]) -> typing.Optional['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: typing.Optional[QgsMapLayer]) -> typing.Optional['QgsLayerTreeLayer']: ...
    @typing.overload
    def findLayer(self, layerId: typing.Optional[str]) -> typing.Optional['QgsLayerTreeLayer']: ...
    def removeAllChildren(self) -> None: ...
    def removeChildrenGroupWithoutLayers(self) -> None: ...
    def removeChildren(self, from_: int, count: int) -> None: ...
    def removeLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def removeChildNode(self, node: typing.Optional[QgsLayerTreeNode]) -> None: ...
    def addChildNode(self, node: typing.Optional[QgsLayerTreeNode]) -> None: ...
    def insertChildNode(self, index: int, node: typing.Optional[QgsLayerTreeNode]) -> None: ...
    def insertChildNodes(self, index: int, nodes: typing.Iterable[QgsLayerTreeNode]) -> None: ...
    def addLayer(self, layer: typing.Optional[QgsMapLayer]) -> typing.Optional['QgsLayerTreeLayer']: ...
    def insertLayer(self, index: int, layer: typing.Optional[QgsMapLayer]) -> typing.Optional['QgsLayerTreeLayer']: ...
    def addGroup(self, name: typing.Optional[str]) -> typing.Optional['QgsLayerTreeGroup']: ...
    def insertGroup(self, index: int, name: typing.Optional[str]) -> typing.Optional['QgsLayerTreeGroup']: ...
    def setName(self, n: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTree(QgsLayerTreeGroup):

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

    hasCustomLayerOrderChanged: typing.ClassVar[QtCore.pyqtSignal]
    layerOrderChanged: typing.ClassVar[QtCore.pyqtSignal]
    customLayerOrderChanged: typing.ClassVar[QtCore.pyqtSignal]
    def clear(self) -> None: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional['QgsLayerTree']: ...
    def setHasCustomLayerOrder(self, hasCustomLayerOrder: bool) -> None: ...
    def hasCustomLayerOrder(self) -> bool: ...
    def layerOrder(self) -> typing.List[QgsMapLayer]: ...
    def setCustomLayerOrderByIds(self, customLayerOrder: typing.Iterable[typing.Optional[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: typing.Optional[QgsLayerTreeNode]) -> bool: ...
    @staticmethod
    def isGroup(node: typing.Optional[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: typing.Optional[QgsMapLayer]) -> QgsGeometry: ...
    def addVisibleExtentForLayer(self, layer: typing.Optional[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: typing.Optional[str]) -> str: ...
    def setLayerFilterExpressionsFromLayerTree(self, tree: typing.Optional[QgsLayerTree]) -> None: ...
    def setLayerFilterExpressions(self, expressions: typing.Dict[typing.Optional[str], typing.Optional[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: typing.Optional[QgsMapLayer]) -> None: ...
    @typing.overload
    def __init__(self, layerId: typing.Optional[str], name: typing.Optional[str] = ..., source: typing.Optional[str] = ..., provider: typing.Optional[str] = ...) -> None: ...

    def attachToLayer(self) -> None: ...
    layerWillBeUnloaded: typing.ClassVar[QtCore.pyqtSignal]
    layerLoaded: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> None: ...
    def resolveReferences(self, project: typing.Optional['QgsProject'], looseMatching: bool = ...) -> None: ...
    def clone(self) -> typing.Optional['QgsLayerTreeLayer']: ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsLayerTreeLayer']: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: typing.Optional['QgsProject'], context: QgsReadWriteContext) -> typing.Optional['QgsLayerTreeLayer']: ...
    def useLayerName(self) -> bool: ...
    def setUseLayerName(self, use: bool = ...) -> None: ...
    def setName(self, n: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def layer(self) -> typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __xor__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __ior__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __or__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __iand__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __and__(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> 'QgsLayerTreeModel.Flags': ...
        def __invert__(self) -> 'QgsLayerTreeModel.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def legendInvalidateMapBasedData(self) -> None: ...
    def legendCleanup(self) -> None: ...
    def legendIconEmbeddedInParent(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> QtGui.QIcon: ...
    def legendEmbeddedInParent(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> bool: ...
    def legendNodeFlags(self, node: typing.Optional[QgsLayerTreeModelLegendNode]) -> QtCore.Qt.ItemFlags: ...
    def legendNodeData(self, node: typing.Optional[QgsLayerTreeModelLegendNode], role: int) -> typing.Any: ...
    def legendParent(self, legendNode: typing.Optional[QgsLayerTreeModelLegendNode]) -> QtCore.QModelIndex: ...
    def legendNodeIndex(self, row: int, column: int, node: typing.Optional[QgsLayerTreeModelLegendNode]) -> QtCore.QModelIndex: ...
    def legendRootIndex(self, row: int, column: int, nL: typing.Optional[QgsLayerTreeLayer]) -> QtCore.QModelIndex: ...
    def legendNodeRowCount(self, node: typing.Optional[QgsLayerTreeModelLegendNode]) -> int: ...
    def legendRootRowCount(self, nL: typing.Optional[QgsLayerTreeLayer]) -> int: ...
    def indexOfParentLayerTreeNode(self, parentNode: typing.Optional[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: typing.Optional[QgsLayerTreeGroup]) -> None: ...
    def connectToLayers(self, parentGroup: typing.Optional[QgsLayerTreeGroup]) -> None: ...
    def disconnectFromLayer(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> None: ...
    def connectToLayer(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> None: ...
    def addLegendToLayer(self, nodeL: typing.Optional[QgsLayerTreeLayer]) -> None: ...
    def removeLegendFromLayer(self, nodeLayer: typing.Optional[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: typing.Optional[QgsLayerTreeNode], key: typing.Optional[str]) -> None: ...
    def nodeNameChanged(self, node: typing.Optional[QgsLayerTreeNode], name: typing.Optional[str]) -> None: ...
    def nodeVisibilityChanged(self, node: typing.Optional[QgsLayerTreeNode]) -> None: ...
    def nodeRemovedChildren(self) -> None: ...
    def nodeWillRemoveChildren(self, node: typing.Optional[QgsLayerTreeNode], indexFrom: int, indexTo: int) -> None: ...
    def nodeAddedChildren(self, node: typing.Optional[QgsLayerTreeNode], indexFrom: int, indexTo: int) -> None: ...
    def nodeWillAddChildren(self, node: typing.Optional[QgsLayerTreeNode], indexFrom: int, indexTo: int) -> None: ...
    hitTestCompleted: typing.ClassVar[QtCore.pyqtSignal]
    hitTestStarted: typing.ClassVar[QtCore.pyqtSignal]
    messageEmitted: typing.ClassVar[QtCore.pyqtSignal]
    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[typing.Optional[str], typing.Optional[str]]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def legendMapViewData(self) -> typing.Tuple[typing.Optional[float], typing.Optional[int], typing.Optional[float]]: ...
    def setLegendMapViewData(self, mapUnitsPerPixel: float, dpi: int, scale: float) -> None: ...
    def filterSettings(self) -> typing.Optional[QgsLayerTreeFilterSettings]: ...
    def setFilterSettings(self, settings: typing.Optional[QgsLayerTreeFilterSettings] = ...) -> None: ...
    def legendFilterMapSettings(self) -> typing.Optional[QgsMapSettings]: ...
    def setLegendFilter(self, settings: typing.Optional[QgsMapSettings], useExtent: bool = ..., polygon: QgsGeometry = ..., useExpressions: bool = ...) -> None: ...
    def setLegendFilterByMap(self, settings: typing.Optional[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: typing.Optional[QgsLayerTreeLayer]) -> None: ...
    def setRootGroup(self, newRootGroup: typing.Optional[QgsLayerTree]) -> None: ...
    def rootGroup(self) -> typing.Optional[QgsLayerTree]: ...
    def findLegendNode(self, layerId: typing.Optional[str], ruleKey: typing.Optional[str]) -> typing.Optional[QgsLayerTreeModelLegendNode]: ...
    def legendNodeEmbeddedInParent(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.Optional[QgsLayerTreeModelLegendNode]: ...
    def layerOriginalLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def layerLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer], skipNodeEmbeddedInParent: bool = ...) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendNode2index(self, legendNode: typing.Optional[QgsLayerTreeModelLegendNode]) -> QtCore.QModelIndex: ...
    @staticmethod
    def index2legendNode(index: QtCore.QModelIndex) -> typing.Optional[QgsLayerTreeModelLegendNode]: ...
    def indexes2nodes(self, list: typing.Iterable[QtCore.QModelIndex], skipInternal: bool = ...) -> typing.List[QgsLayerTreeNode]: ...
    def node2index(self, node: typing.Optional[QgsLayerTreeNode]) -> QtCore.QModelIndex: ...
    def index2node(self, index: QtCore.QModelIndex) -> typing.Optional[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: typing.Optional[QtCore.QMimeData], action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> typing.Optional[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: typing.Optional[QgsLayerTreeLayer], item: 'QgsLegendSymbolItem', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def createSymbolScope(self) -> typing.Optional[QgsExpressionContextScope]: ...
    def evaluateLabel(self, context: QgsExpressionContext = ..., label: typing.Optional[str] = ...) -> str: ...
    def setCustomSymbol(self, symbol: typing.Optional['QgsSymbol']) -> None: ...
    def customSymbol(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def textOnSymbolLabel(self) -> str: ...
    def setSymbol(self, symbol: typing.Optional['QgsSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsSymbol']: ...
    @typing.overload
    def minimumIconSize(self) -> QtCore.QSize: ...
    @typing.overload
    def minimumIconSize(self, context: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayerTreeLayer], label: typing.Optional[str], icon: QtGui.QIcon = ..., parent: typing.Optional[QtCore.QObject] = ..., key: typing.Optional[str] = ...) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def data(self, role: int) -> typing.Any: ...


class QgsImageLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: typing.Optional[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: typing.Optional[QgsLayerTreeModelLegendNode.ItemContext], itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsRasterSymbolLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: typing.Optional[QgsLayerTreeLayer], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], label: typing.Optional[str], parent: typing.Optional[QtCore.QObject] = ..., isCheckable: bool = ..., ruleKey: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayerTreeModelLegendNode.ItemContext], itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsDataDefinedSizeLegendNode(QgsLayerTreeModelLegendNode):

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

    def __repr__(self) -> typing.Any: ...
    def draw(self, settings: QgsLegendSettings, ctx: typing.Optional[QgsLayerTreeModelLegendNode.ItemContext]) -> QgsLayerTreeModelLegendNode.ItemMetrics: ...
    def data(self, role: int) -> typing.Any: ...


class QgsVectorLabelLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayerTreeGroup], position: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeRegistryBridge.InsertionPoint') -> None: ...

    def __init__(self, root: typing.Optional[QgsLayerTreeGroup], project: typing.Optional['QgsProject'], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def removeLayersFromRegistry(self, layerIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    def groupRemovedChildren(self) -> None: ...
    def groupWillRemoveChildren(self, node: typing.Optional[QgsLayerTreeNode], indexFrom: int, indexTo: int) -> None: ...
    def layersWillBeRemoved(self, layerIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    def layersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    addedLayersToLayerTree: typing.ClassVar[QtCore.pyqtSignal]
    def layerInsertionMethod(self) -> Qgis.LayerTreeInsertionMethod: ...
    def setLayerInsertionMethod(self, method: Qgis.LayerTreeInsertionMethod) -> None: ...
    @typing.overload
    def setLayerInsertionPoint(self, parentGroup: typing.Optional[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: typing.Optional[QgsMapLayer], checked: bool) -> None: ...
    def isLayerChecked(self, layer: typing.Optional[QgsMapLayer]) -> bool: ...
    def setFilterText(self, filterText: typing.Optional[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[Qgis.LayerFilters, Qgis.LayerFilter]) -> None: ...
    def setLayerTreeModel(self, layerTreeModel: typing.Optional[QgsLayerTreeModel]) -> None: ...
    def layerTreeModel(self) -> typing.Optional[QgsLayerTreeModel]: ...
    def mapLayer(self, idx: QtCore.QModelIndex) -> typing.Optional[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: typing.Optional[QgsLayerTreeGroup], layer: typing.Optional[QgsMapLayer]) -> typing.Optional[QgsLayerTreeLayer]: ...
    @staticmethod
    def firstGroupWithoutCustomProperty(group: typing.Optional[QgsLayerTreeGroup], property: typing.Optional[str]) -> typing.Optional[QgsLayerTreeGroup]: ...
    @staticmethod
    def countMapLayerInTree(tree: typing.Optional[QgsLayerTreeNode], layer: typing.Optional[QgsMapLayer]) -> int: ...
    @staticmethod
    def collectMapLayersRecursive(nodes: typing.Iterable[QgsLayerTreeNode]) -> typing.Set[QgsMapLayer]: ...
    @staticmethod
    def insertLayerBelow(group: typing.Optional[QgsLayerTreeGroup], refLayer: typing.Optional[QgsMapLayer], layerToInsert: typing.Optional[QgsMapLayer]) -> typing.Optional[QgsLayerTreeLayer]: ...
    @staticmethod
    def hasLegendFilterExpression(group: QgsLayerTreeGroup) -> bool: ...
    @staticmethod
    def legendFilterByExpression(layer: QgsLayerTreeLayer) -> typing.Tuple[str, typing.Optional[bool]]: ...
    @staticmethod
    def setLegendFilterByExpression(layer: QgsLayerTreeLayer, expr: typing.Optional[str], enabled: bool = ...) -> None: ...
    @staticmethod
    def invisibleLayerList(node: typing.Optional[QgsLayerTreeNode]) -> typing.List[str]: ...
    @staticmethod
    def updateEmbeddedGroupsProjectPath(group: typing.Optional[QgsLayerTreeGroup], project: typing.Optional['QgsProject']) -> None: ...
    @staticmethod
    def replaceChildrenOfEmbeddedGroups(group: typing.Optional[QgsLayerTreeGroup]) -> None: ...
    @staticmethod
    def storeOriginalLayersProperties(group: typing.Optional[QgsLayerTreeGroup], doc: typing.Optional[QtXml.QDomDocument]) -> None: ...
    @staticmethod
    def removeInvalidLayers(group: typing.Optional[QgsLayerTreeGroup]) -> None: ...
    @staticmethod
    def layersModified(layerNodes: typing.Iterable[QgsLayerTreeLayer]) -> bool: ...
    @staticmethod
    def layersEditable(layerNodes: typing.Iterable[QgsLayerTreeLayer], ignoreLayersWhichCannotBeToggled: bool = ...) -> bool: ...
    @staticmethod
    def checkStateFromXml(txt: typing.Optional[str]) -> QtCore.Qt.CheckState: ...
    @staticmethod
    def checkStateToXml(state: QtCore.Qt.CheckState) -> str: ...
    @staticmethod
    def writeOldLegend(doc: QtXml.QDomDocument, root: typing.Optional[QgsLayerTreeGroup], hasCustomOrder: bool, order: typing.Iterable[QgsMapLayer]) -> QtXml.QDomElement: ...
    @staticmethod
    def readOldLegendLayerOrder(legendElem: QtXml.QDomElement, order: typing.Iterable[typing.Optional[str]]) -> typing.Tuple[bool, bool]: ...
    @staticmethod
    def readOldLegend(root: typing.Optional[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: typing.Optional[str], extension: typing.Optional[str]) -> str: ...
    def next(self) -> bool: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def layout(self) -> typing.Optional['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: typing.Optional['QgsAbstractReportSection']) -> None: ...
    def copyCommonProperties(self, destination: typing.Optional['QgsAbstractReportSection']) -> None: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional['QgsAbstractReportSection']) -> None: ...
    def insertChild(self, index: int, section: typing.Optional['QgsAbstractReportSection']) -> None: ...
    def appendChild(self, section: typing.Optional['QgsAbstractReportSection']) -> None: ...
    def childSection(self, index: int) -> typing.Optional['QgsAbstractReportSection']: ...
    def childSections(self) -> typing.List['QgsAbstractReportSection']: ...
    def row(self) -> int: ...
    def childCount(self) -> int: ...
    def setFooter(self, footer: typing.Optional['QgsLayout']) -> None: ...
    def footer(self) -> typing.Optional['QgsLayout']: ...
    def setFooterEnabled(self, enabled: bool) -> None: ...
    def footerEnabled(self) -> bool: ...
    def setHeader(self, header: typing.Optional['QgsLayout']) -> None: ...
    def header(self) -> typing.Optional['QgsLayout']: ...
    def setHeaderEnabled(self, enabled: bool) -> None: ...
    def headerEnabled(self) -> bool: ...
    def nextBody(self) -> typing.Tuple[typing.Optional['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) -> typing.Optional['QgsLayout']: ...
    def filePath(self, baseFilePath: typing.Optional[str], extension: typing.Optional[str]) -> str: ...
    def count(self) -> int: ...
    def project(self) -> typing.Optional['QgsProject']: ...
    def parentSection(self) -> typing.Optional['QgsAbstractReportSection']: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str], id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['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: typing.Optional['QgsProject']) -> None: ...

    itemAdded: typing.ClassVar[QtCore.pyqtSignal]
    backgroundTaskCountChanged: typing.ClassVar[QtCore.pyqtSignal]
    refreshed: typing.ClassVar[QtCore.pyqtSignal]
    selectedItemChanged: typing.ClassVar[QtCore.pyqtSignal]
    variablesChanged: typing.ClassVar[QtCore.pyqtSignal]
    changed: typing.ClassVar[QtCore.pyqtSignal]
    def updateBounds(self) -> None: ...
    def refresh(self) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def ungroupItems(self, group: typing.Optional['QgsLayoutItemGroup']) -> typing.List['QgsLayoutItem']: ...
    def groupItems(self, items: typing.Iterable['QgsLayoutItem']) -> typing.Optional['QgsLayoutItemGroup']: ...
    def createCommand(self, text: typing.Optional[str], id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['QgsAbstractLayoutUndoCommand']: ...
    def undoStack(self) -> typing.Optional['QgsLayoutUndoStack']: ...
    def addItemsFromXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, position: typing.Optional[typing.Union[QtCore.QPointF, QtCore.QPoint]] = ..., 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'], typing.Optional[bool]]: ...
    def saveAsTemplate(self, path: typing.Optional[str], context: QgsReadWriteContext) -> bool: ...
    def multiFrames(self) -> typing.List['QgsLayoutMultiFrame']: ...
    def removeMultiFrame(self, multiFrame: typing.Optional['QgsLayoutMultiFrame']) -> None: ...
    def addMultiFrame(self, multiFrame: typing.Optional['QgsLayoutMultiFrame']) -> None: ...
    def removeLayoutItem(self, item: typing.Optional['QgsLayoutItem']) -> None: ...
    def addLayoutItem(self, item: typing.Optional['QgsLayoutItem']) -> None: ...
    def pageItemBounds(self, page: int, visibleOnly: bool = ...) -> QtCore.QRectF: ...
    def layoutBounds(self, ignorePages: bool = ..., margin: float = ...) -> QtCore.QRectF: ...
    def pageCollection(self) -> typing.Optional['QgsLayoutPageCollection']: ...
    def setReferenceMap(self, map: typing.Optional['QgsLayoutItemMap']) -> None: ...
    def referenceMap(self) -> typing.Optional['QgsLayoutItemMap']: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: typing.Optional[str]) -> None: ...
    def customProperty(self, key: typing.Optional[str], defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: typing.Optional[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], 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], ignoreLocked: bool = ..., searchTolerance: float = ...) -> typing.Optional['QgsLayoutItem']: ...
    @typing.overload
    def layoutItemAt(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint], belowItem: typing.Optional['QgsLayoutItem'], ignoreLocked: bool = ..., searchTolerance: float = ...) -> typing.Optional['QgsLayoutItem']: ...
    def multiFrameByUuid(self, uuid: typing.Optional[str], includeTemplateUuids: bool = ...) -> typing.Optional['QgsLayoutMultiFrame']: ...
    def itemById(self, id: typing.Optional[str]) -> typing.Optional['QgsLayoutItem']: ...
    def itemByTemplateUuid(self, uuid: typing.Optional[str]) -> typing.Optional['QgsLayoutItem']: ...
    def itemByUuid(self, uuid: typing.Optional[str], includeTemplateUuids: bool = ...) -> typing.Optional['QgsLayoutItem']: ...
    def updateZValues(self, addUndoCommands: bool = ...) -> None: ...
    def moveItemToBottom(self, item: typing.Optional['QgsLayoutItem'], deferUpdate: bool = ...) -> bool: ...
    def moveItemToTop(self, item: typing.Optional['QgsLayoutItem'], deferUpdate: bool = ...) -> bool: ...
    def lowerItem(self, item: typing.Optional['QgsLayoutItem'], deferUpdate: bool = ...) -> bool: ...
    def raiseItem(self, item: typing.Optional['QgsLayoutItem'], deferUpdate: bool = ...) -> bool: ...
    def deselectAll(self) -> None: ...
    def setSelectedItem(self, item: typing.Optional['QgsLayoutItem']) -> None: ...
    def selectedLayoutItems(self, includeLockedItems: bool = ...) -> typing.List['QgsLayoutItem']: ...
    def itemsModel(self) -> typing.Optional['QgsLayoutModel']: ...
    def project(self) -> typing.Optional['QgsProject']: ...
    def clear(self) -> None: ...
    def initializeDefaults(self) -> None: ...
    def clone(self) -> typing.Optional['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: typing.Optional[QgsLayout], items: typing.Iterable['QgsLayoutItem'], resize: 'QgsLayoutAligner.Resize') -> None: ...
    @staticmethod
    def distributeItems(layout: typing.Optional[QgsLayout], items: typing.Iterable['QgsLayoutItem'], distribution: 'QgsLayoutAligner.Distribution') -> None: ...
    @staticmethod
    def alignItems(layout: typing.Optional[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: typing.Optional[str], id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['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) -> typing.Optional[QgsLayout]: ...
    def stringType(self) -> str: ...


class QgsLayoutAtlas(QtCore.QObject, QgsAbstractLayoutIterator, QgsLayoutSerializableObject, QgsExpressionContextGenerator):

    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...

    renderEnded: typing.ClassVar[QtCore.pyqtSignal]
    renderBegun: typing.ClassVar[QtCore.pyqtSignal]
    featureChanged: typing.ClassVar[QtCore.pyqtSignal]
    numberFeaturesChanged: typing.ClassVar[QtCore.pyqtSignal]
    messagePushed: typing.ClassVar[QtCore.pyqtSignal]
    coverageLayerChanged: typing.ClassVar[QtCore.pyqtSignal]
    toggled: typing.ClassVar[QtCore.pyqtSignal]
    changed: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str], extension: typing.Optional[str]) -> str: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def updateFeatures(self) -> int: ...
    def setFilterExpression(self, expression: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def filterExpression(self) -> str: ...
    def setFilterFeatures(self, filtered: bool) -> None: ...
    def filterFeatures(self) -> bool: ...
    def setSortExpression(self, expression: typing.Optional[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: typing.Optional[str]) -> None: ...
    def pageNameExpression(self) -> str: ...
    def setCoverageLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def coverageLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def currentFilename(self) -> str: ...
    def setFilenameExpression(self, expression: typing.Optional[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) -> typing.Optional[QgsLayout]: ...
    def stringType(self) -> str: ...


class QgsLayoutEffect(QtWidgets.QGraphicsEffect):

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

    def draw(self, painter: typing.Optional[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: typing.Optional[str]
        directory = ... # type: typing.Optional[str]
        extension = ... # type: typing.Optional[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[typing.Optional[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: typing.Optional[QgsLayout]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutExporter') -> None: ...

    def generateFileName(self, details: 'QgsLayoutExporter.PageExportDetails') -> str: ...
    @staticmethod
    def containsAdvancedEffects(layout: typing.Optional[QgsLayout]) -> bool: ...
    @staticmethod
    def requiresRasterization(layout: typing.Optional[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: typing.Optional[str], referenceMap: typing.Optional['QgsLayoutItemMap'] = ..., exportRegion: QtCore.QRectF = ..., dpi: float = ...) -> bool: ...
    def labelingResults(self) -> typing.Any: ...
    def errorMessage(self) -> str: ...
    def errorFile(self) -> str: ...
    @typing.overload
    def exportToSvg(self, filePath: typing.Optional[str], settings: 'QgsLayoutExporter.SvgExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToSvg(iterator: typing.Optional[QgsAbstractLayoutIterator], baseFilePath: typing.Optional[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: typing.Optional[QgsAbstractLayoutIterator], printer: QtPrintSupport.QPrinter, settings: 'QgsLayoutExporter.PrintExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @staticmethod
    def exportToPdfs(iterator: typing.Optional[QgsAbstractLayoutIterator], baseFilePath: typing.Optional[str], settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToPdf(self, filePath: typing.Optional[str], settings: 'QgsLayoutExporter.PdfExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToPdf(iterator: typing.Optional[QgsAbstractLayoutIterator], fileName: typing.Optional[str], settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToImage(self, filePath: typing.Optional[str], settings: 'QgsLayoutExporter.ImageExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToImage(iterator: typing.Optional[QgsAbstractLayoutIterator], baseFilePath: typing.Optional[str], extension: typing.Optional[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: typing.Optional[QtGui.QPainter], region: QtCore.QRectF) -> None: ...
    def renderPageToImage(self, page: int, imageSize: QtCore.QSize = ..., dpi: float = ...) -> QtGui.QImage: ...
    def renderPage(self, painter: typing.Optional[QtGui.QPainter], page: int) -> None: ...
    def layout(self) -> typing.Optional[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
        MapCrs = ... # type: QgsLayoutObject.DataDefinedProperty
        StartDateTime = ... # type: QgsLayoutObject.DataDefinedProperty
        EndDateTime = ... # type: QgsLayoutObject.DataDefinedProperty
        MapZRangeLower = ... # type: QgsLayoutObject.DataDefinedProperty
        MapZRangeUpper = ... # 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
        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: typing.Optional[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: ...
    changed: typing.ClassVar[QtCore.pyqtSignal]
    def refresh(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: typing.Optional[str]) -> None: ...
    def customProperty(self, key: typing.Optional[str], defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: typing.Optional[str], value: typing.Any) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def layout(self) -> typing.Optional[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
        FlagDisableSceneCaching = ... # 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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        def __xor__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        def __ior__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        def __or__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        def __iand__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        def __and__(self, f: typing.Union['QgsLayoutItem.Flags', 'QgsLayoutItem.Flag']) -> 'QgsLayoutItem.Flags': ...
        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: typing.Optional[str]
        mapTheme = ... # type: typing.Optional[str]
        name = ... # type: typing.Optional[str]
        opacity = ... # type: float

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

    def __init__(self, layout: typing.Optional[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], 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]] = ...) -> 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: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[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: typing.Optional[QtGui.QPainter]) -> None: ...
    clipPathChanged: typing.ClassVar[QtCore.pyqtSignal]
    backgroundTaskCountChanged: typing.ClassVar[QtCore.pyqtSignal]
    sizePositionChanged: typing.ClassVar[QtCore.pyqtSignal]
    rotationChanged: typing.ClassVar[QtCore.pyqtSignal]
    lockChanged: typing.ClassVar[QtCore.pyqtSignal]
    frameChanged: typing.ClassVar[QtCore.pyqtSignal]
    def rotateItem(self, angle: float, transformOrigin: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def shouldDrawItem(self) -> bool: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, commandText: typing.Optional[str], command: 'QgsLayoutItem.UndoCommand' = ...) -> None: ...
    def zoomContent(self, factor: float, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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: typing.Optional[str], id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['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: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], pWidget: typing.Optional[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: typing.Optional['QgsLayoutItemGroup']) -> None: ...
    def parentGroup(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[QgsLayout], multiFrame: typing.Optional['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) -> typing.Optional['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: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[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, typing.Union[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) -> typing.Optional[QgsLayout]: ...
    def stringType(self) -> str: ...


class QgsLayoutGuide(QtCore.QObject):

    def __init__(self, orientation: QtCore.Qt.Orientation, position: 'QgsLayoutMeasurement', page: typing.Optional['QgsLayoutItemPage']) -> None: ...

    positionChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setLayoutPosition(self, position: float) -> None: ...
    def layoutPosition(self) -> float: ...
    def item(self) -> typing.Optional[QtWidgets.QGraphicsLineItem]: ...
    def update(self) -> None: ...
    def setPage(self, page: typing.Optional['QgsLayoutItemPage']) -> None: ...
    def page(self) -> typing.Optional['QgsLayoutItemPage']: ...
    def setPosition(self, position: 'QgsLayoutMeasurement') -> None: ...
    def position(self) -> 'QgsLayoutMeasurement': ...
    def orientation(self) -> QtCore.Qt.Orientation: ...
    def setLayout(self, layout: typing.Optional[QgsLayout]) -> None: ...
    def layout(self) -> typing.Optional[QgsLayout]: ...


class QgsLayoutGuideCollection(QtCore.QAbstractTableModel, QgsLayoutSerializableObject):

    class CustomRole(int):
        Orientation = ... # type: QgsLayoutGuideCollection.CustomRole
        Position = ... # type: QgsLayoutGuideCollection.CustomRole
        Units = ... # type: QgsLayoutGuideCollection.CustomRole
        Page = ... # type: QgsLayoutGuideCollection.CustomRole
        LayoutPosition = ... # type: QgsLayoutGuideCollection.CustomRole

    def __init__(self, layout: typing.Optional[QgsLayout], pageCollection: typing.Optional['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: typing.Optional[QgsLayoutGuide], position: float) -> None: ...
    def removeGuide(self, guide: typing.Optional[QgsLayoutGuide]) -> None: ...
    def addGuide(self, guide: typing.Optional[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) -> typing.Optional[QgsLayout]: ...
    def stringType(self) -> str: ...


class QgsLayoutGuideProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[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: typing.Optional[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: ...
    contentsChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str], command: 'QgsLayoutMultiFrame.UndoCommand' = ...) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def createCommand(self, text: typing.Optional[str], id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['QgsAbstractLayoutUndoCommand']: ...
    def displayName(self) -> str: ...
    def createNewFrame(self, currentFrame: typing.Optional[QgsLayoutFrame], pos: typing.Union[QtCore.QPointF, QtCore.QPoint], size: QtCore.QSizeF) -> typing.Optional[QgsLayoutFrame]: ...
    def frameIndex(self, frame: typing.Optional[QgsLayoutFrame]) -> int: ...
    def frame(self, index: int) -> typing.Optional[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: typing.Optional[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: typing.Optional[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) -> typing.Optional[QgsExpressionContextScope]: ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    def getTableContents(self, contents: typing.Any) -> bool: ...
    def cellStyle(self, group: 'QgsLayoutTable.CellStyleGroup') -> typing.Optional['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: typing.Optional[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: typing.Optional[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) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    def setDisplayedFields(self, fields: typing.Iterable[typing.Optional[str]], refresh: bool = ...) -> None: ...
    def setFeatureFilter(self, expression: typing.Optional[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) -> typing.Optional['QgsLayoutItemMap']: ...
    def setMap(self, map: typing.Optional['QgsLayoutItemMap']) -> None: ...
    def resetColumns(self) -> None: ...
    def relationId(self) -> str: ...
    def setRelationId(self, id: typing.Optional[str]) -> None: ...
    def vectorLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def setVectorLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def sourceLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def source(self) -> 'QgsLayoutItemAttributeTable.ContentSource': ...
    def setSource(self, source: 'QgsLayoutItemAttributeTable.ContentSource') -> None: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemAttributeTable']: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemElevationProfile(QgsLayoutItem):

    def __init__(self, layout: typing.Optional[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: ...
    previewRefreshed: typing.ClassVar[QtCore.pyqtSignal]
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    def setDistanceUnit(self, unit: Qgis.DistanceUnit) -> None: ...
    def distanceUnit(self) -> Qgis.DistanceUnit: ...
    def paint(self, painter: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], pWidget: typing.Optional[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) -> typing.Optional[QgsCurve]: ...
    def setProfileCurve(self, curve: typing.Optional[QgsCurve]) -> None: ...
    def setLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layers(self) -> typing.List[QgsMapLayer]: ...
    def plot(self) -> typing.Optional['Qgs2DPlot']: ...
    def containsAdvancedEffects(self) -> bool: ...
    def requiresRasterization(self) -> bool: ...
    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: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemElevationProfile']: ...


class QgsLayoutItemGroup(QgsLayoutItem):

    def __init__(self, layout: typing.Optional[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 rectWithFrame(self) -> QtCore.QRectF: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], pWidget: typing.Optional[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: typing.Optional[QgsLayoutItem]) -> None: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional['QgsLayoutItemLabel']) -> typing.Optional['QgsLayoutItemHtml']: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemLabel']: ...


class QgsLegendModel(QgsLayerTreeModel):

    @typing.overload
    def __init__(self, rootNode: typing.Optional[QgsLayerTree], parent: typing.Optional[QtCore.QObject] = ..., layout: typing.Optional['QgsLayoutItemLegend'] = ...) -> None: ...
    @typing.overload
    def __init__(self, rootNode: typing.Optional[QgsLayerTree], layout: typing.Optional['QgsLayoutItemLegend']) -> None: ...

    refreshLegend: typing.ClassVar[QtCore.pyqtSignal]
    def clearCachedData(self, node: typing.Optional[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: typing.Optional[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: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], pWidget: typing.Optional[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) -> typing.Optional['QgsLayoutItemMap']: ...
    def setLinkedMap(self, map: typing.Optional['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: typing.Optional[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: typing.Optional[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) -> typing.Optional[QgsLegendModel]: ...
    def resizeToContents(self) -> bool: ...
    def setResizeToContents(self, enabled: bool) -> None: ...
    def adjustBoxSize(self) -> None: ...
    def containsAdvancedEffects(self) -> bool: ...
    def requiresRasterization(self) -> bool: ...
    def displayName(self) -> str: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemLegend']: ...


class QgsLayoutItemManualTable(QgsLayoutTable):

    def __init__(self, layout: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.Optional['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: ...

    changed: typing.ClassVar[QtCore.pyqtSignal]
    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: ...

    changed: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional[QgsLayoutItem]: ...
    def setSourceItem(self, item: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __xor__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __ior__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __or__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __iand__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __and__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __invert__(self) -> 'QgsLayoutItemMap.MapItemFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...

    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def updateBoundingRect(self) -> None: ...
    def invalidateCache(self) -> None: ...
    def refresh(self) -> None: ...
    previewRefreshed: typing.ClassVar[QtCore.pyqtSignal]
    crsChanged: typing.ClassVar[QtCore.pyqtSignal]
    themeChanged: typing.ClassVar[QtCore.pyqtSignal]
    layerStyleOverridesChanged: typing.ClassVar[QtCore.pyqtSignal]
    preparedForAtlas: typing.ClassVar[QtCore.pyqtSignal]
    mapRotationChanged: typing.ClassVar[QtCore.pyqtSignal]
    extentChanged: typing.ClassVar[QtCore.pyqtSignal]
    def requestedExtent(self) -> QgsRectangle: ...
    def mapToItemCoords(self, mapCoords: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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 estimatedFrameBleed(self) -> float: ...
    def setZRange(self, range: QgsDoubleRange) -> None: ...
    def zRange(self) -> QgsDoubleRange: ...
    def zRangeEnabled(self) -> bool: ...
    def setZRangeEnabled(self, enabled: bool) -> None: ...
    def itemClippingSettings(self) -> typing.Optional[QgsLayoutItemMapItemClipPathSettings]: ...
    def atlasClippingSettings(self) -> typing.Optional[QgsLayoutItemMapAtlasClippingSettings]: ...
    def layoutToMapCoordsTransform(self) -> QtGui.QTransform: ...
    def removeRenderedFeatureHandler(self, handler: typing.Optional[QgsRenderedFeatureHandlerInterface]) -> None: ...
    def addRenderedFeatureHandler(self, handler: typing.Optional[QgsRenderedFeatureHandlerInterface]) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def previewLabelingResults(self) -> typing.Optional[QgsLabelingResults]: ...
    def renderingErrors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def isLabelBlockingItem(self, item: typing.Optional[QgsLayoutItem]) -> bool: ...
    def removeLabelBlockingItem(self, item: typing.Optional[QgsLayoutItem]) -> None: ...
    def addLabelBlockingItem(self, item: typing.Optional[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) -> typing.Optional['QgsLayoutItemMapOverview']: ...
    def overviews(self) -> typing.Optional['QgsLayoutItemMapOverviewStack']: ...
    def grid(self) -> typing.Optional['QgsLayoutItemMapGrid']: ...
    def grids(self) -> typing.Optional['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]) -> None: ...
    def setMoveContentPreviewOffset(self, dx: float, dy: float) -> None: ...
    def moveContent(self, dx: float, dy: float) -> None: ...
    def setFollowVisibilityPresetName(self, name: typing.Optional[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[typing.Optional[str], typing.Optional[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: typing.Optional[QtGui.QPainter], itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], pWidget: typing.Optional[QtWidgets.QWidget]) -> None: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[QgsLayoutItemMap]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapItemStack') -> None: ...

    def removeItems(self) -> None: ...
    def asList(self) -> typing.List['QgsLayoutItemMapItem']: ...
    def moveItemDown(self, itemId: typing.Optional[str]) -> None: ...
    def moveItemUp(self, itemId: typing.Optional[str]) -> None: ...
    def removeItem(self, itemId: typing.Optional[str]) -> None: ...
    def addItem(self, item: typing.Optional['QgsLayoutItemMapItem']) -> None: ...
    @typing.overload
    def item(self, index: int) -> typing.Optional['QgsLayoutItemMapItem']: ...
    @typing.overload
    def item(self, itemId: typing.Optional[str]) -> typing.Optional['QgsLayoutItemMapItem']: ...
    def hasEnabledItems(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    def drawItems(self, painter: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> typing.Optional['QgsLayoutItemMapGrid']: ...
    @typing.overload
    def grid(self, index: int) -> typing.Optional['QgsLayoutItemMapGrid']: ...
    def moveGridDown(self, gridId: typing.Optional[str]) -> None: ...
    def moveGridUp(self, gridId: typing.Optional[str]) -> None: ...
    def removeGrid(self, gridId: typing.Optional[str]) -> None: ...
    def addGrid(self, grid: typing.Optional['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: typing.Optional[str], map: typing.Optional[QgsLayoutItemMap]) -> None: ...

    def createExpressionContext(self) -> QgsExpressionContext: ...
    def mapLayer(self) -> typing.Optional[QgsMapLayer]: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def setStackingLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def stackingLayer(self) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    def id(self) -> str: ...
    def map(self) -> typing.Optional[QgsLayoutItemMap]: ...
    def setMap(self, map: typing.Optional[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: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __xor__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __ior__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __or__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __iand__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __and__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __invert__(self) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, name: typing.Optional[str], map: typing.Optional[QgsLayoutItemMap]) -> None: ...

    crsChanged: typing.ClassVar[QtCore.pyqtSignal]
    def copyProperties(self, other: typing.Optional['QgsLayoutItemMapGrid']) -> None: ...
    def refresh(self) -> None: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional[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) -> typing.Optional['QgsMarkerSymbol']: ...
    def setMarkerSymbol(self, symbol: typing.Optional['QgsMarkerSymbol']) -> None: ...
    def lineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setLineSymbol(self, symbol: typing.Optional['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: typing.Optional[QtGui.QPainter]) -> None: ...


class QgsLayoutItemMapOverviewStack(QgsLayoutItemMapItemStack):

    @typing.overload
    def __init__(self, map: typing.Optional[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: typing.Optional[str]) -> typing.Optional['QgsLayoutItemMapOverview']: ...
    @typing.overload
    def overview(self, index: int) -> typing.Optional['QgsLayoutItemMapOverview']: ...
    def moveOverviewDown(self, overviewId: typing.Optional[str]) -> None: ...
    def moveOverviewUp(self, overviewId: typing.Optional[str]) -> None: ...
    def removeOverview(self, overviewId: typing.Optional[str]) -> None: ...
    def addOverview(self, overview: typing.Optional['QgsLayoutItemMapOverview']) -> None: ...


class QgsLayoutItemMapOverview(QgsLayoutItemMapItem):

    def __init__(self, name: typing.Optional[str], map: typing.Optional[QgsLayoutItemMap]) -> None: ...

    def overviewExtentChanged(self) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def mapLayer(self) -> typing.Optional[QgsMapLayer]: ...
    def asMapLayer(self) -> typing.Optional[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) -> typing.Optional['QgsFillSymbol']: ...
    def setFrameSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def linkedMap(self) -> typing.Optional[QgsLayoutItemMap]: ...
    def setLinkedMap(self, map: typing.Optional[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: typing.Optional[QtGui.QPainter]) -> None: ...


class QgsLayoutItemMarker(QgsLayoutItem):

    def __init__(self, layout: typing.Optional[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: typing.Optional['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) -> typing.Optional[QgsLayoutItemMap]: ...
    def setLinkedMap(self, map: typing.Optional[QgsLayoutItemMap]) -> None: ...
    def symbol(self) -> typing.Optional['QgsMarkerSymbol']: ...
    def setSymbol(self, symbol: typing.Optional['QgsMarkerSymbol']) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemMarker']: ...


class QgsLayoutNodesItem(QgsLayoutItem):

    @typing.overload
    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: typing.Optional[QgsLayout]) -> None: ...

    def updateBoundingRect(self) -> None: ...
    def updateSceneRect(self) -> None: ...
    def computeDistance(self, pt1: typing.Union[QtCore.QPointF, QtCore.QPoint], pt2: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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], 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 itemFlags(self) -> QgsLayoutItem.Flags: ...
    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]) -> bool: ...
    def nodeAtPosition(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], searchInRadius: bool = ..., radius: float = ...) -> int: ...
    def moveNode(self, index: int, node: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> bool: ...
    def setDisplayNodes(self, display: bool = ...) -> None: ...
    def addNode(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[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: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createCommand(self, text: typing.Optional[str], id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> typing.Optional['QgsAbstractLayoutUndoCommand']: ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    @staticmethod
    def decodePageOrientation(string: typing.Optional[str]) -> typing.Tuple['QgsLayoutItemPage.Orientation', typing.Optional[bool]]: ...
    def pageStyleSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setPageStyleSymbol(self, symbol: typing.Optional['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: typing.Optional[str], orientation: 'QgsLayoutItemPage.Orientation' = ...) -> bool: ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[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: ...
    pictureRotationChanged: typing.ClassVar[QtCore.pyqtSignal]
    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[typing.Optional[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) -> typing.Optional[QgsLayoutItemMap]: ...
    def setLinkedMap(self, map: typing.Optional[QgsLayoutItemMap]) -> None: ...
    def pictureRotation(self) -> float: ...
    def picturePath(self) -> str: ...
    def setPicturePath(self, path: typing.Optional[str], format: 'QgsLayoutItemPicture.Format' = ...) -> None: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemPicture']: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemPolygon(QgsLayoutNodesItem):

    @typing.overload
    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: typing.Optional[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], radius: float) -> bool: ...
    def setSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def clipPath(self) -> QgsGeometry: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[QgsLayout]) -> None: ...
    @typing.overload
    def __init__(self, polyline: QtGui.QPolygonF, layout: typing.Optional[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], radius: float) -> bool: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional[str]) -> None: ...
    def startSvgMarkerPath(self) -> str: ...
    def setStartSvgMarkerPath(self, path: typing.Optional[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: typing.Optional['QgsLineSymbol']) -> None: ...
    def symbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def shape(self) -> QtGui.QPainterPath: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemPolyline']: ...


class QgsLayoutItemAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: int, visibleName: typing.Optional[str], visiblePluralName: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.Optional[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: ...

    multiFrameTypeAdded: typing.ClassVar[QtCore.pyqtSignal]
    typeAdded: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[QgsLayout]) -> typing.Optional[QgsLayoutMultiFrame]: ...
    def createItem(self, type: int, layout: typing.Optional[QgsLayout]) -> typing.Optional[QgsLayoutItem]: ...
    def addLayoutMultiFrameType(self, metadata: typing.Optional[QgsLayoutMultiFrameAbstractMetadata]) -> bool: ...
    def addLayoutItemType(self, metadata: typing.Optional[QgsLayoutItemAbstractMetadata]) -> bool: ...
    def multiFrameMetadata(self, type: int) -> typing.Optional[QgsLayoutMultiFrameAbstractMetadata]: ...
    def itemMetadata(self, type: int) -> typing.Optional[QgsLayoutItemAbstractMetadata]: ...
    def populate(self) -> bool: ...


class QgsLayoutItemScaleBar(QgsLayoutItem):

    def __init__(self, layout: typing.Optional[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: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def update(self) -> None: ...
    def setNumericFormat(self, format: typing.Optional['QgsNumericFormat']) -> None: ...
    def numericFormat(self) -> typing.Optional['QgsNumericFormat']: ...
    def style(self) -> str: ...
    def setStyle(self, name: typing.Optional[str]) -> None: ...
    def resizeToMinimumWidth(self) -> None: ...
    def applyDefaultSize(self, units: Qgis.DistanceUnit = ...) -> None: ...
    def guessUnits(self) -> Qgis.DistanceUnit: ...
    def applyDefaultRendererSettings(self, renderer: typing.Optional['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) -> typing.Optional[QgsLayoutItemMap]: ...
    def setLinkedMap(self, map: typing.Optional[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: typing.Optional['QgsFillSymbol']) -> None: ...
    def alternateFillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setFillSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def fillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setSubdivisionLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def subdivisionLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setDivisionLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def divisionLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def lineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setUnitLabel(self, label: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.Optional['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: typing.Optional[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: typing.Optional['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) -> typing.Optional['QgsFillSymbol']: ...
    def setSymbol(self, symbol: typing.Optional['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: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemShape']: ...


class QgsLayoutItemTextTable(QgsLayoutTable):

    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...

    def getTableContents(self, contents: typing.Any) -> bool: ...
    def setContents(self, contents: typing.Iterable[typing.Iterable[typing.Optional[str]]]) -> None: ...
    def addRow(self, row: typing.Iterable[typing.Optional[str]]) -> None: ...
    @staticmethod
    def create(layout: typing.Optional[QgsLayout]) -> typing.Optional['QgsLayoutItemTextTable']: ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...


class QgsLayoutManager(QtCore.QObject):

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

    layoutRenamed: typing.ClassVar[QtCore.pyqtSignal]
    layoutAboutToBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layoutRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layoutAdded: typing.ClassVar[QtCore.pyqtSignal]
    layoutAboutToBeAdded: typing.ClassVar[QtCore.pyqtSignal]
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def generateUniqueTitle(self, type: 'QgsMasterLayoutInterface.Type' = ...) -> str: ...
    def duplicateLayout(self, layout: typing.Optional['QgsMasterLayoutInterface'], newName: typing.Optional[str]) -> typing.Optional['QgsMasterLayoutInterface']: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def layoutByName(self, name: typing.Optional[str]) -> typing.Optional['QgsMasterLayoutInterface']: ...
    def printLayouts(self) -> typing.List['QgsPrintLayout']: ...
    def layouts(self) -> typing.List['QgsMasterLayoutInterface']: ...
    def clear(self) -> None: ...
    def removeLayout(self, layout: typing.Optional['QgsMasterLayoutInterface']) -> bool: ...
    def addLayout(self, layout: typing.Optional['QgsMasterLayoutInterface']) -> bool: ...


class QgsLayoutManagerModel(QtCore.QAbstractListModel):

    class CustomRole(int):
        Layout = ... # type: QgsLayoutManagerModel.CustomRole

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

    def allowEmptyLayout(self) -> bool: ...
    def setAllowEmptyLayout(self, allowEmpty: bool) -> None: ...
    def indexFromLayout(self, layout: typing.Optional['QgsMasterLayoutInterface']) -> QtCore.QModelIndex: ...
    def layoutFromIndex(self, index: QtCore.QModelIndex) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __xor__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __ior__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __or__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __iand__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        def __and__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> 'QgsLayoutManagerProxyModel.Filters': ...
        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: typing.Optional[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: ...
    def __itruediv__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __truediv__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __imul__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __mul__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __isub__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __sub__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __iadd__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __add__(self, v: float) -> 'QgsLayoutMeasurement': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @staticmethod
    def decodeMeasurement(string: typing.Optional[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: typing.Optional[QgsLayout], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def indexForItem(self, item: typing.Optional[QgsLayoutItem], column: int = ...) -> QtCore.QModelIndex: ...
    def itemFromIndex(self, index: QtCore.QModelIndex) -> typing.Optional[QgsLayoutItem]: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: typing.Optional[QtCore.QMimeData], action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> typing.Optional[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: typing.Optional[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) -> typing.Optional[QgsLayout]: ...
    def itemFromSourceIndex(self, sourceIndex: QtCore.QModelIndex) -> typing.Optional[QgsLayoutItem]: ...
    def sourceLayerModel(self) -> typing.Optional[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: typing.Optional[QtCore.QObject]) -> None: ...

    arrowRotationChanged: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional[QgsLayoutItemMap]: ...
    def setLinkedMap(self, map: typing.Optional[QgsLayoutItemMap]) -> None: ...
    def arrowRotation(self) -> float: ...


class QgsLayoutPageCollection(QtCore.QObject, QgsLayoutSerializableObject):

    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...

    pageAboutToBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    changed: typing.ClassVar[QtCore.pyqtSignal]
    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]) -> 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]) -> typing.Optional[QgsLayoutItemPage]: ...
    def predictPageNumberForPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> int: ...
    def pageNumberForPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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) -> typing.Optional['QgsFillSymbol']: ...
    def setPageStyleSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def takePage(self, page: typing.Optional[QgsLayoutItemPage]) -> typing.Optional[QgsLayoutItemPage]: ...
    def clear(self) -> None: ...
    @typing.overload
    def deletePage(self, pageNumber: int) -> None: ...
    @typing.overload
    def deletePage(self, page: typing.Optional[QgsLayoutItemPage]) -> None: ...
    def insertPage(self, page: typing.Optional[QgsLayoutItemPage], beforePage: int) -> None: ...
    def extendByNewPage(self) -> typing.Optional[QgsLayoutItemPage]: ...
    def addPage(self, page: typing.Optional[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: typing.Optional[QgsLayoutItemPage]) -> int: ...
    def page(self, pageNumber: int) -> typing.Optional[QgsLayoutItemPage]: ...
    def pageCount(self) -> int: ...
    def pages(self) -> typing.List[QgsLayoutItemPage]: ...
    def layout(self) -> typing.Optional[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], 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: ...
    def __itruediv__(self, v: float) -> 'QgsLayoutPoint': ...
    def __truediv__(self, v: float) -> 'QgsLayoutPoint': ...
    def __imul__(self, v: float) -> 'QgsLayoutPoint': ...
    def __mul__(self, v: float) -> 'QgsLayoutPoint': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @staticmethod
    def decodePoint(string: typing.Optional[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
        FlagSynchronousLegendGraphics = ... # type: QgsLayoutRenderContext.Flag
        FlagAlwaysUseGlobalMasks = ... # 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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __xor__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __ior__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __or__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __iand__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __and__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> 'QgsLayoutRenderContext.Flags': ...
        def __invert__(self) -> 'QgsLayoutRenderContext.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, layout: typing.Optional[QgsLayout]) -> None: ...

    predefinedScalesChanged: typing.ClassVar[QtCore.pyqtSignal]
    dpiChanged: typing.ClassVar[QtCore.pyqtSignal]
    flagsChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setFeatureFilterProvider(self, featureFilterProvider: typing.Optional[QgsFeatureFilterProvider]) -> None: ...
    def featureFilterProvider(self) -> typing.Optional[QgsFeatureFilterProvider]: ...
    def predefinedScales(self) -> typing.List[float]: ...
    def setPredefinedScales(self, scales: typing.Iterable[float]) -> None: ...
    def setExportThemes(self, themes: typing.Iterable[typing.Optional[str]]) -> None: ...
    def exportThemes(self) -> typing.List[str]: ...
    def setMaskSettings(self, settings: QgsMaskRenderSettings) -> None: ...
    def maskSettings(self) -> QgsMaskRenderSettings: ...
    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: typing.Optional[QgsLayout]) -> None: ...

    changed: typing.ClassVar[QtCore.pyqtSignal]
    layerChanged: typing.ClassVar[QtCore.pyqtSignal]
    def predefinedScales(self) -> typing.List[float]: ...
    def setPredefinedScales(self, scales: typing.Iterable[float]) -> None: ...
    def setLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def layer(self) -> typing.Optional[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: ...
    def __itruediv__(self, v: float) -> 'QgsLayoutSize': ...
    def __truediv__(self, v: float) -> 'QgsLayoutSize': ...
    def __imul__(self, v: float) -> 'QgsLayoutSize': ...
    def __mul__(self, v: float) -> 'QgsLayoutSize': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    @staticmethod
    def decodeSize(string: typing.Optional[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: typing.Optional[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]], scaleFactor: float) -> typing.Tuple[QtCore.QPointF, bool, bool]: ...
    def snapPointToGrid(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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], 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) -> typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutTableColumn') -> None: ...

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    def __eq__(self, other: object): ...
    def clone(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsLayout]) -> None: ...

    undoRedoOccurredForItems: typing.ClassVar[QtCore.pyqtSignal]
    def push(self, command: typing.Optional[QtWidgets.QUndoCommand]) -> None: ...
    def isBlocked(self) -> bool: ...
    def blockCommands(self, blocked: bool) -> None: ...
    def notifyUndoRedoOccurred(self, item: typing.Optional[QgsLayoutItem]) -> None: ...
    def stack(self) -> typing.Optional[QtWidgets.QUndoStack]: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, object: typing.Optional[QgsLayoutUndoObjectInterface], commandText: typing.Optional[str], id: int = ...) -> None: ...
    def endMacro(self) -> None: ...
    def beginMacro(self, commandText: typing.Optional[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: typing.Optional[QgsLayout]) -> typing.List[float]: ...
    @staticmethod
    def itemIsAClippingSource(item: typing.Optional[QgsLayoutItem]) -> bool: ...
    @staticmethod
    def calculatePrettySize(minimumSize: float, maximumSize: float) -> float: ...
    @staticmethod
    def mapLayerFromString(string: typing.Optional[str], project: typing.Optional['QgsProject']) -> typing.Optional[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: typing.Optional[QtWidgets.QStyleOptionGraphicsItem]) -> float: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: typing.Optional[QtWidgets.QStyleOptionGraphicsItem], painter: typing.Optional[QtGui.QPainter]) -> float: ...
    @staticmethod
    def decodePaperOrientation(string: typing.Optional[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: typing.Optional[QtGui.QPainter], position: typing.Union[QtCore.QPointF, QtCore.QPoint], text: typing.Optional[str], font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(painter: typing.Optional[QtGui.QPainter], rectangle: QtCore.QRectF, text: typing.Optional[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: typing.Optional[str], multiLineHeight: float = ...) -> float: ...
    @staticmethod
    def textWidthMM(font: QtGui.QFont, text: typing.Optional[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: typing.Optional[QgsLayout], painter: typing.Optional[QtGui.QPainter], dpi: float = ...) -> QgsRenderContext: ...
    @staticmethod
    def createRenderContextForMap(map: typing.Optional[QgsLayoutItemMap], painter: typing.Optional[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: typing.Optional['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) -> typing.Optional['QgsProject']: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def name(self) -> str: ...
    def layoutType(self) -> 'QgsMasterLayoutInterface.Type': ...
    def clone(self) -> typing.Optional['QgsMasterLayoutInterface']: ...


class QgsPageSize(PyQt5.sip.wrapper):

    displayName = ... # type: typing.Optional[str]
    name = ... # type: typing.Optional[str]
    size = ... # type: QgsLayoutSize

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], size: QgsLayoutSize, displayName: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, size: QgsLayoutSize) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPageSize') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsPageSizeRegistry(PyQt5.sip.wrapper):

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

    def decodePageSize(self, string: typing.Optional[str], size: QgsPageSize) -> bool: ...
    @typing.overload
    def find(self, name: typing.Optional[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: typing.Optional['QgsProject']) -> None: ...

    nameChanged: typing.ClassVar[QtCore.pyqtSignal]
    def layoutAccept(self, visitor: typing.Optional['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: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def atlas(self) -> typing.Optional[QgsLayoutAtlas]: ...
    def icon(self) -> QtGui.QIcon: ...
    def layoutType(self) -> QgsMasterLayoutInterface.Type: ...
    def layoutProject(self) -> typing.Optional['QgsProject']: ...
    def clone(self) -> typing.Optional['QgsPrintLayout']: ...


class QgsReport(QtCore.QObject, QgsAbstractReportSection, QgsMasterLayoutInterface):

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

    nameChanged: typing.ClassVar[QtCore.pyqtSignal]
    def layoutAccept(self, visitor: typing.Optional['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: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> typing.Optional['QgsReport']: ...
    def layoutProject(self) -> typing.Optional['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: typing.Optional[QgsAbstractReportSection]) -> None: ...
    def reset(self) -> None: ...
    def nextBody(self) -> typing.Tuple[typing.Optional[QgsLayout], bool]: ...
    def prepareFooter(self) -> bool: ...
    def prepareHeader(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def field(self) -> str: ...
    def setLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def layer(self) -> typing.Optional[QgsVectorLayer]: ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: typing.Optional[QgsLayout]) -> None: ...
    def body(self) -> typing.Optional[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[typing.Optional[QgsLayout], bool]: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> typing.Optional['QgsReportSectionLayout']: ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: typing.Optional[QgsLayout]) -> None: ...
    def body(self) -> typing.Optional[QgsLayout]: ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsLocator(QtCore.QObject):

    CORE_FILTERS = ... # type: typing.Iterable[typing.Optional[str]]

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

    finished: typing.ClassVar[QtCore.pyqtSignal]
    searchPrepared: typing.ClassVar[QtCore.pyqtSignal]
    foundResult: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str], context: 'QgsLocatorContext', feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    def prefixedFilters(self) -> typing.Any: ...
    def filters(self, prefix: typing.Optional[str] = ...) -> typing.List[QgsLocatorFilter]: ...
    def deregisterFilter(self, filter: typing.Optional[QgsLocatorFilter]) -> None: ...
    def registerFilter(self, filter: typing.Optional[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: typing.Optional[str]
        id = ... # type: int
        text = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, id: int, text: typing.Optional[str], iconPath: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLocatorResult.ResultAction') -> None: ...

    actions = ... # type: typing.Iterable['QgsLocatorResult.ResultAction']
    description = ... # type: typing.Optional[str]
    displayString = ... # type: typing.Optional[str]
    filter = ... # type: QgsLocatorFilter
    group = ... # type: typing.Optional[str]
    icon = ... # type: QtGui.QIcon
    score = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, filter: typing.Optional[QgsLocatorFilter], displayString: typing.Optional[str], userData: typing.Any = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocatorResult') -> None: ...

    def setUserData(self, userData: typing.Any) -> None: ...
    def _userData(self) -> typing.Any: ...


class QgsLocatorModel(QtCore.QAbstractTableModel):

    class CustomRole(int):
        ResultData = ... # type: QgsLocatorModel.CustomRole
        ResultType = ... # type: QgsLocatorModel.CustomRole
        ResultFilterPriority = ... # type: QgsLocatorModel.CustomRole
        ResultScore = ... # type: QgsLocatorModel.CustomRole
        ResultFilterName = ... # type: QgsLocatorModel.CustomRole
        ResultFilterGroupSorting = ... # type: QgsLocatorModel.CustomRole
        ResultActions = ... # type: QgsLocatorModel.CustomRole

    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: typing.Optional[QgsLocator]) -> None: ...

    def createContext(self) -> QgsLocatorContext: ...
    def search(self, string: typing.Optional[str]) -> None: ...
    def locator(self) -> typing.Optional[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: ...
    resultsCleared: typing.ClassVar[QtCore.pyqtSignal]
    isRunningChanged: typing.ClassVar[QtCore.pyqtSignal]
    resultAdded: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional[QgsLocatorProxyModel]: ...
    def locator(self) -> typing.Optional[QgsLocator]: ...
    def performSearch(self, text: typing.Optional[str]) -> None: ...


class QgsMapRendererCache(QtCore.QObject):

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

    def invalidateCacheForLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def clearCacheImage(self, cacheKey: typing.Optional[str]) -> None: ...
    def dependentLayers(self, cacheKey: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    def transformedCacheImage(self, cacheKey: typing.Optional[str], mtp: QgsMapToPixel) -> QtGui.QImage: ...
    def cacheImage(self, cacheKey: typing.Optional[str]) -> QtGui.QImage: ...
    def hasAnyCacheImage(self, cacheKey: typing.Optional[str], minimumScaleThreshold: float = ..., maximumScaleThreshold: float = ...) -> bool: ...
    def hasCacheImage(self, cacheKey: typing.Optional[str]) -> bool: ...
    def setCacheImageWithParameters(self, cacheKey: typing.Optional[str], image: QtGui.QImage, extent: QgsRectangle, mapToPixel: QgsMapToPixel, dependentLayers: typing.Iterable[QgsMapLayer] = ...) -> None: ...
    def setCacheImage(self, cacheKey: typing.Optional[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: typing.Optional[str]
        message = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, lid: typing.Optional[str], msg: typing.Optional[str]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapRendererJob.Error') -> None: ...

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

    finished: typing.ClassVar[QtCore.pyqtSignal]
    layerRendered: typing.ClassVar[QtCore.pyqtSignal]
    layerRenderingStarted: typing.ClassVar[QtCore.pyqtSignal]
    renderingLayersFinished: typing.ClassVar[QtCore.pyqtSignal]
    def mapSettings(self) -> QgsMapSettings: ...
    def renderingTime(self) -> int: ...
    def setCache(self, cache: typing.Optional[QgsMapRendererCache]) -> None: ...
    def errors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def featureFilterProvider(self) -> typing.Optional[QgsFeatureFilterProvider]: ...
    def setFeatureFilterProvider(self, f: typing.Optional[QgsFeatureFilterProvider]) -> None: ...
    def takeRenderedItemResults(self) -> typing.Optional['QgsRenderedItemResults']: ...
    def takeLabelingResults(self) -> typing.Optional[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: typing.Optional[QtGui.QPainter], backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...


class QgsMapRendererCustomPainterJob(QgsMapRendererAbstractCustomPainterJob):

    def __init__(self, settings: QgsMapSettings, painter: typing.Optional[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) -> typing.Optional[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) -> typing.Optional[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) -> typing.Optional[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: typing.Optional[str], fileFormat: typing.Optional[str] = ..., forceRaster: bool = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ...) -> None: ...
    @typing.overload
    def __init__(self, ms: QgsMapSettings, p: typing.Optional[QtGui.QPainter]) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    renderingComplete: typing.ClassVar[QtCore.pyqtSignal]
    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[typing.Optional[str]]) -> None: ...
    @typing.overload
    def transferResults(self, other: typing.Optional['QgsRenderedItemResults'], layerIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    @typing.overload
    def transferResults(self, other: typing.Optional['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) -> typing.Optional['QgsMesh3DAveragingMethod']: ...
    @typing.overload
    @staticmethod
    def equals(a: typing.Optional['QgsMesh3DAveragingMethod'], b: typing.Optional['QgsMesh3DAveragingMethod']) -> bool: ...
    @typing.overload
    def equals(self, other: typing.Optional['QgsMesh3DAveragingMethod']) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def createFromXml(elem: QtXml.QDomElement) -> typing.Optional['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) -> typing.Optional[QgsMesh3DAveragingMethod]: ...
    def equals(self, other: typing.Optional[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) -> typing.Optional[QgsMesh3DAveragingMethod]: ...
    def equals(self, other: typing.Optional[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) -> typing.Optional[QgsMesh3DAveragingMethod]: ...
    def equals(self, other: typing.Optional[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) -> typing.Optional[QgsMesh3DAveragingMethod]: ...
    def equals(self, other: typing.Optional[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: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsMeshEditor(QtCore.QObject):

    def __init__(self, meshLayer: typing.Optional['QgsMeshLayer']) -> None: ...

    meshEdited: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional['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) -> typing.Optional['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: typing.Optional[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: typing.Optional[str], meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: typing.Optional[str], outputDriver: typing.Optional[str], meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: typing.Optional[str], outputDriver: typing.Optional[str], source: typing.Optional['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: typing.Optional[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
        ParallelThreadLoading = ... # type: QgsDataProvider.ReadFlag

    class ProviderProperty(int):
        EvaluateDefaultValues = ... # type: QgsDataProvider.ProviderProperty
        CustomData = ... # type: QgsDataProvider.ProviderProperty

    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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __xor__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __ior__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __or__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __iand__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __and__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> 'QgsDataProvider.ReadFlags': ...
        def __invert__(self) -> 'QgsDataProvider.ReadFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, uri: typing.Optional[str] = ..., providerOptions: 'QgsDataProvider.ProviderOptions' = ..., flags: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag'] = ...) -> None: ...

    def setError(self, error: QgsError) -> None: ...
    def appendError(self, message: QgsErrorMessage) -> None: ...
    notify: typing.ClassVar[QtCore.pyqtSignal]
    dataChanged: typing.ClassVar[QtCore.pyqtSignal]
    fullExtentCalculated: typing.ClassVar[QtCore.pyqtSignal]
    def styleStorageCapabilities(self) -> Qgis.ProviderStyleStorageCapabilities: ...
    @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: typing.Optional[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: typing.Optional[str], vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[typing.Optional[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: typing.Optional[str], updateFeatureCount: bool = ...) -> bool: ...
    def updateExtents(self) -> None: ...
    def isValid(self) -> bool: ...
    def extent3D(self) -> QgsBox3D: ...
    def extent(self) -> QgsRectangle: ...
    def elevationProperties(self) -> typing.Optional[QgsDataProviderElevationProperties]: ...
    def temporalCapabilities(self) -> typing.Optional[QgsDataProviderTemporalCapabilities]: ...
    def flags(self) -> Qgis.DataProviderFlags: ...
    def uri(self) -> QgsDataSourceUri: ...
    @typing.overload
    def setUri(self, uri: QgsDataSourceUri) -> None: ...
    @typing.overload
    def setUri(self, uri: typing.Optional[str]) -> None: ...
    def htmlMetadata(self) -> str: ...
    def dataComment(self) -> str: ...
    def dataSourceUri(self, expandAuthConfig: bool = ...) -> str: ...
    def setDataSourceUri(self, uri: typing.Optional[str]) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...


class QgsMeshDataProvider(QgsDataProvider, QgsMeshDataSourceInterface, QgsMeshDatasetSourceInterface):

    def __init__(self, uri: typing.Optional[str], providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    datasetGroupsAdded: typing.ClassVar[QtCore.pyqtSignal]
    def close(self) -> None: ...
    def driverMetadata(self) -> 'QgsMeshDriverMetadata': ...
    def setTemporalUnit(self, unit: Qgis.TemporalUnit) -> None: ...
    def temporalCapabilities(self) -> typing.Optional['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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str], uri: typing.Optional[str], isScalar: bool, dataType: 'QgsMeshDatasetGroupMetadata.DataType', minimum: float, maximum: float, maximumVerticalLevels: int, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], isTemporal: bool, extraOptions: typing.Dict[typing.Optional[str], typing.Optional[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 parentQuantityName(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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[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: typing.Optional[str], value: typing.Optional[str]) -> None: ...
    def setDataType(self, dataType: QgsMeshDatasetGroupMetadata.DataType) -> None: ...
    def dataType(self) -> QgsMeshDatasetGroupMetadata.DataType: ...
    def setName(self, name: typing.Optional[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) -> typing.Optional[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: typing.Optional[str], sourceName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def setDatasetGroup(self, datasetGroup: typing.Optional[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: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def row(self) -> int: ...
    def parentItem(self) -> typing.Optional['QgsMeshDatasetGroupTreeItem']: ...
    def enabledDatasetGroupIndexes(self) -> typing.List[int]: ...
    def totalChildCount(self) -> int: ...
    def childCount(self) -> int: ...
    def childFromDatasetGroupIndex(self, index: int) -> typing.Optional['QgsMeshDatasetGroupTreeItem']: ...
    def child(self, row: int) -> typing.Optional['QgsMeshDatasetGroupTreeItem']: ...
    def removeChild(self, item: typing.Optional['QgsMeshDatasetGroupTreeItem']) -> None: ...
    def appendChild(self, item: typing.Optional['QgsMeshDatasetGroupTreeItem']) -> None: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str] = ..., baseName: typing.Optional[str] = ..., providerLib: typing.Optional[str] = ..., options: 'QgsMeshLayer.LayerOptions' = ...) -> None: ...

    reloaded: typing.ClassVar[QtCore.pyqtSignal]
    timeSettingsChanged: typing.ClassVar[QtCore.pyqtSignal]
    activeVectorDatasetGroupChanged: typing.ClassVar[QtCore.pyqtSignal]
    activeScalarDatasetGroupChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def setLabeling(self, labeling: typing.Optional['QgsAbstractMeshLayerLabeling']) -> None: ...
    def labeling(self) -> typing.Optional['QgsAbstractMeshLayerLabeling']: ...
    def setLabelsEnabled(self, enabled: bool) -> None: ...
    def labelsEnabled(self) -> bool: ...
    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) -> typing.Optional[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: typing.Optional[QgsMeshDatasetGroupTreeItem]) -> None: ...
    def datasetGroupTreeRootItem(self) -> typing.Optional[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, group: int = ...) -> QgsMeshDatasetIndex: ...
    def staticScalarDatasetIndex(self, group: int = ...) -> QgsMeshDatasetIndex: ...
    def activeVectorDatasetAtTime(self, timeRange: QgsDateTimeRange, group: int = ...) -> QgsMeshDatasetIndex: ...
    def activeScalarDatasetAtTime(self, timeRange: QgsDateTimeRange, group: int = ...) -> 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: typing.Optional[str], datasetGroupIndex: int, driver: typing.Optional[str]) -> bool: ...
    @typing.overload
    def addDatasets(self, path: typing.Optional[str], defaultReferenceTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> bool: ...
    @typing.overload
    def addDatasets(self, datasetGroup: typing.Optional[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) -> typing.Optional[QgsMapLayerElevationProperties]: ...
    def temporalProperties(self) -> typing.Optional[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: typing.Optional[str], provider: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> typing.Optional[QgsAbstractProfileGenerator]: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> typing.Optional[QgsMapLayerRenderer]: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> typing.Optional['QgsMeshLayer']: ...
    def dataProvider(self) -> typing.Optional[QgsMeshDataProvider]: ...
    def __repr__(self) -> typing.Any: ...


class QgsMeshLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: typing.Optional[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: typing.Optional['QgsFillSymbol']) -> None: ...
    def profileFillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setProfileLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def profileLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setFixedRangePerGroup(self, ranges: typing.Dict[int, QgsDoubleRange]) -> None: ...
    def fixedRangePerGroup(self) -> typing.Dict[int, QgsDoubleRange]: ...
    def setFixedRange(self, range: QgsDoubleRange) -> None: ...
    def fixedRange(self) -> QgsDoubleRange: ...
    def setMode(self, mode: Qgis.MeshElevationMode) -> None: ...
    def mode(self) -> Qgis.MeshElevationMode: ...
    def flags(self) -> QgsMapLayerElevationProperties.Flags: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def significantZValues(self, layer: typing.Optional[QgsMapLayer]) -> typing.List[float]: ...
    def calculateZRange(self, layer: typing.Optional[QgsMapLayer]) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange, layer: typing.Optional[QgsMapLayer] = ...) -> bool: ...
    def clone(self) -> typing.Optional['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'] = ...) -> typing.Optional['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: typing.Optional[QgsDataProviderTemporalCapabilities]) -> None: ...
    def referenceTime(self) -> QtCore.QDateTime: ...
    def timeExtent(self) -> QgsDateTimeRange: ...
    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: typing.Optional[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):
        NoResampling = ... # 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 QgsMeshRendererVectorWindBarbSettings(PyQt5.sip.wrapper):

    class WindSpeedUnit(int):
        MetersPerSecond = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit
        KilometersPerHour = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit
        Knots = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit
        MilesPerHour = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit
        FeetPerSecond = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit
        OtherUnit = ... # type: QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit

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

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def setMagnitudeUnits(self, units: 'QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit') -> None: ...
    def magnitudeUnits(self) -> 'QgsMeshRendererVectorWindBarbSettings.WindSpeedUnit': ...
    def setShaftLengthUnits(self, shaftLengthUnit: Qgis.RenderUnit) -> None: ...
    def shaftLengthUnits(self) -> Qgis.RenderUnit: ...
    def setShaftLength(self, shaftLength: float) -> None: ...
    def shaftLength(self) -> float: ...
    def setMagnitudeMultiplier(self, magnitudeMultiplier: float) -> None: ...
    def magnitudeMultiplier(self) -> float: ...


class QgsMeshRendererVectorSettings(PyQt5.sip.wrapper):

    class Symbology(int):
        Arrows = ... # type: QgsMeshRendererVectorSettings.Symbology
        Streamlines = ... # type: QgsMeshRendererVectorSettings.Symbology
        Traces = ... # type: QgsMeshRendererVectorSettings.Symbology
        WindBarbs = ... # 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 setWindBarbSettings(self, windBarbSettings: QgsMeshRendererVectorWindBarbSettings) -> None: ...
    def windBarbSettings(self) -> QgsMeshRendererVectorWindBarbSettings: ...
    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: typing.Optional[QgsMesh3DAveragingMethod]) -> None: ...
    def averagingMethod(self) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    def absoluteTimeFormat(self) -> str: ...
    def setRelativeTimeFormat(self, relativeTimeFormat: typing.Optional[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: typing.Optional[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: typing.Optional[str], outputFile: typing.Optional[str], outputExtent: QgsRectangle, startTime: float, endTime: float, layer: typing.Optional[QgsMeshLayer]) -> None: ...
    @typing.overload
    def __init__(self, formulaString: typing.Optional[str], outputFile: typing.Optional[str], outputMask: QgsGeometry, startTime: float, endTime: float, layer: typing.Optional[QgsMeshLayer]) -> None: ...
    @typing.overload
    def __init__(self, formulaString: typing.Optional[str], outputDriver: typing.Optional[str], outputGroupName: typing.Optional[str], outputFile: typing.Optional[str], outputExtent: QgsRectangle, startTime: float, endTime: float, layer: typing.Optional[QgsMeshLayer]) -> None: ...
    @typing.overload
    def __init__(self, formulaString: typing.Optional[str], outputDriver: typing.Optional[str], outputGroupName: typing.Optional[str], outputFile: typing.Optional[str], outputMask: QgsGeometry, startTime: float, endTime: float, layer: typing.Optional[QgsMeshLayer]) -> None: ...
    @typing.overload
    def __init__(self, formulaString: typing.Optional[str], outputGroupName: typing.Optional[str], outputExtent: QgsRectangle, destination: QgsMeshDatasetGroup.Type, layer: typing.Optional[QgsMeshLayer], startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, formulaString: typing.Optional[str], outputGroupName: typing.Optional[str], outputMask: QgsGeometry, destination: QgsMeshDatasetGroup.Type, layer: typing.Optional[QgsMeshLayer], startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshCalculator') -> None: ...

    @staticmethod
    def expressionIsValid(formulaString: typing.Optional[str], layer: typing.Optional[QgsMeshLayer]) -> typing.Tuple['QgsMeshCalculator.Result', 'QgsMeshDriverMetadata.MeshDriverCapability']: ...
    @staticmethod
    def expression_valid(formulaString: typing.Optional[str], layer: typing.Optional[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: typing.Optional[QgsMeshLayer], vertexIndex: int) -> QgsPoint: ...
    def calculate(self, layer: typing.Optional[QgsMeshLayer]) -> bool: ...
    def setExpressions(self, expressionX: typing.Optional[str], expressionY: typing.Optional[str], expressionZ: typing.Optional[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 QgsAbstractMeshLayerLabeling(PyQt5.sip.wrapper):

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

    @staticmethod
    def defaultSettingsForLayer(layer: typing.Optional[QgsMeshLayer]) -> QgsPalLayerSettings: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsAbstractMeshLayerLabeling']: ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: typing.Optional[QgsPalLayerSettings], providerId: typing.Optional[str] = ...) -> None: ...
    def settings(self, providerId: typing.Optional[str] = ...) -> QgsPalLayerSettings: ...
    def subProviders(self) -> typing.List[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional['QgsAbstractMeshLayerLabeling']: ...
    def type(self) -> str: ...


class QgsMeshLayerSimpleLabeling(QgsAbstractMeshLayerLabeling):

    def __init__(self, settings: QgsPalLayerSettings, labelFaces: bool = ...) -> None: ...

    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsMeshLayerSimpleLabeling']: ...
    def multiplyOpacity(self, opacityFactor: float) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: typing.Optional[QgsPalLayerSettings], providerId: typing.Optional[str] = ...) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def settings(self, providerId: typing.Optional[str] = ...) -> QgsPalLayerSettings: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional['QgsMeshLayerSimpleLabeling']: ...
    def type(self) -> str: ...


class QgsGeometryPaintDevice(QtGui.QPaintDevice):

    def __init__(self, usePathStroker: bool = ...) -> None: ...

    @staticmethod
    def painterPathToGeometry(path: QtGui.QPainterPath) -> QgsGeometry: ...
    def geometry(self) -> QgsAbstractGeometry: ...
    def metric(self, metric: QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
    def paintEngine(self) -> typing.Optional[QtGui.QPaintEngine]: ...
    def setSimplificationTolerance(self, tolerance: float) -> None: ...
    def setStrokedPathSegments(self, segments: int) -> None: ...


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) -> typing.Optional[QtGui.QPaintEngine]: ...


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) -> typing.Optional[QtGui.QPaintEngine]: ...


class QgsPaintEngineHack(QtGui.QPaintEngine):

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

    @staticmethod
    def fixEngineFlags(engine: typing.Optional[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 drawTriangleUsingTexture(painter: typing.Optional[QtGui.QPainter], triangle: QtGui.QPolygonF, textureImage: QtGui.QImage, textureX1: float, textureY1: float, textureX2: float, textureY2: float, textureX3: float, textureY3: float) -> bool: ...
    @staticmethod
    def triangleToTriangleTransform(inX1: float, inY1: float, inX2: float, inY2: float, inX3: float, inY3: float, outX1: float, outY1: float, outX2: float, outY2: float, outX3: float, outY3: float) -> typing.Tuple[QtGui.QTransform, bool]: ...
    @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 QgsPdfRenderer(PyQt5.sip.wrapper):

    def __init__(self, path: typing.Optional[str]) -> None: ...

    def render(self, painter: typing.Optional[QtGui.QPainter], painterRect: QtCore.QRectF, pageIndex: int) -> bool: ...
    def pageMediaBox(self, pageNumber: int) -> QtCore.QRectF: ...
    def pageCount(self) -> int: ...
    def path(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: typing.Optional[str]) -> None: ...
    def labelSuffix(self) -> str: ...
    def setNumericFormat(self, format: typing.Optional['QgsNumericFormat']) -> None: ...
    def numericFormat(self) -> typing.Optional['QgsNumericFormat']: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setGridMinorSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def gridMinorSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setGridMajorSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def gridMajorSymbol(self) -> typing.Optional['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: typing.Optional['QgsFillSymbol']) -> None: ...
    def chartBorderSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setChartBackgroundSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def chartBackgroundSymbol(self) -> typing.Optional['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() -> typing.Optional['QgsFillSymbol']: ...
    @staticmethod
    def chartBackgroundSymbol() -> typing.Optional['QgsFillSymbol']: ...
    @staticmethod
    def axisGridMinorSymbol() -> typing.Optional['QgsLineSymbol']: ...
    @staticmethod
    def axisGridMajorSymbol() -> typing.Optional['QgsLineSymbol']: ...
    @staticmethod
    def axisLabelNumericFormat() -> typing.Optional['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: typing.Optional[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.QMetaType.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: typing.Optional[str]) -> int: ...
    def find(self, attributeName: typing.Optional[str]) -> typing.Tuple[typing.Optional[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[typing.Optional[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: typing.Optional['QgsPointCloudRenderer']) -> None: ...
    def addPointToTriangulation(self, x: float, y: float, z: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], context: 'QgsPointCloudRenderContext') -> None: ...
    @typing.overload
    def drawPoint(self, x: float, y: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], context: 'QgsPointCloudRenderContext') -> None: ...
    @typing.overload
    def drawPoint(self, x: float, y: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], width: int, context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def pointZ(context: 'QgsPointCloudRenderContext', ptr: typing.Optional[str], i: int) -> float: ...
    @staticmethod
    def pointXY(context: 'QgsPointCloudRenderContext', ptr: typing.Optional[str], i: int) -> typing.Tuple[float, float]: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def setHorizontalTriangleFilterUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def horizontalTriangleFilterUnit(self) -> Qgis.RenderUnit: ...
    def setHorizontalTriangleFilterThreshold(self, threshold: float) -> None: ...
    def horizontalTriangleFilterThreshold(self) -> float: ...
    def setHorizontalTriangleFilter(self, enabled: bool) -> None: ...
    def horizontalTriangleFilter(self) -> bool: ...
    def setRenderAsTriangles(self, asTriangles: bool) -> None: ...
    def renderAsTriangles(self) -> bool: ...
    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: typing.Optional[str], state: bool = ...) -> None: ...
    def legendItemChecked(self, key: typing.Optional[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) -> typing.Optional['QgsPointCloudRenderer']: ...
    def willRenderPoint(self, pointAttributes: typing.Dict[typing.Optional[str], typing.Any]) -> bool: ...
    def renderBlock(self, block: typing.Optional['QgsPointCloudBlock'], context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsPointCloudRenderer]: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[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: typing.Optional['QgsPointCloudBlock'], context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> typing.Optional[QgsPointCloudRenderer]: ...
    def type(self) -> str: ...


class QgsPointCloudAttributeModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        AttributeName = ... # type: QgsPointCloudAttributeModel.CustomRole
        AttributeIndex = ... # type: QgsPointCloudAttributeModel.CustomRole
        AttributeSize = ... # type: QgsPointCloudAttributeModel.CustomRole
        AttributeType = ... # type: QgsPointCloudAttributeModel.CustomRole
        IsEmpty = ... # type: QgsPointCloudAttributeModel.CustomRole
        IsNumeric = ... # type: QgsPointCloudAttributeModel.CustomRole

    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: typing.Optional[str]) -> QtCore.QModelIndex: ...
    def setAllowEmptyAttributeName(self, allowEmpty: bool) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def setAttributes(self, attributes: QgsPointCloudAttributeCollection) -> None: ...
    def layer(self) -> typing.Optional['QgsPointCloudLayer']: ...
    def setLayer(self, layer: typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __xor__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __ior__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __or__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __iand__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __and__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __invert__(self) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, source: typing.Optional[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']) -> typing.Optional['QgsPointCloudAttributeProxyModel']: ...
    def sourceAttributeModel(self) -> typing.Optional[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: typing.Optional[str], render: bool = ..., pointSize: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudCategory') -> None: ...

    def __ne__(self, other: object): ...
    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setLabel(self, label: typing.Optional[str]) -> None: ...
    def setPointSize(self, size: float) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setValue(self, value: int) -> None: ...
    def label(self) -> str: ...
    def pointSize(self) -> float: ...
    def color(self) -> QtGui.QColor: ...
    def value(self) -> int: ...
    def __eq__(self, other: object): ...


class QgsPointCloudClassifiedRenderer(QgsPointCloudRenderer):

    def __init__(self, attributeName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def defaultCategories() -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsPointCloudRenderer]: ...
    def checkLegendItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def legendItemChecked(self, key: typing.Optional[str]) -> bool: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[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: typing.Optional['QgsPointCloudBlock'], context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> typing.Optional[QgsPointCloudRenderer]: ...
    def type(self) -> str: ...


class QgsPointCloudExtentRenderer(QgsPointCloudRenderer):

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

    def setFillSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def fillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    @staticmethod
    def defaultFillSymbol() -> typing.Optional['QgsFillSymbol']: ...
    def renderExtent(self, extent: QgsGeometry, context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsPointCloudRenderer]: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[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: typing.Optional['QgsPointCloudBlock'], context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[str]: ...
    def clone(self) -> typing.Optional['QgsPointCloudBlock']: ...


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: typing.Optional[str] = ..., baseName: typing.Optional[str] = ..., providerLib: typing.Optional[str] = ..., options: 'QgsPointCloudLayer.LayerOptions' = ...) -> None: ...

    statisticsCalculationStateChanged: typing.ClassVar[QtCore.pyqtSignal]
    raiseError: typing.ClassVar[QtCore.pyqtSignal]
    subsetStringChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> bool: ...
    def setRenderer(self, renderer: typing.Optional[QgsPointCloudRenderer]) -> None: ...
    def renderer(self) -> typing.Optional[QgsPointCloudRenderer]: ...
    def pointCount(self) -> int: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def elevationProperties(self) -> typing.Optional[QgsMapLayerElevationProperties]: ...
    def htmlMetadata(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def decodedSource(self, source: typing.Optional[str], dataProvider: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[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) -> typing.Optional['QgsPointCloudDataProvider']: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> typing.Optional[QgsAbstractProfileGenerator]: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> typing.Optional[QgsMapLayerRenderer]: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> typing.Optional['QgsPointCloudLayer']: ...
    def __repr__(self) -> typing.Any: ...


class QgsPointCloudLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: typing.Optional[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 significantZValues(self, layer: typing.Optional[QgsMapLayer]) -> typing.List[float]: ...
    def calculateZRange(self, layer: typing.Optional[QgsMapLayer]) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange, layer: typing.Optional[QgsMapLayer] = ...) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __xor__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __ior__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __or__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __iand__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __and__(self, f: typing.Union['QgsPointCloudDataProvider.Capabilities', 'QgsPointCloudDataProvider.Capability']) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __invert__(self) -> 'QgsPointCloudDataProvider.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, uri: typing.Optional[str], providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    indexGenerationStateChanged: typing.ClassVar[QtCore.pyqtSignal]
    @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: typing.Optional[str], updateFeatureCount: bool = ...) -> bool: ...
    def subsetString(self) -> str: ...
    def supportsSubsetString(self) -> bool: ...
    def metadataStatistics(self) -> 'QgsPointCloudStatistics': ...
    def metadataClassStatistic(self, attribute: typing.Optional[str], value: typing.Any, statistic: Qgis.Statistic) -> typing.Any: ...
    def metadataClasses(self, attribute: typing.Optional[str]) -> typing.List[typing.Any]: ...
    def metadataStatistic(self, attribute: typing.Optional[str], statistic: Qgis.Statistic) -> typing.Any: ...
    def hasStatisticsMetadata(self) -> bool: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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) -> typing.Optional[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: typing.Optional[str], visibleName: typing.Optional[str], icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[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) -> typing.Optional[QgsPointCloudRenderer]: ...


class QgsPointCloudRendererRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def classificationAttributeCategories(layer: typing.Optional[QgsPointCloudLayer]) -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def defaultRenderer(layer: typing.Optional[QgsPointCloudLayer]) -> typing.Optional[QgsPointCloudRenderer]: ...
    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: typing.Optional[str]) -> typing.Optional[QgsPointCloudRendererAbstractMetadata]: ...
    def removeRenderer(self, rendererName: typing.Optional[str]) -> bool: ...
    def addRenderer(self, metadata: typing.Optional[QgsPointCloudRendererAbstractMetadata]) -> bool: ...


class QgsPointCloudRgbRenderer(QgsPointCloudRenderer):

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

    def setBlueContrastEnhancement(self, enhancement: typing.Optional['QgsContrastEnhancement']) -> None: ...
    def blueContrastEnhancement(self) -> typing.Optional['QgsContrastEnhancement']: ...
    def setGreenContrastEnhancement(self, enhancement: typing.Optional['QgsContrastEnhancement']) -> None: ...
    def greenContrastEnhancement(self) -> typing.Optional['QgsContrastEnhancement']: ...
    def setRedContrastEnhancement(self, enhancement: typing.Optional['QgsContrastEnhancement']) -> None: ...
    def redContrastEnhancement(self) -> typing.Optional['QgsContrastEnhancement']: ...
    def setBlueAttribute(self, attribute: typing.Optional[str]) -> None: ...
    def blueAttribute(self) -> str: ...
    def setGreenAttribute(self, attribute: typing.Optional[str]) -> None: ...
    def greenAttribute(self) -> str: ...
    def setRedAttribute(self, attribute: typing.Optional[str]) -> None: ...
    def redAttribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsPointCloudRenderer]: ...
    def usedAttributes(self, context: QgsPointCloudRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: typing.Optional[QgsPointCloudBlock], context: QgsPointCloudRenderContext) -> None: ...
    def clone(self) -> typing.Optional[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: typing.Optional[QgsPointCloudLayer]) -> None: ...

    def lastError(self) -> str: ...
    def takeExportedLayer(self) -> typing.Optional[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[typing.Optional[str]]) -> None: ...
    def feedback(self) -> typing.Optional[QgsFeedback]: ...
    def setFeedback(self, feedback: typing.Optional[QgsFeedback]) -> None: ...
    def zRange(self) -> QgsDoubleRange: ...
    def setZRange(self, zRange: QgsDoubleRange) -> None: ...
    @typing.overload
    def setFilterGeometry(self, geometry: typing.Optional[QgsAbstractGeometry]) -> None: ...
    @typing.overload
    def setFilterGeometry(self, layer: typing.Optional[QgsMapLayer], selectedFeaturesOnly: bool = ...) -> None: ...
    def filterExtent(self) -> QgsRectangle: ...
    def setFilterExtent(self, extent: QgsRectangle) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: typing.Optional[str]) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, filename: typing.Optional[str]) -> None: ...


class QgsPointCloudLayerExporterTask(QgsTask):

    def __init__(self, exporter: typing.Optional[QgsPointCloudLayerExporter]) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    exportComplete: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> float: ...
    def mean(self, attribute: typing.Optional[str]) -> float: ...
    def maximum(self, attribute: typing.Optional[str]) -> float: ...
    def minimum(self, attribute: typing.Optional[str]) -> float: ...
    def classesOf(self, attribute: typing.Optional[str]) -> typing.List[int]: ...
    def statisticsOf(self, attribute: typing.Optional[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 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: typing.Optional[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 hasVerticalAxis(self) -> bool: ...
    def verticalCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def horizontalCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def toGeographicCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def nativeFormat(self) -> Qgis.CrsDefinitionFormat: ...
    def setNativeFormat(self, format: Qgis.CrsDefinitionFormat) -> None: ...
    def saveAsUserCrs(self, name: typing.Optional[str], nativeFormat: Qgis.CrsDefinitionFormat = ...) -> int: ...
    @staticmethod
    def syncDatabase() -> int: ...
    def validationHint(self) -> str: ...
    def setValidationHint(self, html: typing.Optional[str]) -> None: ...
    def updateDefinition(self) -> None: ...
    def toOgcUrn(self) -> str: ...
    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 isDeprecated(self) -> bool: ...
    def type(self) -> Qgis.CrsType: ...
    def toProj(self) -> str: ...
    def toProj4(self) -> str: ...
    def toWkt(self, variant: Qgis.CrsWktVariant = ..., multiline: bool = ..., indentationWidth: int = ...) -> str: ...
    def ellipsoidAcronym(self) -> str: ...
    def projectionAcronym(self) -> str: ...
    def userFriendlyIdentifier(self, type: Qgis.CrsIdentifierType = ...) -> 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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def findMatchingProj(self) -> int: ...
    def validate(self) -> None: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def setupESRIWktFix() -> None: ...
    def createFromUserInput(self, definition: typing.Optional[str]) -> bool: ...
    def createFromString(self, definition: typing.Optional[str]) -> bool: ...
    def createFromProj(self, projString: typing.Optional[str]) -> bool: ...
    def createFromProj4(self, projString: typing.Optional[str]) -> bool: ...
    def createFromSrsId(self, srsId: int) -> bool: ...
    def createFromWkt(self, wkt: typing.Optional[str]) -> bool: ...
    def createFromSrid(self, srid: int) -> bool: ...
    def createFromOgcWmsCrs(self, crs: typing.Optional[str]) -> bool: ...
    def createFromId(self, id: int, type: 'QgsCoordinateReferenceSystem.CrsType' = ...) -> bool: ...
    @staticmethod
    def createCompoundCrs(horizontalCrs: 'QgsCoordinateReferenceSystem', verticalCrs: 'QgsCoordinateReferenceSystem') -> typing.Tuple['QgsCoordinateReferenceSystem', str]: ...
    @staticmethod
    def fromSrsId(srsId: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromWkt(wkt: typing.Optional[str]) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj(proj: typing.Optional[str]) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj4(proj4: typing.Optional[str]) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromEpsgId(epsg: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromOgcWmsCrs(ogcCrs: typing.Optional[str]) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def validSrsIds() -> typing.Any: ...


class QgsCoordinateReferenceSystemRegistry(QtCore.QObject):

    class UserCrsDetails(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        id = ... # type: int
        name = ... # type: typing.Optional[str]
        proj = ... # type: typing.Optional[str]
        wkt = ... # type: typing.Optional[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: ...

    recentCrsCleared: typing.ClassVar[QtCore.pyqtSignal]
    recentCrsRemoved: typing.ClassVar[QtCore.pyqtSignal]
    recentCrsPushed: typing.ClassVar[QtCore.pyqtSignal]
    crsDefinitionsChanged: typing.ClassVar[QtCore.pyqtSignal]
    userCrsRemoved: typing.ClassVar[QtCore.pyqtSignal]
    userCrsAdded: typing.ClassVar[QtCore.pyqtSignal]
    userCrsChanged: typing.ClassVar[QtCore.pyqtSignal]
    def clearRecent(self) -> None: ...
    def removeRecent(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def pushRecent(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def recentCrs(self) -> typing.List[QgsCoordinateReferenceSystem]: ...
    def authorities(self) -> typing.Set[str]: ...
    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: typing.Optional[str], nativeFormat: Qgis.CrsDefinitionFormat = ...) -> bool: ...
    def addUserCrs(self, crs: QgsCoordinateReferenceSystem, name: typing.Optional[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 translateProjection(projection: typing.Optional[str]) -> str: ...
    @staticmethod
    def crsTypeToString(type: Qgis.CrsType) -> str: ...
    @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: typing.Optional['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: typing.Optional[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[typing.Optional[float], typing.Optional[float], typing.Optional[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 __ne__(self, other: object): ...
    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: typing.Optional[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: ...
    def __eq__(self, other: object): ...


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: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class TransformInfo(PyQt5.sip.wrapper):

        datumTransformId = ... # type: int
        deprecated = ... # type: bool
        destinationCrsAuthId = ... # type: typing.Optional[str]
        destinationCrsDescription = ... # type: typing.Optional[str]
        epsgCode = ... # type: int
        preferred = ... # type: bool
        remarks = ... # type: typing.Optional[str]
        scope = ... # type: typing.Optional[str]
        sourceCrsAuthId = ... # type: typing.Optional[str]
        sourceCrsDescription = ... # type: typing.Optional[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: typing.Optional[str]
        isAvailable = ... # type: bool
        openLicense = ... # type: bool
        packageName = ... # type: typing.Optional[str]
        shortName = ... # type: typing.Optional[str]
        url = ... # type: typing.Optional[str]

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

    class SingleOperationDetails(PyQt5.sip.wrapper):

        areaOfUse = ... # type: typing.Optional[str]
        authority = ... # type: typing.Optional[str]
        code = ... # type: typing.Optional[str]
        remarks = ... # type: typing.Optional[str]
        scope = ... # type: typing.Optional[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: typing.Optional[str]
        authority = ... # type: typing.Optional[str]
        bounds = ... # type: QgsRectangle
        code = ... # type: typing.Optional[str]
        grids = ... # type: typing.Iterable['QgsDatumTransform.GridDetails']
        isAvailable = ... # type: bool
        name = ... # type: typing.Optional[str]
        operationDetails = ... # type: typing.Iterable['QgsDatumTransform.SingleOperationDetails']
        proj = ... # type: typing.Optional[str]
        remarks = ... # type: typing.Optional[str]
        scope = ... # type: typing.Optional[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: typing.Optional[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: typing.Optional[str]
        celestialBodyName = ... # type: typing.Optional[str]
        description = ... # type: typing.Optional[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: typing.Optional[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: typing.Optional[str]
        administrativeArea = ... # type: typing.Optional[str]
        city = ... # type: typing.Optional[str]
        country = ... # type: typing.Optional[str]
        postalCode = ... # type: typing.Optional[str]
        type = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, type: typing.Optional[str] = ..., address: typing.Optional[str] = ..., city: typing.Optional[str] = ..., administrativeArea: typing.Optional[str] = ..., postalCode: typing.Optional[str] = ..., country: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Address') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class Contact(PyQt5.sip.wrapper):

        addresses = ... # type: typing.Iterable['QgsAbstractMetadataBase.Address']
        email = ... # type: typing.Optional[str]
        fax = ... # type: typing.Optional[str]
        name = ... # type: typing.Optional[str]
        organization = ... # type: typing.Optional[str]
        position = ... # type: typing.Optional[str]
        role = ... # type: typing.Optional[str]
        voice = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, name: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Contact') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class Link(PyQt5.sip.wrapper):

        description = ... # type: typing.Optional[str]
        format = ... # type: typing.Optional[str]
        mimeType = ... # type: typing.Optional[str]
        name = ... # type: typing.Optional[str]
        size = ... # type: typing.Optional[str]
        type = ... # type: typing.Optional[str]
        url = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, name: typing.Optional[str] = ..., type: typing.Optional[str] = ..., url: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Link') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

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

    def equals(self, other: 'QgsAbstractMetadataBase') -> bool: ...
    def combine(self, other: typing.Optional['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[typing.Optional[str]]) -> None: ...
    def categories(self) -> typing.List[str]: ...
    def keywordVocabularies(self) -> typing.List[str]: ...
    def removeKeywords(self, vocabulary: typing.Optional[str]) -> bool: ...
    def addKeywords(self, vocabulary: typing.Optional[str], keywords: typing.Iterable[typing.Optional[str]]) -> None: ...
    def setKeywords(self, keywords: typing.Dict[typing.Optional[str], typing.Iterable[typing.Optional[str]]]) -> None: ...
    @typing.overload
    def keywords(self) -> typing.Dict[str, typing.List[str]]: ...
    @typing.overload
    def keywords(self, vocabulary: typing.Optional[str]) -> typing.List[str]: ...
    def addHistoryItem(self, text: typing.Optional[str]) -> None: ...
    def setHistory(self, history: typing.Iterable[typing.Optional[str]]) -> None: ...
    def history(self) -> typing.List[str]: ...
    def setAbstract(self, abstract: typing.Optional[str]) -> None: ...
    def abstract(self) -> str: ...
    def setTitle(self, title: typing.Optional[str]) -> None: ...
    def title(self) -> str: ...
    def setType(self, type: typing.Optional[str]) -> None: ...
    def type(self) -> str: ...
    def setLanguage(self, language: typing.Optional[str]) -> None: ...
    def language(self) -> str: ...
    def setParentIdentifier(self, parentIdentifier: typing.Optional[str]) -> None: ...
    def parentIdentifier(self) -> str: ...
    def setIdentifier(self, identifier: typing.Optional[str]) -> None: ...
    def identifier(self) -> str: ...
    def clone(self) -> typing.Optional['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: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class Extent(PyQt5.sip.wrapper):

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

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        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: typing.Optional[str]
        type = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, constraint: typing.Optional[str] = ..., type: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerMetadata.Constraint') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

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

    def __ne__(self, other: object): ...
    def matches(self, searchReList: typing.Iterable[QtCore.QRegularExpression]) -> bool: ...
    def contains(self, searchString: typing.Optional[str]) -> bool: ...
    def __eq__(self, other: object): ...
    def combine(self, other: typing.Optional[QgsAbstractMetadataBase]) -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def readFromLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    def saveToLayer(self, layer: typing.Optional[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: typing.Optional[str]) -> None: ...
    def encoding(self) -> str: ...
    def setLicenses(self, licenses: typing.Iterable[typing.Optional[str]]) -> None: ...
    def licenses(self) -> typing.List[str]: ...
    def setRights(self, rights: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> None: ...
    def fees(self) -> str: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]
        section = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, section: typing.Optional[str], note: typing.Optional[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: ...

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

    def validate(self, metadata: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def combine(self, other: typing.Optional[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: typing.Optional[str]) -> None: ...
    def author(self) -> str: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def standardUri(self) -> str: ...
    def setLayerType(self, layerType: Qgis.LayerType) -> None: ...
    def layerType(self) -> Qgis.LayerType: ...
    def setDataProviderName(self, dataProviderName: typing.Optional[str]) -> None: ...
    def dataProviderName(self) -> str: ...
    def setUri(self, Uri: typing.Optional[str]) -> None: ...
    def uri(self) -> str: ...
    def setAuthid(self, authid: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str] = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> QgsLayerMetadataSearchResults: ...
    def layerMetadataProviderFromId(self, id: typing.Optional[str]) -> typing.Optional[QgsAbstractLayerMetadataProvider]: ...
    def layerMetadataProviders(self) -> typing.List[QgsAbstractLayerMetadataProvider]: ...
    def unregisterLayerMetadataProvider(self, metadataProvider: typing.Optional[QgsAbstractLayerMetadataProvider]) -> None: ...
    def registerLayerMetadataProvider(self, metadataProvider: typing.Optional[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: ...

    finished: typing.ClassVar[QtCore.pyqtSignal]
    uploadProgress: typing.ClassVar[QtCore.pyqtSignal]
    downloadFinished: typing.ClassVar[QtCore.pyqtSignal]
    downloadProgress: typing.ClassVar[QtCore.pyqtSignal]
    def abort(self) -> None: ...
    def setAuthCfg(self, authCfg: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str], authcfg: typing.Optional[str] = ..., delayStart: bool = ..., httpMethod: Qgis.HttpMethod = ..., data: typing.Union[QtCore.QByteArray, bytes, bytearray] = ...) -> None: ...

    def startDownload(self) -> None: ...
    def cancelDownload(self) -> None: ...
    downloadProgress: typing.ClassVar[QtCore.pyqtSignal]
    downloadError: typing.ClassVar[QtCore.pyqtSignal]
    downloadCanceled: typing.ClassVar[QtCore.pyqtSignal]
    downloadExited: typing.ClassVar[QtCore.pyqtSignal]
    downloadCompleted: typing.ClassVar[QtCore.pyqtSignal]


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] = ...) -> typing.Optional[QtNetwork.QNetworkReply]: ...
    cookiesChanged: typing.ClassVar[QtCore.pyqtSignal]
    authBrowserAborted: typing.ClassVar[QtCore.pyqtSignal]
    requestEncounteredSslErrors: typing.ClassVar[QtCore.pyqtSignal]
    requestAuthDetailsAdded: typing.ClassVar[QtCore.pyqtSignal]
    requestRequiresAuth: typing.ClassVar[QtCore.pyqtSignal]
    downloadProgress: typing.ClassVar[QtCore.pyqtSignal]
    requestTimedOut: typing.ClassVar[QtCore.pyqtSignal]
    finished: typing.ClassVar[QtCore.pyqtSignal]
    requestCreated: typing.ClassVar[QtCore.pyqtSignal]
    requestAboutToBeCreated: typing.ClassVar[QtCore.pyqtSignal]
    def preprocessRequest(self, req: typing.Optional[QtNetwork.QNetworkRequest]) -> None: ...
    def abortAuthBrowser(self) -> None: ...
    def requestAuthCloseBrowser(self) -> None: ...
    def requestAuthOpenBrowser(self, url: QtCore.QUrl) -> None: ...
    @staticmethod
    def removeReplyPreprocessor(id: typing.Optional[str]) -> None: ...
    @staticmethod
    def setReplyPreprocessor(a0: typing.Optional[typing.Callable[..., None]]) -> str: ...
    @staticmethod
    def removeRequestPreprocessor(id: typing.Optional[str]) -> None: ...
    @staticmethod
    def setRequestPreprocessor(a0: typing.Optional[typing.Callable[..., None]]) -> str: ...
    @staticmethod
    def blockingPost(request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], authCfg: typing.Optional[str] = ..., forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsNetworkReplyContent': ...
    @staticmethod
    def blockingGet(request: QtNetwork.QNetworkRequest, authCfg: typing.Optional[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: typing.Optional[str]) -> QtNetwork.QNetworkRequest.CacheLoadControl: ...
    @staticmethod
    def cacheLoadControlName(control: QtNetwork.QNetworkRequest.CacheLoadControl) -> str: ...
    def setFallbackProxyAndExcludes(self, proxy: QtNetwork.QNetworkProxy, excludes: typing.Iterable[typing.Optional[str]], noProxyURLs: typing.Iterable[typing.Optional[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: typing.Optional[QtNetwork.QNetworkProxyFactory]) -> None: ...
    def insertProxyFactory(self, factory: typing.Optional[QtNetwork.QNetworkProxyFactory]) -> None: ...
    @staticmethod
    def instance(connectionType: QtCore.Qt.ConnectionType = ...) -> typing.Optional['QgsNetworkAccessManager']: ...


class QgsNetworkContentFetcher(QtCore.QObject):

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

    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    downloadProgress: typing.ClassVar[QtCore.pyqtSignal]
    finished: typing.ClassVar[QtCore.pyqtSignal]
    def wasCanceled(self) -> bool: ...
    def cancel(self) -> None: ...
    def contentAsString(self) -> str: ...
    def contentDispositionFilename(self) -> str: ...
    def reply(self) -> typing.Optional[QtNetwork.QNetworkReply]: ...
    @typing.overload
    def fetchContent(self, url: QtCore.QUrl, authcfg: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def fetchContent(self, request: QtNetwork.QNetworkRequest, authcfg: typing.Optional[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: typing.Optional[str], file: typing.Optional[QtCore.QTemporaryFile] = ..., status: 'QgsFetchedContent.ContentStatus' = ..., authConfig: typing.Optional[str] = ...) -> None: ...

    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    fetched: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> str: ...
    def fetch(self, url: typing.Optional[str], fetchingMode: Qgis.ActionStart = ..., authConfig: typing.Optional[str] = ...) -> typing.Optional[QgsFetchedContent]: ...


class QgsNetworkContentFetcherTask(QgsTask):

    @typing.overload
    def __init__(self, url: QtCore.QUrl, authcfg: typing.Optional[str] = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, request: QtNetwork.QNetworkRequest, authcfg: typing.Optional[str] = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: typing.Optional[str] = ...) -> None: ...

    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    fetched: typing.ClassVar[QtCore.pyqtSignal]
    def contentAsString(self) -> str: ...
    def contentDispositionFilename(self) -> str: ...
    def reply(self) -> typing.Optional[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: typing.Optional[QtNetwork.QNetworkReply]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNetworkReplyContent') -> None: ...

    @staticmethod
    def extractFileNameFromContentDispositionHeader(header: typing.Optional[str]) -> str: ...
    @staticmethod
    def extractFilenameFromContentDispositionHeader(reply: typing.Optional[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 CustomRole(int):
        Key = ... # type: QgsNewsFeedModel.CustomRole
        Title = ... # type: QgsNewsFeedModel.CustomRole
        Content = ... # type: QgsNewsFeedModel.CustomRole
        ImageUrl = ... # type: QgsNewsFeedModel.CustomRole
        Image = ... # type: QgsNewsFeedModel.CustomRole
        Link = ... # type: QgsNewsFeedModel.CustomRole
        Sticky = ... # type: QgsNewsFeedModel.CustomRole

    def __init__(self, parser: typing.Optional['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: typing.Optional['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: typing.Optional[str]
        expiry = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        image = ... # type: QtGui.QPixmap
        imageUrl = ... # type: typing.Optional[str]
        key = ... # type: int
        link = ... # type: QtCore.QUrl
        sticky = ... # type: bool
        title = ... # type: typing.Optional[str]

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

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

    imageFetched: typing.ClassVar[QtCore.pyqtSignal]
    entryDismissed: typing.ClassVar[QtCore.pyqtSignal]
    entryUpdated: typing.ClassVar[QtCore.pyqtSignal]
    entryAdded: typing.ClassVar[QtCore.pyqtSignal]
    fetched: typing.ClassVar[QtCore.pyqtSignal]
    def fetch(self) -> None: ...
    @staticmethod
    def keyForFeed(baseUrl: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[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: typing.Optional[str], value: typing.Any) -> None: ...
    def __getitem__(self, key: typing.Optional[str]) -> typing.Any: ...
    def sanitizeKey(self, key: typing.Optional[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: typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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) -> typing.Optional['QgsNumericFormat']: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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: typing.Optional[str]) -> str: ...
    @staticmethod
    def toUnicodeSuperscript(input: typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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: typing.Optional[str]) -> int: ...
    def visibleName(self, id: typing.Optional[str]) -> str: ...
    def fallbackFormat(self) -> typing.Optional[QgsNumericFormat]: ...
    def createFromXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsNumericFormat]: ...
    def create(self, id: typing.Optional[str], configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> typing.Optional[QgsNumericFormat]: ...
    def format(self, id: typing.Optional[str]) -> typing.Optional[QgsNumericFormat]: ...
    def removeFormat(self, id: typing.Optional[str]) -> None: ...
    def addFormat(self, format: typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsNumericFormat]: ...
    def clone(self) -> typing.Optional[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 VectorProperties(PyQt5.sip.wrapper):

        availability = ... # type: Qgis.ProcessingPropertyAvailability
        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: ...

    @staticmethod
    def writeFeatureError(sink: typing.Optional[QgsFeatureSink], parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> str: ...
    @staticmethod
    def invalidPointCloudError(parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> str: ...
    @staticmethod
    def invalidSinkError(parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> str: ...
    @staticmethod
    def invalidRasterError(parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> str: ...
    @staticmethod
    def invalidSourceError(parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> str: ...
    def parameterAsAnnotationLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional[QgsAnnotationLayer]: ...
    def parameterAsPointCloudLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', flags: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag'] = ...) -> typing.Optional[QgsPointCloudLayer]: ...
    def parameterAsDateTime(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QtCore.QDateTime: ...
    def parameterAsDatabaseTableName(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsSchema(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsConnectionName(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsColor(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QtGui.QColor: ...
    def parameterAsLayoutItem(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', layout: typing.Optional[QgsPrintLayout]) -> typing.Optional[QgsLayoutItem]: ...
    def parameterAsLayout(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional[QgsPrintLayout]: ...
    def parameterAsStrings(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsFields(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsRange(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[float]: ...
    def parameterAsFileList(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsLayerList(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', flags: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag'] = ...) -> typing.List[QgsMapLayer]: ...
    def parameterAsMatrix(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[typing.Any]: ...
    def parameterAsFile(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsGeometryCrs(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsGeometry(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsPointCrs(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsPoint(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    def parameterAsExtentCrs(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsExtentGeometry(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsExtent(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    def parameterAsCrs(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsVectorLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional[QgsVectorLayer]: ...
    def parameterAsFileOutput(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsOutputLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsMeshLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional[QgsMeshLayer]: ...
    def parameterAsRasterLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional['QgsRasterLayer']: ...
    def parameterAsLayer(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional[QgsMapLayer]: ...
    def parameterAsCompatibleSourceLayerPathAndLayerName(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str] = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> typing.Tuple[str, typing.Optional[str]]: ...
    def parameterAsCompatibleSourceLayerPath(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str] = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> str: ...
    def parameterAsSource(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.Optional['QgsProcessingFeatureSource']: ...
    def parameterAsSink(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[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[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional[QgsFeatureSink], str]: ...
    def parameterAsBoolean(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> bool: ...
    def parameterAsBool(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> bool: ...
    def parameterAsEnumStrings(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsEnumString(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsEnums(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsEnum(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> int: ...
    def parameterAsInts(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsInt(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> int: ...
    def parameterAsDouble(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> float: ...
    def parameterAsExpression(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def parameterAsString(self, parameters: typing.Dict[str, typing.Any], name: typing.Optional[str], context: 'QgsProcessingContext') -> str: ...
    def postProcessAlgorithm(self, context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> typing.Dict[str, typing.Any]: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> typing.Dict[str, typing.Any]: ...
    def prepareAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> bool: ...
    def addOutput(self, outputDefinition: typing.Optional['QgsProcessingOutputDefinition']) -> bool: ...
    def removeParameter(self, name: typing.Optional[str]) -> None: ...
    def addParameter(self, parameterDefinition: typing.Optional['QgsProcessingParameterDefinition'], createOutput: bool = ...) -> bool: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def createInstance(self) -> typing.Optional['QgsProcessingAlgorithm']: ...
    def supportInPlaceEdit(self, layer: typing.Optional[QgsMapLayer]) -> bool: ...
    def setProvider(self, provider: typing.Optional['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] = ...) -> typing.Optional[QtWidgets.QWidget]: ...
    def postProcess(self, context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback'], runResult: bool = ...) -> typing.Dict[str, typing.Any]: ...
    def runPrepared(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> typing.Dict[str, typing.Any]: ...
    def prepare(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> bool: ...
    def run(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback'], configuration: typing.Dict[str, typing.Any] = ..., catchExceptions: bool = ...) -> typing.Tuple[typing.Dict[str, typing.Any], typing.Optional[bool]]: ...
    def sinkProperties(self, sink: typing.Optional[str], parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[typing.Optional[str], 'QgsProcessingAlgorithm.VectorProperties']) -> 'QgsProcessingAlgorithm.VectorProperties': ...
    def hasHtmlOutputs(self) -> bool: ...
    def outputDefinition(self, name: typing.Optional[str]) -> typing.Optional['QgsProcessingOutputDefinition']: ...
    def outputDefinitions(self) -> typing.List['QgsProcessingOutputDefinition']: ...
    def destinationParameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def countVisibleParameters(self) -> int: ...
    def parameterDefinition(self, name: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterDefinition']: ...
    def parameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def provider(self) -> typing.Optional['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, typing.Optional[str]]: ...
    def canExecute(self) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def flags(self) -> Qgis.ProcessingAlgorithmFlags: ...
    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] = ...) -> typing.Optional['QgsProcessingAlgorithm']: ...


class QgsProcessingModelAlgorithm(QgsProcessingAlgorithm):

    class VariableDefinition(PyQt5.sip.wrapper):

        description = ... # type: typing.Optional[str]
        source = ... # type: 'QgsProcessingModelChildParameterSource'
        value = ... # type: typing.Any

        @typing.overload
        def __init__(self, value: typing.Any = ..., source: 'QgsProcessingModelChildParameterSource' = ..., description: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingModelAlgorithm.VariableDefinition') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self, name: typing.Optional[str] = ..., group: typing.Optional[str] = ..., groupId: typing.Optional[str] = ...) -> None: ...

    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> typing.Dict[str, typing.Any]: ...
    def createInstance(self) -> typing.Optional[QgsProcessingAlgorithm]: ...
    @staticmethod
    def safeName(name: typing.Optional[str], capitalize: bool = ...) -> str: ...
    def modelParameterFromChildIdAndOutputName(self, childId: typing.Optional[str], childOutputName: typing.Optional[str]) -> typing.Optional['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: typing.Optional[str], context: 'QgsProcessingContext', modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsExpressionContextScope]: ...
    def variablesForChildAlgorithm(self, childId: typing.Optional[str], context: typing.Optional['QgsProcessingContext'] = ..., modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> typing.Dict[str, 'QgsProcessingModelAlgorithm.VariableDefinition']: ...
    def availableSourcesForChild(self, childId: typing.Optional[str], parameterTypes: typing.Iterable[typing.Optional[str]] = ..., outputTypes: typing.Iterable[typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def toFile(self, path: typing.Optional[str]) -> bool: ...
    def removeGroupBox(self, uuid: typing.Optional[str]) -> None: ...
    def groupBoxes(self) -> typing.List['QgsProcessingModelGroupBox']: ...
    def addGroupBox(self, groupBox: 'QgsProcessingModelGroupBox') -> None: ...
    def updateDestinationParameters(self) -> None: ...
    def setOutputGroup(self, group: typing.Optional[str]) -> None: ...
    def outputGroup(self) -> str: ...
    def setOutputOrder(self, order: typing.Iterable[typing.Optional[str]]) -> None: ...
    def orderedOutputs(self) -> typing.List['QgsProcessingModelOutput']: ...
    def setParameterOrder(self, order: typing.Iterable[typing.Optional[str]]) -> None: ...
    def orderedParameters(self) -> typing.List['QgsProcessingModelParameter']: ...
    def parameterComponent(self, name: typing.Optional[str]) -> 'QgsProcessingModelParameter': ...
    def setParameterComponent(self, component: 'QgsProcessingModelParameter') -> None: ...
    def setParameterComponents(self, parameterComponents: typing.Dict[typing.Optional[str], 'QgsProcessingModelParameter']) -> None: ...
    def parameterComponents(self) -> typing.Dict[str, 'QgsProcessingModelParameter']: ...
    def otherParametersDependOnParameter(self, name: typing.Optional[str]) -> bool: ...
    def childAlgorithmsDependOnParameter(self, name: typing.Optional[str]) -> bool: ...
    def changeParameterName(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def removeModelParameter(self, name: typing.Optional[str]) -> None: ...
    def updateModelParameter(self, definition: typing.Optional['QgsProcessingParameterDefinition']) -> None: ...
    def addModelParameter(self, definition: typing.Optional['QgsProcessingParameterDefinition'], component: 'QgsProcessingModelParameter') -> None: ...
    def validateChildAlgorithm(self, childId: typing.Optional[str]) -> typing.Tuple[bool, typing.List[str]]: ...
    def availableDependenciesForChildAlgorithm(self, childId: typing.Optional[str]) -> typing.List['QgsProcessingModelChildDependency']: ...
    def dependsOnChildAlgorithms(self, childId: typing.Optional[str]) -> typing.Set[str]: ...
    def dependentChildAlgorithms(self, childId: typing.Optional[str], conditionalBranch: typing.Optional[str] = ...) -> typing.Set[str]: ...
    def activateChildAlgorithm(self, id: typing.Optional[str]) -> bool: ...
    def deactivateChildAlgorithm(self, id: typing.Optional[str]) -> None: ...
    def removeChildAlgorithm(self, id: typing.Optional[str]) -> bool: ...
    def childAlgorithm(self, id: typing.Optional[str]) -> 'QgsProcessingModelChildAlgorithm': ...
    def addChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> str: ...
    def setChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> None: ...
    def setChildAlgorithms(self, childAlgorithms: typing.Dict[typing.Optional[str], 'QgsProcessingModelChildAlgorithm']) -> None: ...
    def childAlgorithms(self) -> typing.Dict[str, 'QgsProcessingModelChildAlgorithm']: ...
    def validate(self) -> typing.Tuple[bool, typing.List[str]]: ...
    def setGroup(self, group: typing.Optional[str]) -> None: ...
    def setName(self, name: typing.Optional[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, typing.Optional[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: typing.Optional[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) -> typing.Optional['QgsProcessingModelComponent']: ...
    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> typing.Optional['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]) -> None: ...
    def position(self) -> QtCore.QPointF: ...
    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...


class QgsProcessingModelChildAlgorithm(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, algorithmId: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProcessingModelChildAlgorithm') -> None: ...

    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> typing.Optional['QgsProcessingModelComment']: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', extraParameters: typing.Dict[typing.Optional[str], typing.Optional[str]], currentIndent: int, indentSize: int, friendlyChildNames: typing.Dict[typing.Optional[str], typing.Optional[str]], friendlyOutputNames: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> typing.List[str]: ...
    def loadVariant(self, child: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def removeModelOutput(self, name: typing.Optional[str]) -> bool: ...
    def setModelOutputs(self, outputs: typing.Dict[typing.Optional[str], 'QgsProcessingModelOutput']) -> None: ...
    def modelOutput(self, name: typing.Optional[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: typing.Optional[str], source: typing.Iterable['QgsProcessingModelChildParameterSource']) -> None: ...
    def setParameterSources(self, sources: typing.Any) -> None: ...
    def parameterSources(self) -> typing.Any: ...
    def algorithm(self) -> typing.Optional[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: typing.Optional[str]) -> bool: ...
    def algorithmId(self) -> str: ...
    def generateChildId(self, model: QgsProcessingModelAlgorithm) -> None: ...
    def setChildId(self, id: typing.Optional[str]) -> None: ...
    def childId(self) -> str: ...
    def copyNonDefinitionPropertiesFromModel(self, model: typing.Optional[QgsProcessingModelAlgorithm]) -> None: ...
    def clone(self) -> typing.Optional['QgsProcessingModelChildAlgorithm']: ...


class QgsProcessingModelChildDependency(PyQt5.sip.wrapper):

    childId = ... # type: typing.Optional[str]
    conditionalBranch = ... # type: typing.Optional[str]

    @typing.overload
    def __init__(self, childId: typing.Optional[str] = ..., conditionalBranch: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelChildDependency') -> None: ...

    def __ge__(self, other: 'QgsProcessingModelChildDependency') -> bool: ...
    def __lt__(self, other: 'QgsProcessingModelChildDependency') -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...


class QgsProcessingModelChildParameterSource(PyQt5.sip.wrapper):

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

    def friendlyIdentifier(self, model: typing.Optional[QgsProcessingModelAlgorithm]) -> str: ...
    def asPythonComment(self, definition: typing.Optional['QgsProcessingParameterDefinition']) -> str: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', definition: typing.Optional['QgsProcessingParameterDefinition'], friendlyChildNames: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> str: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setExpressionText(self, text: typing.Optional[str]) -> None: ...
    def expressionText(self) -> str: ...
    def setExpression(self, expression: typing.Optional[str]) -> None: ...
    def expression(self) -> str: ...
    def setOutputName(self, name: typing.Optional[str]) -> None: ...
    def outputName(self) -> str: ...
    def setOutputChildId(self, id: typing.Optional[str]) -> None: ...
    def outputChildId(self) -> str: ...
    def setParameterName(self, name: typing.Optional[str]) -> None: ...
    def parameterName(self) -> str: ...
    def setStaticValue(self, value: typing.Any) -> None: ...
    def staticValue(self) -> typing.Any: ...
    def setSource(self, source: Qgis.ProcessingModelChildParameterSource) -> None: ...
    def source(self) -> Qgis.ProcessingModelChildParameterSource: ...
    @staticmethod
    def fromExpressionText(text: typing.Optional[str]) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromExpression(expression: typing.Optional[str]) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromChildOutput(childId: typing.Optional[str], outputName: typing.Optional[str]) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromModelParameter(parameterName: typing.Optional[str]) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromStaticValue(value: typing.Any) -> 'QgsProcessingModelChildParameterSource': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsProcessingModelComment(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: typing.Optional[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) -> typing.Optional['QgsProcessingModelComment']: ...


class QgsProcessingModelGroupBox(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: typing.Optional[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) -> typing.Optional['QgsProcessingModelGroupBox']: ...


class QgsProcessingModelOutput(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, name: typing.Optional[str] = ..., description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelOutput') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> typing.Optional[QgsProcessingModelComment]: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setChildOutputName(self, name: typing.Optional[str]) -> None: ...
    def childOutputName(self) -> str: ...
    def setChildId(self, id: typing.Optional[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: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> typing.Optional['QgsProcessingModelOutput']: ...


class QgsProcessingModelParameter(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, parameterName: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelParameter') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> typing.Optional[QgsProcessingModelComment]: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setParameterName(self, name: typing.Optional[str]) -> None: ...
    def parameterName(self) -> str: ...
    def clone(self) -> typing.Optional['QgsProcessingModelParameter']: ...


class QgsProcessingModelChildAlgorithmResult(PyQt5.sip.wrapper):

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

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def setHtmlLog(self, log: typing.Optional[str]) -> None: ...
    def htmlLog(self) -> str: ...
    def setOutputs(self, outputs: typing.Dict[str, typing.Any]) -> None: ...
    def outputs(self) -> typing.Dict[str, typing.Any]: ...
    def setInputs(self, inputs: typing.Dict[str, typing.Any]) -> None: ...
    def inputs(self) -> typing.Dict[str, typing.Any]: ...
    def setExecutionStatus(self, status: Qgis.ProcessingModelChildAlgorithmExecutionStatus) -> None: ...
    def executionStatus(self) -> Qgis.ProcessingModelChildAlgorithmExecutionStatus: ...


class QgsProcessingModelResult(PyQt5.sip.wrapper):

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

    def executedChildIds(self) -> typing.Set[str]: ...
    def childResults(self) -> typing.Dict[str, QgsProcessingModelChildAlgorithmResult]: ...
    def mergeWith(self, other: 'QgsProcessingModelResult') -> None: ...
    def clear(self) -> None: ...


class QgsProcessing(PyQt5.sip.wrapper):

    class LayerOptionsFlag(int):
        SkipIndexGeneration = ... # type: QgsProcessing.LayerOptionsFlag

    class PythonOutputType(int):
        PythonQgsProcessingAlgorithmSubclass = ... # type: QgsProcessing.PythonOutputType

    class LayerOptionsFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __xor__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __ior__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __or__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __iand__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __and__(self, f: typing.Union['QgsProcessing.LayerOptionsFlags', 'QgsProcessing.LayerOptionsFlag']) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __invert__(self) -> 'QgsProcessing.LayerOptionsFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    TEMPORARY_OUTPUT = ... # type: typing.Optional[str]
    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def sourceTypeToString(type: Qgis.ProcessingSourceType) -> str: ...


class QgsProcessingFeatureBasedAlgorithm(QgsProcessingAlgorithm):

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

    def sinkProperties(self, sink: typing.Optional[str], parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[typing.Optional[str], QgsProcessingAlgorithm.VectorProperties]) -> QgsProcessingAlgorithm.VectorProperties: ...
    def prepareSource(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> None: ...
    def request(self) -> QgsFeatureRequest: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['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) -> Qgis.ProcessingFeatureSourceFlags: ...
    def outputLayerType(self) -> Qgis.ProcessingSourceType: ...
    def inputLayerTypes(self) -> typing.List[int]: ...
    def outputName(self) -> str: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def inputParameterDescription(self) -> str: ...
    def inputParameterName(self) -> str: ...
    def supportInPlaceEdit(self, layer: typing.Optional[QgsMapLayer]) -> bool: ...
    def processFeature(self, feature: QgsFeature, context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback']) -> typing.List[QgsFeature]: ...
    def flags(self) -> Qgis.ProcessingAlgorithmFlags: ...


class QgsProcessingAlgRunnerTask(QgsTask):

    def __init__(self, algorithm: typing.Optional[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: ...
    executed: typing.ClassVar[QtCore.pyqtSignal]
    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 pushFormattedResults(self, algorithm: typing.Optional[QgsProcessingAlgorithm], context: 'QgsProcessingContext', results: typing.Dict[str, typing.Any]) -> None: ...
    def pushVersionInfo(self, provider: typing.Optional['QgsProcessingProvider'] = ...) -> None: ...
    def pushConsoleInfo(self, info: typing.Optional[str]) -> None: ...
    def pushDebugInfo(self, info: typing.Optional[str]) -> None: ...
    def pushCommandInfo(self, info: typing.Optional[str]) -> None: ...
    def pushFormattedMessage(self, html: typing.Optional[str], text: typing.Optional[str]) -> None: ...
    def pushInfo(self, info: typing.Optional[str]) -> None: ...
    def pushWarning(self, warning: typing.Optional[str]) -> None: ...
    def reportError(self, error: typing.Optional[str], fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: typing.Optional[str]) -> None: ...


class QgsProcessingMultiStepFeedback(QgsProcessingFeedback):

    def __init__(self, steps: int, feedback: typing.Optional[QgsProcessingFeedback]) -> None: ...

    def textLog(self) -> str: ...
    def htmlLog(self) -> str: ...
    def pushFormattedMessage(self, html: typing.Optional[str], text: typing.Optional[str]) -> None: ...
    def pushConsoleInfo(self, info: typing.Optional[str]) -> None: ...
    def pushDebugInfo(self, info: typing.Optional[str]) -> None: ...
    def pushCommandInfo(self, info: typing.Optional[str]) -> None: ...
    def pushInfo(self, info: typing.Optional[str]) -> None: ...
    def pushWarning(self, warning: typing.Optional[str]) -> None: ...
    def reportError(self, error: typing.Optional[str], fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: typing.Optional[str]) -> None: ...
    def setCurrentStep(self, step: int) -> None: ...


class QgsProcessingBatchFeedback(QgsProcessingMultiStepFeedback):

    def __init__(self, tasks: int, feedback: typing.Optional[QgsProcessingFeedback]) -> None: ...

    def popErrors(self) -> typing.List[str]: ...
    def reportError(self, error: typing.Optional[str], fatalError: bool = ...) -> None: ...


class QgsProcessingContext(PyQt5.sip.wrapper):

    class ProcessArgumentFlag(int):
        IncludeProjectPath = ... # type: QgsProcessingContext.ProcessArgumentFlag

    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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> 'QgsProcessingContext.Flags': ...
        def __invert__(self) -> 'QgsProcessingContext.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class LayerDetails(PyQt5.sip.wrapper):

        forceName = ... # type: bool
        groupName = ... # type: typing.Optional[str]
        layerSortKey = ... # type: int
        layerTypeHint = ... # type: 'QgsProcessingUtils.LayerHint'
        name = ... # type: typing.Optional[str]
        outputName = ... # type: typing.Optional[str]
        project = ... # type: 'QgsProject'

        @typing.overload
        def __init__(self, name: typing.Optional[str], project: typing.Optional['QgsProject'], outputName: typing.Optional[str] = ..., layerTypeHint: 'QgsProcessingUtils.LayerHint' = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingContext.LayerDetails') -> None: ...

        def setOutputLayerName(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
        def setPostProcessor(self, processor: typing.Optional['QgsProcessingLayerPostProcessorInterface']) -> None: ...
        def postProcessor(self) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __xor__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __ior__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __or__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __iand__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __and__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __invert__(self) -> 'QgsProcessingContext.ProcessArgumentFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def modelResult(self) -> QgsProcessingModelResult: ...
    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: typing.Optional[str]) -> None: ...
    def temporaryFolder(self) -> str: ...
    def setLogLevel(self, level: Qgis.ProcessingLogLevel) -> None: ...
    def logLevel(self) -> Qgis.ProcessingLogLevel: ...
    def setPreferredRasterFormat(self, format: typing.Optional[str]) -> None: ...
    def preferredRasterFormat(self) -> str: ...
    def setPreferredVectorFormat(self, format: typing.Optional[str]) -> None: ...
    def preferredVectorFormat(self) -> str: ...
    def takeResultLayer(self, id: typing.Optional[str]) -> typing.Optional[QgsMapLayer]: ...
    def getMapLayer(self, identifier: typing.Optional[str]) -> typing.Optional[QgsMapLayer]: ...
    def takeResultsFrom(self, context: 'QgsProcessingContext') -> None: ...
    def pushToThread(self, thread: typing.Optional[QtCore.QThread]) -> None: ...
    def thread(self) -> typing.Optional[QtCore.QThread]: ...
    def setFeedback(self, feedback: typing.Optional[QgsProcessingFeedback]) -> None: ...
    def feedback(self) -> typing.Optional[QgsProcessingFeedback]: ...
    def setDefaultEncoding(self, encoding: typing.Optional[str]) -> None: ...
    def defaultEncoding(self) -> str: ...
    def setTransformErrorCallback(self, a0: typing.Optional[typing.Callable[..., None]]) -> None: ...
    def setInvalidGeometryCallback(self, a0: typing.Optional[typing.Callable[..., None]]) -> None: ...
    def setInvalidGeometryCheck(self, check: Qgis.InvalidGeometryCheck) -> None: ...
    def invalidGeometryCheck(self) -> Qgis.InvalidGeometryCheck: ...
    def layerToLoadOnCompletionDetails(self, layer: typing.Optional[str]) -> 'QgsProcessingContext.LayerDetails': ...
    def addLayerToLoadOnCompletion(self, layer: typing.Optional[str], details: 'QgsProcessingContext.LayerDetails') -> None: ...
    def setLayersToLoadOnCompletion(self, layers: typing.Dict[typing.Optional[str], 'QgsProcessingContext.LayerDetails']) -> None: ...
    def willLoadLayerOnCompletion(self, layer: typing.Optional[str]) -> bool: ...
    def layersToLoadOnCompletion(self) -> typing.Dict[str, 'QgsProcessingContext.LayerDetails']: ...
    def temporaryLayerStore(self) -> typing.Optional[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: typing.Optional[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: typing.Optional['QgsProject']) -> None: ...
    def project(self) -> typing.Optional['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: typing.Optional[QgsMapLayer], context: QgsProcessingContext, feedback: typing.Optional[QgsProcessingFeedback]) -> None: ...


class QgsProcessingOutputDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputDefinition') -> None: ...

    def valueAsFormattedString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def autoCreated(self) -> bool: ...
    def setAutoCreated(self, autoCreated: bool) -> None: ...
    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def type(self) -> str: ...


class QgsProcessingOutputMapLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingSourceType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVectorLayer') -> None: ...

    def setDataType(self, type: Qgis.ProcessingSourceType) -> None: ...
    def dataType(self) -> Qgis.ProcessingSourceType: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputRasterLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputMultipleLayers') -> None: ...

    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputHtml(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputHtml') -> None: ...

    def valueAsFormattedString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputVariant(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVariant') -> None: ...

    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputNumber(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputNumber') -> None: ...

    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputString(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputBoolean') -> None: ...

    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFolder(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFolder') -> None: ...

    def valueAsFormattedString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFile(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFile') -> None: ...

    def valueAsFormattedString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputConditionalBranch(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVectorTileLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., help: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDefinition') -> None: ...

    def defaultGuiValueFromSetting(self) -> typing.Any: ...
    def setAdditionalExpressionContextVariables(self, variables: typing.Iterable[typing.Optional[str]]) -> None: ...
    def additionalExpressionContextVariables(self) -> typing.List[str]: ...
    def setDynamicLayerParameterName(self, name: typing.Optional[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) -> typing.Optional['QgsProcessingProvider']: ...
    def algorithm(self) -> typing.Optional[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[Qgis.ProcessingParameterFlags, Qgis.ProcessingParameterFlag]) -> None: ...
    def flags(self) -> Qgis.ProcessingParameterFlags: ...
    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: typing.Optional[str]) -> None: ...
    def help(self) -> str: ...
    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def isDestination(self) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional['QgsProcessingParameterDefinition']: ...


class QgsProcessingParameterAggregate(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., parentLayerParameterName: typing.Optional[str] = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAggregate') -> None: ...

    def setParentLayerParameterName(self, name: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterDxfLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterFieldMapping(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., parentLayerParameterName: typing.Optional[str] = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFieldMapping') -> None: ...

    def setParentLayerParameterName(self, name: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterMeshDatasetGroups(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., meshLayerParameterName: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterMeshDatasetTime(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., meshLayerParameterName: typing.Optional[str] = ..., datasetGroupParameterName: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingFeatureSourceDefinition(PyQt5.sip.wrapper):

    featureLimit = ... # type: int
    filterExpression = ... # type: typing.Optional[str]
    flags = ... # type: typing.Union[Qgis.ProcessingFeatureSourceDefinitionFlags, Qgis.ProcessingFeatureSourceDefinitionFlag]
    geometryCheck = ... # type: Qgis.InvalidGeometryCheck
    selectedFeaturesOnly = ... # type: bool
    source = ... # type: QgsProperty

    @typing.overload
    def __init__(self, source: typing.Optional[str] = ..., selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union[Qgis.ProcessingFeatureSourceDefinitionFlags, Qgis.ProcessingFeatureSourceDefinitionFlag] = ..., geometryCheck: Qgis.InvalidGeometryCheck = ..., filterExpression: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsProperty, selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union[Qgis.ProcessingFeatureSourceDefinitionFlags, Qgis.ProcessingFeatureSourceDefinitionFlag] = ..., geometryCheck: Qgis.InvalidGeometryCheck = ..., filterExpression: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingFeatureSourceDefinition') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str]
    destinationProject = ... # type: 'QgsProject'
    sink = ... # type: QgsProperty

    @typing.overload
    def __init__(self, sink: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str]) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def descriptionFromName(name: typing.Optional[str]) -> str: ...
    @staticmethod
    def parameterFromVariantMap(map: typing.Dict[str, typing.Any]) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional[QgsAnnotationLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional[QgsAnnotationLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.Optional[QgsPointCloudLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.Optional[QgsPointCloudLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layout: typing.Optional[QgsPrintLayout]) -> typing.Optional[QgsLayoutItem]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, layout: typing.Optional[QgsPrintLayout]) -> typing.Optional[QgsLayoutItem]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional[QgsPrintLayout]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional[QgsPrintLayout]: ...
    @typing.overload
    @staticmethod
    def parameterAsStrings(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsStrings(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayerList(definition: typing.Optional[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: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def parameterAsExtentGeometry(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional[QgsMeshLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional[QgsMeshLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional[QgsVectorLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional[QgsVectorLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, testOnly: bool = ...) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional['QgsRasterLayer']: ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional['QgsRasterLayer']: ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.Optional[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.Optional[QgsMapLayer]: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPathAndLayerName(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str] = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> typing.Tuple[str, typing.Optional[str]]: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPath(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str] = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.Optional['QgsProcessingFeatureSource']: ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.Optional['QgsProcessingFeatureSource']: ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: typing.Optional[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[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional[QgsFeatureSink], str]: ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: typing.Optional[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[typing.Optional[str]] = ..., layerOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional[QgsFeatureSink], str]: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: typing.Optional[QgsProcessingParameterDefinition], parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: typing.Optional[QgsProcessingParameterDefinition], value: typing.Any, context: QgsProcessingContext) -> str: ...
    @staticmethod
    def isDynamic(parameters: typing.Dict[str, typing.Any], name: typing.Optional[str]) -> bool: ...


class QgsProcessingParameterBoolean(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterBoolean') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterBoolean']: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCrs(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterCrs') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExtent(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExtent') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPoint(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPoint') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterGeometry(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFile(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., behavior: Qgis.ProcessingFileParameterBehavior = ..., extension: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., fileFilter: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFile') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str], behavior: Qgis.ProcessingFileParameterBehavior = ...) -> typing.Optional['QgsProcessingParameterFile']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: typing.Optional[str]) -> None: ...
    def fileFilter(self) -> str: ...
    def setExtension(self, extension: typing.Optional[str]) -> None: ...
    def extension(self) -> str: ...
    def setBehavior(self, behavior: Qgis.ProcessingFileParameterBehavior) -> None: ...
    def behavior(self) -> Qgis.ProcessingFileParameterBehavior: ...
    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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMatrix(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., numberRows: int = ..., hasFixedNumberRows: bool = ..., headers: typing.Iterable[typing.Optional[str]] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMatrix') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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[typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMultipleLayers(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., layerType: Qgis.ProcessingSourceType = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMultipleLayers') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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: Qgis.ProcessingSourceType) -> None: ...
    def layerType(self) -> Qgis.ProcessingSourceType: ...
    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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterNumber(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingNumberParameterType = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterNumber') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterNumber']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: Qgis.ProcessingNumberParameterType) -> None: ...
    def dataType(self) -> Qgis.ProcessingNumberParameterType: ...
    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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDistance(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentParameterName: typing.Optional[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: typing.Optional[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) -> typing.Optional['QgsProcessingParameterDistance']: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDuration(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional['QgsProcessingParameterDuration']: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterScale(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterScale') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterScale']: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional['QgsProcessingParameterScale']: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRange(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingNumberParameterType = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRange') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterRange']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, dataType: Qgis.ProcessingNumberParameterType) -> None: ...
    def dataType(self) -> Qgis.ProcessingNumberParameterType: ...
    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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterEnum(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., options: typing.Iterable[typing.Optional[str]] = ..., allowMultiple: bool = ..., defaultValue: typing.Any = ..., optional: bool = ..., usesStaticStrings: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterEnum') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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[typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterString(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., multiLine: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterString') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAuthConfig(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAuthConfig') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterAuthConfig']: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExpression(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentLayerParameterName: typing.Optional[str] = ..., optional: bool = ..., type: Qgis.ExpressionType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExpression') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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: typing.Optional[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) -> typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMeshLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapLayer(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., types: typing.Iterable[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterField(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentLayerParameterName: typing.Optional[str] = ..., type: Qgis.ProcessingFieldParameterDataType = ..., allowMultiple: bool = ..., optional: bool = ..., defaultToAllFields: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterField') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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: Qgis.ProcessingFieldParameterDataType) -> None: ...
    def dataType(self) -> Qgis.ProcessingFieldParameterDataType: ...
    def setParentLayerParameterName(self, parentLayerParameterName: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFeatureSource(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSource') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingDestinationParameter(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingDestinationParameter') -> None: ...

    def originalProvider(self) -> typing.Optional['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) -> typing.Optional[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: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingSourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ..., supportsAppend: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSink') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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: Qgis.ProcessingSourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> Qgis.ProcessingSourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterVectorDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingSourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterVectorDestination']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: Qgis.ProcessingSourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> Qgis.ProcessingSourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterRasterDestination']: ...
    def supportedOutputRasterLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFileDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., fileFilter: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFileDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterFileDestination']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: typing.Optional[str]) -> None: ...
    def fileFilter(self) -> str: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFolderDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFolderDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterFolderDestination']: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[QgsProcessingOutputDefinition]: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterBand(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentLayerParameterName: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterBand']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setParentLayerParameterName(self, parentLayerParameterName: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayout(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLayout') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayoutItem(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentLayoutParameterName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def parentLayoutParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterColor(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., opacityEnabled: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterColor') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCoordinateOperation(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., sourceCrsParameterName: typing.Optional[str] = ..., destinationCrsParameterName: typing.Optional[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: typing.Optional[str]) -> None: ...
    def destinationCrsParameterName(self) -> str: ...
    def setSourceCrsParameterName(self, name: typing.Optional[str]) -> None: ...
    def sourceCrsParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapTheme(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapTheme') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDateTime(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., type: Qgis.ProcessingDateTimeParameterDataType = ..., 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: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterDateTime']: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: Qgis.ProcessingDateTimeParameterDataType) -> None: ...
    def dataType(self) -> Qgis.ProcessingDateTimeParameterDataType: ...
    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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterProviderConnection(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], provider: typing.Optional[str], defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterProviderConnection') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterProviderConnection']: ...
    def setProviderId(self, provider: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseSchema(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], connectionParameterName: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDatabaseSchema') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterDatabaseSchema']: ...
    def setParentConnectionParameterName(self, name: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseTable(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], connectionParameterName: typing.Optional[str] = ..., schemaParameterName: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterDatabaseTable']: ...
    def setParentSchemaParameterName(self, name: typing.Optional[str]) -> None: ...
    def parentSchemaParameterName(self) -> str: ...
    def setParentConnectionParameterName(self, name: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAnnotationLayer(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAnnotationLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterPointCloudDestination']: ...
    def supportedOutputPointCloudLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudAttribute(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., parentLayerParameterName: typing.Optional[str] = ..., allowMultiple: bool = ..., optional: bool = ..., defaultToAllAttributes: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudAttribute') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['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: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterVectorTileDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorTileDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: typing.Optional[str], description: typing.Optional[str], isOptional: bool, definition: typing.Optional[str]) -> typing.Optional['QgsProcessingParameterVectorTileDestination']: ...
    def supportedOutputVectorTileLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterTinInputLayers(QgsProcessingParameterDefinition):

    class InputLayer(PyQt5.sip.wrapper):

        attributeIndex = ... # type: int
        source = ... # type: typing.Optional[str]
        type = ... # type: Qgis.ProcessingTinInputLayerType

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

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterType(PyQt5.sip.wrapper):

    @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) -> Qgis.ProcessingParameterTypeFlags: ...
    def id(self) -> str: ...
    def className(self) -> str: ...
    def pythonImportString(self) -> str: ...
    def name(self) -> str: ...
    def description(self) -> str: ...
    def create(self, name: typing.Optional[str]) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterVectorTileWriterLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingParameterAlignRasterLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAlignRasterLayers') -> None: ...

    @staticmethod
    def itemAsVariantMap(item: QgsAlignRasterData.RasterItem) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantMapAsItem(layerVariantMap: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsAlignRasterData.RasterItem: ...
    @staticmethod
    def parameterAsItems(layersVariant: typing.Any, context: QgsProcessingContext) -> typing.List[QgsAlignRasterData.RasterItem]: ...
    @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) -> typing.Optional[QgsProcessingParameterDefinition]: ...


class QgsProcessingProvider(QtCore.QObject):

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

    def addAlgorithm(self, algorithm: typing.Optional[QgsProcessingAlgorithm]) -> bool: ...
    def loadAlgorithms(self) -> None: ...
    algorithmsLoaded: typing.ClassVar[QtCore.pyqtSignal]
    def algorithm(self, name: typing.Optional[str]) -> typing.Optional[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: typing.Optional[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) -> Qgis.ProcessingProviderFlags: ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...


class QgsProcessingAlgorithmInformation(PyQt5.sip.wrapper):

    displayName = ... # type: typing.Optional[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: ...

    parameterTypeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    parameterTypeAdded: typing.ClassVar[QtCore.pyqtSignal]
    providerRemoved: typing.ClassVar[QtCore.pyqtSignal]
    providerAdded: typing.ClassVar[QtCore.pyqtSignal]
    def parameterTypes(self) -> typing.List[QgsProcessingParameterType]: ...
    def parameterType(self, id: typing.Optional[str]) -> typing.Optional[QgsProcessingParameterType]: ...
    def removeParameterType(self, type: typing.Optional[QgsProcessingParameterType]) -> None: ...
    def addParameterType(self, type: typing.Optional[QgsProcessingParameterType]) -> bool: ...
    def addAlgorithmAlias(self, aliasId: typing.Optional[str], actualId: typing.Optional[str]) -> None: ...
    def createAlgorithmById(self, id: typing.Optional[str], configuration: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsProcessingAlgorithm]: ...
    def algorithmById(self, id: typing.Optional[str]) -> typing.Optional[QgsProcessingAlgorithm]: ...
    def algorithmInformation(self, id: typing.Optional[str]) -> QgsProcessingAlgorithmInformation: ...
    def algorithms(self) -> typing.List[QgsProcessingAlgorithm]: ...
    def providerById(self, id: typing.Optional[str]) -> typing.Optional[QgsProcessingProvider]: ...
    @typing.overload
    def removeProvider(self, provider: typing.Optional[QgsProcessingProvider]) -> bool: ...
    @typing.overload
    def removeProvider(self, providerId: typing.Optional[str]) -> bool: ...
    def addProvider(self, provider: typing.Optional[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
        TiledScene = ... # type: QgsProcessingUtils.LayerHint

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def resolveDefaultEncoding(defaultEncoding: typing.Optional[str] = ...) -> str: ...
    @staticmethod
    def preprocessQgisProcessParameters(parameters: typing.Dict[str, typing.Any], error: typing.Optional[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[typing.Optional[str]], fields: QgsFields) -> typing.List[int]: ...
    @staticmethod
    def combineFields(fieldsA: QgsFields, fieldsB: QgsFields, fieldsBPrefix: typing.Optional[str] = ...) -> QgsFields: ...
    @staticmethod
    def convertToCompatibleFormatAndLayerName(layer: typing.Optional[QgsVectorLayer], selectedFeaturesOnly: bool, baseName: typing.Optional[str], compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str], context: QgsProcessingContext, feedback: typing.Optional[QgsProcessingFeedback], featureLimit: int = ..., filterExpression: typing.Optional[str] = ...) -> typing.Tuple[str, str]: ...
    @staticmethod
    def convertToCompatibleFormat(layer: typing.Optional[QgsVectorLayer], selectedFeaturesOnly: bool, baseName: typing.Optional[str], compatibleFormats: typing.Iterable[typing.Optional[str]], preferredFormat: typing.Optional[str], context: QgsProcessingContext, feedback: typing.Optional[QgsProcessingFeedback], featureLimit: int = ..., filterExpression: typing.Optional[str] = ...) -> str: ...
    @staticmethod
    def formatHelpMapAsHtml(map: typing.Dict[str, typing.Any], algorithm: typing.Optional[QgsProcessingAlgorithm]) -> str: ...
    @staticmethod
    def generateTempFilename(basename: typing.Optional[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: typing.Optional[str], context: QgsProcessingContext, fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, createOptions: typing.Dict[str, typing.Any] = ...) -> typing.Tuple[typing.Optional[QgsFeatureSink], str]: ...
    @staticmethod
    def stringToPythonLiteral(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def variantToPythonLiteral(value: typing.Any) -> str: ...
    @staticmethod
    def layerToStringIdentifier(layer: typing.Optional[QgsMapLayer]) -> str: ...
    @staticmethod
    def normalizeLayerSource(source: typing.Optional[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 = ...) -> typing.Optional['QgsProcessingFeatureSource']: ...
    @staticmethod
    def mapLayerFromString(string: typing.Optional[str], context: QgsProcessingContext, allowLoadingNewLayers: bool = ..., typeHint: 'QgsProcessingUtils.LayerHint' = ..., flags: typing.Union[QgsProcessing.LayerOptionsFlags, QgsProcessing.LayerOptionsFlag] = ...) -> typing.Optional[QgsMapLayer]: ...
    @staticmethod
    def decodeProviderKeyAndUri(string: typing.Optional[str]) -> typing.Tuple[bool, str, str]: ...
    @staticmethod
    def encodeProviderKeyAndUri(providerKey: typing.Optional[str], uri: typing.Optional[str]) -> str: ...
    @staticmethod
    def compatibleLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def compatibleTiledSceneLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List['QgsTiledSceneLayer']: ...
    @staticmethod
    def compatibleVectorTileLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List['QgsVectorTileLayer']: ...
    @staticmethod
    def compatibleAnnotationLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List[QgsAnnotationLayer]: ...
    @staticmethod
    def compatiblePointCloudLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List[QgsPointCloudLayer]: ...
    @staticmethod
    def compatiblePluginLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List[QgsPluginLayer]: ...
    @staticmethod
    def compatibleMeshLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List[QgsMeshLayer]: ...
    @staticmethod
    def compatibleVectorLayers(project: typing.Optional['QgsProject'], sourceTypes: typing.Iterable[int] = ..., sort: bool = ...) -> typing.List[QgsVectorLayer]: ...
    @staticmethod
    def compatibleRasterLayers(project: typing.Optional['QgsProject'], sort: bool = ...) -> typing.List['QgsRasterLayer']: ...


class QgsProcessingFeatureSource(QgsFeatureSource):

    @typing.overload
    def __init__(self, originalSource: typing.Optional[QgsFeatureSource], context: QgsProcessingContext, ownsOriginalSource: bool = ..., featureLimit: int = ..., filterExpression: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingFeatureSource') -> None: ...

    def invalidGeometryCheck(self) -> Qgis.InvalidGeometryCheck: ...
    def setInvalidGeometryCheck(self, method: Qgis.InvalidGeometryCheck) -> None: ...
    def createExpressionContextScope(self) -> typing.Optional[QgsExpressionContextScope]: ...
    def hasSpatialIndex(self) -> Qgis.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) -> Qgis.FeatureAvailability: ...
    @typing.overload
    def getFeatures(self, request: QgsFeatureRequest, flags: typing.Union[Qgis.ProcessingFeatureSourceFlags, Qgis.ProcessingFeatureSourceFlag]) -> 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: typing.Optional[str], sourceText: typing.Optional[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: typing.Optional[QgsTranslationContext]) -> None: ...
    def registerTranslatableContainers(self, translationContext: typing.Optional[QgsTranslationContext], parent: typing.Optional[QgsAttributeEditorContainer], layerId: typing.Optional[str]) -> None: ...
    def setPresetHomePath(self, path: typing.Optional[str]) -> None: ...
    def setDirty(self, b: bool = ...) -> None: ...
    def setSnappingConfig(self, snappingConfig: QgsSnappingConfig) -> None: ...
    elevationShadingRendererChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapScalesChanged: typing.ClassVar[QtCore.pyqtSignal]
    dirtySet: typing.ClassVar[QtCore.pyqtSignal]
    isDirtyChanged: typing.ClassVar[QtCore.pyqtSignal]
    legendLayersAdded: typing.ClassVar[QtCore.pyqtSignal]
    layerWasAdded: typing.ClassVar[QtCore.pyqtSignal]
    layersAdded: typing.ClassVar[QtCore.pyqtSignal]
    removeAll: typing.ClassVar[QtCore.pyqtSignal]
    layerRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layersRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layerWillBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    layersWillBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    selectionColorChanged: typing.ClassVar[QtCore.pyqtSignal]
    backgroundColorChanged: typing.ClassVar[QtCore.pyqtSignal]
    projectColorsChanged: typing.ClassVar[QtCore.pyqtSignal]
    metadataChanged: typing.ClassVar[QtCore.pyqtSignal]
    labelingEngineSettingsChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapThemeCollectionChanged: typing.ClassVar[QtCore.pyqtSignal]
    avoidIntersectionsLayersChanged: typing.ClassVar[QtCore.pyqtSignal]
    topologicalEditingChanged: typing.ClassVar[QtCore.pyqtSignal]
    transactionGroupsChanged: typing.ClassVar[QtCore.pyqtSignal]
    transactionModeChanged: typing.ClassVar[QtCore.pyqtSignal]
    missingDatumTransforms: typing.ClassVar[QtCore.pyqtSignal]
    transformContextChanged: typing.ClassVar[QtCore.pyqtSignal]
    areaUnitsChanged: typing.ClassVar[QtCore.pyqtSignal]
    distanceUnitsChanged: typing.ClassVar[QtCore.pyqtSignal]
    ellipsoidChanged: typing.ClassVar[QtCore.pyqtSignal]
    verticalCrsChanged: typing.ClassVar[QtCore.pyqtSignal]
    crs3DChanged: typing.ClassVar[QtCore.pyqtSignal]
    crsChanged: typing.ClassVar[QtCore.pyqtSignal]
    customVariablesChanged: typing.ClassVar[QtCore.pyqtSignal]
    avoidIntersectionsModeChanged: typing.ClassVar[QtCore.pyqtSignal]
    snappingConfigChanged: typing.ClassVar[QtCore.pyqtSignal]
    homePathChanged: typing.ClassVar[QtCore.pyqtSignal]
    fileNameChanged: typing.ClassVar[QtCore.pyqtSignal]
    nonIdentifiableLayersChanged: typing.ClassVar[QtCore.pyqtSignal]
    loadingLayerMessageReceived: typing.ClassVar[QtCore.pyqtSignal]
    loadingLayer: typing.ClassVar[QtCore.pyqtSignal]
    layerLoaded: typing.ClassVar[QtCore.pyqtSignal]
    readVersionMismatchOccurred: typing.ClassVar[QtCore.pyqtSignal]
    oldProjectVersionWarning: typing.ClassVar[QtCore.pyqtSignal]
    projectSaved: typing.ClassVar[QtCore.pyqtSignal]
    writeMapLayer: typing.ClassVar[QtCore.pyqtSignal]
    readMapLayer: typing.ClassVar[QtCore.pyqtSignal]
    writeProject: typing.ClassVar[QtCore.pyqtSignal]
    readProjectWithContext: typing.ClassVar[QtCore.pyqtSignal]
    readProject: typing.ClassVar[QtCore.pyqtSignal]
    aboutToBeCleared: typing.ClassVar[QtCore.pyqtSignal]
    cleared: typing.ClassVar[QtCore.pyqtSignal]
    def __repr__(self) -> typing.Any: ...
    def setElevationShadingRenderer(self, elevationShadingRenderer: QgsElevationShadingRenderer) -> None: ...
    def elevationShadingRenderer(self) -> QgsElevationShadingRenderer: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def translate(self, context: typing.Optional[str], sourceText: typing.Optional[str], disambiguation: typing.Optional[str] = ..., n: int = ...) -> str: ...
    def generateTsFile(self, locale: typing.Optional[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], typing.Optional[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: typing.Optional[str]) -> str: ...
    def attachmentIdentifier(self, attachedFile: typing.Optional[str]) -> str: ...
    def removeAttachedFile(self, path: typing.Optional[str]) -> bool: ...
    def attachedFiles(self) -> typing.List[str]: ...
    def createAttachedFile(self, nameTemplate: typing.Optional[str]) -> str: ...
    def auxiliaryStorage(self) -> typing.Optional[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) -> typing.Optional[QgsAnnotationLayer]: ...
    def takeMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> typing.Optional[QgsMapLayer]: ...
    @typing.overload
    def removeMapLayer(self, layerId: typing.Optional[str]) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: typing.Optional[QgsMapLayer]) -> None: ...
    @typing.overload
    def removeMapLayers(self, layerIds: typing.Iterable[typing.Optional[str]]) -> None: ...
    @typing.overload
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addMapLayer(self, mapLayer: typing.Optional[QgsMapLayer], addToLegend: bool = ...) -> typing.Optional[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: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    def mapLayersByName(self, layerName: typing.Optional[str]) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, layerId: typing.Optional[str]) -> typing.Optional[QgsMapLayer]: ...
    def validCount(self) -> int: ...
    def count(self) -> int: ...
    def layerStore(self) -> typing.Optional[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) -> typing.Optional[QgsExpressionContextScope]: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def setEvaluateDefaultValues(self, evaluateDefaultValues: bool) -> None: ...
    def evaluateDefaultValues(self) -> bool: ...
    def editBufferGroup(self) -> typing.Optional['QgsVectorLayerEditBufferGroup']: ...
    def transactionGroup(self, providerKey: typing.Optional[str], connString: typing.Optional[str]) -> typing.Optional[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[typing.Optional[str]]) -> None: ...
    def annotationManager(self) -> typing.Optional[QgsAnnotationManager]: ...
    def mapThemeCollection(self) -> typing.Optional[QgsMapThemeCollection]: ...
    def layerTreeRegistryBridge(self) -> typing.Optional[QgsLayerTreeRegistryBridge]: ...
    def layerTreeRoot(self) -> typing.Optional[QgsLayerTree]: ...
    def gpsSettings(self) -> typing.Optional['QgsProjectGpsSettings']: ...
    def displaySettings(self) -> typing.Optional['QgsProjectDisplaySettings']: ...
    def elevationProperties(self) -> typing.Optional['QgsProjectElevationProperties']: ...
    def timeSettings(self) -> typing.Optional['QgsProjectTimeSettings']: ...
    def styleSettings(self) -> typing.Optional['QgsProjectStyleSettings']: ...
    def viewSettings(self) -> typing.Optional['QgsProjectViewSettings']: ...
    def sensorManager(self) -> typing.Optional['QgsSensorManager']: ...
    def bookmarkManager(self) -> typing.Optional[QgsBookmarkManager]: ...
    def viewsManager(self) -> typing.Optional['QgsMapViewsManager']: ...
    def layoutManager(self) -> typing.Optional[QgsLayoutManager]: ...
    def relationManager(self) -> typing.Optional[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: typing.Optional[str], projectFilePath: typing.Optional[str], invisibleLayers: typing.Iterable[typing.Optional[str]], flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> typing.Optional[QgsLayerTreeGroup]: ...
    def layerIsEmbedded(self, id: typing.Optional[str]) -> str: ...
    def setBadLayerHandler(self, handler: typing.Optional['QgsProjectBadLayerHandler']) -> None: ...
    def error(self) -> str: ...
    def readPath(self, filename: typing.Optional[str]) -> str: ...
    def writePath(self, filename: typing.Optional[str]) -> str: ...
    def pathResolver(self) -> QgsPathResolver: ...
    def dumpProperties(self) -> None: ...
    def subkeyList(self, scope: typing.Optional[str], key: typing.Optional[str]) -> typing.List[str]: ...
    def entryList(self, scope: typing.Optional[str], key: typing.Optional[str]) -> typing.List[str]: ...
    def removeEntry(self, scope: typing.Optional[str], key: typing.Optional[str]) -> bool: ...
    def readBoolEntry(self, scope: typing.Optional[str], key: typing.Optional[str], def_: bool = ...) -> typing.Tuple[bool, typing.Optional[bool]]: ...
    def readDoubleEntry(self, scope: typing.Optional[str], key: typing.Optional[str], def_: float = ...) -> typing.Tuple[float, typing.Optional[bool]]: ...
    def readNumEntry(self, scope: typing.Optional[str], key: typing.Optional[str], def_: int = ...) -> typing.Tuple[int, typing.Optional[bool]]: ...
    def readEntry(self, scope: typing.Optional[str], key: typing.Optional[str], def_: typing.Optional[str] = ...) -> typing.Tuple[str, typing.Optional[bool]]: ...
    def readListEntry(self, scope: typing.Optional[str], key: typing.Optional[str], def_: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.List[str], typing.Optional[bool]]: ...
    @typing.overload
    def writeEntry(self, scope: typing.Optional[str], key: typing.Optional[str], value: int) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: typing.Optional[str], key: typing.Optional[str], value: typing.Optional[str]) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: typing.Optional[str], key: typing.Optional[str], value: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def writeEntryDouble(self, scope: typing.Optional[str], key: typing.Optional[str], value: float) -> bool: ...
    def writeEntryBool(self, scope: typing.Optional[str], key: typing.Optional[str], value: bool) -> bool: ...
    @typing.overload
    def write(self, filename: typing.Optional[str]) -> bool: ...
    @typing.overload
    def write(self) -> bool: ...
    def readLayer(self, layerNode: QtXml.QDomNode) -> bool: ...
    @typing.overload
    def read(self, filename: typing.Optional[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 setVerticalCrs(self, crs: QgsCoordinateReferenceSystem) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def verticalCrs(self) -> QgsCoordinateReferenceSystem: ...
    def setEllipsoid(self, ellipsoid: typing.Optional[str]) -> None: ...
    def ellipsoid(self) -> str: ...
    def setCrs(self, crs: QgsCoordinateReferenceSystem, adjustEllipsoid: bool = ...) -> None: ...
    def crs3D(self) -> QgsCoordinateReferenceSystem: ...
    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) -> typing.Optional['QgsProjectStorage']: ...
    def fileInfo(self) -> QtCore.QFileInfo: ...
    def originalPath(self) -> str: ...
    def setOriginalPath(self, path: typing.Optional[str]) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, name: typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def setInstance(project: typing.Optional['QgsProject']) -> None: ...
    @staticmethod
    def instance() -> typing.Optional['QgsProject']: ...


class QgsProjectDirtyBlocker(PyQt5.sip.wrapper):

    def __init__(self, project: typing.Optional[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: typing.Optional[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: ...

    coordinateCrsChanged: typing.ClassVar[QtCore.pyqtSignal]
    coordinateCustomCrsChanged: typing.ClassVar[QtCore.pyqtSignal]
    coordinateAxisOrderChanged: typing.ClassVar[QtCore.pyqtSignal]
    coordinateTypeChanged: typing.ClassVar[QtCore.pyqtSignal]
    geographicCoordinateFormatChanged: typing.ClassVar[QtCore.pyqtSignal]
    bearingFormatChanged: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional[QgsGeographicCoordinateNumericFormat]: ...
    def setGeographicCoordinateFormat(self, format: typing.Optional[QgsGeographicCoordinateNumericFormat]) -> None: ...
    def bearingFormat(self) -> typing.Optional[QgsBearingNumericFormat]: ...
    def setBearingFormat(self, format: typing.Optional[QgsBearingNumericFormat]) -> None: ...
    def reset(self) -> None: ...


class QgsProjectElevationProperties(QtCore.QObject):

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

    elevationRangeChanged: typing.ClassVar[QtCore.pyqtSignal]
    changed: typing.ClassVar[QtCore.pyqtSignal]
    def setInvertElevationFilter(self, invert: bool) -> None: ...
    def setElevationFilterRangeSize(self, size: float) -> None: ...
    def setElevationRange(self, range: QgsDoubleRange) -> None: ...
    def invertElevationFilter(self) -> bool: ...
    def elevationFilterRangeSize(self) -> float: ...
    def elevationRange(self) -> QgsDoubleRange: ...
    def setTerrainProvider(self, provider: typing.Optional[QgsAbstractTerrainProvider]) -> None: ...
    def terrainProvider(self) -> typing.Optional[QgsAbstractTerrainProvider]: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: typing.Optional[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: typing.Optional['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: ...

    destinationTimeStampFieldChanged: typing.ClassVar[QtCore.pyqtSignal]
    destinationLayerChanged: typing.ClassVar[QtCore.pyqtSignal]
    destinationFollowsActiveLayerChanged: typing.ClassVar[QtCore.pyqtSignal]
    automaticallyCommitFeaturesChanged: typing.ClassVar[QtCore.pyqtSignal]
    automaticallyAddTrackVerticesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setDestinationTimeStampField(self, layer: typing.Optional[QgsVectorLayer], field: typing.Optional[str]) -> None: ...
    def setDestinationLayer(self, layer: typing.Optional[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) -> typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectPropertyKey') -> None: ...

    def find(self, propertyName: typing.Optional[str]) -> typing.Optional[QgsProjectProperty]: ...
    def clearKeys(self) -> None: ...
    def clear(self) -> None: ...
    def subkeyList(self, entries: typing.Iterable[typing.Optional[str]]) -> None: ...
    def entryList(self, entries: typing.Iterable[typing.Optional[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: typing.Optional[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: typing.Optional[str], value: typing.Any) -> typing.Optional[QgsProjectPropertyValue]: ...
    @typing.overload
    def setValue(self, value: typing.Any) -> typing.Optional[QgsProjectPropertyValue]: ...
    def removeKey(self, keyName: typing.Optional[str]) -> None: ...
    def addKey(self, keyName: typing.Optional[str]) -> typing.Optional['QgsProjectPropertyKey']: ...
    def value(self) -> typing.Any: ...
    def setName(self, name: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> str: ...
    def readProjectStorageMetadata(self, uri: typing.Optional[str]) -> typing.Tuple[bool, 'QgsProjectStorage.Metadata']: ...
    def renameProject(self, uri: typing.Optional[str], uriNew: typing.Optional[str]) -> bool: ...
    def removeProject(self, uri: typing.Optional[str]) -> bool: ...
    def writeProject(self, uri: typing.Optional[str], device: typing.Optional[QtCore.QIODevice], context: QgsReadWriteContext) -> bool: ...
    def readProject(self, uri: typing.Optional[str], device: typing.Optional[QtCore.QIODevice], context: QgsReadWriteContext) -> bool: ...
    def listProjects(self, uri: typing.Optional[str]) -> typing.List[str]: ...
    def isSupportedUri(self, uri: typing.Optional[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: typing.Optional[QgsProjectStorage]) -> None: ...
    def registerProjectStorage(self, storage: typing.Optional[QgsProjectStorage]) -> None: ...
    def projectStorages(self) -> typing.List[QgsProjectStorage]: ...
    def projectStorageFromUri(self, uri: typing.Optional[str]) -> typing.Optional[QgsProjectStorage]: ...
    def projectStorageFromType(self, type: typing.Optional[str]) -> typing.Optional[QgsProjectStorage]: ...


class QgsProjectStyleSettings(QtCore.QObject):

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

    styleDatabasesChanged: typing.ClassVar[QtCore.pyqtSignal]
    def combinedStyleModel(self) -> typing.Optional['QgsCombinedStyleModel']: ...
    def setStyleDatabasePaths(self, paths: typing.Iterable[typing.Optional[str]]) -> None: ...
    def addStyleDatabasePath(self, path: typing.Optional[str]) -> None: ...
    def styleAtPath(self, path: typing.Optional[str]) -> typing.Optional['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) -> typing.Optional['QgsStyle']: ...
    def setProjectStyle(self, style: typing.Optional['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: typing.Optional[QgsColorRamp]) -> None: ...
    def defaultColorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def setDefaultSymbol(self, symbolType: Qgis.SymbolType, symbol: typing.Optional['QgsSymbol']) -> None: ...
    def defaultSymbol(self, symbolType: Qgis.SymbolType) -> typing.Optional['QgsSymbol']: ...


class QgsProjectStyleDatabaseModel(QtCore.QAbstractListModel):

    class CustomRole(int):
        Style = ... # type: QgsProjectStyleDatabaseModel.CustomRole
        Path = ... # type: QgsProjectStyleDatabaseModel.CustomRole

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

    def showDefaultStyle(self) -> bool: ...
    def setShowDefaultStyle(self, show: bool) -> None: ...
    def indexFromStyle(self, style: typing.Optional['QgsStyle']) -> QtCore.QModelIndex: ...
    def styleFromIndex(self, index: QtCore.QModelIndex) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __xor__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __ior__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __or__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __iand__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __and__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __invert__(self) -> 'QgsProjectStyleDatabaseProxyModel.Filters': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, model: typing.Optional[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: ...

    temporalRangeChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setTotalMovieFrames(self, frames: int) -> None: ...
    def totalMovieFrames(self) -> int: ...
    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: typing.Optional[QgsProject], layer: typing.Optional[QgsMapLayer]) -> bool: ...
    @staticmethod
    def updateLayerPath(project: typing.Optional[QgsProject], oldPath: typing.Optional[str], newPath: typing.Optional[str]) -> bool: ...
    @staticmethod
    def layersMatchingPath(project: typing.Optional[QgsProject], path: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, string: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectVersion') -> None: ...

    def __le__(self, other: 'QgsProjectVersion') -> bool: ...
    def __lt__(self, other: 'QgsProjectVersion') -> bool: ...
    def __gt__(self, other: 'QgsProjectVersion') -> bool: ...
    def __ge__(self, other: 'QgsProjectVersion') -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: ...

    presetFullExtentChanged: typing.ClassVar[QtCore.pyqtSignal]
    mapScalesChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[QgsProject]) -> None: ...

    views3DListChanged: typing.ClassVar[QtCore.pyqtSignal]
    def rename3DView(self, oldTitle: typing.Optional[str], newTitle: typing.Optional[str]) -> None: ...
    def remove3DView(self, name: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, uri: typing.Optional[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: typing.Optional[str]) -> None: ...
    def uri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def remove(self, name: typing.Optional[str]) -> None: ...
    def store(self, name: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __xor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __ior__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __or__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __iand__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def __and__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        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) -> typing.Optional['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: typing.Optional[str]
        geometryColumn = ... # type: typing.Optional[str]
        layerName = ... # type: typing.Optional[str]
        primaryKeyColumns = ... # type: typing.Iterable[typing.Optional[str]]
        sql = ... # type: typing.Optional[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 __ne__(self, other: object): ...
            def __eq__(self, other: object): ...
            def __repr__(self) -> typing.Any: ...

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

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        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: typing.Optional[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[typing.Optional[str]]) -> None: ...
        def primaryKeyColumns(self) -> typing.List[str]: ...
        def setGeometryColumn(self, geometryColumn: typing.Optional[str]) -> None: ...
        def geometryColumn(self) -> str: ...
        def setSchema(self, schema: typing.Optional[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: typing.Optional[str]) -> None: ...
        def tableName(self) -> str: ...
        def __repr__(self) -> typing.Any: ...

    class SpatialIndexOptions(PyQt5.sip.wrapper):

        geometryColumnName = ... # type: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __xor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __ior__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __or__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __iand__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        def __and__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> 'QgsAbstractDatabaseProviderConnection.Capabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __xor__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __ior__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __or__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __iand__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __and__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities', 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapability']) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __invert__(self) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, uri: typing.Optional[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: typing.Optional[str] = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsLayerMetadataProviderResult]: ...
    def queryBuilder(self) -> typing.Optional['QgsProviderSqlQueryBuilder']: ...
    def deleteRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def updateRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def addRelationship(self, relationship: QgsWeakRelation) -> None: ...
    def relationships(self, schema: typing.Optional[str] = ..., tableName: typing.Optional[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: typing.Optional[str], schema: typing.Optional[str], tableName: typing.Optional[str], comment: typing.Optional[str]) -> None: ...
    def setFieldAlias(self, fieldName: typing.Optional[str], schema: typing.Optional[str], tableName: typing.Optional[str], alias: typing.Optional[str]) -> None: ...
    def addFieldDomain(self, domain: 'QgsFieldDomain', schema: typing.Optional[str]) -> None: ...
    def setFieldDomainName(self, fieldName: typing.Optional[str], schema: typing.Optional[str], tableName: typing.Optional[str], domainName: typing.Optional[str]) -> None: ...
    def fieldDomain(self, name: typing.Optional[str]) -> typing.Optional['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: typing.Optional[str], table: typing.Optional[str], feedback: typing.Optional[QgsFeedback] = ...) -> QgsFields: ...
    def schemas(self) -> typing.List[str]: ...
    def tables(self, schema: typing.Optional[str] = ..., flags: int = ...) -> typing.List['QgsAbstractDatabaseProviderConnection.TableProperty']: ...
    def table(self, schema: typing.Optional[str], table: typing.Optional[str], feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
    def deleteSpatialIndex(self, schema: typing.Optional[str], name: typing.Optional[str], geometryColumn: typing.Optional[str]) -> None: ...
    def spatialIndexExists(self, schema: typing.Optional[str], name: typing.Optional[str], geometryColumn: typing.Optional[str]) -> bool: ...
    def createSpatialIndex(self, schema: typing.Optional[str], name: typing.Optional[str], options: 'QgsAbstractDatabaseProviderConnection.SpatialIndexOptions' = ...) -> None: ...
    def vacuum(self, schema: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    def execSql(self, sql: typing.Optional[str], feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
    def sqlOptions(self, layerSource: typing.Optional[str]) -> 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions': ...
    def createSqlVectorLayer(self, options: 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions') -> typing.Optional[QgsVectorLayer]: ...
    def executeSql(self, sql: typing.Optional[str], feedback: typing.Optional[QgsFeedback] = ...) -> typing.Any: ...
    def renameSchema(self, name: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def renameField(self, schema: typing.Optional[str], tableName: typing.Optional[str], name: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def addField(self, field: QgsField, schema: typing.Optional[str], tableName: typing.Optional[str]) -> None: ...
    def deleteField(self, fieldName: typing.Optional[str], schema: typing.Optional[str], tableName: typing.Optional[str], force: bool = ...) -> None: ...
    def dropSchema(self, name: typing.Optional[str], force: bool = ...) -> None: ...
    def createSchema(self, name: typing.Optional[str]) -> None: ...
    def renameRasterTable(self, schema: typing.Optional[str], name: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def renameVectorTable(self, schema: typing.Optional[str], name: typing.Optional[str], newName: typing.Optional[str]) -> None: ...
    def dropRasterTable(self, schema: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    def dropVectorTable(self, schema: typing.Optional[str], name: typing.Optional[str]) -> None: ...
    def tableExists(self, schema: typing.Optional[str], name: typing.Optional[str]) -> bool: ...
    def createVectorTable(self, schema: typing.Optional[str], name: typing.Optional[str], fields: QgsFields, wkbType: Qgis.WkbType, srs: QgsCoordinateReferenceSystem, overwrite: bool, options: typing.Optional[typing.Dict[typing.Optional[str], typing.Any]]) -> None: ...
    def tableUri(self, schema: typing.Optional[str], name: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __xor__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __ior__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __or__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __iand__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        def __and__(self, f: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability']) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...
        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: typing.Optional[str], description: typing.Optional[str], capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: typing.Optional[str], writeMeshFrameOnFileSuffix: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __xor__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __ior__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __or__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __iand__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        def __and__(self, f: typing.Union['QgsProviderMetadata.ProviderMetadataCapabilities', 'QgsProviderMetadata.ProviderMetadataCapability']) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
        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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __xor__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __ior__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __or__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __iand__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __and__(self, f: typing.Union['QgsProviderMetadata.ProviderCapabilities', 'QgsProviderMetadata.ProviderCapability']) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __invert__(self) -> 'QgsProviderMetadata.ProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, key: typing.Optional[str], description: typing.Optional[str], library: typing.Optional[str] = ...) -> None: ...

    connectionChanged: typing.ClassVar[QtCore.pyqtSignal]
    connectionDeleted: typing.ClassVar[QtCore.pyqtSignal]
    connectionCreated: typing.ClassVar[QtCore.pyqtSignal]
    def __repr__(self) -> typing.Any: ...
    def saveConnection(self, connection: typing.Optional[QgsAbstractProviderConnection], name: typing.Optional[str]) -> None: ...
    def deleteConnection(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def createConnection(self, uri: typing.Optional[str], configuration: typing.Dict[str, typing.Any]) -> typing.Optional[QgsAbstractProviderConnection]: ...
    @typing.overload
    def createConnection(self, name: typing.Optional[str]) -> typing.Optional[QgsAbstractProviderConnection]: ...
    def findConnection(self, name: typing.Optional[str], cached: bool = ...) -> typing.Optional[QgsAbstractProviderConnection]: ...
    def dbConnections(self, cached: bool = ...) -> typing.Any: ...
    def connections(self, cached: bool = ...) -> typing.Any: ...
    def createTransaction(self, connString: typing.Optional[str]) -> typing.Optional[QgsTransaction]: ...
    def createDb(self, dbPath: typing.Optional[str], errCause: typing.Optional[str]) -> bool: ...
    def saveLayerMetadata(self, uri: typing.Optional[str], metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStoredStyle(self, uri: typing.Optional[str], styleName: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def loadStyle(self, uri: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def saveStyle(self, uri: typing.Optional[str], qmlStyle: typing.Optional[str], sldStyle: typing.Optional[str], styleName: typing.Optional[str], styleDescription: typing.Optional[str], uiFileContent: typing.Optional[str], useAsDefault: bool, errCause: typing.Optional[str]) -> bool: ...
    def deleteStyleById(self, uri: typing.Optional[str], styleId: typing.Optional[str], errCause: typing.Optional[str]) -> bool: ...
    def getStyleById(self, uri: typing.Optional[str], styleId: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def styleExists(self, uri: typing.Optional[str], styleId: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def listStyles(self, uri: typing.Optional[str], ids: typing.Iterable[typing.Optional[str]], names: typing.Iterable[typing.Optional[str]], descriptions: typing.Iterable[typing.Optional[str]], errCause: typing.Optional[str]) -> int: ...
    def dataItemProviders(self) -> typing.List[QgsDataItemProvider]: ...
    def relativeToAbsoluteUri(self, uri: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def absoluteToRelativeUri(self, uri: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodeUri(self, parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, uri: typing.Optional[str]) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self) -> typing.List[typing.Tuple[str, str]]: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, fileName: typing.Optional[str], driverName: typing.Optional[str], crs: QgsCoordinateReferenceSystem, metadata: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> bool: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, uri: typing.Optional[str], crs: QgsCoordinateReferenceSystem, metadata: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> bool: ...
    def createRasterDataProvider(self, uri: typing.Optional[str], format: typing.Optional[str], nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional['QgsRasterDataProvider'], typing.Optional[float]]: ...
    def createDatabase(self, uri: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def boolParameter(uri: typing.Dict[str, typing.Any], parameter: typing.Optional[str], defaultValue: bool = ...) -> bool: ...
    @staticmethod
    def setBoolParameter(uri: typing.Dict[str, typing.Any], parameter: typing.Optional[str], value: typing.Any) -> None: ...
    def createProvider(self, uri: typing.Optional[str], options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> typing.Optional[QgsDataProvider]: ...
    def suggestGroupNameForUri(self, uri: typing.Optional[str]) -> str: ...
    def querySublayers(self, uri: typing.Optional[str], flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def sidecarFilesForUri(self, uri: typing.Optional[str]) -> typing.List[str]: ...
    def uriIsBlocklisted(self, uri: typing.Optional[str]) -> bool: ...
    def validLayerTypesForUri(self, uri: typing.Optional[str]) -> typing.List[Qgis.LayerType]: ...
    def priorityForUri(self, uri: typing.Optional[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: typing.Optional[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) -> typing.Optional[QgsProviderMetadata]: ...

    class UnusableUriDetails(PyQt5.sip.wrapper):

        detailedWarning = ... # type: typing.Optional[str]
        layerTypes = ... # type: typing.Iterable[Qgis.LayerType]
        uri = ... # type: typing.Optional[str]
        warning = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, uri: typing.Optional[str] = ..., warning: typing.Optional[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: typing.Optional[str]) -> 'QgsProviderRegistry.UnusableUriDetails': ...
        def matchesUri(self, uri: typing.Optional[str]) -> bool: ...

    def __init__(self, a0: 'QgsProviderRegistry') -> None: ...

    def registerProvider(self, providerMetadata: typing.Optional[QgsProviderMetadata]) -> bool: ...
    def registerGuis(self, widget: typing.Optional[QtWidgets.QWidget]) -> None: ...
    def protocolDrivers(self) -> str: ...
    def directoryDrivers(self) -> str: ...
    def databaseDrivers(self) -> str: ...
    def fileTiledSceneFilters(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: typing.Optional[str], flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def uriIsBlocklisted(self, uri: typing.Optional[str]) -> bool: ...
    def shouldDeferUriForOtherProviders(self, uri: typing.Optional[str], providerKey: typing.Optional[str]) -> bool: ...
    def handleUnusableUri(self, uri: typing.Optional[str]) -> typing.Tuple[bool, 'QgsProviderRegistry.UnusableUriDetails']: ...
    def registerUnusableUriHandler(self, handler: typing.Optional['QgsProviderRegistry.UnusableUriHandlerInterface']) -> bool: ...
    def preferredProvidersForUri(self, uri: typing.Optional[str]) -> typing.List['QgsProviderRegistry.ProviderCandidateDetails']: ...
    def providersForLayerType(self, type: Qgis.LayerType) -> typing.Set[str]: ...
    def providerMetadata(self, providerKey: typing.Optional[str]) -> typing.Optional[QgsProviderMetadata]: ...
    def providerList(self) -> typing.List[str]: ...
    def createProviderLibrary(self, providerKey: typing.Optional[str]) -> typing.Optional[QtCore.QLibrary]: ...
    def function(self, providerKey: typing.Optional[str], functionName: typing.Optional[str]) -> typing.Optional[PyQt5.sip.voidptr]: ...
    def createTransaction(self, providerKey: typing.Optional[str], connString: typing.Optional[str]) -> typing.Optional[QgsTransaction]: ...
    def createDb(self, providerKey: typing.Optional[str], dbPath: typing.Optional[str], errCause: typing.Optional[str]) -> bool: ...
    def saveLayerMetadata(self, providerKey: typing.Optional[str], uri: typing.Optional[str], metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStoredStyle(self, providerKey: typing.Optional[str], uri: typing.Optional[str], styleName: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def loadStyle(self, providerKey: typing.Optional[str], uri: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def saveStyle(self, providerKey: typing.Optional[str], uri: typing.Optional[str], qmlStyle: typing.Optional[str], sldStyle: typing.Optional[str], styleName: typing.Optional[str], styleDescription: typing.Optional[str], uiFileContent: typing.Optional[str], useAsDefault: bool, errCause: typing.Optional[str]) -> bool: ...
    def deleteStyleById(self, providerKey: typing.Optional[str], uri: typing.Optional[str], styleId: typing.Optional[str], errCause: typing.Optional[str]) -> bool: ...
    def getStyleById(self, providerKey: typing.Optional[str], uri: typing.Optional[str], styleId: typing.Optional[str], errCause: typing.Optional[str]) -> str: ...
    def styleExists(self, providerKey: typing.Optional[str], uri: typing.Optional[str], styleId: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def listStyles(self, providerKey: typing.Optional[str], uri: typing.Optional[str], ids: typing.Iterable[typing.Optional[str]], names: typing.Iterable[typing.Optional[str]], descriptions: typing.Iterable[typing.Optional[str]], errCause: typing.Optional[str]) -> int: ...
    def dataItemProviders(self, providerKey: typing.Optional[str]) -> typing.List[QgsDataItemProvider]: ...
    def createSelectionWidget(self, providerKey: typing.Optional[str], parent: typing.Optional[QtWidgets.QWidget] = ..., fl: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ..., widgetMode: 'QgsProviderRegistry.WidgetMode' = ...) -> typing.Optional[QtWidgets.QWidget]: ...
    def relativeToAbsoluteUri(self, providerKey: typing.Optional[str], uri: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def absoluteToRelativeUri(self, providerKey: typing.Optional[str], uri: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodeUri(self, providerKey: typing.Optional[str], parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, providerKey: typing.Optional[str], uri: typing.Optional[str]) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self, providerKey: typing.Optional[str]) -> typing.List[typing.Tuple[str, str]]: ...
    def createRasterDataProvider(self, providerKey: typing.Optional[str], uri: typing.Optional[str], format: typing.Optional[str], nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional['QgsRasterDataProvider'], typing.Optional[float]]: ...
    def providerCapabilities(self, providerKey: typing.Optional[str]) -> Qgis.DataItemProviderCapabilities: ...
    def createProvider(self, providerKey: typing.Optional[str], dataSource: typing.Optional[str], options: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> typing.Optional[QgsDataProvider]: ...
    def setLibraryDirectory(self, path: QtCore.QDir) -> None: ...
    def libraryDirectory(self) -> QtCore.QDir: ...
    def pluginList(self, asHtml: bool = ...) -> str: ...
    def library(self, providerKey: typing.Optional[str]) -> str: ...
    @staticmethod
    def instance(pluginPath: typing.Optional[str] = ...) -> typing.Optional['QgsProviderRegistry']: ...


class QgsProviderSqlQueryBuilder(PyQt5.sip.wrapper):

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

    def quoteIdentifier(self, identifier: typing.Optional[str]) -> str: ...
    def createLimitQueryForTable(self, schema: typing.Optional[str], name: typing.Optional[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 __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    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: typing.Optional[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[typing.Optional[str]]) -> None: ...
    def path(self) -> typing.List[str]: ...
    def setDriverName(self, driver: typing.Optional[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: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def toLayer(self, options: 'QgsProviderSublayerDetails.LayerOptions') -> typing.Optional[QgsMapLayer]: ...
    def setUri(self, uri: typing.Optional[str]) -> None: ...
    def uri(self) -> str: ...
    def setType(self, type: Qgis.LayerType) -> None: ...
    def type(self) -> Qgis.LayerType: ...
    def setProviderKey(self, key: typing.Optional[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 __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def setIcon(self, icon: QtGui.QIcon) -> None: ...
        def icon(self) -> QtGui.QIcon: ...
        def setUri(self, uri: typing.Optional[str]) -> None: ...
        def uri(self) -> str: ...
        def setDescription(self, description: typing.Optional[str]) -> None: ...
        def description(self) -> str: ...
        def setName(self, name: typing.Optional[str]) -> None: ...
        def name(self) -> str: ...
        def setType(self, type: typing.Optional[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: typing.Optional[str]) -> None: ...
    def filterString(self) -> str: ...


class QgsProviderSublayerTask(QgsTask):

    @typing.overload
    def __init__(self, uri: typing.Optional[str], includeSystemTables: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, uri: typing.Optional[str], providerKey: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __xor__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __ior__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __or__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __iand__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        def __and__(self, f: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag']) -> 'QgsProviderUtils.SublayerCompletenessFlags': ...
        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: typing.Optional[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: typing.Optional[str], groupId: typing.Optional[str], authcfg: typing.Optional[str], itemTypes: typing.Iterable[int], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupItemsOfType(contentUrl: typing.Optional[str], groupId: typing.Optional[str], authcfg: typing.Optional[str], itemTypes: typing.Iterable[int], requestHeaders: typing.Dict[typing.Optional[str], typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: typing.Optional[str], groupId: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: typing.Optional[str], groupId: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: typing.Dict[typing.Optional[str], typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: typing.Optional[str], user: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: typing.Optional[str], user: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: typing.Dict[typing.Optional[str], typing.Any], feedback: typing.Optional[QgsFeedback] = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: typing.Optional[str], user: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., urlPrefix: typing.Optional[str] = ...) -> typing.Tuple[typing.Dict[str, typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: typing.Optional[str], user: typing.Optional[str], authcfg: typing.Optional[str], requestHeaders: typing.Dict[typing.Optional[str], typing.Any], feedback: typing.Optional[QgsFeedback] = ..., urlPrefix: typing.Optional[str] = ...) -> 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: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __xor__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __ior__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __or__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __iand__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        def __and__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> 'QgsArcGisRestUtils.FeatureToJsonFlags': ...
        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: typing.Optional[str]) -> Qgis.ArcGisRestServiceType: ...
    @staticmethod
    def fieldDefinitionToJson(field: QgsField) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantToAttributeValue(variant: typing.Any, expectedType: QtCore.QMetaType.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 convertRectangle(value: typing.Any) -> QgsRectangle: ...
    @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: typing.Optional[str]) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def convertLineStyle(style: typing.Optional[str]) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def convertColor(data: typing.Any) -> QtGui.QColor: ...
    @staticmethod
    def convertLabelingExpression(string: typing.Optional[str]) -> str: ...
    @staticmethod
    def convertLabeling(data: typing.Iterable[typing.Any]) -> typing.Optional[QgsAbstractVectorLayerLabeling]: ...
    @staticmethod
    def convertRenderer(rendererData: typing.Dict[str, typing.Any]) -> typing.Optional['QgsFeatureRenderer']: ...
    @staticmethod
    def convertSymbol(definition: typing.Dict[str, typing.Any]) -> typing.Optional['QgsSymbol']: ...
    @staticmethod
    def convertSpatialReference(spatialReferenceMap: typing.Dict[str, typing.Any]) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def convertGeometry(geometry: typing.Dict[str, typing.Any], esriGeometryType: typing.Optional[str], hasM: bool, hasZ: bool) -> typing.Tuple[typing.Optional[QgsAbstractGeometry], typing.Optional[QgsCoordinateReferenceSystem]]: ...
    @staticmethod
    def convertGeometryType(type: typing.Optional[str]) -> Qgis.WkbType: ...
    @staticmethod
    def convertFieldType(type: typing.Optional[str]) -> QtCore.QMetaType.Type: ...


class QgsMemoryProviderUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def createMemoryLayer(name: typing.Optional[str], fields: QgsFields, geometryType: Qgis.WkbType = ..., crs: QgsCoordinateReferenceSystem = ..., loadDefaultStyle: bool = ...) -> typing.Optional[QgsVectorLayer]: ...


class QgsSensorThingsUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def asQueryString(baseType: Qgis.SensorThingsEntity, expansions: typing.Iterable['QgsSensorThingsExpansionDefinition']) -> str: ...
    @staticmethod
    def relationshipCardinality(baseType: Qgis.SensorThingsEntity, relatedType: Qgis.SensorThingsEntity) -> typing.Tuple[Qgis.RelationshipCardinality, bool]: ...
    @staticmethod
    def expandableTargets(type: Qgis.SensorThingsEntity) -> typing.List[Qgis.SensorThingsEntity]: ...
    @staticmethod
    def availableGeometryTypes(uri: typing.Optional[str], type: Qgis.SensorThingsEntity, feedback: typing.Optional[QgsFeedback] = ..., authCfg: typing.Optional[str] = ...) -> typing.List[Qgis.GeometryType]: ...
    @staticmethod
    def combineFilters(filters: typing.Iterable[typing.Optional[str]]) -> str: ...
    @staticmethod
    def filterForExtent(geometryField: typing.Optional[str], extent: QgsRectangle) -> str: ...
    @staticmethod
    def filterForWkbType(entityType: Qgis.SensorThingsEntity, wkbType: Qgis.WkbType) -> str: ...
    @staticmethod
    def geometryTypeForEntity(type: Qgis.SensorThingsEntity) -> Qgis.GeometryType: ...
    @staticmethod
    def entityTypeHasGeometry(type: Qgis.SensorThingsEntity) -> bool: ...
    @staticmethod
    def geometryFieldForEntityType(type: Qgis.SensorThingsEntity) -> str: ...
    @staticmethod
    def fieldsForExpandedEntityType(baseType: Qgis.SensorThingsEntity, expandedTypes: typing.Iterable[Qgis.SensorThingsEntity]) -> QgsFields: ...
    @staticmethod
    def fieldsForEntityType(type: Qgis.SensorThingsEntity) -> QgsFields: ...
    @staticmethod
    def propertiesForEntityType(type: Qgis.SensorThingsEntity) -> typing.List[str]: ...
    @staticmethod
    def entityToSetString(type: Qgis.SensorThingsEntity) -> str: ...
    @staticmethod
    def entitySetStringToEntity(type: typing.Optional[str]) -> Qgis.SensorThingsEntity: ...
    @staticmethod
    def displayString(type: Qgis.SensorThingsEntity, plural: bool = ...) -> str: ...
    @staticmethod
    def stringToEntity(type: typing.Optional[str]) -> Qgis.SensorThingsEntity: ...


class QgsSensorThingsExpansionDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, childEntity: Qgis.SensorThingsEntity = ..., orderBy: typing.Optional[str] = ..., sortOrder: QtCore.Qt.SortOrder = ..., limit: int = ..., filter: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSensorThingsExpansionDefinition') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def asQueryString(self, parentEntityType: Qgis.SensorThingsEntity, additionalOptions: typing.Iterable[typing.Optional[str]] = ...) -> str: ...
    @staticmethod
    def fromString(string: typing.Optional[str]) -> 'QgsSensorThingsExpansionDefinition': ...
    def toString(self) -> str: ...
    def setFilter(self, filter: typing.Optional[str]) -> None: ...
    def filter(self) -> str: ...
    def setLimit(self, limit: int) -> None: ...
    def limit(self) -> int: ...
    def setSortOrder(self, order: QtCore.Qt.SortOrder) -> None: ...
    def sortOrder(self) -> QtCore.Qt.SortOrder: ...
    def setOrderBy(self, field: typing.Optional[str]) -> None: ...
    def orderBy(self) -> str: ...
    def setChildEntity(self, entity: Qgis.SensorThingsEntity) -> None: ...
    def childEntity(self) -> Qgis.SensorThingsEntity: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def defaultDefinitionForEntity(entity: Qgis.SensorThingsEntity) -> 'QgsSensorThingsExpansionDefinition': ...


class QgsRasterAttributeTable(PyQt5.sip.wrapper):

    class UsageInformation(PyQt5.sip.wrapper):

        allowedTypes = ... # type: typing.Iterable[QtCore.QMetaType.Type]
        description = ... # type: typing.Optional[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: typing.Optional[str]
        type = ... # type: QtCore.QMetaType.Type
        usage = ... # type: Qgis.RasterAttributeTableFieldUsage

        @typing.overload
        def __init__(self, name: typing.Optional[str], usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QMetaType.Type) -> None: ...
        @typing.overload
        def __init__(self, name: typing.Optional[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: typing.Optional[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: typing.Optional['QgsRasterLayer']) -> typing.Tuple[typing.Optional['QgsRasterAttributeTable'], typing.Optional[int]]: ...
    @staticmethod
    def valueAndColorFieldUsages() -> typing.List[Qgis.RasterAttributeTableFieldUsage]: ...
    @staticmethod
    def usageName(fieldusage: Qgis.RasterAttributeTableFieldUsage) -> str: ...
    def filePath(self) -> str: ...
    @typing.overload
    @staticmethod
    def guessFieldUsage(name: typing.Optional[str], type: QtCore.QMetaType.Type) -> Qgis.RasterAttributeTableFieldUsage: ...
    @typing.overload
    @staticmethod
    def guessFieldUsage(name: typing.Optional[str], type: QtCore.QVariant.Type) -> Qgis.RasterAttributeTableFieldUsage: ...
    def orderedRows(self) -> typing.Any: ...
    def createRenderer(self, provider: typing.Optional['QgsRasterDataProvider'], bandNumber: int, classificationColumn: int = ...) -> typing.Optional['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: typing.Optional[str]) -> typing.Tuple['QgsRasterAttributeTable.Field', typing.Optional[bool]]: ...
    def data(self) -> typing.Any: ...
    def readFromFile(self, path: typing.Optional[str]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def writeToFile(self, path: typing.Optional[str]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def appendRow(self, data: typing.Iterable[typing.Any]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def removeRow(self, position: int = ...) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def insertRow(self, position: int, rowData: typing.Iterable[typing.Any]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def removeField(self, name: typing.Optional[str]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def appendField(self, name: typing.Optional[str], usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QMetaType.Type) -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def appendField(self, name: typing.Optional[str], usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QVariant.Type) -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def appendField(self, field: 'QgsRasterAttributeTable.Field') -> typing.Tuple[bool, typing.Optional[str]]: ...
    def insertRamp(self, position: int) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def setFieldUsage(self, fieldIndex: int, usage: Qgis.RasterAttributeTableFieldUsage) -> bool: ...
    def insertColor(self, position: int) -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def insertField(self, position: int, field: 'QgsRasterAttributeTable.Field') -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def insertField(self, position: int, name: typing.Optional[str], usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QMetaType.Type) -> typing.Tuple[bool, typing.Optional[str]]: ...
    @typing.overload
    def insertField(self, position: int, name: typing.Optional[str], usage: Qgis.RasterAttributeTableFieldUsage, type: QtCore.QVariant.Type) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def isValid(self) -> typing.Tuple[bool, typing.Optional[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) -> typing.Optional['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) -> typing.Optional['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):

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

    @typing.overload
    def initStatistics(self, statistics: 'QgsRasterBandStats', bandNo: int, stats: int, boundingBox: QgsRectangle = ..., binCount: int = ...) -> None: ...
    @typing.overload
    def initStatistics(self, statistics: 'QgsRasterBandStats', bandNo: int, stats: typing.Union[Qgis.RasterBandStatistics, Qgis.RasterBandStatistic] = ..., 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': ...
    @typing.overload
    def hasStatistics(self, bandNo: int, stats: int, extent: QgsRectangle = ..., sampleSize: int = ...) -> bool: ...
    @typing.overload
    def hasStatistics(self, bandNo: int, stats: typing.Union[Qgis.RasterBandStatistics, Qgis.RasterBandStatistic] = ..., extent: QgsRectangle = ..., sampleSize: int = ...) -> bool: ...
    @typing.overload
    def bandStatistics(self, bandNo: int, stats: int, extent: QgsRectangle = ..., sampleSize: int = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBandStats': ...
    @typing.overload
    def bandStatistics(self, bandNo: int, stats: typing.Union[Qgis.RasterBandStatistics, Qgis.RasterBandStatistic] = ..., extent: QgsRectangle = ..., sampleSize: int = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBandStats': ...
    def sourceInput(self) -> typing.Optional['QgsRasterInterface']: ...
    def setOn(self, on: bool) -> None: ...
    def on(self) -> bool: ...
    def input(self) -> typing.Optional['QgsRasterInterface']: ...
    def setInput(self, input: typing.Optional['QgsRasterInterface']) -> bool: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> typing.Optional['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) -> Qgis.RasterInterfaceCapabilities: ...
    def clone(self) -> typing.Optional['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'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    def setInput(self, input: typing.Optional[QgsRasterInterface]) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> typing.Optional['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, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[int]]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[int]]: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...


class QgsColorRampShader(QgsRasterShaderFunction):

    class ColorRampItem(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsColorRampShader.ColorRampItem') -> None: ...

        def __ge__(self, other: 'QgsColorRampShader.ColorRampItem') -> bool: ...
        def __eq__(self, other: object): ...
        def __ne__(self, other: object): ...
        def __lt__(self, other: 'QgsColorRampShader.ColorRampItem') -> bool: ...

    @typing.overload
    def __init__(self, minimumValue: float = ..., maximumValue: float = ..., colorRamp: typing.Optional[QgsColorRamp] = ..., type: Qgis.ShaderInterpolationMethod = ..., classificationMode: Qgis.ShaderClassificationMethod = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampShader') -> None: ...

    def __ne__(self, other: object): ...
    def setLegendSettings(self, settings: typing.Optional[QgsColorRampLegendNodeSettings]) -> None: ...
    def legendSettings(self) -> typing.Optional[QgsColorRampLegendNodeSettings]: ...
    def clip(self) -> bool: ...
    def setClip(self, clip: bool) -> None: ...
    def classificationMode(self) -> Qgis.ShaderClassificationMethod: ...
    def setClassificationMode(self, classificationMode: Qgis.ShaderClassificationMethod) -> 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, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[int]]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[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: typing.Optional[QgsColorRamp]) -> None: ...
    def createColorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def sourceColorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def setColorRampType(self, colorRampType: Qgis.ShaderInterpolationMethod) -> None: ...
    @typing.overload
    def setColorRampType(self, type: typing.Optional[str]) -> None: ...
    def setColorRampItemList(self, list: typing.Iterable['QgsColorRampShader.ColorRampItem']) -> None: ...
    def colorRampTypeAsQString(self) -> str: ...
    def colorRampType(self) -> Qgis.ShaderInterpolationMethod: ...
    def colorRampItemList(self) -> typing.List['QgsColorRampShader.ColorRampItem']: ...
    def __eq__(self, other: object): ...


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: typing.Optional[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: typing.Optional[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) -> typing.Optional['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: typing.Optional[str], tag: typing.Optional[str], value: typing.Any) -> bool: ...
    @staticmethod
    def geoTagImage(imagePath: typing.Optional[str], location: QgsPointXY, details: 'QgsExifTools.GeoTagDetails' = ...) -> bool: ...
    @staticmethod
    def hasGeoTag(imagePath: typing.Optional[str]) -> bool: ...
    @staticmethod
    def getGeoTag(imagePath: typing.Optional[str]) -> typing.Tuple[QgsPoint, bool]: ...
    @staticmethod
    def readTag(imagePath: typing.Optional[str], key: typing.Optional[str]) -> typing.Any: ...
    @staticmethod
    def readTags(imagePath: typing.Optional[str]) -> typing.Dict[str, typing.Any]: ...


class QgsRasterRenderer(QgsRasterInterface):

    NODATA_COLOR = ... # type: int

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ..., type: typing.Optional[str] = ...) -> None: ...

    def renderColorForNodataPixel(self) -> int: ...
    def _writeXml(self, doc: QtXml.QDomDocument, rasterRendererElem: QtXml.QDomElement) -> None: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional['QgsRasterRenderer'], copyMinMaxOrigin: bool = ...) -> None: ...
    def readXml(self, rendererElem: QtXml.QDomElement) -> None: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[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) -> typing.Optional['QgsRasterTransparency']: ...
    def setRasterTransparency(self, t: typing.Optional['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'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    def setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def setInput(self, input: typing.Optional[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) -> typing.Optional['QgsRasterRenderer']: ...


class QgsHillshadeRenderer(QgsRasterRenderer):

    def __init__(self, input: typing.Optional[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 setInputBand(self, band: int) -> bool: ...
    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 inputBand(self) -> int: ...
    def usesBands(self) -> typing.List[int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['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'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    def setInput(self, input: typing.Optional[QgsRasterInterface]) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usesBands(self) -> typing.List[int]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setBlueContrastEnhancement(self, ce: typing.Optional[QgsContrastEnhancement]) -> None: ...
    def blueContrastEnhancement(self) -> typing.Optional[QgsContrastEnhancement]: ...
    def setGreenContrastEnhancement(self, ce: typing.Optional[QgsContrastEnhancement]) -> None: ...
    def greenContrastEnhancement(self) -> typing.Optional[QgsContrastEnhancement]: ...
    def setRedContrastEnhancement(self, ce: typing.Optional[QgsContrastEnhancement]) -> None: ...
    def redContrastEnhancement(self) -> typing.Optional[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'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsMultiBandColorRenderer']: ...


class QgsPalettedRasterRenderer(QgsRasterRenderer):

    class Class(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: typing.Optional[str]
        value = ... # type: float

        @typing.overload
        def __init__(self, value: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., label: typing.Optional[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: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPalettedRasterRenderer.MultiValueClass') -> None: ...

    def __init__(self, input: typing.Optional[QgsRasterInterface], bandNumber: int, classes: typing.Iterable['QgsPalettedRasterRenderer.Class']) -> None: ...

    @staticmethod
    def classDataFromRaster(raster: typing.Optional[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: typing.Optional[str]) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def classDataFromString(string: typing.Optional[str]) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def rasterAttributeTableToClassData(attributeTable: typing.Optional[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) -> typing.Optional[QgsColorRamp]: ...
    def setSourceColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional[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 setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def band(self) -> int: ...
    def setLabel(self, idx: float, label: typing.Optional[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'] = ...) -> typing.Optional['QgsRasterBlock']: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['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):

    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: typing.Union[Qgis.RasterBandStatistics, Qgis.RasterBandStatistic]
    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: typing.Optional[QtGui.QImage]) -> bool: ...
    def image(self) -> QtGui.QImage: ...
    def convert(self, destDataType: Qgis.DataType) -> bool: ...
    @staticmethod
    def printValue(value: float, localized: bool = ...) -> 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, typing.Optional[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: typing.Optional[str], verifiedUri: typing.Optional[str], expectedKey: typing.Optional[str], expectedUri: typing.Optional[str]) -> bool: ...
    def report(self) -> str: ...


class QgsRasterContourRenderer(QgsRasterRenderer):

    def __init__(self, input: typing.Optional[QgsRasterInterface]) -> None: ...

    def setDownscale(self, scale: float) -> None: ...
    def downscale(self) -> float: ...
    def setContourIndexSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def contourIndexSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setContourIndexInterval(self, interval: float) -> None: ...
    def contourIndexInterval(self) -> float: ...
    def setContourSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def contourSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setContourInterval(self, interval: float) -> None: ...
    def contourInterval(self) -> float: ...
    def setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[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'] = ...) -> typing.Optional[QgsRasterBlock]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsRasterContourRenderer']: ...


class QgsImageFetcher(QtCore.QObject):

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

    error: typing.ClassVar[QtCore.pyqtSignal]
    progress: typing.ClassVar[QtCore.pyqtSignal]
    finish: typing.ClassVar[QtCore.pyqtSignal]
    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 VirtualRasterInputLayers(PyQt5.sip.wrapper):

        name = ... # type: typing.Optional[str]
        provider = ... # type: typing.Optional[str]
        uri = ... # type: typing.Optional[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: typing.Optional[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: typing.Optional[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: ...
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    def bandDescription(self, bandNumber: int) -> str: ...
    def readNativeAttributeTable(self) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def writeNativeAttributeTable(self) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def readFileBasedAttributeTable(self, bandNumber: int, path: typing.Optional[str]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def writeFileBasedAttributeTable(self, bandNumber: int, path: typing.Optional[str]) -> typing.Tuple[bool, typing.Optional[str]]: ...
    def removeAttributeTable(self, bandNumber: int) -> None: ...
    def setAttributeTable(self, bandNumber: int, attributeTable: typing.Optional[QgsRasterAttributeTable]) -> None: ...
    def attributeTable(self, bandNumber: int) -> typing.Optional[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) -> Qgis.RasterInterfaceCapability: ...
    @staticmethod
    def identifyFormatLabel(format: Qgis.RasterIdentifyFormat) -> str: ...
    @staticmethod
    def identifyFormatFromName(formatName: typing.Optional[str]) -> Qgis.RasterIdentifyFormat: ...
    @staticmethod
    def identifyFormatName(format: Qgis.RasterIdentifyFormat) -> str: ...
    def validatePyramidsConfigOptions(self, pyramidsFormat: Qgis.RasterPyramidFormat, configOptions: typing.Iterable[typing.Optional[str]], fileFormat: typing.Optional[str]) -> str: ...
    def validateCreationOptions(self, createOptions: typing.Iterable[typing.Optional[str]], format: typing.Optional[str]) -> str: ...
    @staticmethod
    def encodeVirtualRasterProviderUri(parts: 'QgsRasterDataProvider.VirtualRasterParameters') -> str: ...
    @staticmethod
    def decodeVirtualRasterProviderUri(uri: typing.Optional[str]) -> typing.Tuple['QgsRasterDataProvider.VirtualRasterParameters', typing.Optional[bool]]: ...
    @staticmethod
    def pyramidResamplingMethods(providerKey: typing.Optional[str]) -> typing.List[typing.Tuple[str, str]]: ...
    def remove(self) -> bool: ...
    def setNoDataValue(self, bandNo: int, noDataValue: float) -> bool: ...
    @staticmethod
    def create(providerKey: typing.Optional[str], uri: typing.Optional[str], format: typing.Optional[str], nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[typing.Optional[str]] = ...) -> typing.Tuple[typing.Optional['QgsRasterDataProvider'], typing.Optional[float]]: ...
    def writeBlock(self, block: typing.Optional[QgsRasterBlock], band: int, xOffset: int = ..., yOffset: int = ...) -> bool: ...
    def write(self, data: typing.Optional[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, typing.Optional[bool]]: ...
    def identify(self, point: QgsPointXY, format: Qgis.RasterIdentifyFormat, boundingBox: QgsRectangle = ..., width: int = ..., height: int = ..., dpi: int = ...) -> 'QgsRasterIdentifyResult': ...
    def hasPyramids(self) -> bool: ...
    def buildPyramidList(self, overviewList: typing.Iterable[int] = ...) -> typing.List['QgsRasterPyramid']: ...
    def buildPyramids(self, pyramidList: typing.Iterable['QgsRasterPyramid'], resamplingMethod: typing.Optional[str] = ..., format: Qgis.RasterPyramidFormat = ..., configOptions: typing.Iterable[typing.Optional[str]] = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> str: ...
    def getLegendGraphicFetcher(self, mapSettings: typing.Optional[QgsMapSettings]) -> typing.Optional[QgsImageFetcher]: ...
    def supportsLegendGraphic(self) -> bool: ...
    def elevationProperties(self) -> typing.Optional['QgsRasterDataProviderElevationProperties']: ...
    def temporalCapabilities(self) -> typing.Optional['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'] = ...) -> typing.Optional[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: typing.Optional[QgsRasterInterface]) -> bool: ...
    def providerCapabilities(self) -> Qgis.RasterProviderCapabilities: ...
    def clone(self) -> typing.Optional['QgsRasterDataProvider']: ...


class QgsRasterDataProviderElevationProperties(QgsDataProviderElevationProperties):

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


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: typing.Optional['QgsRasterIterator'], dpiTarget: float) -> None: ...
    @typing.overload
    def __init__(self, iterator: typing.Optional['QgsRasterIterator']) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDrawer') -> None: ...

    @typing.overload
    def draw(self, p: typing.Optional[QtGui.QPainter], viewPort: typing.Optional['QgsRasterViewPort'], qgsMapToPixel: typing.Optional[QgsMapToPixel], feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> None: ...
    @typing.overload
    def draw(self, context: QgsRenderContext, viewPort: typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __xor__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __ior__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __or__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __iand__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __and__(self, f: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption']) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __invert__(self) -> 'QgsRasterFileWriter.RasterFormatOptions': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class FilterFormatDetails(PyQt5.sip.wrapper):

        driverName = ... # type: typing.Optional[str]
        filterString = ... # type: typing.Optional[str]

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

    @typing.overload
    def __init__(self, outputUrl: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterFileWriter') -> None: ...

    @staticmethod
    def extensionsForFormat(format: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def driverForExtension(extension: typing.Optional[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: typing.Optional[str]) -> str: ...
    def pyramidsConfigOptions(self) -> typing.List[str]: ...
    def setPyramidsConfigOptions(self, list: typing.Iterable[typing.Optional[str]]) -> None: ...
    def createOptions(self) -> typing.List[str]: ...
    def setCreateOptions(self, list: typing.Iterable[typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def outputFormat(self) -> str: ...
    def setOutputFormat(self, format: typing.Optional[str]) -> None: ...
    def outputUrl(self) -> str: ...
    @typing.overload
    def writeRaster(self, pipe: typing.Optional['QgsRasterPipe'], nCols: int, nRows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> Qgis.RasterFileWriterResult: ...
    @typing.overload
    def writeRaster(self, pipe: typing.Optional['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) -> typing.Optional[QgsRasterDataProvider]: ...
    def createOneBandRaster(self, dataType: Qgis.DataType, width: int, height: int, extent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> typing.Optional[QgsRasterDataProvider]: ...


class QgsRasterFileWriterTask(QgsTask):

    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: typing.Optional['QgsRasterPipe'], columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> None: ...
    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: typing.Optional['QgsRasterPipe'], columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    writeComplete: typing.ClassVar[QtCore.pyqtSignal]
    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: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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[typing.Optional[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: typing.Optional[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: typing.Optional[QgsRasterInterface], tileOverlapPixels: int = ...) -> 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) -> typing.Optional[QgsRasterInterface]: ...
    def stopRasterRead(self, bandNumber: int) -> None: ...
    def readNextRasterPart(self, bandNumber: int) -> typing.Tuple[bool, int, int, typing.Optional[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: typing.Optional[str], baseName: typing.Optional[str] = ..., providerType: typing.Optional[str] = ..., options: 'QgsRasterLayer.LayerOptions' = ...) -> None: ...

    def decodedSource(self, source: typing.Optional[str], provider: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: typing.Optional[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: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, a0: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[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: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    subsetStringChanged: typing.ClassVar[QtCore.pyqtSignal]
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def showStatusMessage(self, message: typing.Optional[str]) -> None: ...
    def elevationProperties(self) -> typing.Optional[QgsMapLayerElevationProperties]: ...
    def temporalProperties(self) -> typing.Optional[QgsMapLayerTemporalProperties]: ...
    def ignoreExtents(self) -> bool: ...
    def writeSld(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], props: typing.Dict[str, typing.Any] = ...) -> bool: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def setSubLayerVisibility(self, name: typing.Optional[str], vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[typing.Optional[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: typing.Optional[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: typing.Optional[QtGui.QPainter], myRasterViewPort: typing.Optional['QgsRasterViewPort'], qgsMapToPixel: typing.Optional[QgsMapToPixel] = ...) -> None: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> typing.Optional[QgsMapLayerRenderer]: ...
    def reload(self) -> None: ...
    def constDataProvider(self) -> typing.Optional[QgsRasterDataProvider]: ...
    def dataProvider(self) -> typing.Optional[QgsRasterDataProvider]: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def attributeTableCount(self) -> int: ...
    def attributeTable(self, bandNumber: int) -> typing.Optional[QgsRasterAttributeTable]: ...
    def bandName(self, bandNoInt: int) -> str: ...
    def bandCount(self) -> int: ...
    def height(self) -> int: ...
    def width(self) -> int: ...
    def pipe(self) -> typing.Optional['QgsRasterPipe']: ...
    def resamplingStage(self) -> Qgis.RasterResamplingStage: ...
    def setResamplingStage(self, stage: Qgis.RasterResamplingStage) -> None: ...
    def hueSaturationFilter(self) -> typing.Optional[QgsHueSaturationFilter]: ...
    def brightnessFilter(self) -> typing.Optional[QgsBrightnessContrastFilter]: ...
    def resampleFilter(self) -> typing.Optional['QgsRasterResampleFilter']: ...
    def renderer(self) -> typing.Optional[QgsRasterRenderer]: ...
    def setRenderer(self, renderer: typing.Optional[QgsRasterRenderer]) -> None: ...
    def rasterType(self) -> Qgis.RasterLayerType: ...
    @typing.overload
    def setDataProvider(self, provider: typing.Optional[str]) -> None: ...
    @typing.overload
    def setDataProvider(self, provider: typing.Optional[str], options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...
    @staticmethod
    def lastModified(name: typing.Optional[str]) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: typing.Optional[str], retError: typing.Optional[str]) -> bool: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: typing.Optional[str]) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> typing.Optional[QgsAbstractProfileGenerator]: ...
    def clone(self) -> typing.Optional['QgsRasterLayer']: ...
    def __repr__(self) -> typing.Any: ...


class QgsRasterLayerElevationProperties(QgsMapLayerElevationProperties):

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

    @staticmethod
    def layerLooksLikeDem(layer: typing.Optional[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: typing.Optional['QgsFillSymbol']) -> None: ...
    def profileFillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setProfileLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def profileLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def bandForElevationRange(self, layer: typing.Optional[QgsRasterLayer], range: QgsDoubleRange) -> int: ...
    def elevationRangeForPixelValue(self, layer: typing.Optional[QgsRasterLayer], band: int, pixelValue: float) -> QgsDoubleRange: ...
    def setFixedRangePerBand(self, ranges: typing.Dict[int, QgsDoubleRange]) -> None: ...
    def fixedRangePerBand(self) -> typing.Dict[int, QgsDoubleRange]: ...
    def setFixedRange(self, range: QgsDoubleRange) -> None: ...
    def fixedRange(self) -> QgsDoubleRange: ...
    def setBandNumber(self, band: int) -> None: ...
    def bandNumber(self) -> int: ...
    def setMode(self, mode: Qgis.RasterElevationMode) -> None: ...
    def mode(self) -> Qgis.RasterElevationMode: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def flags(self) -> QgsMapLayerElevationProperties.Flags: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def significantZValues(self, layer: typing.Optional[QgsMapLayer]) -> typing.List[float]: ...
    def calculateZRange(self, layer: typing.Optional[QgsMapLayer]) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange, layer: typing.Optional[QgsMapLayer] = ...) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> typing.Optional['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: typing.Optional[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 setTemporalRepresentationScale(self, scale: QgsInterval) -> None: ...
    def temporalRepresentationScale(self) -> QgsInterval: ...
    def setTemporalRepresentationOffset(self, offset: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def temporalRepresentationOffset(self) -> QtCore.QDateTime: ...
    def setBandNumber(self, number: int) -> None: ...
    def bandNumber(self) -> int: ...
    def filteredBandsForTemporalRange(self, layer: typing.Optional[QgsRasterLayer], range: QgsDateTimeRange) -> typing.List[int]: ...
    def bandForTemporalRange(self, layer: typing.Optional[QgsRasterLayer], range: QgsDateTimeRange) -> int: ...
    def setFixedRangePerBand(self, ranges: typing.Dict[int, QgsDateTimeRange]) -> None: ...
    def fixedRangePerBand(self) -> typing.Dict[int, QgsDateTimeRange]: ...
    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: typing.Optional[QgsMapLayer]) -> typing.List[QgsDateTimeRange]: ...
    def isVisibleInTemporalRange(self, range: QgsDateTimeRange) -> bool: ...


class QgsRasterLayerUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def renderedBandForElevationAndTemporalRange(layer: typing.Optional[QgsRasterLayer], temporalRange: QgsDateTimeRange, elevationRange: QgsDoubleRange) -> typing.Tuple[int, 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: ...

    def __ne__(self, other: object): ...
    @staticmethod
    def statAccuracyFromString(accuracy: typing.Optional[str]) -> 'QgsRasterMinMaxOrigin.StatAccuracy': ...
    @staticmethod
    def statAccuracyString(accuracy: 'QgsRasterMinMaxOrigin.StatAccuracy') -> str: ...
    @staticmethod
    def extentFromString(extent: typing.Optional[str]) -> 'QgsRasterMinMaxOrigin.Extent': ...
    @staticmethod
    def extentString(extent: 'QgsRasterMinMaxOrigin.Extent') -> str: ...
    @staticmethod
    def limitsFromString(limits: typing.Optional[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': ...
    def __eq__(self, other: object): ...


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] = ...) -> typing.Optional[QgsRasterBlock]: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional[QgsRasterNuller]: ...
    def projector(self) -> typing.Optional['QgsRasterProjector']: ...
    def hueSaturationFilter(self) -> typing.Optional[QgsHueSaturationFilter]: ...
    def brightnessFilter(self) -> typing.Optional[QgsBrightnessContrastFilter]: ...
    def resampleFilter(self) -> typing.Optional['QgsRasterResampleFilter']: ...
    def renderer(self) -> typing.Optional[QgsRasterRenderer]: ...
    def provider(self) -> typing.Optional[QgsRasterDataProvider]: ...
    def canSetOn(self, idx: int, on: bool) -> bool: ...
    def setOn(self, idx: int, on: bool) -> bool: ...
    def last(self) -> typing.Optional[QgsRasterInterface]: ...
    def at(self, idx: int) -> typing.Optional[QgsRasterInterface]: ...
    def size(self) -> int: ...
    @typing.overload
    def remove(self, idx: int) -> bool: ...
    @typing.overload
    def remove(self, interface: typing.Optional[QgsRasterInterface]) -> bool: ...
    def set(self, interface: typing.Optional[QgsRasterInterface]) -> bool: ...
    def replace(self, idx: int, interface: typing.Optional[QgsRasterInterface]) -> bool: ...
    def insert(self, idx: int, interface: typing.Optional[QgsRasterInterface]) -> bool: ...
    def moveToThread(self, thread: typing.Optional[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] = ...) -> typing.Optional[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) -> typing.Optional['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 __ne__(self, other: object): ...
    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 __eq__(self, other: object): ...
    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 QgsRasterRendererRegistry(PyQt5.sip.wrapper):

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

    def defaultRendererForDrawingStyle(self, drawingStyle: Qgis.RasterDrawingStyle, provider: typing.Optional[QgsRasterDataProvider]) -> typing.Optional[QgsRasterRenderer]: ...
    def rendererCapabilities(self, rendererName: typing.Optional[str]) -> Qgis.RasterRendererCapabilities: ...
    def renderersList(self) -> typing.List[str]: ...


class QgsRasterRendererUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def saveColorMapFile(path: typing.Optional[str], items: typing.Iterable[QgsColorRampShader.ColorRampItem], type: Qgis.ShaderInterpolationMethod) -> bool: ...
    @staticmethod
    def parseColorMapFile(path: typing.Optional[str]) -> typing.Tuple[bool, typing.List[QgsColorRampShader.ColorRampItem], Qgis.ShaderInterpolationMethod, 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) -> typing.Optional[QgsRasterResampler]: ...
    def setZoomedOutResampler(self, r: typing.Optional[QgsRasterResampler]) -> None: ...
    def zoomedInResampler(self) -> typing.Optional[QgsRasterResampler]: ...
    def setZoomedInResampler(self, r: typing.Optional[QgsRasterResampler]) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> typing.Optional[QgsRasterBlock]: ...
    def setInput(self, input: typing.Optional[QgsRasterInterface]) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> typing.Optional['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: typing.Optional[QgsRasterShaderFunction]) -> None: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[int]]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, typing.Optional[int], typing.Optional[int], typing.Optional[int], typing.Optional[int]]: ...
    def rasterShaderFunction(self) -> typing.Optional[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
        opacity = ... # type: float
        red = ... # type: float

        @typing.overload
        def __init__(self, red: float = ..., green: float = ..., blue: float = ..., opacity: float = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentThreeValuePixel') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class TransparentSingleValuePixel(PyQt5.sip.wrapper):

        includeMaximum = ... # type: bool
        includeMinimum = ... # type: bool
        max = ... # type: float
        min = ... # type: float
        opacity = ... # type: float

        @typing.overload
        def __init__(self, minimum: float = ..., maximum: float = ..., opacity: float = ..., includeMinimum: bool = ..., includeMaximum: bool = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentSingleValuePixel') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    @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: ...
    def opacityForRgbValues(self, redValue: float, greenValue: float, blueValue: float) -> float: ...
    def opacityForValue(self, value: float) -> float: ...
    @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: typing.Optional[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] = ...) -> typing.Optional[QgsRasterBlock]: ...
    def setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def setInput(self, input: typing.Optional[QgsRasterInterface]) -> bool: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsSingleBandColorDataRenderer']: ...


class QgsSingleBandGrayRenderer(QgsRasterRenderer):

    class Gradient(int):
        BlackToWhite = ... # type: QgsSingleBandGrayRenderer.Gradient
        WhiteToBlack = ... # type: QgsSingleBandGrayRenderer.Gradient

    def __init__(self, input: typing.Optional[QgsRasterInterface], grayBand: int) -> None: ...

    def setLegendSettings(self, settings: typing.Optional[QgsColorRampLegendNodeSettings]) -> None: ...
    def legendSettings(self) -> typing.Optional[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: typing.Optional[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: typing.Optional[QgsContrastEnhancement]) -> None: ...
    def contrastEnhancement(self) -> typing.Optional[QgsContrastEnhancement]: ...
    def setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    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] = ...) -> typing.Optional[QgsRasterBlock]: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsSingleBandGrayRenderer']: ...


class QgsSingleBandPseudoColorRenderer(QgsRasterRenderer):

    def __init__(self, input: typing.Optional[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 setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def setBand(self, bandNo: int) -> None: ...
    def band(self) -> int: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional[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: Qgis.ShaderInterpolationMethod = ..., classificationMode: Qgis.ShaderClassificationMethod = ..., classes: int = ..., clip: bool = ..., extent: QgsRectangle = ...) -> None: ...
    def canCreateRasterAttributeTable(self) -> bool: ...
    def constShader(self) -> typing.Optional[QgsRasterShader]: ...
    def shader(self) -> typing.Optional[QgsRasterShader]: ...
    def setShader(self, shader: typing.Optional[QgsRasterShader]) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> typing.Optional[QgsRasterBlock]: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsSingleBandPseudoColorRenderer']: ...


class QgsRasterSingleColorRenderer(QgsRasterRenderer):

    def __init__(self, input: typing.Optional[QgsRasterInterface], band: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...

    def usesBands(self) -> typing.List[int]: ...
    def setInputBand(self, band: int) -> bool: ...
    def inputBand(self) -> int: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> typing.Optional[QgsRasterBlock]: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: typing.Optional[QgsRasterInterface]) -> typing.Optional[QgsRasterRenderer]: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> typing.Optional['QgsRasterSingleColorRenderer']: ...


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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        def __xor__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        def __ior__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        def __or__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        def __iand__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        def __and__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> 'QgsScaleBarRenderer.Flags': ...
        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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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: typing.Optional[str]) -> int: ...
    def visibleName(self, id: typing.Optional[str]) -> str: ...
    def renderer(self, id: typing.Optional[str]) -> typing.Optional[QgsScaleBarRenderer]: ...
    def removeRenderer(self, id: typing.Optional[str]) -> None: ...
    def addRenderer(self, renderer: typing.Optional[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: typing.Optional[QgsNumericFormat]) -> None: ...
    def numericFormat(self) -> typing.Optional[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, typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], QtGui.QGradient]) -> None: ...
    def brush2(self) -> QtGui.QBrush: ...
    def setBrush(self, brush: typing.Union[QtGui.QBrush, typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], QtGui.QGradient]) -> None: ...
    def brush(self) -> QtGui.QBrush: ...
    def setAlternateFillSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def alternateFillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setFillSymbol(self, symbol: typing.Optional['QgsFillSymbol']) -> None: ...
    def fillSymbol(self) -> typing.Optional['QgsFillSymbol']: ...
    def setSubdivisionLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def subdivisionLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setDivisionLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def divisionLineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setLineSymbol(self, symbol: typing.Optional['QgsLineSymbol']) -> None: ...
    def lineSymbol(self) -> typing.Optional['QgsLineSymbol']: ...
    def setPen(self, pen: typing.Union[QtGui.QPen, typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]]) -> 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]) -> 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 setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setUnitLabel(self, label: typing.Optional[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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['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 Property(int):
        HeatmapRadius = ... # type: QgsFeatureRenderer.Property
        HeatmapMaximum = ... # type: QgsFeatureRenderer.Property

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __xor__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __ior__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __or__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __iand__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __and__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> 'QgsFeatureRenderer.Capabilities': ...
        def __invert__(self) -> 'QgsFeatureRenderer.Capabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, type: typing.Optional[str]) -> None: ...

    @staticmethod
    def convertSymbolRotation(symbol: typing.Optional['QgsSymbol'], field: typing.Optional[str]) -> None: ...
    @staticmethod
    def convertSymbolSizeScale(symbol: typing.Optional['QgsSymbol'], method: Qgis.ScaleMethod, field: typing.Optional[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.Optional[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], context: QgsRenderContext) -> None: ...
    def renderFeatureWithSymbol(self, feature: QgsFeature, symbol: typing.Optional['QgsSymbol'], context: QgsRenderContext, layer: int, selected: bool, drawVertexMarker: bool) -> None: ...
    def copyRendererData(self, destRenderer: typing.Optional['QgsFeatureRenderer']) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def embeddedRenderer(self) -> typing.Optional['QgsFeatureRenderer']: ...
    def setEmbeddedRenderer(self, subRenderer: typing.Optional['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 setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def setDataDefinedProperty(self, key: 'QgsFeatureRenderer.Property', property: QgsProperty) -> None: ...
    def setForceRasterRender(self, forceRaster: bool) -> None: ...
    def forceRasterRender(self) -> bool: ...
    def setPaintEffect(self, effect: typing.Optional[QgsPaintEffect]) -> None: ...
    def paintEffect(self) -> typing.Optional[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 createLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def legendKeyToExpression(self, key: typing.Optional[str], layer: typing.Optional[QgsVectorLayer]) -> typing.Tuple[str, bool]: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional['QgsSymbol']) -> None: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[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: typing.Optional[str]) -> typing.Optional['QgsFeatureRenderer']: ...
    def writeSld(self, doc: QtXml.QDomDocument, styleName: typing.Optional[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) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional['QgsSymbol']: ...
    def type(self) -> str: ...
    @staticmethod
    def defaultRenderer(geomType: Qgis.GeometryType) -> typing.Optional['QgsFeatureRenderer']: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...


class Qgs25DRenderer(QgsFeatureRenderer):

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

    def setShadowEnabled(self, value: bool) -> None: ...
    def shadowEnabled(self) -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['Qgs25DRenderer']: ...
    def setShadowSpread(self, shadowSpread: float) -> None: ...
    def shadowSpread(self) -> float: ...
    def setShadowColor(self, shadowColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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]) -> None: ...
    def wallColor(self) -> QtGui.QColor: ...
    def setRoofColor(self, roofColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def roofColor(self) -> QtGui.QColor: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional['QgsSymbol']: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...


class QgsSymbolLayer(PyQt5.sip.wrapper):

    class Property(int):
        Size = ... # type: QgsSymbolLayer.Property
        Angle = ... # type: QgsSymbolLayer.Property
        Name = ... # type: QgsSymbolLayer.Property
        FillColor = ... # type: QgsSymbolLayer.Property
        StrokeColor = ... # type: QgsSymbolLayer.Property
        StrokeWidth = ... # type: QgsSymbolLayer.Property
        StrokeStyle = ... # type: QgsSymbolLayer.Property
        Offset = ... # type: QgsSymbolLayer.Property
        Character = ... # type: QgsSymbolLayer.Property
        Width = ... # type: QgsSymbolLayer.Property
        Height = ... # type: QgsSymbolLayer.Property
        PreserveAspectRatio = ... # type: QgsSymbolLayer.Property
        FillStyle = ... # type: QgsSymbolLayer.Property
        JoinStyle = ... # type: QgsSymbolLayer.Property
        SecondaryColor = ... # type: QgsSymbolLayer.Property
        LineAngle = ... # type: QgsSymbolLayer.Property
        LineDistance = ... # type: QgsSymbolLayer.Property
        GradientType = ... # type: QgsSymbolLayer.Property
        CoordinateMode = ... # type: QgsSymbolLayer.Property
        GradientSpread = ... # type: QgsSymbolLayer.Property
        GradientReference1X = ... # type: QgsSymbolLayer.Property
        GradientReference1Y = ... # type: QgsSymbolLayer.Property
        GradientReference2X = ... # type: QgsSymbolLayer.Property
        GradientReference2Y = ... # type: QgsSymbolLayer.Property
        GradientReference1IsCentroid = ... # type: QgsSymbolLayer.Property
        GradientReference2IsCentroid = ... # type: QgsSymbolLayer.Property
        BlurRadius = ... # type: QgsSymbolLayer.Property
        ShapeburstUseWholeShape = ... # type: QgsSymbolLayer.Property
        ShapeburstMaxDistance = ... # type: QgsSymbolLayer.Property
        ShapeburstIgnoreRings = ... # type: QgsSymbolLayer.Property
        File = ... # type: QgsSymbolLayer.Property
        DistanceX = ... # type: QgsSymbolLayer.Property
        DistanceY = ... # type: QgsSymbolLayer.Property
        DisplacementX = ... # type: QgsSymbolLayer.Property
        DisplacementY = ... # type: QgsSymbolLayer.Property
        Opacity = ... # type: QgsSymbolLayer.Property
        CustomDash = ... # type: QgsSymbolLayer.Property
        CapStyle = ... # type: QgsSymbolLayer.Property
        Placement = ... # type: QgsSymbolLayer.Property
        Interval = ... # type: QgsSymbolLayer.Property
        OffsetAlongLine = ... # type: QgsSymbolLayer.Property
        AverageAngleLength = ... # type: QgsSymbolLayer.Property
        HorizontalAnchor = ... # type: QgsSymbolLayer.Property
        VerticalAnchor = ... # type: QgsSymbolLayer.Property
        LayerEnabled = ... # type: QgsSymbolLayer.Property
        ArrowWidth = ... # type: QgsSymbolLayer.Property
        ArrowStartWidth = ... # type: QgsSymbolLayer.Property
        ArrowHeadLength = ... # type: QgsSymbolLayer.Property
        ArrowHeadThickness = ... # type: QgsSymbolLayer.Property
        ArrowHeadType = ... # type: QgsSymbolLayer.Property
        ArrowType = ... # type: QgsSymbolLayer.Property
        OffsetX = ... # type: QgsSymbolLayer.Property
        OffsetY = ... # type: QgsSymbolLayer.Property
        PointCount = ... # type: QgsSymbolLayer.Property
        RandomSeed = ... # type: QgsSymbolLayer.Property
        ClipPoints = ... # type: QgsSymbolLayer.Property
        DensityArea = ... # type: QgsSymbolLayer.Property
        FontFamily = ... # type: QgsSymbolLayer.Property
        FontStyle = ... # type: QgsSymbolLayer.Property
        DashPatternOffset = ... # type: QgsSymbolLayer.Property
        TrimStart = ... # type: QgsSymbolLayer.Property
        TrimEnd = ... # type: QgsSymbolLayer.Property
        LineStartWidthValue = ... # type: QgsSymbolLayer.Property
        LineEndWidthValue = ... # type: QgsSymbolLayer.Property
        LineStartColorValue = ... # type: QgsSymbolLayer.Property
        LineEndColorValue = ... # type: QgsSymbolLayer.Property
        MarkerClipping = ... # type: QgsSymbolLayer.Property
        RandomOffsetX = ... # type: QgsSymbolLayer.Property
        RandomOffsetY = ... # type: QgsSymbolLayer.Property
        LineClipping = ... # type: QgsSymbolLayer.Property

    def __init__(self, type: Qgis.SymbolType, locked: bool = ...) -> None: ...

    def shouldRenderUsingSelectionColor(self, context: 'QgsSymbolRenderContext') -> bool: ...
    def removeMasks(self, context: QgsRenderContext, recursive: bool) -> None: ...
    def copyPaintEffect(self, destLayer: typing.Optional['QgsSymbolLayer']) -> None: ...
    def copyDataDefinedProperties(self, destLayer: typing.Optional['QgsSymbolLayer']) -> None: ...
    def restoreOldDataDefinedProperties(self, stringMap: typing.Dict[str, typing.Any]) -> None: ...
    def installMasks(self, context: QgsRenderContext, recursive: bool, rect: QtCore.QRectF = ...) -> bool: ...
    def id(self) -> str: ...
    def setId(self, id: typing.Optional[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: typing.Optional[QgsPaintEffect]) -> None: ...
    def paintEffect(self) -> typing.Optional[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: typing.Optional[str], context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> 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: typing.Optional['QgsSymbol']) -> bool: ...
    def type(self) -> Qgis.SymbolType: ...
    def setSubSymbol(self, symbol: typing.Optional['QgsSymbol']) -> bool: ...
    def subSymbol(self) -> typing.Optional['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) -> typing.Optional['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]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setUserFlags(self, flags: typing.Union[Qgis.SymbolLayerUserFlags, Qgis.SymbolLayerUserFlag]) -> None: ...
    def userFlags(self) -> Qgis.SymbolLayerUserFlags: ...
    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.Optional[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]) -> 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: typing.Optional['QgsSymbol']) -> bool: ...
    def subSymbol(self) -> typing.Optional['QgsSymbol']: ...
    def clone(self) -> typing.Optional['QgsArrowSymbolLayer']: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsRendererCategory(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: typing.Any, symbol: typing.Optional['QgsSymbol'], label: typing.Optional[str], render: bool = ..., uuid: typing.Optional[str] = ...) -> 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: typing.Optional[str]) -> None: ...
    def setSymbol(self, s: typing.Optional['QgsSymbol']) -> None: ...
    def setValue(self, value: typing.Any) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> typing.Optional['QgsSymbol']: ...
    def value(self) -> typing.Any: ...
    def uuid(self) -> str: ...


class QgsCategorizedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, attrName: typing.Optional[str] = ..., categories: typing.Iterable[QgsRendererCategory] = ...) -> None: ...

    def symbolForValue2(self, value: typing.Any) -> typing.Tuple[typing.Optional['QgsSymbol'], bool]: ...
    def symbolForValue(self, value: typing.Any) -> typing.Optional['QgsSymbol']: ...
    def skipRender(self) -> typing.Optional['QgsSymbol']: ...
    def rebuildHash(self) -> None: ...
    @staticmethod
    def displayString(value: typing.Any, precision: int = ...) -> str: ...
    @staticmethod
    def createCategories(values: typing.Iterable[typing.Any], symbol: typing.Optional['QgsSymbol'], layer: typing.Optional[QgsVectorLayer] = ..., fieldName: typing.Optional[str] = ...) -> typing.List[QgsRendererCategory]: ...
    def matchToSymbols(self, style: typing.Optional['QgsStyle'], type: Qgis.SymbolType, caseSensitive: bool = ..., useTolerantMatch: bool = ...) -> typing.Tuple[int, typing.List[typing.Any], typing.List[str]]: ...
    def dataDefinedSizeLegend(self) -> typing.Optional[QgsDataDefinedSizeLegend]: ...
    def setDataDefinedSizeLegend(self, settings: typing.Optional[QgsDataDefinedSizeLegend]) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer], layer: typing.Optional[QgsVectorLayer] = ...) -> typing.Optional['QgsCategorizedSymbolRenderer']: ...
    def legendClassificationAttribute(self) -> str: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional['QgsSymbol']) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[str]) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def updateColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def setSourceColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def sourceColorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def setSourceSymbol(self, sym: typing.Optional['QgsSymbol']) -> None: ...
    def sourceSymbol(self) -> typing.Optional['QgsSymbol']: ...
    def legendKeyToExpression(self, key: typing.Optional[str], layer: typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...
    def setClassAttribute(self, attr: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def updateCategorySymbol(self, catIndex: int, symbol: typing.Optional['QgsSymbol']) -> bool: ...
    def updateCategoryValue(self, catIndex: int, value: typing.Any) -> bool: ...
    def categoryIndexForLabel(self, val: typing.Optional[str]) -> int: ...
    def categoryIndexForValue(self, val: typing.Any) -> int: ...
    def categories(self) -> typing.List[QgsRendererCategory]: ...
    def updateSymbols(self, sym: typing.Optional['QgsSymbol']) -> None: ...
    def accept(self, visitor: typing.Optional['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) -> typing.Optional['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) -> typing.Optional['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional['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: typing.Optional[str]) -> typing.List[int]: ...
    @staticmethod
    def listSchemes() -> typing.List[str]: ...
    @staticmethod
    def listSchemeColors(schemeName: typing.Optional[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: typing.Optional['QgsStyle']) -> None: ...
    def addDefaultStyle(self) -> None: ...
    def addStyle(self, style: typing.Optional['QgsStyle']) -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...


class QgsCptCityArchive(PyQt5.sip.wrapper):

    def __init__(self, archiveName: typing.Optional[str] = ..., baseDir: typing.Optional[str] = ...) -> None: ...

    def selectionItems(self) -> typing.List['QgsCptCityDataItem']: ...
    def rootItems(self) -> typing.List['QgsCptCityDataItem']: ...
    @staticmethod
    def archiveRegistry() -> typing.Any: ...
    @staticmethod
    def defaultArchive() -> typing.Optional['QgsCptCityArchive']: ...
    @staticmethod
    def clearArchives() -> None: ...
    @staticmethod
    def initDefaultArchive() -> None: ...
    @staticmethod
    def initArchive(archiveName: typing.Optional[str], archiveBaseDir: typing.Optional[str]) -> None: ...
    @staticmethod
    def initArchives(loadAll: bool = ...) -> None: ...
    def archiveName(self) -> str: ...
    def isEmpty(self) -> bool: ...
    @staticmethod
    def description(fileName: typing.Optional[str]) -> typing.Dict[str, str]: ...
    @staticmethod
    def copyingInfo(fileName: typing.Optional[str]) -> typing.Dict[str, str]: ...
    @staticmethod
    def findFileName(target: typing.Optional[str], startDir: typing.Optional[str], baseDir: typing.Optional[str]) -> str: ...
    def descFileName(self, dirName: typing.Optional[str]) -> str: ...
    def copyingFileName(self, dirName: typing.Optional[str]) -> str: ...
    def setBaseDir(self, dirName: typing.Optional[str]) -> None: ...
    @staticmethod
    def defaultBaseDir() -> str: ...
    @typing.overload
    def baseDir(self) -> str: ...
    @typing.overload
    @staticmethod
    def baseDir(archiveName: typing.Optional[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: typing.Optional['QgsCptCityDataItem'], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...

    endRemoveItems: typing.ClassVar[QtCore.pyqtSignal]
    beginRemoveItems: typing.ClassVar[QtCore.pyqtSignal]
    endInsertItems: typing.ClassVar[QtCore.pyqtSignal]
    beginInsertItems: typing.ClassVar[QtCore.pyqtSignal]
    def isValid(self) -> bool: ...
    def toolTip(self) -> str: ...
    def setToolTip(self, msg: typing.Optional[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: typing.Optional['QgsCptCityDataItem']) -> None: ...
    def parent(self) -> typing.Optional['QgsCptCityDataItem']: ...
    def type(self) -> 'QgsCptCityDataItem.Type': ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsCptCityDataItem'], item: typing.Optional['QgsCptCityDataItem']) -> int: ...
    def handleDrop(self, a0: typing.Optional[QtCore.QMimeData], a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def paramWidget(self) -> typing.Optional[QtWidgets.QWidget]: ...
    def equal(self, other: typing.Optional['QgsCptCityDataItem']) -> bool: ...
    def removeChildItem(self, child: typing.Optional['QgsCptCityDataItem']) -> typing.Optional['QgsCptCityDataItem']: ...
    def deleteChildItem(self, child: typing.Optional['QgsCptCityDataItem']) -> None: ...
    def addChildItem(self, child: typing.Optional['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: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str], variantName: typing.Optional[str] = ..., initialize: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str], variantList: typing.Iterable[typing.Optional[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: typing.Optional[QgsCptCityDataItem]) -> bool: ...


class QgsCptCityCollectionItem(QgsCptCityDataItem):

    def __init__(self, parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...

    def childrenRamps(self, recursive: bool) -> typing.List[QgsCptCityDataItem]: ...
    def addChild(self, item: typing.Optional[QgsCptCityDataItem]) -> None: ...
    def setPopulated(self) -> None: ...


class QgsCptCityDirectoryItem(QgsCptCityCollectionItem):

    def __init__(self, parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...

    def dirEntries(self) -> typing.List[str]: ...
    def rampsMap(self) -> typing.Dict[str, typing.List[str]]: ...
    @staticmethod
    def dataItem(parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> typing.Optional[QgsCptCityDataItem]: ...
    def equal(self, other: typing.Optional[QgsCptCityDataItem]) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCitySelectionItem(QgsCptCityCollectionItem):

    def __init__(self, parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[str], path: typing.Optional[str]) -> None: ...

    def parseXml(self) -> None: ...
    def selectionsList(self) -> typing.List[str]: ...
    def equal(self, other: typing.Optional[QgsCptCityDataItem]) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCityAllRampsItem(QgsCptCityCollectionItem):

    def __init__(self, parent: typing.Optional[QgsCptCityDataItem], name: typing.Optional[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: typing.Optional[QgsCptCityDataItem], first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: typing.Optional[QgsCptCityDataItem], first: int, last: int) -> None: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def connectItem(self, item: typing.Optional[QgsCptCityDataItem]) -> None: ...
    def findPath(self, path: typing.Optional[str]) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: typing.Optional[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) -> typing.Optional[QgsCptCityDataItem]: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def findItem(self, item: typing.Optional[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], 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], 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]) -> 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], 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], 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]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFillColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: typing.Optional[str]) -> typing.Tuple['QgsEllipseSymbolLayer.Shape', typing.Optional[bool]]: ...
    def setShape(self, shape: 'QgsEllipseSymbolLayer.Shape') -> None: ...
    def shape(self) -> 'QgsEllipseSymbolLayer.Shape': ...
    def symbolName(self) -> str: ...
    def setSymbolName(self, name: typing.Optional[str]) -> None: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: typing.Optional[str], context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> 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) -> typing.Optional['QgsEllipseSymbolLayer']: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def shapeIsFilled(shape: 'QgsEllipseSymbolLayer.Shape') -> bool: ...
    @staticmethod
    def availableShapes() -> typing.List['QgsEllipseSymbolLayer.Shape']: ...


class QgsEmbeddedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, defaultSymbol: typing.Optional['QgsSymbol']) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsEmbeddedSymbolRenderer']: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...
    def setDefaultSymbol(self, symbol: typing.Optional['QgsSymbol']) -> None: ...
    def defaultSymbol(self) -> typing.Optional['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) -> typing.Optional['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) -> typing.Optional['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional['QgsSymbol']: ...


class QgsFeatureRendererGenerator(PyQt5.sip.wrapper):

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

    def createRenderer(self) -> typing.Optional[QgsFeatureRenderer]: ...
    def level(self) -> float: ...
    def id(self) -> str: ...


class QgsSymbol(PyQt5.sip.wrapper):

    class Property(int):
        Opacity = ... # type: QgsSymbol.Property

    def __init__(self, type: Qgis.SymbolType, layers: typing.Iterable[QgsSymbolLayer]) -> None: ...

    def renderVertexMarker(self, pt: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsRenderContext, currentVertexMarkerType: Qgis.VertexMarkerType, currentVertexMarkerSize: float) -> None: ...
    def renderUsingLayer(self, layer: typing.Optional[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) -> typing.Optional['QgsSymbolRenderContext']: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ..., currentVertexMarkerType: Qgis.VertexMarkerType = ..., currentVertexMarkerSize: float = ...) -> None: ...
    def layer(self) -> typing.Optional[QgsVectorLayer]: ...
    def setLayer(self, layer: typing.Optional[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) -> typing.Optional['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: typing.Optional[str], format: typing.Optional[str], size: QtCore.QSize) -> None: ...
    def drawPreviewIcon(self, painter: typing.Optional[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]) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields = ...) -> None: ...
    def changeSymbolLayer(self, index: int, layer: typing.Optional[QgsSymbolLayer]) -> bool: ...
    def takeSymbolLayer(self, index: int) -> typing.Optional[QgsSymbolLayer]: ...
    def deleteSymbolLayer(self, index: int) -> bool: ...
    def appendSymbolLayer(self, layer: typing.Optional[QgsSymbolLayer]) -> bool: ...
    def insertSymbolLayer(self, index: int, layer: typing.Optional[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) -> typing.Optional['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) -> typing.Optional['QgsFillSymbol']: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]], f: typing.Optional[QgsFeature], context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setAngle(self, angle: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> typing.Optional['QgsFillSymbol']: ...


class QgsFillSymbolLayer(QgsSymbolLayer):

    def __init__(self, locked: bool = ...) -> None: ...

    def _renderPolygon(self, p: typing.Optional[QtGui.QPainter], points: QtGui.QPolygonF, rings: typing.Optional[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.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...


class QgsSimpleFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., style: QtCore.Qt.BrushStyle = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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]) -> 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]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setStrokeColor(self, strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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) -> typing.Optional['QgsSimpleFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsGradientFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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]) -> 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]) -> 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]) -> 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]) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def colorRamp(self) -> typing.Optional[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) -> typing.Optional['QgsGradientFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...
    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] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsShapeburstFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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]) -> 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]) -> None: ...
    def colorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def setColorRamp(self, ramp: typing.Optional[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) -> typing.Optional['QgsShapeburstFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...


class QgsRasterFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self, imageFilePath: typing.Optional[str] = ...) -> None: ...

    def applyBrushTransformFromContext(self, context: typing.Optional['QgsSymbolRenderContext'] = ...) -> bool: ...
    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def widthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeUnit(self) -> Qgis.RenderUnit: ...
    def widthUnit(self) -> Qgis.RenderUnit: ...
    def setSizeUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def setWidthUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def height(self) -> float: ...
    def setHeight(self, height: float) -> 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]) -> 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: typing.Optional[str]) -> None: ...
    def setSubSymbol(self, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[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) -> typing.Optional['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.Optional[typing.Iterable[QtGui.QPolygonF]], context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsSVGFillSymbolLayer(QgsImageFillSymbolLayer):

    @typing.overload
    def __init__(self, svgFilePath: typing.Optional[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[typing.Optional[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]) -> None: ...
    def svgFillColor(self) -> QtGui.QColor: ...
    def setSvgFillColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def patternWidth(self) -> float: ...
    def setPatternWidth(self, width: float) -> None: ...
    def svgFilePath(self) -> str: ...
    def setSvgFilePath(self, svgPath: typing.Optional[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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def usesMapUnits(self) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> typing.Optional['QgsSVGFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def setSubSymbol(self, symbol: typing.Optional[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]) -> 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) -> typing.Optional['QgsLinePatternFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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]) -> 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) -> typing.Optional[QgsSymbol]: ...
    def setSubSymbol(self, symbol: typing.Optional[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) -> typing.Optional['QgsPointPatternFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def clone(self) -> typing.Optional['QgsRandomMarkerFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[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] = ...) -> typing.Optional[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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> typing.Optional['QgsCentroidFillSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsGeometryGeneratorSymbolLayer(QgsSymbolLayer):

    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: typing.Optional[QgsSymbol]) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def setUnits(self, units: Qgis.RenderUnit) -> None: ...
    def units(self) -> Qgis.RenderUnit: ...
    def geometryExpression(self) -> str: ...
    def setGeometryExpression(self, exp: typing.Optional[str]) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> typing.Optional[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]) -> typing.Optional[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: typing.Optional[str] = ..., ranges: typing.Iterable['QgsRendererRange'] = ...) -> None: ...

    def legendKeyForValue(self, value: float) -> str: ...
    def symbolForValue(self, value: float) -> typing.Optional[QgsSymbol]: ...
    def rangeForValue(self, value: float) -> typing.Optional['QgsRendererRange']: ...
    def updateRangeLabels(self) -> None: ...
    def dataDefinedSizeLegend(self) -> typing.Optional[QgsDataDefinedSizeLegend]: ...
    def setDataDefinedSizeLegend(self, settings: typing.Optional[QgsDataDefinedSizeLegend]) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsGraduatedSymbolRenderer']: ...
    def legendClassificationAttribute(self) -> str: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional[QgsSymbol]) -> None: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[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: typing.Optional[QgsSymbol]) -> None: ...
    def updateColorRamp(self, ramp: typing.Optional[QgsColorRamp] = ...) -> None: ...
    def setSourceColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def sourceColorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def setSourceSymbol(self, sym: typing.Optional[QgsSymbol]) -> None: ...
    def sourceSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def legendKeyToExpression(self, key: typing.Optional[str], layer: typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...
    @staticmethod
    def createRenderer(vlayer: typing.Optional[QgsVectorLayer], attrName: typing.Optional[str], classes: int, mode: 'QgsGraduatedSymbolRenderer.Mode', symbol: typing.Optional[QgsSymbol], ramp: typing.Optional[QgsColorRamp], legendFormat: 'QgsRendererRangeLabelFormat' = ..., useSymmetricMode: bool = ..., symmetryPoint: float = ..., listForCboPrettyBreaks: typing.Iterable[typing.Optional[str]] = ..., astride: bool = ...) -> typing.Optional['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: typing.Optional[QgsVectorLayer], mode: 'QgsGraduatedSymbolRenderer.Mode', nclasses: int, useSymmetricMode: bool = ..., symmetryPoint: float = ..., astride: bool = ...) -> None: ...
    @typing.overload
    def updateClasses(self, vl: typing.Optional[QgsVectorLayer], nclasses: int) -> str: ...
    @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: typing.Optional[QgsClassificationMethod]) -> None: ...
    def classificationMethod(self) -> typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> bool: ...
    def updateRangeSymbol(self, rangeIndex: int, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def ranges(self) -> typing.List['QgsRendererRange']: ...
    def setClassAttribute(self, attr: typing.Optional[str]) -> None: ...
    def classAttribute(self) -> str: ...
    def accept(self, visitor: typing.Optional['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) -> typing.Optional['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) -> typing.Optional[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional[QgsSymbol]: ...


class QgsHeatmapRenderer(QgsFeatureRenderer):

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

    def setWeightExpression(self, expression: typing.Optional[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 setLegendSettings(self, settings: QgsColorRampLegendNodeSettings) -> None: ...
    def legendSettings(self) -> QgsColorRampLegendNodeSettings: ...
    def setColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def colorRamp(self) -> typing.Optional[QgsColorRamp]: ...
    def modifyRequestExtent(self, extent: QgsRectangle, context: QgsRenderContext) -> None: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsHeatmapRenderer']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[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) -> typing.Optional[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) -> typing.Optional['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]) -> 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]], 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]) -> 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], point2: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[str], end: typing.Optional[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: typing.Optional[str], end: typing.Optional[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) -> typing.Optional['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]) -> typing.Optional[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: typing.Optional[QgsFeatureRenderer]) -> None: ...
    @typing.overload
    def __init__(self, type: typing.Optional[str], embeddedRenderer: typing.Optional[QgsFeatureRenderer]) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsMergedFeatureRenderer']: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[str]) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional[QgsSymbol]) -> None: ...
    def embeddedRenderer(self) -> typing.Optional[QgsFeatureRenderer]: ...
    def setEmbeddedRenderer(self, subRenderer: typing.Optional[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: typing.Optional[str], layer: typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional[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) -> typing.Optional['QgsMergedFeatureRenderer']: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...


class QgsInvertedPolygonRenderer(QgsMergedFeatureRenderer):

    def __init__(self, embeddedRenderer: typing.Optional[QgsFeatureRenderer] = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['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) -> typing.Optional[QgsFeatureRenderer]: ...
    def dump(self) -> str: ...
    def clone(self) -> typing.Optional['QgsInvertedPolygonRenderer']: ...


class QgsLegendSymbolItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, symbol: typing.Optional[QgsSymbol], label: typing.Optional[str], ruleKey: typing.Optional[str], checkable: bool = ..., scaleMinDenom: int = ..., scaleMaxDenom: int = ..., level: int = ..., parentRuleKey: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLegendSymbolItem') -> None: ...

    def userData(self, key: int) -> typing.Any: ...
    def setUserData(self, key: int, value: typing.Any) -> None: ...
    def dataDefinedSizeLegendSettings(self) -> typing.Optional[QgsDataDefinedSizeLegend]: ...
    def setDataDefinedSizeLegendSettings(self, settings: typing.Optional[QgsDataDefinedSizeLegend]) -> None: ...
    def setSymbol(self, s: typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def isCheckable(self) -> bool: ...
    def ruleKey(self) -> str: ...
    def label(self) -> str: ...
    def symbol(self) -> typing.Optional[QgsSymbol]: ...


class QgsLineSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> typing.Optional['QgsLineSymbol']: ...
    def renderPolyline(self, points: QtGui.QPolygonF, f: typing.Optional[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]) -> typing.Optional['QgsLineSymbol']: ...


class QgsSimpleLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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) -> typing.Optional['QgsSimpleLineSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Optional[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 flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsTemplatedLineSymbolLayerBase(QgsLineSymbolLayer):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    @staticmethod
    def setCommonProperties(destLayer: typing.Optional['QgsTemplatedLineSymbolLayerBase'], properties: typing.Dict[str, typing.Any]) -> None: ...
    def copyTemplateSymbolProperties(self, destLayer: typing.Optional['QgsTemplatedLineSymbolLayerBase']) -> None: ...
    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], feature: typing.Optional[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.Optional[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], feature: typing.Optional[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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> typing.Optional['QgsMarkerLineSymbolLayer']: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsHashedLineSymbolLayer(QgsTemplatedLineSymbolLayerBase):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], feature: typing.Optional[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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def clone(self) -> typing.Optional['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] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsAbstractBrushedLineSymbolLayer(QgsLineSymbolLayer):

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

    def renderPolylineUsingBrush(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext', brush: typing.Union[QtGui.QBrush, typing.Union[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: typing.Optional[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) -> typing.Optional['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 flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setPath(self, path: typing.Optional[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] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsLineburstSymbolLayer(QgsAbstractBrushedLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...

    def setColor2(self, color2: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color2(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    def colorRamp(self) -> typing.Optional[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) -> typing.Optional['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 flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsFilledLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self, width: float = ..., fillSymbol: typing.Optional[QgsFillSymbol] = ...) -> 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 usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    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 color(self) -> QtGui.QColor: ...
    def setColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def setSubSymbol(self, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def clone(self) -> typing.Optional['QgsFilledLineSymbolLayer']: ...
    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] = ...) -> typing.Optional[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: typing.Optional[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], size: float, sizeUnit: Qgis.RenderUnit) -> typing.Optional['QgsMarkerSymbol']: ...
    @staticmethod
    def convertFillSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], backColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Optional[QgsFillSymbol]: ...
    @staticmethod
    def convertLineSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], size: float, sizeUnit: Qgis.RenderUnit, interleaved: bool = ...) -> typing.Optional[QgsLineSymbol]: ...


class QgsMarkerSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> typing.Optional['QgsMarkerSymbol']: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsRenderContext, feature: QgsFeature = ...) -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], f: typing.Optional[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]) -> typing.Optional['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]) -> 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], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[str]) -> typing.Tuple[Qgis.MarkerShape, typing.Optional[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] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., penJoinStyle: QtCore.Qt.PenJoinStyle = ...) -> None: ...

    def prepareCache(self, context: 'QgsSymbolRenderContext') -> bool: ...
    def drawMarker(self, p: typing.Optional[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]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[str], context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> 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) -> typing.Optional['QgsSimpleMarkerSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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]) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def setSubSymbol(self, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def clone(self) -> typing.Optional['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] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsSvgMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: typing.Optional[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], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: typing.Optional[str], context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> 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[typing.Optional[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]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: typing.Optional[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) -> typing.Optional['QgsSvgMarkerSymbolLayer']: ...
    def usesMapUnits(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsRasterMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: typing.Optional[str] = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def copyCommonProperties(self, other: typing.Optional['QgsRasterMarkerSymbolLayer']) -> None: ...
    def setCommonProperties(self, properties: typing.Dict[str, typing.Any]) -> None: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[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) -> typing.Optional['QgsRasterMarkerSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    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] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsFontMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, fontFamily: typing.Optional[str] = ..., chr: typing.Optional[str] = ..., pointSize: float = ..., color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., angle: float = ...) -> None: ...

    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setCharacter(self, chr: typing.Optional[str]) -> None: ...
    def character(self) -> str: ...
    def setFontStyle(self, style: typing.Optional[str]) -> None: ...
    def fontStyle(self) -> str: ...
    def setFontFamily(self, family: typing.Optional[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) -> typing.Optional['QgsFontMarkerSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolveFonts(properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsAnimatedMarkerSymbolLayer(QgsRasterMarkerSymbolLayer):

    def __init__(self, path: typing.Optional[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) -> typing.Optional['QgsAnimatedMarkerSymbolLayer']: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[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], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: typing.Optional[QgsSymbol]) -> bool: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def clone(self) -> typing.Optional['QgsMaskMarkerSymbolLayer']: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsNullSymbolRenderer(QgsFeatureRenderer):

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

    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsNullSymbolRenderer']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def clone(self) -> typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional[QgsSymbol]: ...


class QgsPointDistanceRenderer(QgsFeatureRenderer):

    class GroupedFeature(PyQt5.sip.wrapper):

        feature = ... # type: QgsFeature
        isSelected = ... # type: bool
        label = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, feature: QgsFeature, symbol: typing.Optional[QgsMarkerSymbol], isSelected: bool, label: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointDistanceRenderer.GroupedFeature') -> None: ...

        def symbol(self) -> typing.Optional[QgsMarkerSymbol]: ...

    def __init__(self, rendererName: typing.Optional[str], labelAttributeName: typing.Optional[str] = ...) -> None: ...

    def drawLabels(self, centerPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext', labelShifts: typing.Iterable[typing.Union[QtCore.QPointF, QtCore.QPoint]], 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]) -> 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: typing.Optional[str]) -> None: ...
    def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[str]) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional[QgsSymbol]) -> None: ...
    def embeddedRenderer(self) -> typing.Optional[QgsFeatureRenderer]: ...
    def setEmbeddedRenderer(self, r: typing.Optional[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: typing.Optional[str], layer: typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional[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: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsPointClusterRenderer']: ...
    def setClusterSymbol(self, symbol: typing.Optional[QgsMarkerSymbol]) -> None: ...
    def clusterSymbol(self) -> typing.Optional[QgsMarkerSymbol]: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...
    def accept(self, visitor: typing.Optional['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) -> typing.Optional['QgsPointClusterRenderer']: ...


class QgsPointDisplacementRenderer(QgsPointDistanceRenderer):

    class Placement(int):
        Ring = ... # type: QgsPointDisplacementRenderer.Placement
        ConcentricRings = ... # type: QgsPointDisplacementRenderer.Placement
        Grid = ... # type: QgsPointDisplacementRenderer.Placement

    def __init__(self, labelAttributeName: typing.Optional[str] = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsPointDisplacementRenderer']: ...
    def setCenterSymbol(self, symbol: typing.Optional[QgsMarkerSymbol]) -> None: ...
    def centerSymbol(self) -> typing.Optional[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]) -> None: ...
    def circleWidth(self) -> float: ...
    def setCircleWidth(self, width: float) -> None: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...
    def accept(self, visitor: typing.Optional['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) -> typing.Optional['QgsPointDisplacementRenderer']: ...


class QgsSymbolLevelItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, symbol: typing.Optional[QgsSymbol], layer: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLevelItem') -> None: ...

    def layer(self) -> int: ...
    def symbol(self) -> typing.Optional[QgsSymbol]: ...


class QgsRendererRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, range: QgsClassificationRange, symbol: typing.Optional[QgsSymbol], render: bool = ..., uuid: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, lowerValue: float, upperValue: float, symbol: typing.Optional[QgsSymbol], label: typing.Optional[str], render: bool = ..., uuid: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, range: 'QgsRendererRange') -> None: ...

    def __ge__(self, other: 'QgsRendererRange') -> bool: ...
    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: typing.Optional[str]) -> None: ...
    def setSymbol(self, s: typing.Optional[QgsSymbol]) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> typing.Optional[QgsSymbol]: ...
    def upperValue(self) -> float: ...
    def lowerValue(self) -> float: ...
    def uuid(self) -> str: ...
    def __lt__(self, other: 'QgsRendererRange') -> bool: ...


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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def format(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __xor__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __ior__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __or__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __iand__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __and__(self, f: typing.Union['QgsRendererAbstractMetadata.LayerTypes', 'QgsRendererAbstractMetadata.LayerType']) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __invert__(self) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, name: typing.Optional[str], visibleName: typing.Optional[str], icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRendererAbstractMetadata') -> None: ...

    def createRendererFromSld(self, elem: QtXml.QDomElement, geomType: Qgis.GeometryType) -> typing.Optional[QgsFeatureRenderer]: ...
    def createRendererWidget(self, layer: typing.Optional[QgsVectorLayer], style: typing.Optional['QgsStyle'], oldRenderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional[QgsRendererWidget]: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...
    def createRendererWidget(self, layer: typing.Optional[QgsVectorLayer], style: typing.Optional['QgsStyle'], renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional[QgsRendererWidget]: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[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: typing.Optional[QgsVectorLayer]) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: typing.Optional[str]) -> typing.Optional[QgsRendererAbstractMetadata]: ...
    def removeRenderer(self, rendererName: typing.Optional[str]) -> bool: ...
    def addRenderer(self, metadata: typing.Optional[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: typing.Optional[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: typing.Optional[QgsSymbol], maximumScale: int = ..., minimumScale: int = ..., filterExp: typing.Optional[str] = ..., label: typing.Optional[str] = ..., description: typing.Optional[str] = ..., elseRule: bool = ...) -> None: ...

        def initFilter(self) -> None: ...
        def accept(self, visitor: typing.Optional['QgsStyleEntityVisitorInterface']) -> bool: ...
        def isElse(self) -> bool: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def findRuleByKey(self, key: typing.Optional[str]) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
        def takeChildAt(self, i: int) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
        def takeChild(self, rule: typing.Optional['QgsRuleBasedRenderer.Rule']) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
        def removeChildAt(self, i: int) -> None: ...
        def removeChild(self, rule: typing.Optional['QgsRuleBasedRenderer.Rule']) -> None: ...
        def insertChild(self, i: int, rule: typing.Optional['QgsRuleBasedRenderer.Rule']) -> None: ...
        def appendChild(self, rule: typing.Optional['QgsRuleBasedRenderer.Rule']) -> None: ...
        def parent(self) -> typing.Optional['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 = ...) -> typing.Optional['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: typing.Optional[str]) -> bool: ...
        def save(self, doc: QtXml.QDomDocument, symbolMap: typing.Any) -> QtXml.QDomElement: ...
        @staticmethod
        def createFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
        def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
        def clone(self) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: typing.Optional[str]) -> None: ...
        def setFilterExpression(self, filterExp: typing.Optional[str]) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setLabel(self, label: typing.Optional[str]) -> None: ...
        def setSymbol(self, sym: typing.Optional[QgsSymbol]) -> None: ...
        def setRuleKey(self, key: typing.Optional[str]) -> None: ...
        def ruleKey(self) -> str: ...
        def active(self) -> bool: ...
        def description(self) -> str: ...
        def filterExpression(self) -> str: ...
        def filter(self) -> typing.Optional[QgsExpression]: ...
        def minimumScale(self) -> float: ...
        def maximumScale(self) -> float: ...
        def dependsOnScale(self) -> bool: ...
        def label(self) -> str: ...
        def symbol(self) -> typing.Optional[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: typing.Optional['QgsRuleBasedRenderer.Rule']) -> None: ...
    @typing.overload
    def __init__(self, defaultSymbol: typing.Optional[QgsSymbol]) -> None: ...

    @staticmethod
    def convertToDataDefinedSymbology(symbol: typing.Optional[QgsSymbol], sizeScaleField: typing.Optional[str], rotationField: typing.Optional[str] = ...) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer], layer: typing.Optional[QgsVectorLayer] = ...) -> typing.Optional['QgsRuleBasedRenderer']: ...
    @staticmethod
    def refineRuleScales(initialRule: typing.Optional['QgsRuleBasedRenderer.Rule'], scales: typing.Iterable[int]) -> None: ...
    @staticmethod
    def refineRuleRanges(initialRule: typing.Optional['QgsRuleBasedRenderer.Rule'], r: typing.Optional[QgsGraduatedSymbolRenderer]) -> None: ...
    @staticmethod
    def refineRuleCategories(initialRule: typing.Optional['QgsRuleBasedRenderer.Rule'], r: typing.Optional[QgsCategorizedSymbolRenderer]) -> None: ...
    def rootRule(self) -> typing.Optional['QgsRuleBasedRenderer.Rule']: ...
    def accept(self, visitor: typing.Optional['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: typing.Optional[str], symbol: typing.Optional[QgsSymbol]) -> None: ...
    def legendKeyToExpression(self, key: typing.Optional[str], layer: typing.Optional[QgsVectorLayer]) -> typing.Tuple[str, bool]: ...
    def checkLegendSymbolItem(self, key: typing.Optional[str], state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> typing.Optional['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) -> typing.Optional[QgsSymbol]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsFeatureRenderer]: ...


class QgsSingleSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, symbol: typing.Optional[QgsSymbol]) -> None: ...

    def dataDefinedSizeLegend(self) -> typing.Optional[QgsDataDefinedSizeLegend]: ...
    def setDataDefinedSizeLegend(self, settings: typing.Optional[QgsDataDefinedSizeLegend]) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: typing.Optional[QgsFeatureRenderer]) -> typing.Optional['QgsSingleSymbolRenderer']: ...
    def setLegendSymbolItem(self, key: typing.Optional[str], symbol: typing.Optional[QgsSymbol]) -> None: ...
    def legendKeyToExpression(self, key: typing.Optional[str], layer: typing.Optional[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) -> typing.Optional[QgsFeatureRenderer]: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType) -> typing.Optional[QgsFeatureRenderer]: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> typing.Optional['QgsSingleSymbolRenderer']: ...
    def dump(self) -> str: ...
    def setSymbol(self, s: typing.Optional[QgsSymbol]) -> None: ...
    def symbol(self) -> typing.Optional[QgsSymbol]: ...
    def accept(self, visitor: typing.Optional['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) -> typing.Optional[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Optional[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: ...

    rebuildIconPreviews: typing.ClassVar[QtCore.pyqtSignal]
    labelSettingsChanged: typing.ClassVar[QtCore.pyqtSignal]
    labelSettingsRemoved: typing.ClassVar[QtCore.pyqtSignal]
    labelSettingsAdded: typing.ClassVar[QtCore.pyqtSignal]
    labelSettingsRenamed: typing.ClassVar[QtCore.pyqtSignal]
    textFormatChanged: typing.ClassVar[QtCore.pyqtSignal]
    textFormatRemoved: typing.ClassVar[QtCore.pyqtSignal]
    textFormatAdded: typing.ClassVar[QtCore.pyqtSignal]
    textFormatRenamed: typing.ClassVar[QtCore.pyqtSignal]
    rampChanged: typing.ClassVar[QtCore.pyqtSignal]
    rampRemoved: typing.ClassVar[QtCore.pyqtSignal]
    rampAdded: typing.ClassVar[QtCore.pyqtSignal]
    rampRenamed: typing.ClassVar[QtCore.pyqtSignal]
    symbolRenamed: typing.ClassVar[QtCore.pyqtSignal]
    symbolRemoved: typing.ClassVar[QtCore.pyqtSignal]
    entityChanged: typing.ClassVar[QtCore.pyqtSignal]
    entityRenamed: typing.ClassVar[QtCore.pyqtSignal]
    entityRemoved: typing.ClassVar[QtCore.pyqtSignal]
    entityAdded: typing.ClassVar[QtCore.pyqtSignal]
    favoritedChanged: typing.ClassVar[QtCore.pyqtSignal]
    entityTagsChanged: typing.ClassVar[QtCore.pyqtSignal]
    groupsModified: typing.ClassVar[QtCore.pyqtSignal]
    symbolChanged: typing.ClassVar[QtCore.pyqtSignal]
    symbolSaved: typing.ClassVar[QtCore.pyqtSignal]
    aboutToBeDestroyed: typing.ClassVar[QtCore.pyqtSignal]
    initialized: typing.ClassVar[QtCore.pyqtSignal]
    @staticmethod
    def isXmlStyleFile(path: typing.Optional[str]) -> bool: ...
    def importXml(self, filename: typing.Optional[str]) -> bool: ...
    def exportXml(self, filename: typing.Optional[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: typing.Optional[str], tag: typing.Optional[str]) -> bool: ...
    def isFavorite(self, type: 'QgsStyle.StyleEntity', name: typing.Optional[str]) -> bool: ...
    def tagsOfSymbol(self, type: 'QgsStyle.StyleEntity', symbol: typing.Optional[str]) -> typing.List[str]: ...
    def findSymbols(self, type: 'QgsStyle.StyleEntity', qword: typing.Optional[str]) -> typing.List[str]: ...
    def setFileName(self, filename: typing.Optional[str]) -> None: ...
    def fileName(self) -> str: ...
    def errorString(self) -> str: ...
    def save(self, filename: typing.Optional[str] = ...) -> bool: ...
    def load(self, filename: typing.Optional[str]) -> bool: ...
    def createTables(self) -> None: ...
    def createMemoryDatabase(self) -> bool: ...
    def createDatabase(self, filename: typing.Optional[str]) -> bool: ...
    def symbol3DNames(self) -> typing.List[str]: ...
    def renameSymbol3D(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def saveSymbol3D(self, name: typing.Optional[str], symbol: typing.Optional[QgsAbstract3DSymbol], favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @staticmethod
    def defaultTextFormatForProject(project: typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def legendPatchShapeNames(self) -> typing.List[str]: ...
    def renameLegendPatchShape(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def saveLegendPatchShape(self, name: typing.Optional[str], shape: QgsLegendPatchShape, favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def renameLabelSettings(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeLabelSettings(self, name: typing.Optional[str]) -> bool: ...
    def saveLabelSettings(self, name: typing.Optional[str], settings: QgsPalLayerSettings, favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def renameTextFormat(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeTextFormat(self, name: typing.Optional[str]) -> bool: ...
    def saveTextFormat(self, name: typing.Optional[str], format: 'QgsTextFormat', favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def renameColorRamp(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeColorRamp(self, name: typing.Optional[str]) -> bool: ...
    def saveColorRamp(self, name: typing.Optional[str], ramp: typing.Optional[QgsColorRamp], favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def saveSymbol(self, name: typing.Optional[str], symbol: typing.Optional[QgsSymbol], favorite: bool, tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def removeEntityByName(self, type: 'QgsStyle.StyleEntity', name: typing.Optional[str]) -> bool: ...
    def remove(self, type: 'QgsStyle.StyleEntity', id: int) -> bool: ...
    def rename(self, type: 'QgsStyle.StyleEntity', id: int, newName: typing.Optional[str]) -> bool: ...
    def removeFavorite(self, type: 'QgsStyle.StyleEntity', name: typing.Optional[str]) -> bool: ...
    def addFavorite(self, type: 'QgsStyle.StyleEntity', name: typing.Optional[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: typing.Optional[str]) -> int: ...
    def tagId(self, tag: typing.Optional[str]) -> int: ...
    def entityId(self, type: 'QgsStyle.StyleEntity', name: typing.Optional[str]) -> int: ...
    def symbolId(self, name: typing.Optional[str]) -> int: ...
    def symbolNames(self) -> typing.List[str]: ...
    def symbolCount(self) -> int: ...
    def symbolRef(self, name: typing.Optional[str]) -> typing.Optional[QgsSymbol]: ...
    def symbol(self, name: typing.Optional[str]) -> typing.Optional[QgsSymbol]: ...
    def renameSymbol(self, oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def renameEntity(self, type: 'QgsStyle.StyleEntity', oldName: typing.Optional[str], newName: typing.Optional[str]) -> bool: ...
    def removeSymbol(self, name: typing.Optional[str]) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: typing.Optional[str], tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: typing.Optional[str]) -> bool: ...
    def tagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: typing.Optional[str], tags: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @staticmethod
    def defaultStyle(initialize: bool = ...) -> typing.Optional['QgsStyle']: ...
    def labelSettingsId(self, name: typing.Optional[str]) -> int: ...
    def labelSettingsNames(self) -> typing.List[str]: ...
    def labelSettingsCount(self) -> int: ...
    def labelSettingsLayerType(self, name: typing.Optional[str]) -> Qgis.GeometryType: ...
    def symbol3DCompatibleGeometryTypes(self, name: typing.Optional[str]) -> typing.List[Qgis.GeometryType]: ...
    def symbol3DCount(self) -> int: ...
    def symbol3D(self, name: typing.Optional[str]) -> typing.Optional[QgsAbstract3DSymbol]: ...
    def legendPatchShapeSymbolType(self, name: typing.Optional[str]) -> Qgis.SymbolType: ...
    def legendPatchShapesCount(self) -> int: ...
    def legendPatchShape(self, name: typing.Optional[str]) -> QgsLegendPatchShape: ...
    def labelSettings(self, name: typing.Optional[str]) -> QgsPalLayerSettings: ...
    def textFormatId(self, name: typing.Optional[str]) -> int: ...
    def textFormatNames(self) -> typing.List[str]: ...
    def textFormatCount(self) -> int: ...
    def textFormat(self, name: typing.Optional[str]) -> 'QgsTextFormat': ...
    def colorrampId(self, name: typing.Optional[str]) -> int: ...
    def colorRampRef(self, name: typing.Optional[str]) -> typing.Optional[QgsColorRamp]: ...
    def colorRampNames(self) -> typing.List[str]: ...
    def colorRampCount(self) -> int: ...
    def colorRamp(self, name: typing.Optional[str]) -> typing.Optional[QgsColorRamp]: ...
    def clear(self) -> None: ...
    def tags(self) -> typing.List[str]: ...
    def addSmartgroup(self, name: typing.Optional[str], op: typing.Optional[str], matchTag: typing.Iterable[typing.Optional[str]], noMatchTag: typing.Iterable[typing.Optional[str]], matchName: typing.Iterable[typing.Optional[str]], noMatchName: typing.Iterable[typing.Optional[str]]) -> int: ...
    def addTag(self, tagName: typing.Optional[str]) -> int: ...
    def addSymbol3D(self, name: typing.Optional[str], symbol: typing.Optional[QgsAbstract3DSymbol], update: bool = ...) -> bool: ...
    def addLegendPatchShape(self, name: typing.Optional[str], shape: QgsLegendPatchShape, update: bool = ...) -> bool: ...
    def addLabelSettings(self, name: typing.Optional[str], settings: QgsPalLayerSettings, update: bool = ...) -> bool: ...
    def addTextFormat(self, name: typing.Optional[str], format: 'QgsTextFormat', update: bool = ...) -> bool: ...
    def addColorRamp(self, name: typing.Optional[str], colorRamp: typing.Optional[QgsColorRamp], update: bool = ...) -> bool: ...
    def addSymbol(self, name: typing.Optional[str], symbol: typing.Optional[QgsSymbol], update: bool = ...) -> bool: ...
    def addEntity(self, name: typing.Optional[str], entity: typing.Optional['QgsStyleEntityInterface'], update: bool = ...) -> bool: ...
    def setReadOnly(self, readOnly: bool) -> None: ...
    def isReadOnly(self) -> bool: ...
    def isInitialized(self) -> bool: ...
    def setName(self, name: typing.Optional[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: typing.Optional[QgsSymbol]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbolEntity') -> None: ...

    def symbol(self) -> typing.Optional[QgsSymbol]: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleColorRampEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, ramp: typing.Optional[QgsColorRamp]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleColorRampEntity') -> None: ...

    def ramp(self) -> typing.Optional[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: typing.Optional[QgsAbstract3DSymbol]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbol3DEntity') -> None: ...

    def symbol(self) -> typing.Optional[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: typing.Optional[str]
        entity = ... # type: QgsStyleEntityInterface
        identifier = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, entity: typing.Optional[QgsStyleEntityInterface], identifier: typing.Optional[str] = ..., description: typing.Optional[str] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStyleEntityVisitorInterface.StyleLeaf') -> None: ...

    class Node(PyQt5.sip.wrapper):

        description = ... # type: typing.Optional[str]
        identifier = ... # type: typing.Optional[str]
        type = ... # type: 'QgsStyleEntityVisitorInterface.NodeType'

        @typing.overload
        def __init__(self, type: 'QgsStyleEntityVisitorInterface.NodeType', identifier: typing.Optional[str], description: typing.Optional[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 CustomRole(int):
        Type = ... # type: QgsStyleModel.CustomRole
        Tag = ... # type: QgsStyleModel.CustomRole
        EntityName = ... # type: QgsStyleModel.CustomRole
        SymbolType = ... # type: QgsStyleModel.CustomRole
        IsFavorite = ... # type: QgsStyleModel.CustomRole
        LayerType = ... # type: QgsStyleModel.CustomRole
        CompatibleGeometryTypes = ... # type: QgsStyleModel.CustomRole
        StyleName = ... # type: QgsStyleModel.CustomRole
        StyleFileName = ... # type: QgsStyleModel.CustomRole
        IsTitle = ... # type: QgsStyleModel.CustomRole

    class Column(int):
        Name = ... # type: QgsStyleModel.Column
        Tags = ... # type: QgsStyleModel.Column

    def __init__(self, style: typing.Optional[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) -> typing.Optional[QgsStyle]: ...


class QgsStyleProxyModel(QtCore.QSortFilterProxyModel):

    @typing.overload
    def __init__(self, style: typing.Optional[QgsStyle], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: typing.Optional[QgsStyleModel], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: typing.Optional[QgsCombinedStyleModel], parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilterString(self, filter: typing.Optional[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: typing.Optional[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: typing.Optional[QtNetwork.QNetworkReply], path: typing.Optional[str]) -> bool: ...
    remoteSvgFetched: typing.ClassVar[QtCore.pyqtSignal]
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    def svgContent(self, path: typing.Optional[str], size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> QtCore.QByteArray: ...
    def getImageData(self, path: typing.Optional[str], blocking: bool = ...) -> QtCore.QByteArray: ...
    def containsParamsV3(self, path: typing.Optional[str], defaultFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], defaultStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], blocking: bool = ...) -> typing.Tuple[bool, bool, bool, bool, float, bool, bool, bool, bool, float, bool, bool, float]: ...
    def containsParams(self, path: typing.Optional[str], defaultFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], defaultStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], blocking: bool = ...) -> typing.Tuple[bool, bool, bool, float]: ...
    def svgViewboxSize(self, path: typing.Optional[str], size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> QtCore.QSizeF: ...
    def svgAsPicture(self, path: typing.Optional[str], size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float, widthScaleFactor: float, forceVectorOutput: bool = ..., fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[typing.Optional[str], typing.Optional[str]] = ...) -> QtGui.QPicture: ...
    def svgAsImage(self, path: typing.Optional[str], size: float, fill: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], stroke: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float, widthScaleFactor: float, fixedAspectRatio: float = ..., blocking: bool = ..., parameters: typing.Dict[typing.Optional[str], typing.Optional[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: typing.Optional[str], index: int) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], indexPath: typing.Iterable[int]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSymbolLayerId') -> None: ...

    def __ne__(self, other: object): ...
    def __ge__(self, other: 'QgsSymbolLayerId') -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def __lt__(self, other: 'QgsSymbolLayerId') -> bool: ...
    def __eq__(self, other: object): ...
    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: typing.Optional[str], symbolLayer: QgsSymbolLayerId) -> None: ...
    @typing.overload
    def __init__(self, layerId: typing.Optional[str], symbolLayerId: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerReference') -> None: ...

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    def __eq__(self, other: object): ...
    def symbolLayerIdV2(self) -> str: ...
    def symbolLayerId(self) -> QgsSymbolLayerId: ...
    def layerId(self) -> str: ...


class QgsSymbolLayerAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], visibleName: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    def createSymbolLayerWidget(self, a0: typing.Optional[QgsVectorLayer]) -> typing.Optional[QgsSymbolLayerWidget]: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    def createSymbolLayerWidget(self, vl: typing.Optional[QgsVectorLayer]) -> typing.Optional[QgsSymbolLayerWidget]: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> typing.Optional[QgsSymbolLayer]: ...


class QgsSymbolLayerRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def defaultSymbolLayer(type: Qgis.SymbolType) -> typing.Optional[QgsSymbolLayer]: ...
    def symbolLayersForType(self, type: Qgis.SymbolType) -> typing.List[str]: ...
    def resolveFonts(self, name: typing.Optional[str], properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, name: typing.Optional[str], properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, name: typing.Optional[str], element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    def createSymbolLayer(self, name: typing.Optional[str], properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...
    def removeSymbolLayerType(self, metadata: typing.Optional[QgsSymbolLayerAbstractMetadata]) -> bool: ...
    def addSymbolLayerType(self, metadata: typing.Optional[QgsSymbolLayerAbstractMetadata]) -> bool: ...
    def symbolLayerMetadata(self, name: typing.Optional[str]) -> typing.Optional[QgsSymbolLayerAbstractMetadata]: ...


class QgsSymbolLayerUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def collectSymbolLayerClipGeometries(context: QgsRenderContext, symbolLayerId: typing.Optional[str], bounds: QtCore.QRectF) -> typing.List[QgsGeometry]: ...
    @typing.overload
    @staticmethod
    def resetSymbolLayerIds(symbol: typing.Optional[QgsSymbol]) -> None: ...
    @typing.overload
    @staticmethod
    def resetSymbolLayerIds(symbolLayer: typing.Optional[QgsSymbolLayer]) -> None: ...
    @typing.overload
    @staticmethod
    def clearSymbolLayerIds(symbol: typing.Optional[QgsSymbol]) -> None: ...
    @typing.overload
    @staticmethod
    def clearSymbolLayerIds(symbolLayer: typing.Optional[QgsSymbolLayer]) -> None: ...
    @staticmethod
    def tileSize(width: int, height: int, angleRad: float) -> typing.Tuple[QtCore.QSize, float]: ...
    @staticmethod
    def evaluatePropertiesMap(propertiesMap: typing.Dict[typing.Optional[str], QgsProperty], context: QgsExpressionContext) -> typing.Dict[str, str]: ...
    @staticmethod
    def restrictedSizeSymbol(s: typing.Optional[QgsSymbol], minSize: float, maxSize: float, context: typing.Optional[QgsRenderContext]) -> typing.Tuple[typing.Optional[QgsSymbol], float, float, typing.Optional[bool]]: ...
    @staticmethod
    def rendererFrameRate(renderer: typing.Optional[QgsFeatureRenderer]) -> float: ...
    @staticmethod
    def toSymbolLayerPointers(renderer: typing.Optional[QgsFeatureRenderer], symbolLayerIds: typing.Iterable[QgsSymbolLayerId]) -> typing.Set[QgsSymbolLayer]: ...
    @staticmethod
    def getSvgParametricPath(basePath: typing.Optional[str], fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float) -> str: ...
    @staticmethod
    def parametricSvgToSld(doc: QtXml.QDomDocument, graphicElem: QtXml.QDomElement, path: typing.Optional[str], fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], size: float, strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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], 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: typing.Optional[QgsExpression]) -> str: ...
    @staticmethod
    def fieldOrExpressionToExpression(fieldOrExpression: typing.Optional[str]) -> typing.Optional[QgsExpression]: ...
    @staticmethod
    def appendPolyline(target: QtGui.QPolygonF, line: QtGui.QPolygonF) -> None: ...
    @staticmethod
    def isSharpCorner(p1: typing.Union[QtCore.QPointF, QtCore.QPoint], p2: typing.Union[QtCore.QPointF, QtCore.QPoint], p3: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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]) -> 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: typing.Optional[str], pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def svgSymbolNameToPath(name: typing.Optional[str], pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def listSvgFilesAt(directory: typing.Optional[str]) -> typing.List[str]: ...
    @staticmethod
    def listSvgFiles() -> typing.List[str]: ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], directionPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], distance: float) -> QtCore.QPointF: ...
    @staticmethod
    def sortVariantList(list: typing.Iterable[typing.Any], order: QtCore.Qt.SortOrder) -> None: ...
    @staticmethod
    def condenseFillAndOutline(fill: typing.Optional[QgsFillSymbolLayer], outline: typing.Optional[QgsLineSymbolLayer]) -> bool: ...
    @staticmethod
    def premultiplyColor(rgb: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], alpha: int) -> None: ...
    @staticmethod
    def blurImageInPlace(image: QtGui.QImage, rect: QtCore.QRect, radius: int, alphaOnly: bool) -> None: ...
    @staticmethod
    def multiplyImageOpacity(image: typing.Optional[QtGui.QImage], opacity: float) -> None: ...
    @staticmethod
    def parseColorWithAlpha(colorStr: typing.Optional[str], strictEval: bool = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def parseColor(colorStr: typing.Optional[str], strictEval: bool = ...) -> QtGui.QColor: ...
    @staticmethod
    def importColorsFromGpl(file: QtCore.QFile, name: typing.Optional[str]) -> typing.Tuple[typing.List[typing.Tuple[QtGui.QColor, str]], bool]: ...
    @staticmethod
    def saveColorsToGpl(file: QtCore.QFile, paletteName: typing.Optional[str], colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], typing.Optional[str]]]) -> bool: ...
    @staticmethod
    def colorListToMimeData(colorList: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], typing.Optional[str]]], allFormats: bool = ...) -> typing.Optional[QtCore.QMimeData]: ...
    @staticmethod
    def colorListFromMimeData(data: typing.Optional[QtCore.QMimeData]) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    @staticmethod
    def colorFromMimeData(data: typing.Optional[QtCore.QMimeData]) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def colorToMimeData(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Optional[QtCore.QMimeData]: ...
    @staticmethod
    def parseColorList(colorStr: typing.Optional[str]) -> typing.List[QtGui.QColor]: ...
    @staticmethod
    def colorToName(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...
    @staticmethod
    def colorRampToVariant(name: typing.Optional[str], ramp: typing.Optional[QgsColorRamp]) -> typing.Any: ...
    @staticmethod
    def saveColorRamp(name: typing.Optional[str], ramp: typing.Optional[QgsColorRamp], doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(element: QtXml.QDomElement) -> typing.Optional[QgsColorRamp]: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(value: typing.Any) -> typing.Optional[QgsColorRamp]: ...
    @staticmethod
    def symbolFromMimeData(data: typing.Optional[QtCore.QMimeData]) -> typing.Optional[QgsSymbol]: ...
    @staticmethod
    def symbolToMimeData(symbol: typing.Optional[QgsSymbol]) -> typing.Optional[QtCore.QMimeData]: ...
    @staticmethod
    def clearSymbolMap(symbols: typing.Any) -> None: ...
    @staticmethod
    def saveSymbols(symbols: typing.Any, tagName: typing.Optional[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: typing.Optional[str], value: typing.Optional[str]) -> QtXml.QDomElement: ...
    @staticmethod
    def getSvgParameterList(element: QtXml.QDomElement) -> typing.Dict[str, str]: ...
    @staticmethod
    def createSvgParameterElement(doc: QtXml.QDomDocument, name: typing.Optional[str], value: typing.Optional[str]) -> QtXml.QDomElement: ...
    @staticmethod
    def functionFromSldElement(element: QtXml.QDomElement, function: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createFunctionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createExpressionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: typing.Optional[str]) -> bool: ...
    @staticmethod
    def geometryFromSldElement(element: QtXml.QDomElement, geomFunc: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createGeometryElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, geomFunc: typing.Optional[str]) -> None: ...
    @staticmethod
    def onlineResourceFromSldElement(element: QtXml.QDomElement, path: typing.Optional[str], format: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createOnlineResourceElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: typing.Optional[str], format: typing.Optional[str]) -> None: ...
    @staticmethod
    def createAnchorPointElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, anchor: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    @staticmethod
    def displacementFromSldElement(element: QtXml.QDomElement, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> bool: ...
    @staticmethod
    def createDisplacementElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    @staticmethod
    def opacityFromSldElement(element: QtXml.QDomElement, alphaFunc: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createOpacityElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, alphaFunc: typing.Optional[str]) -> None: ...
    @staticmethod
    def rotationFromSldElement(element: QtXml.QDomElement, rotationFunc: typing.Optional[str]) -> bool: ...
    @staticmethod
    def createRotationElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, rotationFunc: typing.Optional[str]) -> None: ...
    @staticmethod
    def ogrFeatureStyleBrush(fillColr: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...
    @staticmethod
    def ogrFeatureStylePen(width: float, mmScaleFactor: float, mapUnitsScaleFactor: float, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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: typing.Optional[str], font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., size: float = ...) -> None: ...
    @staticmethod
    def externalMarkerFromSld(element: QtXml.QDomElement, path: typing.Optional[str], format: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[bool, int, float]: ...
    @staticmethod
    def externalMarkerToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: typing.Optional[str], format: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., size: float = ...) -> typing.Optional[int]: ...
    @staticmethod
    def wellKnownMarkerFromSld2(element: QtXml.QDomElement, name: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[bool, QtCore.Qt.PenStyle, float, float]: ...
    @staticmethod
    def wellKnownMarkerToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, name: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeStyle: QtCore.Qt.PenStyle, strokeWidth: float = ..., size: float = ...) -> None: ...
    @staticmethod
    def externalGraphicFromSld(element: QtXml.QDomElement, path: typing.Optional[str], mime: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[bool, float]: ...
    @staticmethod
    def externalGraphicToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: typing.Optional[str], mime: typing.Optional[str], color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], size: float = ...) -> None: ...
    @staticmethod
    def lineFromSld(element: QtXml.QDomElement, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], customDashPattern: typing.Optional[typing.Iterable[float]] = ...) -> typing.Tuple[bool, QtCore.Qt.PenStyle, float, typing.Optional[QtCore.Qt.PenJoinStyle], typing.Optional[QtCore.Qt.PenCapStyle], typing.Optional[float]]: ...
    @staticmethod
    def fillFromSld(element: QtXml.QDomElement, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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] = ...) -> 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: typing.Optional[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) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def createLineLayerFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def createFillLayerFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def createSymbolLayerListFromSld(element: QtXml.QDomElement, geomType: Qgis.GeometryType, layers: typing.Iterable[QgsSymbolLayer]) -> bool: ...
    @staticmethod
    def symbolProperties(symbol: typing.Optional[QgsSymbol]) -> str: ...
    @staticmethod
    def saveSymbol(symbolName: typing.Optional[str], symbol: typing.Optional[QgsSymbol], doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def loadSymbolLayer(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def loadSymbol(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsSymbol]: ...
    @staticmethod
    def estimateMaxSymbolBleed(symbol: typing.Optional[QgsSymbol], context: QgsRenderContext) -> float: ...
    @staticmethod
    def drawVertexMarker(x: float, y: float, p: QtGui.QPainter, type: Qgis.VertexMarkerType, markerSize: int) -> None: ...
    @staticmethod
    def drawStippledBackground(painter: typing.Optional[QtGui.QPainter], rect: QtCore.QRect) -> None: ...
    @staticmethod
    def colorRampPreviewPixmap(ramp: typing.Optional[QgsColorRamp], size: QtCore.QSize, padding: int = ..., direction: QtCore.Qt.Orientation = ..., flipDirection: bool = ..., drawTransparentBackground: bool = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def colorRampPreviewIcon(ramp: typing.Optional[QgsColorRamp], size: QtCore.QSize, padding: int = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewIcon(layer: typing.Optional[QgsSymbolLayer], u: Qgis.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ..., mapLayer: typing.Optional[QgsMapLayer] = ..., screen: QgsScreenProperties = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewPicture(layer: typing.Optional[QgsSymbolLayer], units: Qgis.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ...) -> QtGui.QPicture: ...
    @staticmethod
    def symbolPreviewPixmap(symbol: typing.Optional[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: typing.Optional[QgsSymbol], size: QtCore.QSize, padding: int = ..., shape: typing.Optional[QgsLegendPatchShape] = ..., screen: QgsScreenProperties = ...) -> QtGui.QIcon: ...
    @staticmethod
    def decodeBlendMode(s: typing.Optional[str]) -> QtGui.QPainter.CompositionMode: ...
    @staticmethod
    def decodeScaleMethod(str: typing.Optional[str]) -> Qgis.ScaleMethod: ...
    @staticmethod
    def encodeScaleMethod(scaleMethod: Qgis.ScaleMethod) -> str: ...
    @staticmethod
    def sizeInPixelsFromSldUom(uom: typing.Optional[str], size: float) -> float: ...
    @staticmethod
    def decodeSldUom(str: typing.Optional[str]) -> typing.Tuple[Qgis.RenderUnit, typing.Optional[float]]: ...
    @staticmethod
    def encodeSldUom(unit: Qgis.RenderUnit) -> typing.Tuple[str, typing.Optional[float]]: ...
    @staticmethod
    def decodeSldRealVector(s: typing.Optional[str]) -> typing.List[float]: ...
    @staticmethod
    def encodeSldRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeRealVector(s: typing.Optional[str]) -> typing.List[float]: ...
    @staticmethod
    def encodeRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeMapUnitScale(str: typing.Optional[str]) -> QgsMapUnitScale: ...
    @staticmethod
    def encodeMapUnitScale(mapUnitScale: QgsMapUnitScale) -> str: ...
    @staticmethod
    def toSize(value: typing.Any) -> typing.Tuple[QtCore.QSizeF, typing.Optional[bool]]: ...
    @staticmethod
    def decodeSize(string: typing.Optional[str]) -> QtCore.QSizeF: ...
    @staticmethod
    def encodeSize(size: QtCore.QSizeF) -> str: ...
    @staticmethod
    def toPoint(value: typing.Any) -> typing.Tuple[QtCore.QPointF, typing.Optional[bool]]: ...
    @staticmethod
    def decodePoint(string: typing.Optional[str]) -> QtCore.QPointF: ...
    @staticmethod
    def encodePoint(point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> str: ...
    @staticmethod
    def encodeLineClipMode(mode: Qgis.LineClipMode) -> str: ...
    @staticmethod
    def decodeLineClipMode(string: typing.Optional[str]) -> typing.Tuple[Qgis.LineClipMode, typing.Optional[bool]]: ...
    @staticmethod
    def encodeMarkerClipMode(mode: Qgis.MarkerClipMode) -> str: ...
    @staticmethod
    def decodeMarkerClipMode(string: typing.Optional[str]) -> typing.Tuple[Qgis.MarkerClipMode, typing.Optional[bool]]: ...
    @staticmethod
    def decodeArrowType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.ArrowType, typing.Optional[bool]]: ...
    @staticmethod
    def decodeArrowHeadType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.HeadType, typing.Optional[bool]]: ...
    @staticmethod
    def encodeCoordinateReference(coordinateReference: Qgis.SymbolCoordinateReference) -> str: ...
    @staticmethod
    def decodeCoordinateReference(string: typing.Optional[str]) -> typing.Tuple[Qgis.SymbolCoordinateReference, typing.Optional[bool]]: ...
    @staticmethod
    def decodeSldBrushStyle(str: typing.Optional[str]) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeSldBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeBrushStyle(str: typing.Optional[str]) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeSldLineCapStyle(str: typing.Optional[str]) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodeSldLineCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodeSldLineJoinStyle(str: typing.Optional[str]) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodeSldLineJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenCapStyle(str: typing.Optional[str]) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodePenCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodePenJoinStyle(str: typing.Optional[str]) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodePenJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenStyle(str: typing.Optional[str]) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def encodePenStyle(style: QtCore.Qt.PenStyle) -> str: ...
    @staticmethod
    def decodeSldFontWeight(str: typing.Optional[str]) -> int: ...
    @staticmethod
    def encodeSldFontWeight(weight: int) -> str: ...
    @staticmethod
    def decodeSldFontStyle(str: typing.Optional[str]) -> QtGui.QFont.Style: ...
    @staticmethod
    def encodeSldFontStyle(style: QtGui.QFont.Style) -> str: ...
    @staticmethod
    def decodeSldAlpha(str: typing.Optional[str]) -> int: ...
    @staticmethod
    def encodeSldAlpha(alpha: int) -> str: ...
    @staticmethod
    def decodeColor(str: typing.Optional[str]) -> QtGui.QColor: ...
    @staticmethod
    def encodeColor(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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) -> typing.Optional[QgsLegendPatchShape]: ...
    def setExpressionContextScope(self, contextScope: typing.Optional[QgsExpressionContextScope]) -> None: ...
    def expressionContextScope(self) -> typing.Optional[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) -> typing.Optional[QgsFeature]: ...
    def setFeature(self, f: typing.Optional[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], 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: typing.Optional[str]) -> None: ...
    def xAttribute(self) -> str: ...
    def setXAttribute(self, attribute: typing.Optional[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) -> typing.Optional['QgsVectorFieldSymbolLayer']: ...
    def stopRender(self, context: QgsSymbolRenderContext) -> None: ...
    def startRender(self, context: QgsSymbolRenderContext) -> None: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsSymbolRenderContext) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def subSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def setSubSymbol(self, symbol: typing.Optional[QgsSymbol]) -> bool: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> typing.Optional[QgsSymbolLayer]: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsSymbolLayer]: ...


class QgsFontDownloadDetails(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, family: typing.Optional[str], fontUrls: typing.Iterable[typing.Optional[str]], licenseUrl: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFontDownloadDetails') -> None: ...

    def licenseUrl(self) -> str: ...
    def fontUrls(self) -> typing.List[str]: ...
    def standardizedFamily(self) -> str: ...
    def family(self) -> str: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def standardizeFamily(family: typing.Optional[str]) -> str: ...


class QgsFontManager(QtCore.QObject):

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

    fontDownloadErrorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    fontDownloaded: typing.ClassVar[QtCore.pyqtSignal]
    def removeUserFont(self, path: typing.Optional[str]) -> bool: ...
    def userFontToFamilyMap(self) -> typing.Dict[str, typing.List[str]]: ...
    def addUserFontDirectory(self, directory: typing.Optional[str]) -> None: ...
    def installFontsFromData(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], filename: typing.Optional[str] = ..., extension: typing.Optional[str] = ...) -> typing.Tuple[bool, str, typing.List[str], str]: ...
    @typing.overload
    def downloadAndInstallFont(self, url: QtCore.QUrl, identifier: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def downloadAndInstallFont(self, details: QgsFontDownloadDetails, identifier: typing.Optional[str] = ...) -> None: ...
    def detailsForFontDownload(self, family: typing.Optional[str]) -> typing.Tuple[QgsFontDownloadDetails, str]: ...
    def urlForFontDownload(self, family: typing.Optional[str]) -> typing.Tuple[str, str]: ...
    def enableFontDownloadsForSession(self) -> None: ...
    def tryToDownloadFontFamily(self, family: typing.Optional[str]) -> typing.Tuple[bool, str]: ...
    def processFontFamilyName(self, name: typing.Optional[str]) -> str: ...
    def setFontFamilyReplacements(self, replacements: typing.Dict[typing.Optional[str], typing.Optional[str]]) -> None: ...
    def addFontFamilyReplacement(self, original: typing.Optional[str], replacement: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> None: ...
    def setPaintEffect(self, effect: typing.Optional[QgsPaintEffect]) -> None: ...
    def paintEffect(self) -> typing.Optional[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]) -> None: ...
    def strokeColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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]) -> 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: typing.Optional[QgsFillSymbol]) -> None: ...
    def fillSymbol(self) -> typing.Optional[QgsFillSymbol]: ...
    def setMarkerSymbol(self, symbol: typing.Optional[QgsMarkerSymbol]) -> None: ...
    def markerSymbol(self) -> typing.Optional[QgsMarkerSymbol]: ...
    def setSvgFile(self, file: typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: ...
    @staticmethod
    def fromPlainText(text: typing.Optional[str], format: 'QgsTextCharacterFormat' = ...) -> 'QgsTextBlock': ...


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: typing.Optional[QgsPaintEffect]) -> None: ...
    def paintEffect(self) -> typing.Optional[QgsPaintEffect]: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def readFromLayer(self, layer: typing.Optional[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]) -> 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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[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]) -> None: ...
    def textColor(self) -> QtGui.QColor: ...
    def overrideWith(self, other: 'QgsTextCharacterFormat') -> None: ...


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: typing.Optional[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[typing.Optional[str]]) -> 'QgsTextDocument': ...
    @staticmethod
    def fromPlainText(lines: typing.Iterable[typing.Optional[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: ...

    def asCSS(self, pointToPixelMultiplier: float = ...) -> str: ...
    @staticmethod
    def textFormatPreviewPixmap(format: 'QgsTextFormat', size: QtCore.QSize, previewText: typing.Optional[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: typing.Optional[QtCore.QMimeData]) -> typing.Tuple['QgsTextFormat', typing.Optional[bool]]: ...
    def toQFont(self) -> QtGui.QFont: ...
    @staticmethod
    def fromQFont(font: QtGui.QFont) -> 'QgsTextFormat': ...
    def toMimeData(self) -> typing.Optional[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: typing.Optional[QgsVectorLayer]) -> None: ...
    def setPreviewBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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 setTabStopDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def tabStopDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setTabStopDistanceUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def tabStopDistanceUnit(self) -> Qgis.RenderUnit: ...
    def setTabStopDistance(self, distance: float) -> None: ...
    def tabStopDistance(self) -> float: ...
    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]) -> 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[typing.Optional[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: typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsTextFragment(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, text: typing.Optional[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 isWhitespace(self) -> bool: ...
    def isTab(self) -> bool: ...
    def setText(self, text: typing.Optional[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: typing.Optional[QgsPaintEffect]) -> None: ...
    def paintEffect(self) -> typing.Optional[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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


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: typing.Optional[str], width: float, format: QgsTextFormat) -> typing.List[str]: ...
    @staticmethod
    def textRequiresWrapping(context: QgsRenderContext, text: typing.Optional[str], width: float, format: QgsTextFormat) -> bool: ...
    @typing.overload
    @staticmethod
    def textHeight(context: QgsRenderContext, format: QgsTextFormat, textLines: typing.Iterable[typing.Optional[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[typing.Optional[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[typing.Optional[str]], context: QgsRenderContext, format: QgsTextFormat, part: Qgis.TextComponent, drawAsOutlines: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawPart(origin: typing.Union[QtCore.QPointF, QtCore.QPoint], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[typing.Optional[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: typing.Optional[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[typing.Optional[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], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> typing.Tuple[Qgis.TextOrientation, typing.Optional[bool]]: ...
    @staticmethod
    def encodeTextOrientation(orientation: Qgis.TextOrientation) -> str: ...
    @staticmethod
    def decodeShadowPlacementType(string: typing.Optional[str]) -> 'QgsTextShadowSettings.ShadowPlacement': ...
    @staticmethod
    def decodeBackgroundRotationType(string: typing.Optional[str]) -> QgsTextBackgroundSettings.RotationType: ...
    @staticmethod
    def decodeBackgroundSizeType(string: typing.Optional[str]) -> QgsTextBackgroundSettings.SizeType: ...
    @staticmethod
    def decodeShapeType(string: typing.Optional[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: typing.Optional[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]) -> 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: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsCesiumUtils(PyQt5.sip.wrapper):

    class B3DMContents(PyQt5.sip.wrapper):

        gltf = ... # type: typing.Union[QtCore.QByteArray, bytes, bytearray]
        rtcCenter = ... # type: QgsVector3D

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

    class TileContents(PyQt5.sip.wrapper):

        gltf = ... # type: typing.Union[QtCore.QByteArray, bytes, bytearray]
        rtcCenter = ... # type: QgsVector3D

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

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

    @staticmethod
    def extractGltfFromTileContent(tileContent: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> 'QgsCesiumUtils.TileContents': ...
    @staticmethod
    def extractGltfFromB3dm(tileContent: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> 'QgsCesiumUtils.B3DMContents': ...
    @staticmethod
    def transformSphere(sphere: QgsSphere, transform: QgsMatrix4x4) -> QgsSphere: ...
    @staticmethod
    def parseSphere(sphere: typing.Iterable[typing.Any]) -> QgsSphere: ...
    @staticmethod
    def parseBox(box: typing.Iterable[typing.Any]) -> QgsOrientedBox3D: ...
    @staticmethod
    def parseRegion(region: typing.Iterable[typing.Any]) -> QgsBox3D: ...


class QgsTiledSceneBoundingVolume(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, box: QgsOrientedBox3D = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTiledSceneBoundingVolume') -> None: ...

    def box(self) -> QgsOrientedBox3D: ...
    def intersects(self, box: QgsOrientedBox3D) -> bool: ...
    def transform(self, transform: QgsMatrix4x4) -> None: ...
    def as2DGeometry(self, transform: QgsCoordinateTransform = ..., direction: Qgis.TransformDirection = ...) -> typing.Optional[QgsAbstractGeometry]: ...
    def bounds(self, transform: QgsCoordinateTransform = ..., direction: Qgis.TransformDirection = ...) -> QgsBox3D: ...


class QgsTiledSceneDataProvider(QgsDataProvider):

    @typing.overload
    def __init__(self, uri: typing.Optional[str], providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTiledSceneDataProvider') -> None: ...

    def zRange(self) -> QgsDoubleRange: ...
    def index(self) -> 'QgsTiledSceneIndex': ...
    def boundingVolume(self) -> QgsTiledSceneBoundingVolume: ...
    def sceneCrs(self) -> QgsCoordinateReferenceSystem: ...
    def clone(self) -> typing.Optional['QgsTiledSceneDataProvider']: ...
    def capabilities(self) -> Qgis.TiledSceneProviderCapabilities: ...


class QgsTiledSceneIndex(PyQt5.sip.wrapper):

    def __init__(self, other: 'QgsTiledSceneIndex') -> None: ...

    def retrieveContent(self, uri: typing.Optional[str], feedback: typing.Optional[QgsFeedback] = ...) -> QtCore.QByteArray: ...
    def fetchHierarchy(self, id: int, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def childAvailability(self, id: int) -> Qgis.TileChildrenAvailability: ...
    def getTiles(self, request: 'QgsTiledSceneRequest') -> typing.List[int]: ...
    def childTileIds(self, id: int) -> typing.List[int]: ...
    def parentTileId(self, id: int) -> int: ...
    def getTile(self, id: int) -> 'QgsTiledSceneTile': ...
    def rootTile(self) -> 'QgsTiledSceneTile': ...
    def isValid(self) -> bool: ...


class QgsTiledSceneLayer(QgsMapLayer):

    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: 'QgsTiledSceneLayer.LayerOptions') -> None: ...

    def __init__(self, uri: typing.Optional[str] = ..., baseName: typing.Optional[str] = ..., provider: typing.Optional[str] = ..., options: 'QgsTiledSceneLayer.LayerOptions' = ...) -> None: ...

    def setRenderer(self, renderer: typing.Optional['QgsTiledSceneRenderer']) -> None: ...
    def renderer(self) -> typing.Optional['QgsTiledSceneRenderer']: ...
    def elevationProperties(self) -> typing.Optional[QgsMapLayerElevationProperties]: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> typing.Optional[QgsMapLayerRenderer]: ...
    def htmlMetadata(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def decodedSource(self, source: typing.Optional[str], dataProvider: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[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) -> typing.Optional[QgsTiledSceneDataProvider]: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> typing.Optional['QgsTiledSceneLayer']: ...
    def __repr__(self) -> typing.Any: ...


class QgsTiledSceneLayerElevationProperties(QgsMapLayerElevationProperties):

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

    def significantZValues(self, layer: typing.Optional[QgsMapLayer]) -> typing.List[float]: ...
    def calculateZRange(self, layer: typing.Optional[QgsMapLayer]) -> QgsDoubleRange: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> typing.Optional['QgsTiledSceneLayerElevationProperties']: ...
    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 QgsTiledSceneRenderContext(PyQt5.sip.wrapper):

    def __init__(self, context: QgsRenderContext, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...

    def textureCoordinates(self) -> typing.Tuple[float, float, float, float, float, float]: ...
    def setTextureCoordinates(self, textureX1: float, textureY1: float, textureX2: float, textureY2: float, textureX3: float, textureY3: float) -> None: ...
    def setTextureImage(self, image: QtGui.QImage) -> None: ...
    def textureImage(self) -> QtGui.QImage: ...
    def feedback(self) -> typing.Optional[QgsFeedback]: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsTiledSceneRenderer(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: typing.Optional['QgsTiledSceneRenderer']) -> None: ...
    def renderLine(self, context: QgsTiledSceneRenderContext, line: QtGui.QPolygonF) -> None: ...
    def renderTriangle(self, context: QgsTiledSceneRenderContext, triangle: QtGui.QPolygonF) -> None: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: typing.Optional[QgsLayerTreeLayer]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def stopRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def startRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def isTileBorderRenderingEnabled(self) -> bool: ...
    def setTileBorderRenderingEnabled(self, enabled: bool) -> None: ...
    def setMaximumScreenErrorUnit(self, unit: Qgis.RenderUnit) -> None: ...
    def maximumScreenErrorUnit(self) -> Qgis.RenderUnit: ...
    def setMaximumScreenError(self, error: float) -> None: ...
    def maximumScreenError(self) -> float: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def load(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional['QgsTiledSceneRenderer']: ...
    def flags(self) -> Qgis.TiledSceneRendererFlags: ...
    def clone(self) -> typing.Optional['QgsTiledSceneRenderer']: ...
    def type(self) -> str: ...


class QgsTiledSceneRendererAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str], visibleName: typing.Optional[str], icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTiledSceneRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsTiledSceneRendererMetadata(QgsTiledSceneRendererAbstractMetadata):

    def __init__(self, a0: 'QgsTiledSceneRendererMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsTiledSceneRenderer]: ...


class QgsTiledSceneRendererRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def defaultRenderer(layer: typing.Optional[QgsTiledSceneLayer]) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: typing.Optional[str]) -> typing.Optional[QgsTiledSceneRendererAbstractMetadata]: ...
    def removeRenderer(self, rendererName: typing.Optional[str]) -> bool: ...
    def addRenderer(self, metadata: typing.Optional[QgsTiledSceneRendererAbstractMetadata]) -> bool: ...


class QgsTiledSceneRequest(PyQt5.sip.wrapper):

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

    def setParentTileId(self, id: int) -> None: ...
    def parentTileId(self) -> int: ...
    def feedback(self) -> typing.Optional[QgsFeedback]: ...
    def setFeedback(self, feedback: typing.Optional[QgsFeedback]) -> None: ...
    def setRequiredGeometricError(self, error: float) -> None: ...
    def requiredGeometricError(self) -> float: ...
    def setFilterBox(self, box: QgsOrientedBox3D) -> None: ...
    def filterBox(self) -> QgsOrientedBox3D: ...
    def flags(self) -> Qgis.TiledSceneRequestFlags: ...
    def setFlags(self, flags: typing.Union[Qgis.TiledSceneRequestFlags, Qgis.TiledSceneRequestFlag]) -> None: ...


class QgsTiledSceneTextureRenderer(QgsTiledSceneRenderer):

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

    def setFillSymbol(self, symbol: typing.Optional[QgsFillSymbol]) -> None: ...
    def fillSymbol(self) -> typing.Optional[QgsFillSymbol]: ...
    @staticmethod
    def createDefaultFillSymbol() -> typing.Optional[QgsFillSymbol]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def stopRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def startRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def renderLine(self, context: QgsTiledSceneRenderContext, line: QtGui.QPolygonF) -> None: ...
    def renderTriangle(self, context: QgsTiledSceneRenderContext, triangle: QtGui.QPolygonF) -> None: ...
    def flags(self) -> Qgis.TiledSceneRendererFlags: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def type(self) -> str: ...


class QgsTiledSceneTile(PyQt5.sip.wrapper):

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

    def setMetadata(self, metadata: typing.Dict[str, typing.Any]) -> None: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def setBaseUrl(self, baseUrl: QtCore.QUrl) -> None: ...
    def baseUrl(self) -> QtCore.QUrl: ...
    def setGeometricError(self, error: float) -> None: ...
    def geometricError(self) -> float: ...
    def setResources(self, resources: typing.Dict[str, typing.Any]) -> None: ...
    def resources(self) -> typing.Dict[str, typing.Any]: ...
    def transform(self) -> typing.Optional[QgsMatrix4x4]: ...
    def setTransform(self, transform: QgsMatrix4x4) -> None: ...
    def boundingVolume(self) -> QgsTiledSceneBoundingVolume: ...
    def setBoundingVolume(self, volume: QgsTiledSceneBoundingVolume) -> None: ...
    def setRefinementProcess(self, process: Qgis.TileRefinementProcess) -> None: ...
    def refinementProcess(self) -> Qgis.TileRefinementProcess: ...
    def id(self) -> int: ...
    def isValid(self) -> bool: ...


class QgsTiledSceneWireframeRenderer(QgsTiledSceneRenderer):

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

    def setUseTextureColors(self, enabled: bool) -> None: ...
    def useTextureColors(self) -> bool: ...
    def setLineSymbol(self, symbol: typing.Optional[QgsLineSymbol]) -> None: ...
    def lineSymbol(self) -> typing.Optional[QgsLineSymbol]: ...
    @staticmethod
    def createDefaultLineSymbol() -> typing.Optional[QgsLineSymbol]: ...
    def setFillSymbol(self, symbol: typing.Optional[QgsFillSymbol]) -> None: ...
    def fillSymbol(self) -> typing.Optional[QgsFillSymbol]: ...
    @staticmethod
    def createDefaultFillSymbol() -> typing.Optional[QgsFillSymbol]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def flags(self) -> Qgis.TiledSceneRendererFlags: ...
    def stopRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def startRender(self, context: QgsTiledSceneRenderContext) -> None: ...
    def renderLine(self, context: QgsTiledSceneRenderContext, line: QtGui.QPolygonF) -> None: ...
    def renderTriangle(self, context: QgsTiledSceneRenderContext, triangle: QtGui.QPolygonF) -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> typing.Optional[QgsTiledSceneRenderer]: ...
    def type(self) -> str: ...


class QgsSensorModel(QtCore.QAbstractItemModel):

    class CustomRole(int):
        SensorType = ... # type: QgsSensorModel.CustomRole
        SensorId = ... # type: QgsSensorModel.CustomRole
        SensorName = ... # type: QgsSensorModel.CustomRole
        SensorStatus = ... # type: QgsSensorModel.CustomRole
        SensorLastValue = ... # type: QgsSensorModel.CustomRole
        SensorLastTimestamp = ... # type: QgsSensorModel.CustomRole
        Sensor = ... # type: QgsSensorModel.CustomRole

    class Column(int):
        Name = ... # type: QgsSensorModel.Column
        LastValue = ... # type: QgsSensorModel.Column

    def __init__(self, manager: typing.Optional['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: ...

    sensorErrorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    sensorDataCaptured: typing.ClassVar[QtCore.pyqtSignal]
    sensorStatusChanged: typing.ClassVar[QtCore.pyqtSignal]
    sensorNameChanged: typing.ClassVar[QtCore.pyqtSignal]
    sensorRemoved: typing.ClassVar[QtCore.pyqtSignal]
    sensorAboutToBeRemoved: typing.ClassVar[QtCore.pyqtSignal]
    sensorAdded: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[str]) -> 'QgsAbstractSensor.SensorData': ...
    def sensorNames(self) -> typing.List[str]: ...
    def removeSensor(self, id: typing.Optional[str]) -> bool: ...
    def addSensor(self, sensor: typing.Optional['QgsAbstractSensor']) -> None: ...
    def sensor(self, id: typing.Optional[str]) -> typing.Optional['QgsAbstractSensor']: ...
    def sensors(self) -> typing.List['QgsAbstractSensor']: ...
    def clear(self) -> None: ...


class QgsSensorAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: typing.Optional[str], visibleName: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSensorAbstractMetadata') -> None: ...

    def createSensor(self, parent: typing.Optional[QtCore.QObject]) -> typing.Optional['QgsAbstractSensor']: ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class QgsSensorRegistry(QtCore.QObject):

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

    sensorAdded: typing.ClassVar[QtCore.pyqtSignal]
    def sensorTypes(self) -> typing.Dict[str, str]: ...
    def createSensor(self, type: typing.Optional[str], parent: typing.Optional[QtCore.QObject] = ...) -> typing.Optional['QgsAbstractSensor']: ...
    def removeSensorType(self, type: typing.Optional[str]) -> bool: ...
    def addSensorType(self, metadata: typing.Optional[QgsSensorAbstractMetadata]) -> bool: ...
    def sensorMetadata(self, type: typing.Optional[str]) -> typing.Optional[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: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    dataChanged: typing.ClassVar[QtCore.pyqtSignal]
    statusChanged: typing.ClassVar[QtCore.pyqtSignal]
    nameChanged: typing.ClassVar[QtCore.pyqtSignal]
    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: typing.Optional[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: typing.Optional[QtCore.QIODevice]) -> None: ...
    def iODevice(self) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    def hostName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: typing.Optional[QtCore.QObject]) -> typing.Optional['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: typing.Optional[str]) -> None: ...
    def hostName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: typing.Optional[QtCore.QObject]) -> typing.Optional['QgsUdpSocketSensor']: ...


class QgsSerialPortSensor(QgsIODeviceSensor):

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

    def parseData(self) -> 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 setDelimiter(self, delimiter: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> None: ...
    def delimiter(self) -> QtCore.QByteArray: ...
    def setBaudRate(self, baudRate: QtSerialPort.QSerialPort.BaudRate) -> None: ...
    def baudRate(self) -> QtSerialPort.QSerialPort.BaudRate: ...
    def setPortName(self, portName: typing.Optional[str]) -> None: ...
    def portName(self) -> str: ...
    def type(self) -> str: ...
    @staticmethod
    def create(parent: typing.Optional[QtCore.QObject]) -> typing.Optional['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: typing.Optional[str], application: typing.Optional[str] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, scope: QtCore.QSettings.Scope, organization: typing.Optional[str], application: typing.Optional[str] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, format: QtCore.QSettings.Format, scope: QtCore.QSettings.Scope, organization: typing.Optional[str], application: typing.Optional[str] = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, fileName: typing.Optional[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: typing.Optional[str], section: 'QgsSettings.Section') -> str: ...
    def remove(self, key: typing.Optional[str], section: 'QgsSettings.Section' = ...) -> None: ...
    def sync(self) -> None: ...
    def fileName(self) -> str: ...
    def contains(self, key: typing.Optional[str], section: 'QgsSettings.Section' = ...) -> bool: ...
    def value(self, key: typing.Optional[str], defaultValue: typing.Any = ..., type: typing.Any = ..., section: 'QgsSettings.Section' = ...) -> typing.Any: ...
    def setValue(self, key: typing.Optional[str], value: typing.Any, section: 'QgsSettings.Section' = ...) -> None: ...
    def origin(self, key: typing.Optional[str]) -> Qgis.SettingsOrigin: ...
    def setArrayIndex(self, i: int) -> None: ...
    def endArray(self) -> None: ...
    def beginWriteArray(self, prefix: typing.Optional[str], size: int = ...) -> None: ...
    def beginReadArray(self, prefix: typing.Optional[str]) -> int: ...
    @staticmethod
    def setGlobalSettingsPath(path: typing.Optional[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: typing.Optional[str], section: 'QgsSettings.Section' = ...) -> None: ...


class QgsSettingsEntryBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBase') -> None: ...

    def hasChanged(self) -> bool: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    def parent(self) -> typing.Optional['QgsSettingsTreeNode']: ...
    def copyValueToKeyIfChanged(self, key: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def copyValueToKey(self, key: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    @typing.overload
    def copyValueFromKey(self, key: typing.Optional[str], removeSettingAtKey: bool = ...) -> bool: ...
    @typing.overload
    def copyValueFromKey(self, key: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]], removeSettingAtKey: bool = ...) -> bool: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPart: typing.Optional[str]) -> typing.Any: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPartList: typing.Iterable[typing.Optional[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: typing.Optional[str] = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariantWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: typing.Optional[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]], useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def section(self) -> int: ...
    @typing.overload
    def remove(self, dynamicKeyPart: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def remove(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> None: ...
    def origin(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> Qgis.SettingsOrigin: ...
    @typing.overload
    def exists(self, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def exists(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def options(self) -> Qgis.SettingsOptions: ...
    def hasDynamicKey(self) -> bool: ...
    def definitionKey(self) -> str: ...
    def keyIsValid(self, key: typing.Optional[str]) -> bool: ...
    @typing.overload
    def key(self, dynamicKeyPart: typing.Optional[str] = ...) -> str: ...
    @typing.overload
    def key(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> str: ...
    def name(self) -> str: ...
    def typeId(self) -> str: ...
    @staticmethod
    def dynamicKeyPartToList(dynamicKeyPart: typing.Optional[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: typing.Optional[str] = ...) -> None: ...
    @typing.overload
    def removeAllChildrenSettings(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> None: ...
    def removeAllSettingsAtBaseKey(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def settings(self) -> typing.List[QgsSettingsEntryBase]: ...
    def baseKey(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]] = ...) -> str: ...
    def isValid(self) -> bool: ...


class QgsSettingsEntryBaseTemplateQVariantBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> typing.Any: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.Any: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    def defaultValue(self) -> typing.Any: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPart: typing.Optional[str] = ...) -> typing.Any: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryVariant(QgsSettingsEntryBaseTemplateQVariantBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: typing.Any = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQStringBase') -> None: ...

    def checkValuePrivate(self, value: typing.Optional[str]) -> bool: ...
    def convertToVariant(self, value: typing.Optional[str]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> str: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> str: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> str: ...
    def defaultValue(self) -> str: ...
    @typing.overload
    def setValue(self, value: typing.Optional[str], dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Optional[str], dynamicKeyPart: typing.Optional[str] = ...) -> str: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Optional[str], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> str: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryString(QgsSettingsEntryBaseTemplateQStringBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Optional[str] = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minLength: int = ..., maxLength: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: typing.Optional[str] = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBaseTemplateQStringListBase') -> None: ...

    def checkValuePrivate(self, value: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def convertToVariant(self, value: typing.Iterable[typing.Optional[str]]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Iterable[typing.Optional[str]], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> typing.List[str]: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.List[str]: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.List[str]: ...
    def defaultValue(self) -> typing.List[str]: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[typing.Optional[str]], dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[typing.Optional[str]], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[typing.Optional[str]], dynamicKeyPart: typing.Optional[str] = ...) -> typing.List[str]: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[typing.Optional[str]], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.List[str]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryStringList(QgsSettingsEntryBaseTemplateQStringListBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Iterable[typing.Optional[str]] = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: typing.Iterable[typing.Optional[str]] = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> bool: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def defaultValue(self) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBool(QgsSettingsEntryBaseTemplateboolBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: bool = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: bool = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> int: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> int: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> int: ...
    def defaultValue(self) -> int: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPart: typing.Optional[str] = ...) -> int: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> int: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryInteger(QgsSettingsEntryBaseTemplateintBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: int = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: int = ..., maxValue: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: int = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> float: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> float: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> float: ...
    def defaultValue(self) -> float: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPart: typing.Optional[str] = ...) -> float: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> float: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryDouble(QgsSettingsEntryBaseTemplatedoubleBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: float = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: float = ..., maxValue: float = ..., displayDecimals: int = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: float, description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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]) -> bool: ...
    def convertToVariant(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def convertFromVariant(self, value: typing.Any) -> QtGui.QColor: ...
    def checkValueVariant(self, value: typing.Any) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: typing.Optional[str] = ...) -> QtGui.QColor: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> QtGui.QColor: ...
    def defaultValue(self) -> QtGui.QColor: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPart: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPart: typing.Optional[str] = ...) -> QtGui.QColor: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> QtGui.QColor: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryColor(QgsSettingsEntryBaseTemplateQColorBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., allowAlpha: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., description: typing.Optional[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: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Any, description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], section: typing.Optional[str], defaultValue: typing.Any, description: typing.Optional[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[typing.Optional[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: typing.Optional[str] = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[typing.Optional[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: typing.Optional[str] = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Dict[str, typing.Any], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Dict[str, typing.Any], dynamicKeyPart: typing.Optional[str] = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Dict[str, typing.Any], dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def value(self, dynamicKeyPart: typing.Optional[str] = ...) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[typing.Optional[str]]) -> typing.Dict[str, typing.Any]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryVariantMap(QgsSettingsEntryBaseTemplateQVariantMapBase):

    @typing.overload
    def __init__(self, name: typing.Optional[str], parent: typing.Optional['QgsSettingsTreeNode'], defaultValue: typing.Dict[str, typing.Any] = ..., description: typing.Optional[str] = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, key: typing.Optional[str], pluginName: typing.Optional[str], defaultValue: typing.Dict[str, typing.Any] = ..., description: typing.Optional[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: typing.Optional[QgsSettingsEntryGroup]) -> None: ...
    def addSettingsEntry(self, settingsEntry: typing.Optional[QgsSettingsEntryBase]) -> bool: ...
    def subRegistries(self) -> typing.List['QgsSettingsRegistry']: ...
    def removeSubRegistry(self, settingsRegistry: typing.Optional['QgsSettingsRegistry']) -> None: ...
    def addSubRegistry(self, settingsRegistry: typing.Optional['QgsSettingsRegistry']) -> None: ...
    def settingsEntry(self, key: typing.Optional[str], searchChildRegistries: bool = ...) -> typing.Optional[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: typing.Optional[str]) -> None: ...
    @staticmethod
    def createPluginTreeNode(pluginName: typing.Optional[str]) -> typing.Optional['QgsSettingsTreeNode']: ...
    @staticmethod
    def node(key: typing.Optional[str]) -> typing.Optional['QgsSettingsTreeNode']: ...


class QgsSettingsTreeNode(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    def registerChildNode(self, node: typing.Optional['QgsSettingsTreeNode']) -> None: ...
    def __repr__(self) -> typing.Any: ...
    def namedNodesCount(self) -> int: ...
    def completeKey(self) -> str: ...
    def key(self) -> str: ...
    def parent(self) -> typing.Optional['QgsSettingsTreeNode']: ...
    def childSetting(self, key: typing.Optional[str]) -> typing.Optional[QgsSettingsEntryBase]: ...
    def childrenSettings(self) -> typing.List[QgsSettingsEntryBase]: ...
    def childNode(self, key: typing.Optional[str]) -> typing.Optional['QgsSettingsTreeNode']: ...
    def childrenNodes(self) -> typing.List['QgsSettingsTreeNode']: ...
    def unregisterChildNode(self, node: typing.Optional['QgsSettingsTreeNode']) -> None: ...
    def unregisterChildSetting(self, setting: typing.Optional[QgsSettingsEntryBase], deleteSettingValues: bool = ..., parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def registerChildSetting(self, setting: typing.Optional[QgsSettingsEntryBase], key: typing.Optional[str]) -> None: ...
    def type(self) -> Qgis.SettingsTreeNodeType: ...
    def createNamedListNode(self, key: typing.Optional[str], options: typing.Union[Qgis.SettingsTreeNodeOptions, Qgis.SettingsTreeNodeOption] = ...) -> typing.Optional['QgsSettingsTreeNamedListNode']: ...
    def createChildNode(self, key: typing.Optional[str]) -> typing.Optional['QgsSettingsTreeNode']: ...


class QgsSettingsTreeNamedListNode(QgsSettingsTreeNode):

    def initNamedList(self, options: typing.Union[Qgis.SettingsTreeNodeOptions, Qgis.SettingsTreeNodeOption]) -> None: ...
    def selectedItemSetting(self) -> typing.Optional[QgsSettingsEntryString]: ...
    def deleteAllItems(self, parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def deleteItem(self, item: typing.Optional[str], parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    def selectedItem(self, parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> str: ...
    def setSelectedItem(self, item: typing.Optional[str], parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> None: ...
    @typing.overload
    def items(self, parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> typing.List[str]: ...
    @typing.overload
    def items(self, origin: Qgis.SettingsOrigin, parentsNamedItems: typing.Iterable[typing.Optional[str]] = ...) -> typing.List[str]: ...


class QgsValidityCheckResult(PyQt5.sip.wrapper):

    class Type(int):
        Warning = ... # type: QgsValidityCheckResult.Type
        Critical = ... # type: QgsValidityCheckResult.Type

    checkId = ... # type: typing.Optional[str]
    detailedDescription = ... # type: typing.Optional[str]
    title = ... # type: typing.Optional[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):
        LayoutCheck = ... # type: QgsAbstractValidityCheck.Type
        UserCheck = ... # type: QgsAbstractValidityCheck.Type

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

    def runCheck(self, context: typing.Optional['QgsValidityCheckContext'], feedback: typing.Optional[QgsFeedback]) -> typing.List[QgsValidityCheckResult]: ...
    def prepareCheck(self, context: typing.Optional['QgsValidityCheckContext'], feedback: typing.Optional[QgsFeedback]) -> bool: ...
    def checkType(self) -> int: ...
    def id(self) -> str: ...
    def create(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[QgsValidityCheckContext], feedback: typing.Optional[QgsFeedback]) -> typing.List[QgsValidityCheckResult]: ...
    def removeCheck(self, check: typing.Optional[QgsAbstractValidityCheck]) -> None: ...
    def addCheck(self, check: typing.Optional[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: typing.Optional[str], description: typing.Optional[str], fieldType: QtCore.QMetaType.Type) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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: ...
    @typing.overload
    def setFieldType(self, type: QtCore.QMetaType.Type) -> None: ...
    @typing.overload
    def setFieldType(self, type: QtCore.QVariant.Type) -> None: ...
    def fieldType(self) -> QtCore.QMetaType.Type: ...
    def setDescription(self, description: typing.Optional[str]) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: typing.Optional[str]) -> None: ...
    def name(self) -> str: ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...
    def clone(self) -> typing.Optional['QgsFieldDomain']: ...


class QgsCodedValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, code: typing.Any, value: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCodedValue') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    def value(self) -> str: ...
    def code(self) -> typing.Any: ...


class QgsCodedFieldDomain(QgsFieldDomain):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], fieldType: QtCore.QMetaType.Type, values: typing.Iterable[QgsCodedValue]) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional['QgsCodedFieldDomain']: ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsRangeFieldDomain(QgsFieldDomain):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], fieldType: QtCore.QMetaType.Type, minimum: typing.Any, minimumIsInclusive: bool, maximum: typing.Any, maximumIsInclusive: bool) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[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) -> typing.Optional['QgsRangeFieldDomain']: ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsGlobFieldDomain(QgsFieldDomain):

    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], fieldType: QtCore.QMetaType.Type, glob: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, name: typing.Optional[str], description: typing.Optional[str], fieldType: QtCore.QVariant.Type, glob: typing.Optional[str]) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setGlob(self, glob: typing.Optional[str]) -> None: ...
    def glob(self) -> str: ...
    def clone(self) -> typing.Optional['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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        def __xor__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        def __ior__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        def __or__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        def __iand__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        def __and__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> 'QgsVectorDataProvider.Capabilities': ...
        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.QMetaType.Type
        mType = ... # type: QtCore.QMetaType.Type
        mTypeDesc = ... # type: typing.Optional[str]
        mTypeName = ... # type: typing.Optional[str]

        @typing.overload
        def __init__(self, typeDesc: typing.Optional[str], typeName: typing.Optional[str], type: QtCore.QMetaType.Type, minLen: int = ..., maxLen: int = ..., minPrec: int = ..., maxPrec: int = ..., subType: QtCore.QMetaType.Type = ...) -> None: ...
        @typing.overload
        def __init__(self, typeDesc: typing.Optional[str], typeName: typing.Optional[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: typing.Optional[str] = ..., providerOptions: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def textEncoding(self) -> typing.Optional[QtCore.QTextCodec]: ...
    def setNativeTypes(self, nativeTypes: typing.Iterable['QgsVectorDataProvider.NativeType']) -> None: ...
    @typing.overload
    def convertToProviderType(self, geom: QgsGeometry) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def convertToProviderType(geometry: QgsGeometry, providerGeometryType: Qgis.WkbType) -> QgsGeometry: ...
    def pushError(self, msg: typing.Optional[str]) -> None: ...
    def fillMinMaxCache(self) -> None: ...
    def clearMinMaxCache(self) -> None: ...
    raiseError: typing.ClassVar[QtCore.pyqtSignal]
    def elevationProperties(self) -> typing.Optional[QgsDataProviderElevationProperties]: ...
    def temporalCapabilities(self) -> typing.Optional['QgsVectorDataProviderTemporalCapabilities']: ...
    def handlePostCloneOperations(self, source: typing.Optional['QgsVectorDataProvider']) -> None: ...
    def hasMetadata(self) -> bool: ...
    def translateMetadataValue(self, mdKey: typing.Optional[str], value: typing.Any) -> str: ...
    def translateMetadataKey(self, mdKey: typing.Optional[str]) -> str: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def discoverRelations(self, target: typing.Optional[QgsVectorLayer], layers: typing.Iterable[QgsVectorLayer]) -> typing.List[QgsRelation]: ...
    def dependencies(self) -> typing.Set[QgsMapLayerDependency]: ...
    def forceReload(self) -> None: ...
    def transaction(self) -> typing.Optional[QgsTransaction]: ...
    @typing.overload
    @staticmethod
    def convertValue(type: QtCore.QMetaType.Type, value: typing.Optional[str]) -> typing.Any: ...
    @typing.overload
    @staticmethod
    def convertValue(type: QtCore.QVariant.Type, value: typing.Optional[str]) -> typing.Any: ...
    def createLabeling(self, configuration: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsAbstractVectorLayerLabeling]: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> typing.Optional[QgsFeatureRenderer]: ...
    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: typing.Optional[str]) -> int: ...
    def encoding(self) -> str: ...
    def setEncoding(self, e: typing.Optional[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, typing.Optional[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: Qgis.Aggregate, index: int, parameters: QgsAggregateCalculator.AggregateParameters, context: typing.Optional[QgsExpressionContext], fids: typing.Optional[typing.Any] = ...) -> typing.Tuple[typing.Any, bool]: ...
    def uniqueStringsMatching(self, index: int, substring: typing.Optional[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 sourceExtent3D(self) -> QgsBox3D: ...
    def sourceExtent(self) -> QgsRectangle: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def fields(self) -> QgsFields: ...
    def hasFeatures(self) -> Qgis.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) -> typing.Optional[QgsAbstractFeatureSource]: ...


class QgsVectorDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

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

    def setEndField(self, field: typing.Optional[str]) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: typing.Optional[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: typing.Optional[QgsVectorLayer], cacheSize: int, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    invalidated: typing.ClassVar[QtCore.pyqtSignal]
    featureAdded: typing.ClassVar[QtCore.pyqtSignal]
    attributeValueChanged: typing.ClassVar[QtCore.pyqtSignal]
    cachedLayerDeleted: typing.ClassVar[QtCore.pyqtSignal]
    finished: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional[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: typing.Optional[str]) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, fids: typing.Any) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, rectangle: QgsRectangle) -> QgsFeatureIterator: ...
    def addCacheIndex(self, cacheIndex: typing.Optional[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: typing.Optional[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: ...
    committedGeometriesChanges: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributeValuesChanges: typing.ClassVar[QtCore.pyqtSignal]
    committedFeaturesRemoved: typing.ClassVar[QtCore.pyqtSignal]
    committedFeaturesAdded: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributesRenamed: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributesAdded: typing.ClassVar[QtCore.pyqtSignal]
    committedAttributesDeleted: typing.ClassVar[QtCore.pyqtSignal]
    attributeRenamed: typing.ClassVar[QtCore.pyqtSignal]
    attributeDeleted: typing.ClassVar[QtCore.pyqtSignal]
    attributeAdded: typing.ClassVar[QtCore.pyqtSignal]
    attributeValueChanged: typing.ClassVar[QtCore.pyqtSignal]
    geometryChanged: typing.ClassVar[QtCore.pyqtSignal]
    featureDeleted: typing.ClassVar[QtCore.pyqtSignal]
    featureAdded: typing.ClassVar[QtCore.pyqtSignal]
    layerModified: typing.ClassVar[QtCore.pyqtSignal]
    def undoIndexChanged(self, index: int) -> None: ...
    def setEditBufferGroup(self, editBufferGroup: typing.Optional['QgsVectorLayerEditBufferGroup']) -> None: ...
    def editBufferGroup(self) -> typing.Optional['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[typing.Optional[str]]) -> bool: ...
    def renameAttribute(self, attr: int, newName: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> None: ...


class QgsVectorLayerEditPassthrough(QgsVectorLayerEditBuffer):

    def __init__(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...

    def update(self, transaction: typing.Optional[QgsTransaction], sql: typing.Optional[str], name: typing.Optional[str]) -> bool: ...
    def rollBack(self) -> None: ...
    def commitChanges(self, commitErrors: typing.Iterable[typing.Optional[str]]) -> bool: ...
    def renameAttribute(self, attr: int, newName: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsCurve], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[int]]: ...
    def addRingV2(self, ring: typing.Optional[QgsCurve], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[typing.Any]]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPointXY], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[int]]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPoint], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Optional[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: typing.Optional[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: typing.Optional[QgsMarkerSymbol]) -> None: ...
    def profileMarkerSymbol(self) -> typing.Optional[QgsMarkerSymbol]: ...
    def setProfileFillSymbol(self, symbol: typing.Optional[QgsFillSymbol]) -> None: ...
    def profileFillSymbol(self) -> typing.Optional[QgsFillSymbol]: ...
    def setProfileLineSymbol(self, symbol: typing.Optional[QgsLineSymbol]) -> None: ...
    def profileLineSymbol(self) -> typing.Optional[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: typing.Optional[QgsMapLayer]) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange, layer: typing.Optional[QgsMapLayer] = ...) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> typing.Optional['QgsVectorLayerElevationProperties']: ...
    def setDefaultsFromLayer(self, layer: typing.Optional[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: typing.Optional[str], provider: typing.Optional[str], fields: QgsFields, geometryType: Qgis.WkbType, crs: QgsCoordinateReferenceSystem, overwrite: bool = ..., options: typing.Dict[typing.Optional[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: typing.Optional[QgsVectorLayer], uri: typing.Optional[str], providerKey: typing.Optional[str], destCRS: QgsCoordinateReferenceSystem, onlySelected: bool = ..., options: typing.Dict[typing.Optional[str], typing.Any] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[Qgis.VectorExportResult, typing.Optional[str]]: ...


class QgsVectorLayerExporterTask(QgsTask):

    def __init__(self, layer: typing.Optional[QgsVectorLayer], uri: typing.Optional[str], providerKey: typing.Optional[str], destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[typing.Optional[str], typing.Any] = ..., ownsLayer: bool = ...) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtSignal]
    exportComplete: typing.ClassVar[QtCore.pyqtSignal]
    def cancel(self) -> None: ...
    @staticmethod
    def withLayerOwnership(layer: typing.Optional[QgsVectorLayer], uri: typing.Optional[str], providerKey: typing.Optional[str], destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[typing.Optional[str], typing.Any] = ...) -> typing.Optional['QgsVectorLayerExporterTask']: ...


class QgsVectorLayerFeatureCounter(QgsTask):

    def __init__(self, layer: typing.Optional[QgsVectorLayer], context: QgsExpressionContext = ..., storeSymbolFids: bool = ...) -> None: ...

    symbolsCounted: typing.ClassVar[QtCore.pyqtSignal]
    def featureIds(self, symbolkey: typing.Optional[str]) -> typing.Any: ...
    def featureCount(self, legendKey: typing.Optional[str]) -> int: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsVectorLayerFeatureSource(QgsAbstractFeatureSource):

    def __init__(self, layer: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[QgsVectorLayer]) -> None: ...

    def hasSpatialIndex(self) -> Qgis.SpatialIndexPresence: ...
    def createExpressionContextScope(self) -> typing.Optional[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: ...

    joinedFieldsChanged: typing.ClassVar[QtCore.pyqtSignal]
    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) -> typing.Optional['QgsVectorLayerJoinBuffer']: ...
    def isAuxiliaryJoin(self, info: 'QgsVectorLayerJoinInfo') -> bool: ...
    def targetedFeatureOf(self, info: typing.Optional['QgsVectorLayerJoinInfo'], feature: QgsFeature) -> QgsFeature: ...
    def joinedFeatureOf(self, info: typing.Optional['QgsVectorLayerJoinInfo'], feature: QgsFeature) -> QgsFeature: ...
    def joinsWhereFieldIsId(self, field: QgsField) -> typing.List['QgsVectorLayerJoinInfo']: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayer: typing.Optional[QgsVectorLayer], joinFieldsSubset: typing.Iterable[typing.Optional[str]]) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayerFields: QgsFields, joinFieldsSubset: typing.Iterable[typing.Optional[str]]) -> typing.List[int]: ...
    def joinedFieldsOffset(self, info: typing.Optional['QgsVectorLayerJoinInfo'], fields: QgsFields) -> int: ...
    def joinForFieldIndex(self, index: int, fields: QgsFields) -> typing.Tuple[typing.Optional['QgsVectorLayerJoinInfo'], int]: ...
    def vectorJoins(self) -> typing.List['QgsVectorLayerJoinInfo']: ...
    def containsJoins(self) -> bool: ...
    def resolveReferences(self, project: typing.Optional[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: typing.Optional[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 __ne__(self, other: object): ...
    def setJoinFieldNamesSubset(self, fieldNamesSubset: typing.Optional[typing.Iterable[typing.Optional[str]]]) -> None: ...
    def __eq__(self, other: object): ...
    @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.Optional[typing.List[str]]: ...
    def hasSubset(self, blocklisted: bool = ...) -> bool: ...
    def joinFieldNamesBlockList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlockList(self, list: typing.Iterable[typing.Optional[str]]) -> None: ...
    def joinFieldNamesBlackList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlackList(self, blackList: typing.Iterable[typing.Optional[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: typing.Optional[str]) -> None: ...
    def joinFieldName(self) -> str: ...
    def setJoinFieldName(self, fieldName: typing.Optional[str]) -> None: ...
    def targetFieldName(self) -> str: ...
    def setTargetFieldName(self, fieldName: typing.Optional[str]) -> None: ...
    def joinLayerId(self) -> str: ...
    def setJoinLayerId(self, layerId: typing.Optional[str]) -> None: ...
    def joinLayer(self) -> typing.Optional[QgsVectorLayer]: ...
    def setJoinLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...


class QgsVectorLayerSelectionProperties(QgsMapLayerSelectionProperties):

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

    def setSelectionSymbol(self, symbol: typing.Optional[QgsSymbol]) -> None: ...
    def selectionSymbol(self) -> typing.Optional[QgsSymbol]: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionRenderingMode(self, mode: Qgis.SelectionRenderingMode) -> None: ...
    def selectionRenderingMode(self) -> Qgis.SelectionRenderingMode: ...
    def clone(self) -> typing.Optional['QgsVectorLayerSelectionProperties']: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...


class QgsVectorLayerTemporalContext(PyQt5.sip.wrapper):

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

    def setLayer(self, layer: typing.Optional[QgsVectorLayer]) -> None: ...
    def layer(self) -> typing.Optional[QgsVectorLayer]: ...


class QgsVectorLayerTemporalProperties(QgsMapLayerTemporalProperties):

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

    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: typing.Optional[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: typing.Optional[str]) -> None: ...
    def durationField(self) -> str: ...
    def setEndExpression(self, endExpression: typing.Optional[str]) -> None: ...
    def endExpression(self) -> str: ...
    def setStartExpression(self, expression: typing.Optional[str]) -> None: ...
    def startExpression(self) -> str: ...
    def setEndField(self, field: typing.Optional[str]) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: typing.Optional[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 QgsVectorLayerToolsContext(PyQt5.sip.wrapper):

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

    def setHideParent(self, hide: bool) -> None: ...
    def hideParent(self) -> bool: ...
    def setShowModal(self, modal: bool) -> None: ...
    def showModal(self) -> bool: ...
    def setParentWidget(self, parent: typing.Optional[QtWidgets.QWidget]) -> None: ...
    def parentWidget(self) -> typing.Optional[QtWidgets.QWidget]: ...
    def additionalExpressionContextScope(self) -> typing.Optional[QgsExpressionContextScope]: ...
    def setAdditionalExpressionContextScope(self, scope: typing.Optional[QgsExpressionContextScope]) -> None: ...
    def expressionContext(self) -> typing.Optional[QgsExpressionContext]: ...
    def setExpressionContext(self, context: typing.Optional[QgsExpressionContext]) -> None: ...


class QgsVectorLayerUndoCommand(QtWidgets.QUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer]) -> None: ...

    def mergeWith(self, a0: typing.Optional[QtWidgets.QUndoCommand]) -> bool: ...
    def id(self) -> int: ...
    def layer(self) -> typing.Optional[QgsVectorLayer]: ...


class QgsVectorLayerUndoCommandAddFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], f: QgsFeature) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fid: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeGeometry(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fid: int, newGeom: QgsGeometry) -> None: ...

    def mergeWith(self, other: typing.Optional[QtWidgets.QUndoCommand]) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[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: typing.Optional[QgsVectorLayerEditBuffer], field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fieldIndex: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandRenameAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fieldIndex: int, newName: typing.Optional[str]) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommand(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], text: typing.Optional[str], autocreate: bool = ...) -> None: ...

    def errorMessage(self) -> str: ...
    def setErrorMessage(self, errorMessage: typing.Optional[str]) -> None: ...
    def setError(self) -> None: ...
    def setSavePoint(self, savePointId: typing.Optional[str] = ...) -> bool: ...
    def rollBackToSavePoint(self) -> bool: ...
    def hasError(self) -> bool: ...


class QgsVectorLayerUndoPassthroughCommandAddFeatures(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[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: typing.Optional[QgsVectorLayerEditBuffer], fids: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeGeometry(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fid: int, geom: QgsGeometry) -> None: ...

    def mergeWith(self, other: typing.Optional[QtWidgets.QUndoCommand]) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], fid: int, field: int, newValue: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttributes(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[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: typing.Optional[QgsVectorLayerEditBuffer], field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandDeleteAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], attr: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandRenameAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], attr: int, newName: typing.Optional[str]) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandUpdate(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: typing.Optional[QgsVectorLayerEditBuffer], transaction: typing.Optional[QgsTransaction], sql: typing.Optional[str], name: typing.Optional[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: typing.Optional[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: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __xor__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __ior__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __or__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __iand__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        def __and__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> 'QgsVectorLayerUtils.CascadedFeatureFlags': ...
        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, typing.Optional[bool]]: ...
    @staticmethod
    def impactsCascadeFeatures(layer: typing.Optional[QgsVectorLayer], fids: typing.Any, project: typing.Optional[QgsProject], flags: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag'] = ...) -> typing.Tuple[bool, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def getFeatureDisplayString(layer: typing.Optional[QgsVectorLayer], feature: QgsFeature) -> str: ...
    @staticmethod
    def fieldEditabilityDependsOnFeature(layer: typing.Optional[QgsVectorLayer], fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsReadOnly(layer: typing.Optional[QgsVectorLayer], fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsEditable(layer: typing.Optional[QgsVectorLayer], fieldIndex: int, feature: QgsFeature) -> bool: ...
    @staticmethod
    def makeFeaturesCompatible(features: typing.Iterable[QgsFeature], layer: typing.Optional[QgsVectorLayer], sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def makeFeatureCompatible(feature: QgsFeature, layer: typing.Optional[QgsVectorLayer], sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def matchAttributesToFields(feature: QgsFeature, fields: QgsFields) -> None: ...
    @staticmethod
    def duplicateFeature(layer: typing.Optional[QgsVectorLayer], feature: QgsFeature, project: typing.Optional[QgsProject], maxDepth: int = ...) -> typing.Tuple[QgsFeature, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def createFeatures(layer: typing.Optional[QgsVectorLayer], featuresData: typing.Iterable['QgsVectorLayerUtils.QgsFeatureData'], context: typing.Optional[QgsExpressionContext] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def createFeature(layer: typing.Optional[QgsVectorLayer], geometry: QgsGeometry = ..., attributes: typing.Dict[int, typing.Any] = ..., context: typing.Optional[QgsExpressionContext] = ...) -> QgsFeature: ...
    @staticmethod
    def validateAttribute(layer: typing.Optional[QgsVectorLayer], feature: QgsFeature, attributeIndex: int, strength: QgsFieldConstraints.ConstraintStrength = ..., origin: QgsFieldConstraints.ConstraintOrigin = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    @staticmethod
    def attributeHasConstraints(layer: typing.Optional[QgsVectorLayer], attributeIndex: int) -> bool: ...
    @staticmethod
    def createUniqueValueFromCache(layer: typing.Optional[QgsVectorLayer], fieldIndex: int, existingValues: typing.Iterable[typing.Any], seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def createUniqueValue(layer: typing.Optional[QgsVectorLayer], fieldIndex: int, seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def valueExists(layer: typing.Optional[QgsVectorLayer], fieldIndex: int, value: typing.Any, ignoreIds: typing.Any = ...) -> bool: ...
    @staticmethod
    def getDoubleValues(layer: typing.Optional[QgsVectorLayer], fieldOrExpression: typing.Optional[str], selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[float], bool, typing.Optional[int]]: ...
    @staticmethod
    def getValues(layer: typing.Optional[QgsVectorLayer], fieldOrExpression: typing.Optional[str], selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], bool]: ...
    @staticmethod
    def getValuesIterator(layer: typing.Optional[QgsVectorLayer], fieldOrExpression: typing.Optional[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: typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...


class QgsMapBoxGlStyleAbstractSource(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleAbstractSource') -> None: ...

    def name(self) -> str: ...
    def setFromJson(self, json: typing.Dict[str, typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext]) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSource(QgsMapBoxGlStyleAbstractSource):

    @typing.overload
    def __init__(self, name: typing.Optional[str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleRasterSource') -> None: ...

    def toRasterLayer(self) -> typing.Optional[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: typing.Optional[QgsMapBoxGlStyleConversionContext]) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSubLayer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, id: typing.Optional[str], source: typing.Optional[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: typing.Optional[str], spriteSizeProperty: typing.Optional[str]) -> str: ...
    @staticmethod
    def retrieveSprite(name: typing.Optional[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: typing.Optional[str]) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def parseCapStyle(style: typing.Optional[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]) -> 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, typing.Optional[QtGui.QColor], typing.Optional[float]]: ...
    @staticmethod
    def parseMatchList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, typing.Optional[QtGui.QColor], typing.Optional[float]]: ...
    @staticmethod
    def parseValueList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, typing.Optional[QtGui.QColor], typing.Optional[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, typing.Optional[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, typing.Optional[str]]: ...
    @staticmethod
    def parseInterpolatePointByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> typing.Tuple[QgsProperty, typing.Optional[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, typing.Optional[float]]: ...
    @staticmethod
    def parseInterpolateColorByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[QgsProperty, typing.Optional[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: typing.Optional[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) -> typing.Optional['QgsVectorTileLabeling']: ...
    def renderer(self) -> typing.Optional['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: typing.Optional[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: typing.Optional[str]) -> None: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def setGeometryType(self, geomType: Qgis.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: typing.Optional[str]) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: typing.Optional[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) -> typing.Optional['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) -> typing.Optional[QgsVectorTileLabeling]: ...
    def type(self) -> str: ...


class QgsVectorTileBasicRendererStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, stName: typing.Optional[str] = ..., laName: typing.Optional[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) -> typing.Optional[QgsSymbol]: ...
    def setSymbol(self, sym: typing.Optional[QgsSymbol]) -> None: ...
    def filterExpression(self) -> str: ...
    def setFilterExpression(self, expr: typing.Optional[str]) -> None: ...
    def geometryType(self) -> Qgis.GeometryType: ...
    def setGeometryType(self, geomType: Qgis.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: typing.Optional[str]) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: typing.Optional[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: typing.Optional[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) -> typing.Optional['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], polygonStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], polygonStrokeWidth: float, lineStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], lineStrokeWidth: float, pointFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pointStrokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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: typing.Optional[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) -> typing.Optional['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: typing.Optional[str] = ..., baseName: typing.Optional[str] = ..., options: 'QgsVectorTileLayer.LayerOptions' = ...) -> None: ...

    selectionChanged: typing.ClassVar[QtCore.pyqtSignal]
    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 setLabelsEnabled(self, enabled: bool) -> None: ...
    def labelsEnabled(self) -> bool: ...
    def labeling(self) -> typing.Optional[QgsVectorTileLabeling]: ...
    def setLabeling(self, labeling: typing.Optional[QgsVectorTileLabeling]) -> None: ...
    def renderer(self) -> typing.Optional[QgsVectorTileRenderer]: ...
    def setRenderer(self, r: typing.Optional[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: typing.Optional[str], provider: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: typing.Optional[str], context: QgsReadWriteContext) -> str: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def loadDefaultStyleAndSubLayers(self, error: typing.Optional[str], warnings: typing.Iterable[typing.Optional[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: typing.Optional[str], context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: typing.Optional[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) -> typing.Optional[QgsMapLayerRenderer]: ...
    def dataProvider(self) -> typing.Optional[QgsDataProvider]: ...
    def clone(self) -> typing.Optional['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: typing.Optional[str]) -> typing.List[QgsFeature]: ...
    def layers(self) -> typing.List[str]: ...
    def fields(self) -> typing.Dict[str, QgsFields]: ...
    def setFields(self, fields: typing.Dict[typing.Optional[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: typing.Optional[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: typing.Optional[str]) -> None: ...
        def layerName(self) -> str: ...
        def setFilterExpression(self, expr: typing.Optional[str]) -> None: ...
        def filterExpression(self) -> str: ...
        def layer(self) -> typing.Optional[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: typing.Optional[str]) -> None: ...


class QgsVtpkTiles(PyQt5.sip.wrapper):

    def __init__(self, filename: typing.Optional[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: typing.Optional[QgsGpsConnection]) -> None: ...
    def registerConnection(self, c: typing.Optional[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: typing.Optional[str]) -> typing.List[QgsSymbolLayerReference]: ...
def symbolLayerReferenceListToString(a0: typing.Iterable[QgsSymbolLayerReference]) -> str: ...
def compareWkt(a: typing.Optional[str], b: typing.Optional[str], tolerance: float = ...) -> bool: ...
def geoNone() -> str: ...
def geoEpsgCrsAuthId() -> str: ...
def geoProj4() -> str: ...
def geoWkt() -> str: ...
def qgsVsiPrefix(path: typing.Optional[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: typing.Optional[str]) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToInt(string: typing.Optional[str]) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToDouble(string: typing.Optional[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: ...
