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


import typing

import PyQt5.sip

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

# Support for QDate, QDateTime and QTime.
import datetime

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

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


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


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


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


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


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


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


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


class QgsMapLayerType(int):
    VectorLayer = ... # type: QgsMapLayerType
    RasterLayer = ... # type: QgsMapLayerType
    PluginLayer = ... # type: QgsMapLayerType
    MeshLayer = ... # type: QgsMapLayerType
    VectorTileLayer = ... # type: QgsMapLayerType
    AnnotationLayer = ... # type: QgsMapLayerType
    PointCloudLayer = ... # type: QgsMapLayerType
    GroupLayer = ... # type: QgsMapLayerType


class Qgis(PyQt5.sip.wrapper):

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    class 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 LabelQuadrantPosition(int):
        AboveLeft = ... # type: Qgis.LabelQuadrantPosition
        Above = ... # type: Qgis.LabelQuadrantPosition
        AboveRight = ... # type: Qgis.LabelQuadrantPosition
        Left = ... # type: Qgis.LabelQuadrantPosition
        Over = ... # type: Qgis.LabelQuadrantPosition
        Right = ... # type: Qgis.LabelQuadrantPosition
        BelowLeft = ... # type: Qgis.LabelQuadrantPosition
        Below = ... # type: Qgis.LabelQuadrantPosition
        BelowRight = ... # type: Qgis.LabelQuadrantPosition

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

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

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

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

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

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

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

    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 VectorExportResult(int):
        Success = ... # type: Qgis.VectorExportResult
        ErrorCreatingDataSource = ... # type: Qgis.VectorExportResult
        ErrorCreatingLayer = ... # type: Qgis.VectorExportResult
        ErrorAttributeTypeUnsupported = ... # type: Qgis.VectorExportResult
        ErrorAttributeCreationFailed = ... # type: Qgis.VectorExportResult
        ErrorProjectingFeatures = ... # type: Qgis.VectorExportResult
        ErrorFeatureWriteFailed = ... # type: Qgis.VectorExportResult
        ErrorInvalidLayer = ... # type: Qgis.VectorExportResult
        ErrorInvalidProvider = ... # type: Qgis.VectorExportResult
        ErrorProviderUnsupportedFeature = ... # type: Qgis.VectorExportResult
        ErrorConnectionFailed = ... # type: Qgis.VectorExportResult
        UserCanceled = ... # type: Qgis.VectorExportResult

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

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

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

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

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

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

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

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

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

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

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

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

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

    class SettingsType(int):
        Variant = ... # type: Qgis.SettingsType
        String = ... # type: Qgis.SettingsType
        StringList = ... # 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 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
        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 MessageLevel(int):
        Info = ... # type: Qgis.MessageLevel
        Warning = ... # type: Qgis.MessageLevel
        Critical = ... # type: Qgis.MessageLevel
        Success = ... # type: Qgis.MessageLevel
        NoLevel = ... # type: Qgis.MessageLevel

    class VectorLayerTypeFlags(PyQt5.sip.wrapper):

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

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

    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: 'QgsTolerance.UnitType'
    DEFAULT_Z_COORDINATE = ... # type: float
    QGIS_DEV_VERSION = ... # type: str
    SCALE_PRECISION = ... # type: float
    UI_SCALE_FACTOR = ... # type: float
    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsAbstractContentCacheEntry(PyQt5.sip.wrapper):

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

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

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


class QgsAbstractContentCacheBase(QtCore.QObject):

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

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


class QgsAction(PyQt5.sip.wrapper):

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

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

    def setCommand(self, newCommand: str) -> None: ...
    def html(self) -> str: ...
    def expressionContextScope(self) -> 'QgsExpressionContextScope': ...
    def setExpressionContextScope(self, scope: 'QgsExpressionContextScope') -> None: ...
    def writeXml(self, actionsNode: QtXml.QDomNode) -> None: ...
    def readXml(self, actionNode: QtXml.QDomNode) -> None: ...
    def setActionScopes(self, actionScopes: typing.Iterable[str]) -> None: ...
    def actionScopes(self) -> typing.Set[str]: ...
    @typing.overload
    def run(self, layer: 'QgsVectorLayer', feature: 'QgsFeature', expressionContext: 'QgsExpressionContext') -> None: ...
    @typing.overload
    def run(self, expressionContext: 'QgsExpressionContext') -> None: ...
    def runable(self) -> bool: ...
    def setEnabledOnlyWhenEditable(self, enable: bool) -> None: ...
    def isEnabledOnlyWhenEditable(self) -> bool: ...
    def capture(self) -> bool: ...
    def type(self) -> 'QgsAction.ActionType': ...
    def notificationMessage(self) -> str: ...
    def command(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def iconPath(self) -> str: ...
    def isValid(self) -> bool: ...
    def id(self) -> QtCore.QUuid: ...
    def shortTitle(self) -> str: ...
    def name(self) -> str: ...


class QgsActionManager(QtCore.QObject):

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

    def defaultAction(self, actionScope: str) -> QgsAction: ...
    def setDefaultAction(self, actionScope: str, actionId: QtCore.QUuid) -> None: ...
    @typing.overload
    def action(self, id: QtCore.QUuid) -> QgsAction: ...
    @typing.overload
    def action(self, id: str) -> QgsAction: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode) -> bool: ...
    def layer(self) -> 'QgsVectorLayer': ...
    def actions(self, actionScope: str = ...) -> typing.List[QgsAction]: ...
    def clearActions(self) -> None: ...
    def doAction(self, actionId: QtCore.QUuid, feature: 'QgsFeature', context: 'QgsExpressionContext') -> None: ...
    def doActionFeature(self, actionId: QtCore.QUuid, feature: 'QgsFeature', defaultValueIndex: int = ..., scope: 'QgsExpressionContextScope' = ...) -> None: ...
    def removeAction(self, actionId: QtCore.QUuid) -> None: ...
    @typing.overload
    def addAction(self, type: QgsAction.ActionType, name: str, command: str, capture: bool = ...) -> QtCore.QUuid: ...
    @typing.overload
    def addAction(self, type: QgsAction.ActionType, name: str, command: str, icon: str, capture: bool = ...) -> QtCore.QUuid: ...
    @typing.overload
    def addAction(self, action: QgsAction) -> None: ...


class QgsActionScope(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, id: str, title: str, description: str, expressionContextScope: 'QgsExpressionContextScope' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsActionScope') -> None: ...

    def __ne__(self, other: object): ...
    def __hash__(self) -> int: ...
    def isValid(self) -> bool: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def title(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...
    def setExpressionContextScope(self, expressionContextScope: 'QgsExpressionContextScope') -> None: ...
    def expressionContextScope(self) -> 'QgsExpressionContextScope': ...
    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: str) -> QgsActionScope: ...
    def unregisterActionScope(self, actionScope: QgsActionScope) -> None: ...
    def registerActionScope(self, actionScope: QgsActionScope) -> None: ...
    def actionScopes(self) -> typing.Set[QgsActionScope]: ...


class QgsAggregateCalculator(PyQt5.sip.wrapper):

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

    class AggregateInfo(PyQt5.sip.wrapper):

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

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

    class AggregateParameters(PyQt5.sip.wrapper):

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

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

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

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


class QgsAnimatedIcon(QtCore.QObject):

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

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


class QgsApplication(QtWidgets.QApplication):

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

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

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

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

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

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


class QgsArchive(PyQt5.sip.wrapper):

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

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


class QgsProjectArchive(QgsArchive):

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

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


class QgsAttributeTableConfig(PyQt5.sip.wrapper):

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

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

    class ColumnConfig(PyQt5.sip.wrapper):

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

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

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

    def __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: 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: QgsMapLayerType = ..., name: str = ..., source: str = ...) -> None: ...

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


class QgsExpressionContextGenerator(PyQt5.sip.wrapper):

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

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


class QgsExpressionContextScopeGenerator(PyQt5.sip.wrapper):

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

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


class QgsFeatureSink(PyQt5.sip.wrapper):

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

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

    class SinkFlags(PyQt5.sip.wrapper):

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

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

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

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

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

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


class QgsAbstractProfileSource(PyQt5.sip.wrapper):

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

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


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

    class LayerOptions(PyQt5.sip.wrapper):

        fallbackCrs = ... # type: 'QgsCoordinateReferenceSystem'
        fallbackWkbType = ... # type: 'QgsWkbTypes.Type'
        forceReadOnly = ... # type: bool
        loadDefaultStyle = ... # type: bool
        readExtentFromXml = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

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

    class DeleteContext(PyQt5.sip.wrapper):

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

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

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

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

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


class QgsAuxiliaryLayer(QgsVectorLayer):

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

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


class QgsAuxiliaryStorage(PyQt5.sip.wrapper):

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

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


class QgsBearingUtils(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsBookmark(PyQt5.sip.wrapper):

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

    def __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 setExtent(self, extent: 'QgsReferencedRectangle') -> None: ...
    def extent(self) -> 'QgsReferencedRectangle': ...
    def setGroup(self, group: str) -> None: ...
    def group(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...


class QgsBookmarkManager(QtCore.QObject):

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

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


class QgsBookmarkManagerModel(QtCore.QAbstractTableModel):

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

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

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

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


class QgsBookmarkManagerProxyModel(QtCore.QSortFilterProxyModel):

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


class QgsAbstractFeatureIterator(PyQt5.sip.wrapper):

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

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

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

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


class QgsCachedFeatureIterator(QgsAbstractFeatureIterator):

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

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


class QgsCachedFeatureWriterIterator(QgsAbstractFeatureIterator):

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

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


class QgsAbstractCacheIndex(PyQt5.sip.wrapper):

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

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


class QgsCacheIndexFeatureId(QgsAbstractCacheIndex):

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

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


class QgsCadUtils(PyQt5.sip.wrapper):

    class AlignMapPointConstraint(PyQt5.sip.wrapper):

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

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

    class AlignMapPointOutput(PyQt5.sip.wrapper):

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

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

    class AlignMapPointContext(PyQt5.sip.wrapper):

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

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

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

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

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


class QgsClipper(PyQt5.sip.wrapper):

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

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

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

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


class QgsCommandLineUtils(PyQt5.sip.wrapper):

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

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


class QgsColorRamp(PyQt5.sip.wrapper):

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

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


class QgsGradientStop(PyQt5.sip.wrapper):

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

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

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


class QgsLimitedRandomColorRamp(QgsColorRamp):

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

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


class QgsRandomColorRamp(QgsColorRamp):

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

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


class QgsColorScheme(PyQt5.sip.wrapper):

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

    class SchemeFlags(PyQt5.sip.wrapper):

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

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


class QgsPresetSchemeColorRamp(QgsColorRamp, QgsColorScheme):

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

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


class QgsColorBrewerColorRamp(QgsColorRamp):

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

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


class QgsCptCityColorRamp(QgsGradientColorRamp):

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

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


class QgsGplColorScheme(QgsColorScheme):

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

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


class QgsUserColorScheme(QgsGplColorScheme):

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

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


class QgsRecentColorScheme(QgsColorScheme):

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

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


class QgsCustomColorScheme(QgsColorScheme):

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

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


class QgsProjectColorScheme(QgsColorScheme):

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

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


class QgsColorSchemeRegistry(PyQt5.sip.wrapper):

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

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


class QgsColorUtils(PyQt5.sip.wrapper):

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

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


class QgsConditionalLayerStyles(QtCore.QObject):

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

    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: str) -> typing.List['QgsConditionalStyle']: ...
    def setFieldStyles(self, fieldName: str, styles: typing.Iterable['QgsConditionalStyle']) -> None: ...
    def setRowStyles(self, styles: typing.Iterable['QgsConditionalStyle']) -> None: ...
    def rowStyles(self) -> typing.List['QgsConditionalStyle']: ...


class QgsConditionalStyle(PyQt5.sip.wrapper):

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

    def __repr__(self) -> typing.Any: ...
    def __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) -> 'QgsSymbol': ...
    def icon(self) -> QtGui.QPixmap: ...
    def name(self) -> str: ...
    def displayText(self) -> str: ...
    def setSymbol(self, value: 'QgsSymbol') -> None: ...
    def setFont(self, value: QtGui.QFont) -> None: ...
    def setTextColor(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setBackgroundColor(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setRule(self, value: str) -> None: ...
    def setName(self, value: str) -> None: ...
    def renderPreview(self, size: QtCore.QSize = ...) -> QtGui.QPixmap: ...
    def matches(self, value: typing.Any, context: 'QgsExpressionContext') -> bool: ...


class QgsConnectionRegistry(QtCore.QObject):

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

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


class QgsCoordinateFormatter(PyQt5.sip.wrapper):

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

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

    class FormatFlags(PyQt5.sip.wrapper):

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

        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: 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: 'QgsTask', dependencies: typing.Iterable['QgsTask'] = ..., subTaskDependency: 'QgsTask.SubTaskDependency' = ...) -> None: ...
    def unhold(self) -> None: ...
    def hold(self) -> None: ...
    def cancel(self) -> None: ...
    def elapsedTime(self) -> int: ...
    def progress(self) -> float: ...
    def description(self) -> str: ...
    def status(self) -> 'QgsTask.TaskStatus': ...
    def isActive(self) -> bool: ...
    def canCancel(self) -> bool: ...
    def setDescription(self, description: str) -> None: ...
    def flags(self) -> 'QgsTask.Flags': ...


class QgsCopyFileTask(QgsTask):

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

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


class QgsCredentials(PyQt5.sip.wrapper):

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

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


class QgsCredentialsNone(QtCore.QObject, QgsCredentials):

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

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


class QgsCredentialsConsole(QtCore.QObject, QgsCredentials):

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

    def requestMasterPassword(self, password: str, stored: bool = ...) -> typing.Tuple[bool, str]: ...
    def request(self, realm: str, username: str, password: str, message: str = ...) -> typing.Tuple[bool, str, str]: ...
    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: str, type: 'QgsDartMeasurement.Type', value: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDartMeasurement') -> None: ...

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


class QgsDatabaseSchemaModel(QtCore.QAbstractItemModel):

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

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

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


class QgsDatabaseTableModel(QtCore.QAbstractItemModel):

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

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

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


class QgsDataDefinedSizeLegend(PyQt5.sip.wrapper):

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

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

    class SizeClass(PyQt5.sip.wrapper):

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

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

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

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


class QgsDataProviderTemporalCapabilities(PyQt5.sip.wrapper):

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

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


class QgsDataSourceUri(PyQt5.sip.wrapper):

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

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsDateTimeStatisticalSummary(PyQt5.sip.wrapper):

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

    class Statistics(PyQt5.sip.wrapper):

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

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

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

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


class QgsDatabaseFilterProxyModel(QtCore.QSortFilterProxyModel):

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

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


class QgsDatabaseQueryLogEntry(PyQt5.sip.wrapper):

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

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


class QgsDatabaseQueryLog(QtCore.QObject):

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

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


class QgsDefaultValue(PyQt5.sip.wrapper):

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

    def __ne__(self, other: object): ...
    def isValid(self) -> bool: ...
    def setApplyOnUpdate(self, applyOnUpdate: bool) -> None: ...
    def applyOnUpdate(self) -> bool: ...
    def setExpression(self, expression: str) -> None: ...
    def expression(self) -> str: ...
    def __repr__(self) -> typing.Any: ...
    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: 'QgsDiagramRenderer') -> None: ...
    def renderer(self) -> 'QgsDiagramRenderer': ...
    def setDistance(self, distance: float) -> None: ...
    def distance(self) -> float: ...
    def setIsObstacle(self, isObstacle: bool) -> None: ...
    def isObstacle(self) -> bool: ...
    def setZIndex(self, index: float) -> None: ...
    def zIndex(self) -> float: ...
    def setPriority(self, value: int) -> None: ...
    def priority(self) -> int: ...
    def setLinePlacementFlags(self, flags: typing.Union['QgsDiagramLayerSettings.LinePlacementFlags', 'QgsDiagramLayerSettings.LinePlacementFlag']) -> None: ...
    def linePlacementFlags(self) -> 'QgsDiagramLayerSettings.LinePlacementFlags': ...
    def setPlacement(self, value: 'QgsDiagramLayerSettings.Placement') -> None: ...
    def placement(self) -> 'QgsDiagramLayerSettings.Placement': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, 'QgsPropertyDefinition']: ...


class QgsDiagramSettings(PyQt5.sip.wrapper):

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

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

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

    backgroundColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    barWidth = ... # type: float
    categoryAttributes = ... # type: typing.Iterable[str]
    categoryColors = ... # type: typing.Iterable[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]]
    categoryLabels = ... # type: typing.Iterable[str]
    diagramOrientation = ... # type: 'QgsDiagramSettings.DiagramOrientation'
    enabled = ... # type: bool
    font = ... # type: QtGui.QFont
    labelPlacementMethod = ... # type: 'QgsDiagramSettings.LabelPlacementMethod'
    lineSizeScale = ... # type: 'QgsMapUnitScale'
    lineSizeUnit = ... # type: 'QgsUnitTypes.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: 'QgsUnitTypes.RenderUnit'

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

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


class QgsDiagramInterpolationSettings(PyQt5.sip.wrapper):

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

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


class QgsDiagramRenderer(PyQt5.sip.wrapper):

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

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


class QgsSingleCategoryDiagramRenderer(QgsDiagramRenderer):

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

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


class QgsLinearlyInterpolatedDiagramRenderer(QgsDiagramRenderer):

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

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


class QgsDistanceArea(PyQt5.sip.wrapper):

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

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


class QgsEditorWidgetSetup(PyQt5.sip.wrapper):

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

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


class QgsElevationMap(PyQt5.sip.wrapper):

    def __init__(self, size: QtCore.QSize) -> None: ...

    @staticmethod
    def decodeElevation(colorRaw: int) -> float: ...
    @staticmethod
    def encodeElevation(z: float) -> int: ...
    def painter(self) -> QtGui.QPainter: ...
    def rawElevationImage(self) -> QtGui.QImage: ...
    def applyEyeDomeLighting(self, img: QtGui.QImage, distance: int, strength: float, rendererScale: float) -> None: ...


class QgsElevationUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def calculateZRangeForProject(project: 'QgsProject') -> 'QgsDoubleRange': ...


class QgsErrorMessage(PyQt5.sip.wrapper):

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

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

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


class QgsError(PyQt5.sip.wrapper):

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

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


class QgsExpressionFunction(PyQt5.sip.wrapper):

    class Parameter(PyQt5.sip.wrapper):

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

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

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


class QgsScopedExpressionFunction(QgsExpressionFunction):

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

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


class QgsExpressionContextScope(PyQt5.sip.wrapper):

    class StaticVariable(PyQt5.sip.wrapper):

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

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

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

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


class QgsExpressionContext(PyQt5.sip.wrapper):

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

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

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


class QgsExpressionFieldBuffer(PyQt5.sip.wrapper):

    class ExpressionField(PyQt5.sip.wrapper):

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

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

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

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


class QgsFeature(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsFeaturePickerModelBase(QtCore.QAbstractItemModel):

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

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

    def setExtraIdentifierValueUnguarded(self, identifierValue: typing.Any) -> None: ...
    def requestToReloadCurrentFeature(self, request: 'QgsFeatureRequest') -> None: ...
    def setExtraIdentifierValue(self, extraIdentifierValue: typing.Any) -> None: ...
    def extraIdentifierValue(self) -> typing.Any: ...
    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: str) -> None: ...
    def filterExpression(self) -> str: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def setFilterValue(self, filterValue: str) -> None: ...
    def filterValue(self) -> str: ...
    def setDisplayExpression(self, displayExpression: str) -> None: ...
    def displayExpression(self) -> str: ...
    def setSourceLayer(self, sourceLayer: QgsVectorLayer) -> None: ...
    def sourceLayer(self) -> QgsVectorLayer: ...


class QgsFeaturePickerModel(QgsFeaturePickerModelBase):

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

    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[str]) -> None: ...
    def identifierFields(self) -> typing.List[str]: ...
    def identifierField(self) -> str: ...


class QgsFeatureFilterProvider(PyQt5.sip.wrapper):

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

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


class QgsFeatureIterator(PyQt5.sip.wrapper):

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

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


class QgsFeatureRequest(PyQt5.sip.wrapper):

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

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

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

    class Flags(PyQt5.sip.wrapper):

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

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

    class OrderByClause(PyQt5.sip.wrapper):

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

        def __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: QgsExpressionContext) -> bool: ...
        def expression(self) -> 'QgsExpression': ...

    class OrderBy(PyQt5.sip.wrapper):

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

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

    ALL_ATTRIBUTES = ... # type: str

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

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


class QgsAbstractFeatureSource(PyQt5.sip.wrapper):

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

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


class QgsFeatureStore(QgsFeatureSink):

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

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


class QgsFeedback(QtCore.QObject):

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

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

    def __repr__(self) -> typing.Any: ...
    def isReadOnly(self) -> bool: ...
    def setReadOnly(self, readOnly: bool) -> None: ...
    def editorWidgetSetup(self) -> QgsEditorWidgetSetup: ...
    def setEditorWidgetSetup(self, v: QgsEditorWidgetSetup) -> None: ...
    def convertCompatible(self, v: typing.Any) -> bool: ...
    def displayString(self, v: typing.Any) -> str: ...
    def setAlias(self, alias: str) -> None: ...
    def alias(self) -> str: ...
    def setConstraints(self, constraints: 'QgsFieldConstraints') -> None: ...
    def constraints(self) -> 'QgsFieldConstraints': ...
    def setDefaultValueDefinition(self, defaultValueDefinition: QgsDefaultValue) -> None: ...
    def defaultValueDefinition(self) -> QgsDefaultValue: ...
    def setComment(self, comment: str) -> None: ...
    def setPrecision(self, precision: int) -> None: ...
    def setLength(self, len: int) -> None: ...
    def setTypeName(self, typeName: str) -> None: ...
    def setSubType(self, subType: QtCore.QVariant.Type) -> None: ...
    def setType(self, type: QtCore.QVariant.Type) -> None: ...
    def setName(self, name: str) -> None: ...
    def isDateOrTime(self) -> bool: ...
    def isNumeric(self) -> bool: ...
    def comment(self) -> str: ...
    def precision(self) -> int: ...
    def length(self) -> int: ...
    def typeName(self) -> str: ...
    def subType(self) -> QtCore.QVariant.Type: ...
    def type(self) -> QtCore.QVariant.Type: ...
    def 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: str) -> None: ...
    def domainName(self) -> str: ...
    def setConstraintExpression(self, expression: str, description: str = ...) -> None: ...
    def constraintDescription(self) -> str: ...
    def constraintExpression(self) -> str: ...
    def removeConstraint(self, constraint: 'QgsFieldConstraints.Constraint') -> None: ...
    def setConstraint(self, constraint: 'QgsFieldConstraints.Constraint', origin: 'QgsFieldConstraints.ConstraintOrigin' = ...) -> None: ...
    def setConstraintStrength(self, constraint: 'QgsFieldConstraints.Constraint', strength: 'QgsFieldConstraints.ConstraintStrength') -> None: ...
    def constraintStrength(self, constraint: 'QgsFieldConstraints.Constraint') -> 'QgsFieldConstraints.ConstraintStrength': ...
    def constraintOrigin(self, constraint: 'QgsFieldConstraints.Constraint') -> 'QgsFieldConstraints.ConstraintOrigin': ...
    def constraints(self) -> 'QgsFieldConstraints.Constraints': ...


class QgsFieldFormatterContext(PyQt5.sip.wrapper):

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

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


class QgsFieldFormatter(PyQt5.sip.wrapper):

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

    class Flags(PyQt5.sip.wrapper):

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

        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: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def alignmentFlag(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> QtCore.Qt.AlignmentFlag: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsFieldFormatterRegistry(QtCore.QObject):

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

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


class QgsFieldModel(QtCore.QAbstractItemModel):

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

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

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


class QgsFieldProxyModel(QtCore.QSortFilterProxyModel):

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

    class Filters(PyQt5.sip.wrapper):

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

        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']) -> 'QgsFieldProxyModel': ...
    def sourceFieldModel(self) -> QgsFieldModel: ...


class QgsFields(PyQt5.sip.wrapper):

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

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

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


class QgsFileFilterGenerator(PyQt5.sip.wrapper):

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

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


class QgsFileUtils(PyQt5.sip.wrapper):

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

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


class QgsFontUtils(PyQt5.sip.wrapper):

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

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


class QgsGeometryOptions(QtCore.QObject):

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

    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: str, checkConfiguration: typing.Dict[str, typing.Any]) -> None: ...
    def checkConfiguration(self, checkId: str) -> typing.Dict[str, typing.Any]: ...
    def setGeometryChecks(self, geometryChecks: typing.Iterable[str]) -> None: ...
    def geometryChecks(self) -> typing.List[str]: ...
    def apply(self, geometry: 'QgsGeometry') -> None: ...
    def isActive(self) -> bool: ...
    def setGeometryPrecision(self, value: float) -> None: ...
    def geometryPrecision(self) -> float: ...
    def setRemoveDuplicateNodes(self, value: bool) -> None: ...
    def removeDuplicateNodes(self) -> bool: ...


class QgsAbstractGeometrySimplifier(PyQt5.sip.wrapper):

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

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


class QgsTopologyPreservingSimplifier(QgsAbstractGeometrySimplifier):

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

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


class QgsGeometryValidator(QtCore.QThread):

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

    def addError(self, a0: 'QgsGeometry.Error') -> None: ...
    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: str, geometryAttribute: 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, 'QgsWkbTypes.Type']: ...
    def getFeaturesUri(self, uri: str, extent: typing.Optional['QgsRectangle'] = ..., userName: str = ..., password: str = ..., authcfg: str = ...) -> typing.Tuple[int, 'QgsWkbTypes.Type']: ...


class QgsGmlFeatureClass(PyQt5.sip.wrapper):

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

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


class QgsGmlSchema(QtCore.QObject):

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

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


class QgsGroupLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

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

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

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


class QgsHistogram(PyQt5.sip.wrapper):

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

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


class QgsHstoreUtils(PyQt5.sip.simplewrapper):

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


class QgsHtmlUtils(PyQt5.sip.wrapper):

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

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


class QgsIconUtils(PyQt5.sip.wrapper):

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

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


class QgsIdentifyContext(PyQt5.sip.wrapper):

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

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


class QgsImageCache(QgsAbstractContentCacheBase):

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

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


class QgsInterval(PyQt5.sip.wrapper):

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

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

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


class QgsJsonExporter(PyQt5.sip.wrapper):

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

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


class QgsJsonUtils(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsLayerDefinition(PyQt5.sip.wrapper):

    class DependencySorter(PyQt5.sip.wrapper):

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

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

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

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


class QgsLayerNotesUtils(PyQt5.sip.wrapper):

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

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


class QgsLegendRenderer(PyQt5.sip.wrapper):

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

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


class QgsLegendSettings(PyQt5.sip.wrapper):

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

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


class QgsLegendStyle(PyQt5.sip.wrapper):

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

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

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

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


class QgsLocalDefaultSettings(PyQt5.sip.wrapper):

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

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


class QgsLocalizedDataPathRegistry(PyQt5.sip.wrapper):

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

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


class QgsLogger(PyQt5.sip.wrapper):

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

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


class QgsScopeLogger(PyQt5.sip.wrapper):

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


class QgsMapClippingRegion(PyQt5.sip.wrapper):

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

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

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


class QgsMapClippingUtils(PyQt5.sip.wrapper):

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

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


class QgsMapDecoration(PyQt5.sip.wrapper):

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

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


class QgsMapHitTest(PyQt5.sip.wrapper):

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

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


class QgsMapLayerDependency(PyQt5.sip.wrapper):

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

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

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

    def __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):

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

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

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

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


class QgsMapLayerLegend(QtCore.QObject):

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

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


class QgsMapLayerLegendUtils(PyQt5.sip.wrapper):

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

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


class QgsDefaultVectorLayerLegend(QgsMapLayerLegend):

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

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


class QgsDefaultRasterLayerLegend(QgsMapLayerLegend):

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

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


class QgsDefaultMeshLayerLegend(QgsMapLayerLegend):

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

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


class QgsDefaultPointCloudLayerLegend(QgsMapLayerLegend):

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

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


class QgsMapLayerModel(QtCore.QAbstractItemModel):

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

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

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


class QgsMapLayerProxyModel(QtCore.QSortFilterProxyModel):

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

    class Filters(PyQt5.sip.wrapper):

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

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

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

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


class QgsMapLayerRenderer(PyQt5.sip.wrapper):

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

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


class QgsServerMetadataUrlProperties(PyQt5.sip.wrapper):

    class MetadataUrl(PyQt5.sip.wrapper):

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

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

        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) -> QgsMapLayer: ...
    def addMetadataUrl(self, metaUrl: 'QgsServerMetadataUrlProperties.MetadataUrl') -> None: ...
    def setMetadataUrls(self, metaUrls: typing.Iterable['QgsServerMetadataUrlProperties.MetadataUrl']) -> None: ...
    def metadataUrls(self) -> typing.List['QgsServerMetadataUrlProperties.MetadataUrl']: ...


class QgsServerWmsDimensionProperties(PyQt5.sip.wrapper):

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

    class WmsDimensionInfo(PyQt5.sip.wrapper):

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

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

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

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsMapLayerServerProperties(QgsServerMetadataUrlProperties, QgsServerWmsDimensionProperties):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

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


class QgsVectorLayerServerProperties(QgsMapLayerServerProperties):

    staticMetaObject = ... # type: QtCore.QMetaObject

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


class QgsMapLayerStore(QtCore.QObject):

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

    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: 'QgsMapLayerStore') -> None: ...
    def removeAllMapLayers(self) -> None: ...
    def takeMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    @typing.overload
    def removeMapLayer(self, id: str) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: QgsMapLayer) -> None: ...
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def removeMapLayersById(self, layerIds: typing.Iterable[str]) -> None: ...
    def addMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    def addMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> typing.List[QgsMapLayer]: ...
    def validMapLayers(self) -> typing.Any: ...
    def mapLayers(self) -> typing.Any: ...
    def mapLayersByName(self, name: str) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, id: str) -> QgsMapLayer: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def validCount(self) -> int: ...
    def count(self) -> int: ...


class QgsMapLayerStyle(PyQt5.sip.wrapper):

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

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


class QgsMapLayerStyleOverride(PyQt5.sip.wrapper):

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

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


class QgsMapLayerStyleManager(QtCore.QObject):

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

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


class QgsMapLayerElevationProperties(QtCore.QObject):

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

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

    class Flags(PyQt5.sip.wrapper):

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

        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: QtCore.QObject) -> None: ...

    def copyCommonProperties(self, other: 'QgsMapLayerElevationProperties') -> None: ...
    def readCommonProperties(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> None: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> None: ...
    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 calculateZRange(self, layer: QgsMapLayer) -> 'QgsDoubleRange': ...
    def flags(self) -> 'QgsMapLayerElevationProperties.Flags': ...
    def isVisibleInZRange(self, range: 'QgsDoubleRange') -> bool: ...
    def clone(self) -> 'QgsMapLayerElevationProperties': ...
    def htmlSummary(self) -> str: ...
    def setDefaultsFromLayer(self, layer: QgsMapLayer) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: 'QgsReadWriteContext') -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: 'QgsReadWriteContext') -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsTemporalProperty(QtCore.QObject):

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

    class Flags(PyQt5.sip.wrapper):

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

        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: QtCore.QObject, enabled: bool = ...) -> None: ...

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


class QgsMapLayerUtils(PyQt5.sip.wrapper):

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

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


class QgsLabelBlockingRegion(PyQt5.sip.wrapper):

    geometry = ... # type: 'QgsGeometry'

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


class QgsTemporalRangeObject(PyQt5.sip.wrapper):

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

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


class QgsMapSettings(QgsTemporalRangeObject):

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

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


class QgsMapSettingsUtils(PyQt5.sip.wrapper):

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

    class EffectsCheckFlags(PyQt5.sip.wrapper):

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

        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[str]
        currentStyle = ... # type: str
        expandedLayerNode = ... # type: bool
        expandedLegendItems = ... # type: typing.Iterable[str]
        isVisible = ... # type: bool
        usingCurrentStyle = ... # type: bool
        usingLegendItems = ... # type: bool

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

        def setLayer(self, layer: QgsMapLayer) -> None: ...
        def layer(self) -> QgsMapLayer: ...
        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[str]) -> None: ...
        def setExpandedGroupNodes(self, expandedGroupNodes: typing.Iterable[str]) -> None: ...
        def checkedGroupNodes(self) -> typing.Set[str]: ...
        def expandedGroupNodes(self) -> typing.Set[str]: ...
        def setHasExpandedStateInfo(self, hasInfo: bool) -> None: ...
        def hasExpandedStateInfo(self) -> bool: ...
        def addLayerRecord(self, record: 'QgsMapThemeCollection.MapThemeLayerRecord') -> None: ...
        def removeLayerRecord(self, layer: QgsMapLayer) -> None: ...
        def setLayerRecords(self, records: typing.Iterable['QgsMapThemeCollection.MapThemeLayerRecord']) -> None: ...
        def layerRecords(self) -> typing.List['QgsMapThemeCollection.MapThemeLayerRecord']: ...
        def __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: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def applyTheme(self, name: str, root: 'QgsLayerTreeGroup', model: 'QgsLayerTreeModel') -> None: ...
    @staticmethod
    def createThemeFromCurrentState(root: 'QgsLayerTreeGroup', model: 'QgsLayerTreeModel') -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, doc: QtXml.QDomDocument) -> None: ...
    def mapThemeStyleOverrides(self, name: str) -> typing.Dict[str, str]: ...
    def mapThemeVisibleLayers(self, name: str) -> typing.List[QgsMapLayer]: ...
    def mapThemeVisibleLayerIds(self, name: str) -> typing.List[str]: ...
    def mapThemeState(self, name: str) -> 'QgsMapThemeCollection.MapThemeRecord': ...
    def mapThemes(self) -> typing.List[str]: ...
    def clear(self) -> None: ...
    def renameMapTheme(self, name: str, newName: str) -> bool: ...
    def removeMapTheme(self, name: str) -> None: ...
    def update(self, name: str, state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def insert(self, name: str, state: 'QgsMapThemeCollection.MapThemeRecord') -> None: ...
    def hasMapTheme(self, name: str) -> bool: ...


class QgsMapToPixel(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, mapUnitsPerPixel: float, centerX: float, centerY: float, widthPixels: int, heightPixels: int, rotation: float) -> None: ...
    @typing.overload
    def __init__(self, mapUnitsPerPixel: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapToPixel') -> None: ...

    def __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: '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: 'QgsUnitTypes.DistanceUnit', dpi: float = ...) -> 'QgsMapToPixel': ...


class QgsMapToPixelSimplifier(QgsAbstractGeometrySimplifier):

    class SimplifyFlag(int):
        NoFlags = ... # type: QgsMapToPixelSimplifier.SimplifyFlag
        SimplifyGeometry = ... # type: QgsMapToPixelSimplifier.SimplifyFlag
        SimplifyEnvelope = ... # type: QgsMapToPixelSimplifier.SimplifyFlag

    class SimplifyAlgorithm(int):
        Distance = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        SnapToGrid = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        Visvalingam = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm
        SnappedToGridGlobal = ... # type: QgsMapToPixelSimplifier.SimplifyAlgorithm

    @typing.overload
    def __init__(self, simplifyFlags: int, tolerance: float, simplifyAlgorithm: 'QgsMapToPixelSimplifier.SimplifyAlgorithm' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapToPixelSimplifier') -> None: ...

    @typing.overload
    @staticmethod
    def isGeneralizableByMapBoundingBox(envelope: 'QgsRectangle', map2pixelTol: float) -> bool: ...
    @typing.overload
    def isGeneralizableByMapBoundingBox(self, envelope: 'QgsRectangle') -> bool: ...
    def setTolerance(self, value: float) -> None: ...
    @typing.overload
    def simplify(self, geometry: 'QgsGeometry') -> 'QgsGeometry': ...
    @typing.overload
    def simplify(self, geometry: 'QgsAbstractGeometry') -> 'QgsAbstractGeometry': ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: 'QgsMapToPixelSimplifier.SimplifyAlgorithm') -> None: ...
    def simplifyAlgorithm(self) -> 'QgsMapToPixelSimplifier.SimplifyAlgorithm': ...
    def setSimplifyFlags(self, simplifyFlags: int) -> None: ...
    def simplifyFlags(self) -> int: ...
    @staticmethod
    def equalSnapToGrid(x1: float, y1: float, x2: float, y2: float, gridOriginX: float, gridOriginY: float, gridInverseSizeXY: float) -> bool: ...
    @staticmethod
    def calculateLengthSquared2D(x1: float, y1: float, x2: float, y2: float) -> float: ...


class QgsMapUnitScale(PyQt5.sip.wrapper):

    maxScale = ... # type: float
    maxSizeMM = ... # type: float
    maxSizeMMEnabled = ... # type: bool
    minScale = ... # type: float
    minSizeMM = ... # type: float
    minSizeMMEnabled = ... # type: bool

    @typing.overload
    def __init__(self, minScale: float = ..., maxScale: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapUnitScale') -> None: ...

    def __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, m1: 'QgsMargins', m2: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __add__(self, lhs: 'QgsMargins', rhs: float) -> 'QgsMargins': ...
    @typing.overload
    def __add__(self, lhs: float, rhs: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __sub__(self, m1: 'QgsMargins', m2: 'QgsMargins') -> 'QgsMargins': ...
    @typing.overload
    def __sub__(self, lhs: 'QgsMargins', rhs: float) -> 'QgsMargins': ...
    @typing.overload
    def __mul__(self, margins: 'QgsMargins', factor: float) -> 'QgsMargins': ...
    @typing.overload
    def __mul__(self, factor: float, margins: 'QgsMargins') -> 'QgsMargins': ...
    def __truediv__(self, margins: 'QgsMargins', divisor: float) -> 'QgsMargins': ...
    def __pos__(self) -> 'QgsMargins': ...
    def __neg__(self) -> 'QgsMargins': ...
    @staticmethod
    def fromString(string: 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: str = ..., labelRuleId: str = ...) -> int: ...
    def insertLabelLayer(self, layerId: str, ruleId: str, maskedSymbolLayers: typing.Iterable['QgsSymbolLayerReference']) -> int: ...


class QgsMaskPaintDevice(QtGui.QPaintDevice):

    def __init__(self, usePathStroker: bool = ...) -> None: ...

    def maskPainterPath(self) -> QtGui.QPainterPath: ...
    def metric(self, metric: QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
    def paintEngine(self) -> QtGui.QPaintEngine: ...


class QgsMessageLog(QtCore.QObject):

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

    messageReceived: typing.ClassVar[QtCore.pyqtsignal]
    @staticmethod
    def logMessage(message: str, tag: str = ..., level: Qgis.MessageLevel = ..., notifyUser: bool = ...) -> None: ...


class QgsMessageLogNotifyBlocker(PyQt5.sip.wrapper):

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


class QgsMessageLogConsole(QtCore.QObject):

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

    def logMessage(self, message: str, tag: str, level: Qgis.MessageLevel) -> None: ...
    def formatLogMessage(self, message: str, tag: str, level: Qgis.MessageLevel = ...) -> str: ...


class QgsMessageOutput(PyQt5.sip.wrapper):

    class MessageType(int):
        MessageText = ... # type: QgsMessageOutput.MessageType
        MessageHtml = ... # type: QgsMessageOutput.MessageType

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

    @staticmethod
    def createMessageOutput() -> 'QgsMessageOutput': ...
    @typing.overload
    def showMessage(self, blocking: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def showMessage(title: str, message: str, msgType: 'QgsMessageOutput.MessageType') -> None: ...
    def setTitle(self, title: str) -> None: ...
    def appendMessage(self, message: str) -> None: ...
    def setMessage(self, message: str, msgType: 'QgsMessageOutput.MessageType') -> None: ...


class QgsMessageOutputConsole(QtCore.QObject, QgsMessageOutput):

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

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


class QgsMimeDataUtils(PyQt5.sip.wrapper):

    class Uri(PyQt5.sip.wrapper):

        filePath = ... # type: str
        layerId = ... # type: str
        layerType = ... # type: str
        name = ... # type: str
        pId = ... # type: str
        providerKey = ... # type: str
        supportedCrs = ... # type: typing.Iterable[str]
        supportedFormats = ... # type: typing.Iterable[str]
        uri = ... # type: str
        wkbType = ... # type: 'QgsWkbTypes.Type'

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

        def __repr__(self) -> typing.Any: ...
        def mapLayer(self) -> QgsMapLayer: ...
        def meshLayer(self, error: str) -> typing.Tuple['QgsMeshLayer', bool]: ...
        def rasterLayer(self, error: str) -> typing.Tuple['QgsRasterLayer', bool]: ...
        def vectorLayer(self, error: str) -> typing.Tuple[QgsVectorLayer, bool]: ...
        def data(self) -> str: ...
        def isValid(self) -> bool: ...

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

    @staticmethod
    def hasOriginatedFromCurrentAppInstance(uri: 'QgsMimeDataUtils.Uri') -> bool: ...
    @staticmethod
    def layerTreeNodesToUriList(nodes: typing.Iterable['QgsLayerTreeNode']) -> QtCore.QByteArray: ...
    @staticmethod
    def decodeUriList(data: QtCore.QMimeData) -> typing.List['QgsMimeDataUtils.Uri']: ...
    @staticmethod
    def isUriList(data: QtCore.QMimeData) -> bool: ...
    @staticmethod
    def encodeUriList(layers: typing.Iterable['QgsMimeDataUtils.Uri']) -> QtCore.QMimeData: ...


class QgsMultiRenderChecker(PyQt5.sip.wrapper):

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

    @staticmethod
    def drawBackground(image: QtGui.QImage) -> None: ...
    def controlImagePath(self) -> str: ...
    def report(self) -> str: ...
    def runTest(self, testName: str, mismatchCount: int = ...) -> bool: ...
    def setSizeTolerance(self, xTolerance: int, yTolerance: int) -> None: ...
    def setColorTolerance(self, colorTolerance: int) -> None: ...
    def setMapSettings(self, mapSettings: QgsMapSettings) -> None: ...
    def setExpectFail(self, expectFail: bool) -> None: ...
    def setRenderedImage(self, renderedImagePath: str) -> None: ...
    def setControlPathPrefix(self, prefix: str) -> None: ...
    def setControlName(self, name: str) -> None: ...


class QgsLayoutChecker(QgsMultiRenderChecker):

    @typing.overload
    def __init__(self, testName: str, layout: 'QgsLayout') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutChecker') -> None: ...

    def testLayout(self, report: str, page: int = ..., pixelDiff: int = ..., createReferenceImage: bool = ...) -> bool: ...
    def setSize(self, size: QtCore.QSize) -> None: ...


class QgsNullPaintDevice(QtGui.QPaintDevice):

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

    def setOutputDpi(self, dpi: int) -> None: ...
    def setOutputSize(self, size: QtCore.QSize) -> None: ...
    def metric(self, metric: QtGui.QPaintDevice.PaintDeviceMetric) -> int: ...
    def paintEngine(self) -> QtGui.QPaintEngine: ...


class QgsObjectCustomProperties(PyQt5.sip.wrapper):

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

    def writeXml(self, parentNode: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    def readXml(self, parentNode: QtXml.QDomNode, keyStartsWith: str = ...) -> None: ...
    def contains(self, key: str) -> bool: ...
    def remove(self, key: str) -> None: ...
    def value(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setValue(self, key: str, value: typing.Any) -> None: ...
    def keys(self) -> typing.List[str]: ...


class QgsOfflineEditing(QtCore.QObject):

    class ContainerType(int):
        SpatiaLite = ... # type: QgsOfflineEditing.ContainerType
        GPKG = ... # type: QgsOfflineEditing.ContainerType

    class ProgressMode(int):
        CopyFeatures = ... # type: QgsOfflineEditing.ProgressMode
        ProcessFeatures = ... # type: QgsOfflineEditing.ProgressMode
        AddFields = ... # type: QgsOfflineEditing.ProgressMode
        AddFeatures = ... # type: QgsOfflineEditing.ProgressMode
        RemoveFeatures = ... # type: QgsOfflineEditing.ProgressMode
        UpdateFeatures = ... # type: QgsOfflineEditing.ProgressMode
        UpdateGeometries = ... # type: QgsOfflineEditing.ProgressMode

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

    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: str, offlineDbFile: str, layerIds: typing.Iterable[str], onlySelected: bool = ..., containerType: 'QgsOfflineEditing.ContainerType' = ..., layerNameSuffix: str = ...) -> bool: ...


class QgsOgcUtils(PyQt5.sip.wrapper):

    class FilterVersion(int):
        FILTER_OGC_1_0 = ... # type: QgsOgcUtils.FilterVersion
        FILTER_OGC_1_1 = ... # type: QgsOgcUtils.FilterVersion
        FILTER_FES_2_0 = ... # type: QgsOgcUtils.FilterVersion

    class GMLVersion(int):
        GML_2_1_2 = ... # type: QgsOgcUtils.GMLVersion
        GML_3_1_0 = ... # type: QgsOgcUtils.GMLVersion
        GML_3_2_1 = ... # type: QgsOgcUtils.GMLVersion

    class Context(PyQt5.sip.wrapper):

        layer = ... # type: QgsMapLayer
        transformContext = ... # type: 'QgsCoordinateTransformContext'

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

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

    @staticmethod
    def elseFilterExpression(doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionToOgcExpression(exp: 'QgsExpression', doc: QtXml.QDomDocument, errorMessage: typing.Optional[str] = ..., requiresFilterElement: bool = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionToOgcExpression(exp: 'QgsExpression', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', filterVersion: 'QgsOgcUtils.FilterVersion', geometryName: str, srsName: str, honourAxisOrientation: bool, invertAxisOrientation: bool, errorMessage: typing.Optional[str] = ..., requiresFilterElement: bool = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def expressionToOgcFilter(exp: 'QgsExpression', doc: QtXml.QDomDocument, errorMessage: typing.Optional[str] = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsExpression': ...
    @typing.overload
    @staticmethod
    def expressionFromOgcFilter(element: QtXml.QDomElement, version: 'QgsOgcUtils.FilterVersion', layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsExpression': ...
    @staticmethod
    def colorFromOgcFill(fillElement: QtXml.QDomElement) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: 'QgsRectangle', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLEnvelope(env: 'QgsRectangle', doc: QtXml.QDomDocument, srsName: str, invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: 'QgsRectangle', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def rectangleToGMLBox(box: 'QgsRectangle', doc: QtXml.QDomDocument, srsName: str, invertAxisOrientation: bool, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, gmlVersion: 'QgsOgcUtils.GMLVersion', srsName: str, invertAxisOrientation: bool, gmlIdBase: str, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, format: str, precision: int = ...) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def geometryToGML(geometry: 'QgsGeometry', doc: QtXml.QDomDocument, precision: int = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def rectangleFromGMLEnvelope(envelopeNode: QtXml.QDomNode) -> 'QgsRectangle': ...
    @staticmethod
    def rectangleFromGMLBox(boxNode: QtXml.QDomNode) -> 'QgsRectangle': ...
    @typing.overload
    @staticmethod
    def geometryFromGML(xmlString: str, context: 'QgsOgcUtils.Context' = ...) -> 'QgsGeometry': ...
    @typing.overload
    @staticmethod
    def geometryFromGML(geometryNode: QtXml.QDomNode, context: 'QgsOgcUtils.Context' = ...) -> 'QgsGeometry': ...


class QgsOptionalQgsExpressionBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, data: 'QgsExpression') -> None: ...
    @typing.overload
    def __init__(self, data: 'QgsExpression', enabled: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsOptionalQgsExpressionBase') -> None: ...

    def __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):

    settingsServiceConnectionCredentialsGroup = ... # type: 'QgsSettingsEntryGroup'
    settingsServiceConnectionDetailsGroup = ... # type: 'QgsSettingsEntryGroup'

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

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


class QgsPaintEngineHack(QtGui.QPaintEngine):

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

    @staticmethod
    def fixEngineFlags(engine: QtGui.QPaintEngine) -> None: ...
    def fixFlags(self) -> None: ...


class QgsPainting(PyQt5.sip.wrapper):

    class BlendMode(int):
        BlendNormal = ... # type: QgsPainting.BlendMode
        BlendLighten = ... # type: QgsPainting.BlendMode
        BlendScreen = ... # type: QgsPainting.BlendMode
        BlendDodge = ... # type: QgsPainting.BlendMode
        BlendAddition = ... # type: QgsPainting.BlendMode
        BlendDarken = ... # type: QgsPainting.BlendMode
        BlendMultiply = ... # type: QgsPainting.BlendMode
        BlendBurn = ... # type: QgsPainting.BlendMode
        BlendOverlay = ... # type: QgsPainting.BlendMode
        BlendSoftLight = ... # type: QgsPainting.BlendMode
        BlendHardLight = ... # type: QgsPainting.BlendMode
        BlendDifference = ... # type: QgsPainting.BlendMode
        BlendSubtract = ... # type: QgsPainting.BlendMode
        BlendSource = ... # type: QgsPainting.BlendMode
        BlendDestinationOver = ... # type: QgsPainting.BlendMode
        BlendClear = ... # type: QgsPainting.BlendMode
        BlendDestination = ... # type: QgsPainting.BlendMode
        BlendSourceIn = ... # type: QgsPainting.BlendMode
        BlendDestinationIn = ... # type: QgsPainting.BlendMode
        BlendSourceOut = ... # type: QgsPainting.BlendMode
        BlendDestinationOut = ... # type: QgsPainting.BlendMode
        BlendSourceAtop = ... # type: QgsPainting.BlendMode
        BlendDestinationAtop = ... # type: QgsPainting.BlendMode
        BlendXor = ... # type: QgsPainting.BlendMode

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

    @staticmethod
    def getBlendModeEnum(blendMode: QtGui.QPainter.CompositionMode) -> 'QgsPainting.BlendMode': ...
    @staticmethod
    def getCompositionMode(blendMode: 'QgsPainting.BlendMode') -> QtGui.QPainter.CompositionMode: ...


class QgsPathResolver(PyQt5.sip.wrapper):

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

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


class QgsPluginLayer(QgsMapLayer):

    def __init__(self, layerType: str, layerName: str = ...) -> None: ...

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


class QgsPluginLayerType(PyQt5.sip.wrapper):

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

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


class QgsPluginLayerRegistry(PyQt5.sip.wrapper):

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

    def createLayer(self, typeName: str, uri: str = ...) -> QgsPluginLayer: ...
    def pluginLayerType(self, typeName: str) -> QgsPluginLayerType: ...
    def removePluginLayerType(self, typeName: str) -> bool: ...
    def addPluginLayerType(self, pluginLayerType: QgsPluginLayerType) -> bool: ...
    def pluginLayerTypes(self) -> typing.List[str]: ...


class QgsPointLocator(QtCore.QObject):

    class Type(int):
        Invalid = ... # type: QgsPointLocator.Type
        Vertex = ... # type: QgsPointLocator.Type
        Edge = ... # type: QgsPointLocator.Type
        Area = ... # type: QgsPointLocator.Type
        Centroid = ... # type: QgsPointLocator.Type
        MiddleOfSegment = ... # type: QgsPointLocator.Type
        LineEndpoint = ... # type: QgsPointLocator.Type
        All = ... # type: QgsPointLocator.Type

    class Types(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsPointLocator.Types', 'QgsPointLocator.Type']) -> None: ...

        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: 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) -> QgsVectorLayer: ...
        def vertexIndex(self) -> int: ...
        def point(self) -> 'QgsPointXY': ...
        def distance(self) -> float: ...
        def hasLineEndpoint(self) -> bool: ...
        def hasMiddleSegment(self) -> bool: ...
        def hasArea(self) -> bool: ...
        def hasCentroid(self) -> bool: ...
        def hasEdge(self) -> bool: ...
        def hasVertex(self) -> bool: ...
        def isValid(self) -> bool: ...
        def type(self) -> 'QgsPointLocator.Type': ...

    class MatchFilter(PyQt5.sip.wrapper):

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

        def acceptMatch(self, match: 'QgsPointLocator.Match') -> bool: ...

    def __init__(self, layer: QgsVectorLayer, destinationCrs: 'QgsCoordinateReferenceSystem' = ..., transformContext: 'QgsCoordinateTransformContext' = ..., extent: typing.Optional['QgsRectangle'] = ...) -> None: ...

    def destroyIndex(self) -> None: ...
    def rebuildIndex(self, maxFeaturesToIndex: int = ...) -> bool: ...
    initFinished: typing.ClassVar[QtCore.pyqtsignal]
    def waitForIndexingFinished(self) -> None: ...
    def isIndexing(self) -> bool: ...
    def cachedGeometryCount(self) -> int: ...
    def pointInPolygon(self, point: 'QgsPointXY', relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def verticesInRect(self, rect: 'QgsRectangle', filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def verticesInRect(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def edgesInRect(self, rect: 'QgsRectangle', filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    @typing.overload
    def edgesInRect(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> typing.List['QgsPointLocator.Match']: ...
    def nearestArea(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestEdge(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestLineEndpoints(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestMiddleOfSegment(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestCentroid(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def nearestVertex(self, point: 'QgsPointXY', tolerance: float, filter: typing.Optional['QgsPointLocator.MatchFilter'] = ..., relaxed: bool = ...) -> 'QgsPointLocator.Match': ...
    def hasIndex(self) -> bool: ...
    def init(self, maxFeaturesToIndex: int = ..., relaxed: bool = ...) -> bool: ...
    def setRenderContext(self, context: 'QgsRenderContext') -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def layer(self) -> QgsVectorLayer: ...


class QgsPointXY(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p: 'QgsPointXY') -> None: ...
    @typing.overload
    def __init__(self, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    @typing.overload
    def __init__(self, point: QtCore.QPoint) -> None: ...
    @typing.overload
    def __init__(self, point: 'QgsPoint') -> None: ...

    def __hash__(self) -> int: ...
    def __getitem__(self, a0: int) -> typing.Any: ...
    def __len__(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def __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 compare(self, other: 'QgsPointXY', epsilon: float = ...) -> bool: ...
    def isEmpty(self) -> bool: ...
    def project(self, distance: float, bearing: float) -> 'QgsPointXY': ...
    def azimuth(self, other: 'QgsPointXY') -> float: ...
    def sqrDistToSegment(self, x1: float, y1: float, x2: float, y2: float, epsilon: float = ...) -> typing.Tuple[float, 'QgsPointXY']: ...
    @typing.overload
    def distance(self, x: float, y: float) -> float: ...
    @typing.overload
    def distance(self, other: 'QgsPointXY') -> float: ...
    @typing.overload
    def sqrDist(self, x: float, y: float) -> float: ...
    @typing.overload
    def sqrDist(self, other: 'QgsPointXY') -> float: ...
    def asWkt(self) -> str: ...
    def toString(self, precision: int = ...) -> str: ...
    def toQPointF(self) -> QtCore.QPointF: ...
    def y(self) -> float: ...
    def x(self) -> float: ...
    def set(self, x: float, y: float) -> None: ...
    def setY(self, y: float) -> None: ...
    def setX(self, x: float) -> None: ...


class QgsPostgresStringUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def buildArray(list: typing.Iterable[typing.Any]) -> str: ...
    @staticmethod
    def parseArray(string: str) -> typing.List[typing.Any]: ...


class QgsPropertyDefinition(PyQt5.sip.wrapper):

    class DataType(int):
        DataTypeString = ... # type: QgsPropertyDefinition.DataType
        DataTypeNumeric = ... # type: QgsPropertyDefinition.DataType
        DataTypeBoolean = ... # type: QgsPropertyDefinition.DataType

    class StandardPropertyTemplate(int):
        Boolean = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Integer = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        IntegerPositive = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        IntegerPositiveGreaterZero = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Double = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        DoublePositive = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Double0To1 = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Rotation = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        String = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Opacity = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        RenderUnits = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        ColorWithAlpha = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        ColorNoAlpha = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        PenJoinStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        BlendMode = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Point = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Size = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Size2D = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        LineStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        StrokeWidth = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        FillStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        CapStyle = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        HorizontalAnchor = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        VerticalAnchor = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        SvgPath = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Offset = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        DateTime = ... # type: QgsPropertyDefinition.StandardPropertyTemplate
        Custom = ... # type: QgsPropertyDefinition.StandardPropertyTemplate

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, description: str, type: 'QgsPropertyDefinition.StandardPropertyTemplate', origin: str = ..., comment: str = ...) -> None: ...
    @typing.overload
    def __init__(self, name: str, dataType: 'QgsPropertyDefinition.DataType', description: str, helpText: str, origin: str = ..., comment: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPropertyDefinition') -> None: ...

    def supportsAssistant(self) -> bool: ...
    def standardTemplate(self) -> 'QgsPropertyDefinition.StandardPropertyTemplate': ...
    def dataType(self) -> 'QgsPropertyDefinition.DataType': ...
    def setDataType(self, type: 'QgsPropertyDefinition.DataType') -> None: ...
    def helpText(self) -> str: ...
    def setComment(self, comment: str) -> None: ...
    def comment(self) -> str: ...
    def description(self) -> str: ...
    def setOrigin(self, origin: str) -> None: ...
    def origin(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsProperty(PyQt5.sip.wrapper):

    class Type(int):
        InvalidProperty = ... # type: QgsProperty.Type
        StaticProperty = ... # type: QgsProperty.Type
        FieldBasedProperty = ... # type: QgsProperty.Type
        ExpressionBasedProperty = ... # type: QgsProperty.Type

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

    def __repr__(self) -> typing.Any: ...
    def convertToTransformer(self) -> bool: ...
    def transformer(self) -> 'QgsPropertyTransformer': ...
    def setTransformer(self, transformer: 'QgsPropertyTransformer') -> None: ...
    def loadVariant(self, property: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def valueAsBool(self, context: QgsExpressionContext, defaultValue: bool = ...) -> typing.Tuple[bool, bool]: ...
    def valueAsInt(self, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, bool]: ...
    def valueAsDouble(self, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, bool]: ...
    def valueAsColor(self, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    def valueAsString(self, context: QgsExpressionContext, defaultString: str = ...) -> typing.Tuple[str, bool]: ...
    def valueAsDateTime(self, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, bool]: ...
    def value(self, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Tuple[typing.Any, bool]: ...
    def isProjectColor(self) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def asExpression(self) -> str: ...
    def expressionString(self) -> str: ...
    def setExpressionString(self, expression: str) -> None: ...
    def field(self) -> str: ...
    def setField(self, field: str) -> None: ...
    def staticValue(self) -> typing.Any: ...
    def setStaticValue(self, value: typing.Any) -> None: ...
    def setActive(self, active: bool) -> None: ...
    def isStaticValueInContext(self, context: QgsExpressionContext) -> typing.Tuple[bool, typing.Any]: ...
    def isActive(self) -> bool: ...
    def propertyType(self) -> 'QgsProperty.Type': ...
    def __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: str, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def fromExpression(expression: str, isActive: bool = ...) -> 'QgsProperty': ...
    @staticmethod
    def variantMapToPropertyMap(variantMap: typing.Dict[str, typing.Any]) -> typing.Dict[str, 'QgsProperty']: ...
    @staticmethod
    def propertyMapToVariantMap(propertyMap: typing.Dict[str, 'QgsProperty']) -> typing.Dict[str, typing.Any]: ...


class QgsAbstractPropertyCollection(PyQt5.sip.wrapper):

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

    def loadVariant(self, configuration: typing.Any, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def toVariant(self, definitions: typing.Dict[int, QgsPropertyDefinition]) -> typing.Any: ...
    def readXml(self, collectionElem: QtXml.QDomElement, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def writeXml(self, collectionElem: QtXml.QDomElement, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def hasDynamicProperties(self) -> bool: ...
    def hasActiveProperties(self) -> bool: ...
    def isActive(self, key: int) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def valueAsBool(self, key: int, context: QgsExpressionContext, defaultValue: bool = ...) -> typing.Tuple[bool, bool]: ...
    def valueAsInt(self, key: int, context: QgsExpressionContext, defaultValue: int = ...) -> typing.Tuple[int, bool]: ...
    def valueAsDouble(self, key: int, context: QgsExpressionContext, defaultValue: float = ...) -> typing.Tuple[float, bool]: ...
    def valueAsColor(self, key: int, context: QgsExpressionContext, defaultColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    def valueAsString(self, key: int, context: QgsExpressionContext, defaultString: str = ...) -> typing.Tuple[str, bool]: ...
    def valueAsDateTime(self, key: int, context: QgsExpressionContext, defaultDateTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> typing.Tuple[QtCore.QDateTime, bool]: ...
    def value(self, key: int, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Any: ...
    def property(self, key: int) -> QgsProperty: ...
    def hasProperty(self, key: int) -> bool: ...
    def clear(self) -> None: ...
    def propertyKeys(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsPropertyCollection(QgsAbstractPropertyCollection):

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

    @typing.overload
    def setProperty(self, key: int, property: QgsProperty) -> None: ...
    @typing.overload
    def setProperty(self, key: int, value: typing.Any) -> None: ...
    def loadVariant(self, configuration: typing.Any, definitions: typing.Dict[int, QgsPropertyDefinition]) -> bool: ...
    def toVariant(self, definitions: typing.Dict[int, QgsPropertyDefinition]) -> typing.Any: ...
    def hasDynamicProperties(self) -> bool: ...
    def hasActiveProperties(self) -> bool: ...
    def isActive(self, key: int) -> bool: ...
    def referencedFields(self, context: QgsExpressionContext = ..., ignoreContext: bool = ...) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext = ...) -> bool: ...
    def value(self, key: int, context: QgsExpressionContext, defaultValue: typing.Any = ...) -> typing.Any: ...
    def property(self, key: int) -> QgsProperty: ...
    def hasProperty(self, key: int) -> bool: ...
    def clear(self) -> None: ...
    def propertyKeys(self) -> typing.Any: ...
    def count(self) -> int: ...
    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: str) -> QgsPropertyCollection: ...
    def at(self, index: int) -> QgsPropertyCollection: ...
    def appendCollection(self, collection: QgsPropertyCollection) -> None: ...
    def clear(self) -> None: ...
    def count(self) -> int: ...


class QgsCurveTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, controlPoints: typing.Iterable[QgsPointXY]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsCurveTransform') -> None: ...

    def loadVariant(self, transformer: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def writeXml(self, transformElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    @typing.overload
    def y(self, x: float) -> float: ...
    @typing.overload
    def y(self, x: typing.Iterable[float]) -> typing.List[float]: ...
    def removeControlPoint(self, x: float, y: float) -> None: ...
    def addControlPoint(self, x: float, y: float) -> None: ...
    def setControlPoints(self, points: typing.Iterable[QgsPointXY]) -> None: ...
    def controlPoints(self) -> typing.List[QgsPointXY]: ...


class QgsPropertyTransformer(PyQt5.sip.wrapper):

    class Type(int):
        GenericNumericTransformer = ... # type: QgsPropertyTransformer.Type
        SizeScaleTransformer = ... # type: QgsPropertyTransformer.Type
        ColorRampTransformer = ... # type: QgsPropertyTransformer.Type

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsPropertyTransformer') -> None: ...

    def transformNumeric(self, input: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsPropertyTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def setCurveTransform(self, transform: QgsCurveTransform) -> None: ...
    def curveTransform(self) -> QgsCurveTransform: ...
    def setMaxValue(self, max: float) -> None: ...
    def maxValue(self) -> float: ...
    def setMinValue(self, min: float) -> None: ...
    def minValue(self) -> float: ...
    def toVariant(self) -> typing.Any: ...
    def loadVariant(self, transformer: typing.Any) -> bool: ...
    def clone(self) -> 'QgsPropertyTransformer': ...
    def transformerType(self) -> 'QgsPropertyTransformer.Type': ...
    @staticmethod
    def create(type: 'QgsPropertyTransformer.Type') -> 'QgsPropertyTransformer': ...


class QgsGenericNumericTransformer(QgsPropertyTransformer):

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ..., minOutput: float = ..., maxOutput: float = ..., nullOutput: float = ..., exponent: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGenericNumericTransformer') -> None: ...

    def setExponent(self, exponent: float) -> None: ...
    def exponent(self) -> float: ...
    def setNullOutputValue(self, size: float) -> None: ...
    def nullOutputValue(self) -> float: ...
    def setMaxOutputValue(self, size: float) -> None: ...
    def maxOutputValue(self) -> float: ...
    def setMinOutputValue(self, size: float) -> None: ...
    def minOutputValue(self) -> float: ...
    def value(self, input: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsGenericNumericTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsGenericNumericTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsSizeScaleTransformer(QgsPropertyTransformer):

    class ScaleType(int):
        Linear = ... # type: QgsSizeScaleTransformer.ScaleType
        Area = ... # type: QgsSizeScaleTransformer.ScaleType
        Flannery = ... # type: QgsSizeScaleTransformer.ScaleType
        Exponential = ... # type: QgsSizeScaleTransformer.ScaleType

    @typing.overload
    def __init__(self, type: 'QgsSizeScaleTransformer.ScaleType' = ..., minValue: float = ..., maxValue: float = ..., minSize: float = ..., maxSize: float = ..., nullSize: float = ..., exponent: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSizeScaleTransformer') -> None: ...

    def setType(self, type: 'QgsSizeScaleTransformer.ScaleType') -> None: ...
    def type(self) -> 'QgsSizeScaleTransformer.ScaleType': ...
    def setExponent(self, exponent: float) -> None: ...
    def exponent(self) -> float: ...
    def setNullSize(self, size: float) -> None: ...
    def nullSize(self) -> float: ...
    def setMaxSize(self, size: float) -> None: ...
    def maxSize(self) -> float: ...
    def setMinSize(self, size: float) -> None: ...
    def minSize(self) -> float: ...
    def size(self, value: float) -> float: ...
    @staticmethod
    def fromExpression(expression: str) -> typing.Tuple['QgsSizeScaleTransformer', str, str]: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsSizeScaleTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsColorRampTransformer(QgsPropertyTransformer):

    @typing.overload
    def __init__(self, minValue: float = ..., maxValue: float = ..., ramp: typing.Optional[QgsColorRamp] = ..., nullColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampTransformer') -> None: ...

    def setRampName(self, name: str) -> None: ...
    def rampName(self) -> str: ...
    def setNullColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def nullColor(self) -> QtGui.QColor: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def color(self, value: float) -> QtGui.QColor: ...
    def toExpression(self, baseExpression: str) -> str: ...
    def transform(self, context: QgsExpressionContext, value: typing.Any) -> typing.Any: ...
    def loadVariant(self, definition: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsColorRampTransformer': ...
    def transformerType(self) -> QgsPropertyTransformer.Type: ...


class QgsProviderConnectionModel(QtCore.QAbstractItemModel):

    class Role(int):
        RoleConnectionName = ... # type: QgsProviderConnectionModel.Role
        RoleUri = ... # type: QgsProviderConnectionModel.Role
        RoleConfiguration = ... # type: QgsProviderConnectionModel.Role
        RoleEmpty = ... # type: QgsProviderConnectionModel.Role

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

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


class QgsProxyFeatureSink(QgsFeatureSink):

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

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


class QgsProxyProgressTask(QgsTask):

    def __init__(self, description: str, canCancel: bool = ...) -> None: ...

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

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

    def setProgress(self, progress: float) -> None: ...


class QgsPythonRunner(PyQt5.sip.wrapper):

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

    def evalCommand(self, command: str, result: str) -> bool: ...
    def runCommand(self, command: str, messageOnError: str = ...) -> bool: ...
    @staticmethod
    def setInstance(runner: 'QgsPythonRunner') -> None: ...
    @staticmethod
    def eval(command: str) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def run(command: str, messageOnError: str = ...) -> bool: ...
    @staticmethod
    def isValid() -> bool: ...


class QgsQueryResultModel(QtCore.QAbstractTableModel):

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

    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, 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 includeUpper(self) -> bool: ...
    def includeLower(self) -> bool: ...
    def upper(self) -> float: ...
    def lower(self) -> float: ...


class QgsDoubleRange(QgsRangedoubleBase):

    @typing.overload
    def __init__(self, lower: float, upper: float, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDoubleRange') -> None: ...

    def __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, 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 includeUpper(self) -> bool: ...
    def includeLower(self) -> bool: ...
    def upper(self) -> int: ...
    def lower(self) -> int: ...


class QgsIntRange(QgsRangeintBase):

    @typing.overload
    def __init__(self, lower: int, upper: int, includeLower: bool = ..., includeUpper: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsIntRange') -> None: ...

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


class QgsDateRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, begin: typing.Union[QtCore.QDate, datetime.date], end: typing.Union[QtCore.QDate, datetime.date], includeBeginning: bool = ..., includeEnd: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDateRange') -> None: ...

    def __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: str = ..., level: Qgis.MessageLevel = ..., categories: typing.Iterable[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: 'QgsProjectTranslator') -> None: ...
    def projectTranslator(self) -> 'QgsProjectTranslator': ...
    def takeMessages(self) -> typing.List['QgsReadWriteContext.ReadWriteMessage']: ...
    def _enterCategory(self, category: str, details: str = ...) -> 'QgsReadWriteContextCategoryPopper': ...
    def pushMessage(self, message: str, level: Qgis.MessageLevel = ...) -> None: ...
    def setPathResolver(self, resolver: QgsPathResolver) -> None: ...
    def pathResolver(self) -> QgsPathResolver: ...


class QgsReadWriteContextCategoryPopper(PyQt5.sip.wrapper):

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


class QgsReadWriteLocker(PyQt5.sip.wrapper):

    class Mode(int):
        Read = ... # type: QgsReadWriteLocker.Mode
        Write = ... # type: QgsReadWriteLocker.Mode
        Unlocked = ... # type: QgsReadWriteLocker.Mode

    @typing.overload
    def __init__(self, lock: QtCore.QReadWriteLock, mode: 'QgsReadWriteLocker.Mode') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReadWriteLocker') -> None: ...

    def unlock(self) -> None: ...
    def changeMode(self, mode: 'QgsReadWriteLocker.Mode') -> None: ...


class QgsRecentStyleHandler(PyQt5.sip.wrapper):

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

    def recentSymbol(self, identifier: str) -> 'QgsSymbol': ...
    def pushRecentSymbol(self, identifier: str, symbol: 'QgsSymbol') -> None: ...


class QgsRelation(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def strengthToDisplayString(strength: Qgis.RelationshipStrength) -> str: ...
    @staticmethod
    def cardinalityToDisplayString(cardinality: Qgis.RelationshipCardinality) -> str: ...
    def type(self) -> Qgis.RelationshipType: ...
    def polymorphicRelation(self) -> 'QgsPolymorphicRelation': ...
    def polymorphicRelationId(self) -> str: ...
    def setPolymorphicRelationId(self, polymorphicRelationId: str) -> None: ...
    def updateRelationStatus(self) -> None: ...
    def resolveReferencingField(self, referencedField: str) -> str: ...
    def resolveReferencedField(self, referencingField: str) -> str: ...
    def hasEqualDefinition(self, other: 'QgsRelation') -> bool: ...
    def validationError(self) -> str: ...
    def isValid(self) -> bool: ...
    def referencingFields(self) -> typing.List[int]: ...
    def referencedFields(self) -> typing.List[int]: ...
    def fieldPairs(self) -> typing.Dict[str, str]: ...
    def referencedLayer(self) -> QgsVectorLayer: ...
    def referencedLayerId(self) -> str: ...
    def referencingLayer(self) -> QgsVectorLayer: ...
    def referencingLayerId(self) -> str: ...
    def generateId(self) -> None: ...
    def id(self) -> str: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def name(self) -> str: ...
    def getReferencedFeature(self, feature: QgsFeature) -> QgsFeature: ...
    @typing.overload
    def getReferencedFeatureRequest(self, attributes: typing.Any) -> QgsFeatureRequest: ...
    @typing.overload
    def getReferencedFeatureRequest(self, feature: QgsFeature) -> QgsFeatureRequest: ...
    def getRelatedFeaturesFilter(self, feature: QgsFeature) -> str: ...
    def getRelatedFeaturesRequest(self, feature: QgsFeature) -> QgsFeatureRequest: ...
    def getRelatedFeatures(self, feature: QgsFeature) -> QgsFeatureIterator: ...
    def addFieldPair(self, referencingField: str, referencedField: str) -> None: ...
    def setReferencedLayer(self, id: str) -> None: ...
    def setReferencingLayer(self, id: str) -> None: ...
    def setStrength(self, strength: Qgis.RelationshipStrength) -> None: ...
    def setName(self, name: str) -> None: ...
    def setId(self, id: str) -> None: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def createFromXml(node: QtXml.QDomNode, context: QgsReadWriteContext, relationContext: 'QgsRelationContext' = ...) -> 'QgsRelation': ...


class QgsPolymorphicRelation(PyQt5.sip.wrapper):

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def setRelationStrength(self, relationStrength: Qgis.RelationshipStrength) -> None: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def layerRepresentation(self, layer: QgsVectorLayer) -> str: ...
    def generateRelations(self) -> typing.List[QgsRelation]: ...
    def referencedLayerIds(self) -> typing.List[str]: ...
    def setReferencedLayerIds(self, childRelationIds: typing.Iterable[str]) -> None: ...
    def referencedLayerExpression(self) -> str: ...
    def setReferencedLayerExpression(self, expression: str) -> None: ...
    def referencedLayerField(self) -> str: ...
    def setReferencedLayerField(self, referencedLayerField: str) -> None: ...
    def updateRelationStatus(self) -> None: ...
    def hasEqualDefinition(self, other: 'QgsPolymorphicRelation') -> bool: ...
    def isValid(self) -> bool: ...
    def referencingFields(self) -> typing.List[int]: ...
    def referencedFields(self, layerId: str) -> typing.List[int]: ...
    def fieldPairs(self) -> typing.Dict[str, str]: ...
    def referencingLayer(self) -> QgsVectorLayer: ...
    def referencingLayerId(self) -> str: ...
    def generateId(self) -> None: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def addFieldPair(self, referencingField: str, referencedField: str) -> None: ...
    def setReferencingLayer(self, id: str) -> None: ...
    def setName(self, name: str) -> None: ...
    def setId(self, id: str) -> None: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def createFromXml(node: QtXml.QDomNode, context: QgsReadWriteContext, relationContext: 'QgsRelationContext' = ...) -> 'QgsPolymorphicRelation': ...


class QgsRelationContext(PyQt5.sip.wrapper):

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

    def project(self) -> 'QgsProject': ...


class QgsRemappingSinkDefinition(PyQt5.sip.wrapper):

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

    def __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: 'QgsWkbTypes.Type') -> None: ...
    def destinationWkbType(self) -> 'QgsWkbTypes.Type': ...
    def setDestinationCrs(self, destination: 'QgsCoordinateReferenceSystem') -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setSourceCrs(self, source: 'QgsCoordinateReferenceSystem') -> None: ...
    def sourceCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def addMappedField(self, destinationField: str, property: QgsProperty) -> None: ...
    def setFieldMap(self, map: typing.Dict[str, QgsProperty]) -> None: ...
    def fieldMap(self) -> typing.Dict[str, QgsProperty]: ...


class QgsRemappingProxyFeatureSink(QgsFeatureSink):

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

    def destinationSink(self) -> QgsFeatureSink: ...
    def lastError(self) -> str: ...
    @typing.overload
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeatures(self, iterator: QgsFeatureIterator, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def remapFeature(self, feature: QgsFeature) -> typing.List[QgsFeature]: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...


class QgsWeakRelation(PyQt5.sip.wrapper):

    class WeakRelationType(int):
        Referencing = ... # type: QgsWeakRelation.WeakRelationType
        Referenced = ... # type: QgsWeakRelation.WeakRelationType

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

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def writeXml(layer: QgsVectorLayer, type: 'QgsWeakRelation.WeakRelationType', relation: QgsRelation, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def readXml(layer: QgsVectorLayer, type: 'QgsWeakRelation.WeakRelationType', node: QtXml.QDomNode, resolver: QgsPathResolver) -> 'QgsWeakRelation': ...
    def setRelatedTableType(self, type: str) -> None: ...
    def relatedTableType(self) -> str: ...
    def setBackwardPathLabel(self, label: str) -> None: ...
    def setForwardPathLabel(self, label: str) -> None: ...
    def backwardPathLabel(self) -> str: ...
    def forwardPathLabel(self) -> str: ...
    def setCardinality(self, cardinality: Qgis.RelationshipCardinality) -> None: ...
    def cardinality(self) -> Qgis.RelationshipCardinality: ...
    def strength(self) -> Qgis.RelationshipStrength: ...
    def setMappingReferencedLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def mappingReferencedLayerFields(self) -> typing.List[str]: ...
    def setReferencedLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def referencedLayerFields(self) -> typing.List[str]: ...
    def setMappingReferencingLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def mappingReferencingLayerFields(self) -> typing.List[str]: ...
    def setReferencingLayerFields(self, fields: typing.Iterable[str]) -> None: ...
    def referencingLayerFields(self) -> typing.List[str]: ...
    def mappingTableName(self) -> str: ...
    def mappingTableProvider(self) -> str: ...
    def mappingTableSource(self) -> str: ...
    def referencedLayerName(self) -> str: ...
    def referencedLayerProvider(self) -> str: ...
    def referencedLayerSource(self) -> str: ...
    def referencingLayerName(self) -> str: ...
    def referencingLayerProvider(self) -> str: ...
    def referencingLayerSource(self) -> str: ...
    def name(self) -> str: ...
    def id(self) -> str: ...
    def resolvedRelations(self, project: 'QgsProject') -> typing.List[QgsRelation]: ...


class QgsRelationManager(QtCore.QObject):

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

    def updateRelationsStatus(self) -> None: ...
    changed: typing.ClassVar[QtCore.pyqtsignal]
    relationsLoaded: typing.ClassVar[QtCore.pyqtsignal]
    def setPolymorphicRelations(self, relations: typing.Iterable[QgsPolymorphicRelation]) -> None: ...
    def removePolymorphicRelation(self, polymorphicRelationId: str) -> None: ...
    def addPolymorphicRelation(self, polymorphicRelation: QgsPolymorphicRelation) -> None: ...
    def polymorphicRelation(self, polymorphicRelationId: str) -> QgsPolymorphicRelation: ...
    def polymorphicRelations(self) -> typing.Dict[str, QgsPolymorphicRelation]: ...
    @staticmethod
    def discoverRelations(existingRelations: typing.Iterable[QgsRelation], layers: typing.Iterable[QgsVectorLayer]) -> typing.List[QgsRelation]: ...
    def referencedRelations(self, layer: typing.Optional[QgsVectorLayer] = ...) -> typing.List[QgsRelation]: ...
    def referencingRelations(self, layer: typing.Optional[QgsVectorLayer] = ..., fieldIdx: int = ...) -> typing.List[QgsRelation]: ...
    def clear(self) -> None: ...
    def relationsByName(self, name: str) -> typing.List[QgsRelation]: ...
    def relation(self, id: str) -> QgsRelation: ...
    @typing.overload
    def removeRelation(self, id: str) -> None: ...
    @typing.overload
    def removeRelation(self, relation: QgsRelation) -> None: ...
    def addRelation(self, relation: QgsRelation) -> None: ...
    def relations(self) -> typing.Dict[str, QgsRelation]: ...
    def setRelations(self, relations: typing.Iterable[QgsRelation]) -> None: ...
    def context(self) -> QgsRelationContext: ...


class QgsRenderChecker(PyQt5.sip.wrapper):

    class Flag(int):
        AvoidExportingRenderedImage = ... # type: QgsRenderChecker.Flag

    class Flags(PyQt5.sip.wrapper):

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

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

    def dartMeasurements(self) -> typing.List[QgsDartMeasurement]: ...
    def enableDashBuffering(self, enable: bool) -> None: ...
    def expectedImageFile(self) -> str: ...
    @staticmethod
    def drawBackground(image: QtGui.QImage) -> None: ...
    def isKnownAnomaly(self, diffImageFile: str) -> bool: ...
    @typing.overload
    def compareImages(self, testName: str, mismatchCount: int = ..., renderedImageFile: str = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    @typing.overload
    def compareImages(self, testName: str, referenceImageFile: str, renderedImageFile: str, mismatchCount: int = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    def runTest(self, testName: str, mismatchCount: int = ..., flags: typing.Union['QgsRenderChecker.Flags', 'QgsRenderChecker.Flag'] = ...) -> bool: ...
    def setSizeTolerance(self, xTolerance: int, yTolerance: int) -> None: ...
    def setColorTolerance(self, colorTolerance: int) -> None: ...
    def setMapSettings(self, mapSettings: QgsMapSettings) -> None: ...
    def renderedImage(self) -> str: ...
    def setExpectFail(self, expectFail: bool) -> None: ...
    def setRenderedImage(self, imageFileName: str) -> None: ...
    def imageToHash(self, imageFile: str) -> str: ...
    def setControlPathSuffix(self, name: str) -> None: ...
    def setControlPathPrefix(self, name: str) -> None: ...
    def setControlExtension(self, extension: str) -> None: ...
    def setControlName(self, name: str) -> None: ...
    def setElapsedTimeTarget(self, target: int) -> None: ...
    def elapsedTime(self) -> int: ...
    def matchTarget(self) -> int: ...
    def mismatchCount(self) -> int: ...
    def matchPercent(self) -> float: ...
    def report(self, ignoreSuccess: bool = ...) -> str: ...
    def setControlImagePath(self, path: str) -> None: ...
    def controlImagePath(self) -> str: ...
    @staticmethod
    def shouldGenerateReport() -> bool: ...
    @staticmethod
    def testReportDir() -> QtCore.QDir: ...


class QgsRenderContext(QgsTemporalRangeObject):

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

    def 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 setTextureOrigin(self, origin: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def textureOrigin(self) -> QtCore.QPointF: ...
    def setFeatureClipGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def featureClipGeometry(self) -> 'QgsGeometry': ...
    def clippingRegions(self) -> typing.List[QgsMapClippingRegion]: ...
    def clearCustomRenderingFlag(self, flag: str) -> None: ...
    def setCustomRenderingFlag(self, flag: str, value: typing.Any) -> None: ...
    def customRenderingFlags(self) -> typing.Dict[str, typing.Any]: ...
    def isGuiPreview(self) -> bool: ...
    def setIsGuiPreview(self, preview: bool) -> None: ...
    def currentMaskId(self) -> int: ...
    def setCurrentMaskId(self, id: int) -> None: ...
    def maskIdProvider(self) -> QgsMaskIdProvider: ...
    def setMaskIdProvider(self, provider: QgsMaskIdProvider) -> None: ...
    def hasRenderedFeatureHandlers(self) -> bool: ...
    def renderedFeatureHandlers(self) -> typing.List['QgsRenderedFeatureHandlerInterface']: ...
    def setTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def textRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def convertMetersToMapUnits(self, meters: float) -> float: ...
    def convertFromMapUnits(self, sizeInMapUnits: float, outputUnit: 'QgsUnitTypes.RenderUnit') -> float: ...
    def convertToMapUnits(self, size: float, unit: 'QgsUnitTypes.RenderUnit', scale: QgsMapUnitScale = ...) -> float: ...
    def convertToPainterUnits(self, size: float, unit: 'QgsUnitTypes.RenderUnit', scale: QgsMapUnitScale = ..., property: Qgis.RenderSubcomponentProperty = ...) -> float: ...
    def segmentationToleranceType(self) -> 'QgsAbstractGeometry.SegmentationToleranceType': ...
    def setSegmentationToleranceType(self, type: 'QgsAbstractGeometry.SegmentationToleranceType') -> None: ...
    def segmentationTolerance(self) -> float: ...
    def setSegmentationTolerance(self, tolerance: float) -> None: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def setFeatureFilterProvider(self, ffp: QgsFeatureFilterProvider) -> None: ...
    def setGeometry(self, geometry: 'QgsAbstractGeometry') -> None: ...
    def geometry(self) -> 'QgsAbstractGeometry': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...
    def setVectorSimplifyMethod(self, simplifyMethod: 'QgsVectorSimplifyMethod') -> None: ...
    def vectorSimplifyMethod(self) -> 'QgsVectorSimplifyMethod': ...
    def setUseRenderingOptimization(self, enabled: bool) -> None: ...
    def useRenderingOptimization(self) -> bool: ...
    def setShowSelection(self, showSelection: bool) -> None: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setForceVectorOutput(self, force: bool) -> None: ...
    def setDisabledSymbolLayers(self, symbolLayers: typing.Iterable['QgsSymbolLayer']) -> None: ...
    def setMaskPainter(self, p: QtGui.QPainter, id: int = ...) -> None: ...
    def setPainter(self, p: QtGui.QPainter) -> None: ...
    def setSymbologyReferenceScale(self, scale: float) -> None: ...
    def setRendererScale(self, scale: float) -> None: ...
    def setDpiTarget(self, dpi: float) -> None: ...
    def setScaleFactor(self, factor: float) -> None: ...
    def setDistanceArea(self, distanceArea: QgsDistanceArea) -> None: ...
    def setRenderingStopped(self, stopped: bool) -> None: ...
    def setDrawEditingInformation(self, b: bool) -> None: ...
    def setMapExtent(self, extent: 'QgsRectangle') -> None: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def setMapToPixel(self, mtp: QgsMapToPixel) -> None: ...
    def setCoordinateTransform(self, t: 'QgsCoordinateTransform') -> None: ...
    def showSelection(self) -> bool: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def symbologyReferenceScale(self) -> float: ...
    def rendererScale(self) -> float: ...
    def drawEditingInformation(self) -> bool: ...
    def setUseAdvancedEffects(self, enabled: bool) -> None: ...
    def useAdvancedEffects(self) -> bool: ...
    def forceVectorOutput(self) -> bool: ...
    def feedback(self) -> QgsFeedback: ...
    def setFeedback(self, feedback: QgsFeedback) -> None: ...
    def renderingStopped(self) -> bool: ...
    def dpiTarget(self) -> float: ...
    def scaleFactor(self) -> float: ...
    def mapToPixel(self) -> QgsMapToPixel: ...
    def mapExtent(self) -> 'QgsRectangle': ...
    def extent(self) -> 'QgsRectangle': ...
    def setPathResolver(self, resolver: QgsPathResolver) -> None: ...
    def pathResolver(self) -> QgsPathResolver: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def distanceArea(self) -> QgsDistanceArea: ...
    def coordinateTransform(self) -> 'QgsCoordinateTransform': ...
    def isSymbolLayerEnabled(self, layer: 'QgsSymbolLayer') -> bool: ...
    def disabledSymbolLayers(self) -> typing.Set['QgsSymbolLayer']: ...
    def maskPainter(self, id: int = ...) -> QtGui.QPainter: ...
    def setPainterFlagsUsingContext(self, painter: typing.Optional[QtGui.QPainter] = ...) -> None: ...
    def painter(self) -> QtGui.QPainter: ...
    @staticmethod
    def fromQPainter(painter: QtGui.QPainter) -> 'QgsRenderContext': ...
    @staticmethod
    def fromMapSettings(mapSettings: QgsMapSettings) -> 'QgsRenderContext': ...
    def testFlag(self, flag: Qgis.RenderContextFlag) -> bool: ...
    def flags(self) -> Qgis.RenderContextFlags: ...
    def setFlag(self, flag: Qgis.RenderContextFlag, on: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.RenderContextFlags, Qgis.RenderContextFlag]) -> None: ...


class QgsRenderedFeatureHandlerInterface(PyQt5.sip.wrapper):

    class RenderedFeatureContext(PyQt5.sip.wrapper):

        renderContext = ... # type: QgsRenderContext

        @typing.overload
        def __init__(self, renderContext: QgsRenderContext) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRenderedFeatureHandlerInterface.RenderedFeatureContext') -> None: ...

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

    def usedAttributes(self, layer: QgsVectorLayer, context: QgsRenderContext) -> typing.Set[str]: ...
    def handleRenderedFeature(self, feature: QgsFeature, renderedBounds: 'QgsGeometry', context: 'QgsRenderedFeatureHandlerInterface.RenderedFeatureContext') -> None: ...


class QgsRenderedItemDetails(PyQt5.sip.wrapper):

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

    def setBoundingBox(self, bounds: 'QgsRectangle') -> None: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def layerId(self) -> str: ...


class QgsRunProcess(QtCore.QObject):

    def dialogGone(self) -> None: ...
    def processExit(self, a0: int, a1: QtCore.QProcess.ExitStatus) -> None: ...
    def processError(self, a0: QtCore.QProcess.ProcessError) -> None: ...
    def stderrAvailable(self) -> None: ...
    def stdoutAvailable(self) -> None: ...
    @staticmethod
    def splitCommand(command: str) -> typing.List[str]: ...
    @staticmethod
    def create(action: str, capture: bool) -> 'QgsRunProcess': ...


class QgsBlockingProcess(QtCore.QObject):

    def __init__(self, program: str, arguments: typing.Iterable[str]) -> None: ...

    def processError(self) -> QtCore.QProcess.ProcessError: ...
    def exitStatus(self) -> QtCore.QProcess.ExitStatus: ...
    def run(self, feedback: typing.Optional[QgsFeedback] = ...) -> int: ...
    def setStdErrHandler(self, a0: typing.Callable[..., None]) -> None: ...
    def setStdOutHandler(self, a0: typing.Callable[..., None]) -> None: ...


class QgsRuntimeProfiler(QtCore.QAbstractItemModel):

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

    def groupAdded(self, group: str) -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    @staticmethod
    def translateGroupName(group: str) -> str: ...
    def groupIsActive(self, group: str) -> bool: ...
    def groups(self) -> typing.Set[str]: ...
    def totalTime(self, group: str = ...) -> float: ...
    def clear(self, group: str = ...) -> None: ...
    def profileTime(self, name: str, group: str = ...) -> float: ...
    def end(self, group: str = ...) -> None: ...
    def start(self, name: str, group: str = ...) -> None: ...
    def childGroups(self, parent: str = ..., group: str = ...) -> typing.List[str]: ...
    def endGroup(self) -> None: ...
    def beginGroup(self, name: str) -> None: ...


class QgsScopedRuntimeProfile(PyQt5.sip.wrapper):

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

    def switchTask(self, name: str) -> None: ...


class QgsScaleCalculator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, dpi: float = ..., mapUnits: 'QgsUnitTypes.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) -> 'QgsUnitTypes.DistanceUnit': ...
    def setMapUnits(self, mapUnits: 'QgsUnitTypes.DistanceUnit') -> None: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...


class QgsScaleUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def loadScaleList(fileName: str, scales: typing.Iterable[str], errorMessage: str) -> bool: ...
    @staticmethod
    def saveScaleList(fileName: str, scales: typing.Iterable[str], errorMessage: str) -> bool: ...


class 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') -> QgsAbstractGeometrySimplifier: ...
    def forceLocalOptimization(self) -> bool: ...
    def setForceLocalOptimization(self, localOptimization: bool) -> None: ...
    def threshold(self) -> float: ...
    def setThreshold(self, threshold: float) -> None: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def methodType(self) -> 'QgsSimplifyMethod.MethodType': ...
    def setMethodType(self, methodType: 'QgsSimplifyMethod.MethodType') -> None: ...


class QgsSingleItemModel(QtCore.QAbstractItemModel):

    @typing.overload
    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., text: str = ..., data: typing.Dict[int, typing.Any] = ..., flags: typing.Union[QtCore.Qt.ItemFlags, QtCore.Qt.ItemFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: QtCore.QObject, columnData: typing.Any, flags: typing.Union[QtCore.Qt.ItemFlags, QtCore.Qt.ItemFlag] = ...) -> None: ...

    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class 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: 'QgsTolerance.UnitType') -> None: ...
        @typing.overload
        def __init__(self, enabled: bool, type: typing.Union[Qgis.SnappingTypes, Qgis.SnappingType], tolerance: float, units: 'QgsTolerance.UnitType', 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: 'QgsTolerance.UnitType') -> None: ...
        def units(self) -> 'QgsTolerance.UnitType': ...
        def setTolerance(self, tolerance: float) -> None: ...
        def tolerance(self) -> float: ...
        def setTypeFlag(self, type: typing.Union[Qgis.SnappingTypes, Qgis.SnappingType]) -> None: ...
        def setType(self, type: 'QgsSnappingConfig.SnappingType') -> None: ...
        def type(self) -> 'QgsSnappingConfig.SnappingType': ...
        def typeFlag(self) -> Qgis.SnappingTypes: ...
        def setEnabled(self, enabled: bool) -> None: ...
        def enabled(self) -> bool: ...
        def valid(self) -> bool: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def removeLayers(self, layers: typing.Iterable[QgsMapLayer]) -> bool: ...
    def addLayers(self, layers: typing.Iterable[QgsMapLayer]) -> bool: ...
    def writeProject(self, doc: QtXml.QDomDocument) -> None: ...
    def readProject(self, doc: QtXml.QDomDocument) -> None: ...
    def __ne__(self, other: object): ...
    def clearIndividualLayerSettings(self) -> None: ...
    def setIndividualLayerSettings(self, vl: QgsVectorLayer, individualLayerSettings: 'QgsSnappingConfig.IndividualLayerSettings') -> None: ...
    @typing.overload
    def individualLayerSettings(self) -> typing.Dict: ...
    @typing.overload
    def individualLayerSettings(self, vl: QgsVectorLayer) -> 'QgsSnappingConfig.IndividualLayerSettings': ...
    def setSelfSnapping(self, enabled: bool) -> None: ...
    def selfSnapping(self) -> bool: ...
    def setIntersectionSnapping(self, enabled: bool) -> None: ...
    def intersectionSnapping(self) -> bool: ...
    def setUnits(self, units: 'QgsTolerance.UnitType') -> None: ...
    def units(self) -> 'QgsTolerance.UnitType': ...
    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: 'QgsTolerance.UnitType'

        @typing.overload
        def __init__(self, l: QgsVectorLayer, t: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type], tol: float, u: 'QgsTolerance.UnitType') -> 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: QgsVectorLayer) -> None: ...
    def addExtraSnapLayer(self, vl: QgsVectorLayer) -> None: ...
    def setEnableSnappingForInvisibleFeature(self, enable: bool) -> None: ...
    def config(self) -> QgsSnappingConfig: ...
    def dump(self) -> str: ...
    def layers(self) -> typing.List['QgsSnappingUtils.LayerConfig']: ...
    def indexingStrategy(self) -> 'QgsSnappingUtils.IndexingStrategy': ...
    def setIndexingStrategy(self, strategy: 'QgsSnappingUtils.IndexingStrategy') -> None: ...
    def currentLayer(self) -> QgsVectorLayer: ...
    def setCurrentLayer(self, layer: QgsVectorLayer) -> None: ...
    def mapSettings(self) -> QgsMapSettings: ...
    def setMapSettings(self, settings: QgsMapSettings) -> None: ...
    def snapToCurrentLayer(self, point: QtCore.QPoint, type: typing.Union[QgsPointLocator.Types, QgsPointLocator.Type], filter: typing.Optional[QgsPointLocator.MatchFilter] = ...) -> QgsPointLocator.Match: ...
    @typing.overload
    def snapToMap(self, point: QtCore.QPoint, filter: typing.Optional[QgsPointLocator.MatchFilter] = ..., relaxed: bool = ...) -> QgsPointLocator.Match: ...
    @typing.overload
    def snapToMap(self, pointMap: QgsPointXY, filter: typing.Optional[QgsPointLocator.MatchFilter] = ..., relaxed: bool = ...) -> QgsPointLocator.Match: ...
    def locatorForLayer(self, vl: QgsVectorLayer) -> QgsPointLocator: ...


class QgsSpatialIndex(QgsFeatureSink):

    class Flag(int):
        FlagStoreFeatureGeometries = ... # type: QgsSpatialIndex.Flag

    class Flags(PyQt5.sip.wrapper):

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

        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.Any: ...
    @typing.overload
    def nearestNeighbor(self, geometry: 'QgsGeometry', neighbors: int = ..., maxDistance: float = ...) -> typing.Any: ...
    def intersects(self, rectangle: 'QgsRectangle') -> typing.Any: ...
    def deleteFeature(self, feature: QgsFeature) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    @typing.overload
    def addFeature(self, id: int, bounds: 'QgsRectangle') -> bool: ...
    @typing.overload
    def insertFeature(self, feature: QgsFeature) -> bool: ...
    @typing.overload
    def insertFeature(self, id: int, bounds: 'QgsRectangle') -> bool: ...


class QgsSpatialIndexKDBush(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, fi: QgsFeatureIterator, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsFeatureSource, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSpatialIndexKDBush') -> None: ...

    def size(self) -> int: ...
    def within(self, point: QgsPointXY, radius: float) -> typing.List['QgsSpatialIndexKDBushData']: ...
    def intersects(self, rectangle: 'QgsRectangle') -> typing.List['QgsSpatialIndexKDBushData']: ...


class QgsSpatialIndexKDBushData(PyQt5.sip.wrapper):

    id = ... # type: int

    @typing.overload
    def __init__(self, id: int, x: float, y: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSpatialIndexKDBushData') -> None: ...

    def point(self) -> QgsPointXY: ...


class QgsSourceCache(QgsAbstractContentCacheBase):

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

    remoteSourceFetched: typing.ClassVar[QtCore.pyqtsignal]
    def localFilePath(self, path: str, blocking: bool = ...) -> str: ...


class QgsSqliteUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def systemTables() -> typing.List[str]: ...
    @staticmethod
    def quotedValue(value: typing.Any) -> str: ...
    @staticmethod
    def quotedIdentifier(identifier: str) -> str: ...
    @staticmethod
    def quotedString(value: str) -> str: ...


class QgsSQLStatement(PyQt5.sip.wrapper):

    class NodeType(int):
        ntUnaryOperator = ... # type: QgsSQLStatement.NodeType
        ntBinaryOperator = ... # type: QgsSQLStatement.NodeType
        ntInOperator = ... # type: QgsSQLStatement.NodeType
        ntBetweenOperator = ... # type: QgsSQLStatement.NodeType
        ntFunction = ... # type: QgsSQLStatement.NodeType
        ntLiteral = ... # type: QgsSQLStatement.NodeType
        ntColumnRef = ... # type: QgsSQLStatement.NodeType
        ntSelectedColumn = ... # type: QgsSQLStatement.NodeType
        ntSelect = ... # type: QgsSQLStatement.NodeType
        ntTableDef = ... # type: QgsSQLStatement.NodeType
        ntJoin = ... # type: QgsSQLStatement.NodeType
        ntColumnSorted = ... # type: QgsSQLStatement.NodeType
        ntCast = ... # type: QgsSQLStatement.NodeType

    class JoinType(int):
        jtDefault = ... # type: QgsSQLStatement.JoinType
        jtLeft = ... # type: QgsSQLStatement.JoinType
        jtLeftOuter = ... # type: QgsSQLStatement.JoinType
        jtRight = ... # type: QgsSQLStatement.JoinType
        jtRightOuter = ... # type: QgsSQLStatement.JoinType
        jtCross = ... # type: QgsSQLStatement.JoinType
        jtInner = ... # type: QgsSQLStatement.JoinType
        jtFull = ... # type: QgsSQLStatement.JoinType

    class BinaryOperator(int):
        boOr = ... # type: QgsSQLStatement.BinaryOperator
        boAnd = ... # type: QgsSQLStatement.BinaryOperator
        boEQ = ... # type: QgsSQLStatement.BinaryOperator
        boNE = ... # type: QgsSQLStatement.BinaryOperator
        boLE = ... # type: QgsSQLStatement.BinaryOperator
        boGE = ... # type: QgsSQLStatement.BinaryOperator
        boLT = ... # type: QgsSQLStatement.BinaryOperator
        boGT = ... # type: QgsSQLStatement.BinaryOperator
        boLike = ... # type: QgsSQLStatement.BinaryOperator
        boNotLike = ... # type: QgsSQLStatement.BinaryOperator
        boILike = ... # type: QgsSQLStatement.BinaryOperator
        boNotILike = ... # type: QgsSQLStatement.BinaryOperator
        boIs = ... # type: QgsSQLStatement.BinaryOperator
        boIsNot = ... # type: QgsSQLStatement.BinaryOperator
        boPlus = ... # type: QgsSQLStatement.BinaryOperator
        boMinus = ... # type: QgsSQLStatement.BinaryOperator
        boMul = ... # type: QgsSQLStatement.BinaryOperator
        boDiv = ... # type: QgsSQLStatement.BinaryOperator
        boIntDiv = ... # type: QgsSQLStatement.BinaryOperator
        boMod = ... # type: QgsSQLStatement.BinaryOperator
        boPow = ... # type: QgsSQLStatement.BinaryOperator
        boConcat = ... # type: QgsSQLStatement.BinaryOperator

    class UnaryOperator(int):
        uoNot = ... # type: QgsSQLStatement.UnaryOperator
        uoMinus = ... # type: QgsSQLStatement.UnaryOperator

    class Node(PyQt5.sip.wrapper):

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

        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...

    class NodeList(PyQt5.sip.wrapper):

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

        def dump(self) -> str: ...
        def clone(self) -> 'QgsSQLStatement.NodeList': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def count(self) -> int: ...
        def list(self) -> typing.List['QgsSQLStatement.Node']: ...
        def append(self, node: 'QgsSQLStatement.Node') -> None: ...

    class NodeUnaryOperator('QgsSQLStatement.Node'):

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

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

    class NodeBinaryOperator('QgsSQLStatement.Node'):

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

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

    class NodeInOperator('QgsSQLStatement.Node'):

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

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

    class NodeBetweenOperator('QgsSQLStatement.Node'):

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

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

    class NodeFunction('QgsSQLStatement.Node'):

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

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def args(self) -> 'QgsSQLStatement.NodeList': ...
        def name(self) -> str: ...

    class NodeLiteral('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, value: typing.Any) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeLiteral') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def value(self) -> typing.Any: ...

    class NodeColumnRef('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, name: str, star: bool) -> None: ...
        @typing.overload
        def __init__(self, tableName: str, name: str, star: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeColumnRef') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeColumnRef': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def distinct(self) -> bool: ...
        def star(self) -> bool: ...
        def name(self) -> str: ...
        def tableName(self) -> str: ...
        def setDistinct(self, distinct: bool = ...) -> None: ...

    class NodeSelectedColumn('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, node: 'QgsSQLStatement.Node') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeSelectedColumn': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def alias(self) -> str: ...
        def column(self) -> 'QgsSQLStatement.Node': ...
        def setAlias(self, alias: str) -> None: ...

    class NodeCast('QgsSQLStatement.Node'):

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

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def type(self) -> str: ...
        def node(self) -> 'QgsSQLStatement.Node': ...

    class NodeTableDef('QgsSQLStatement.Node'):

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

        def cloneThis(self) -> 'QgsSQLStatement.NodeTableDef': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def alias(self) -> str: ...
        def schema(self) -> str: ...
        def name(self) -> str: ...

    class NodeJoin('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, tabledef: 'QgsSQLStatement.NodeTableDef', onExpr: 'QgsSQLStatement.Node', type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, tabledef: 'QgsSQLStatement.NodeTableDef', usingColumns: typing.Iterable[str], type: 'QgsSQLStatement.JoinType') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeJoin') -> None: ...

        def cloneThis(self) -> 'QgsSQLStatement.NodeJoin': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def type(self) -> 'QgsSQLStatement.JoinType': ...
        def usingColumns(self) -> typing.List[str]: ...
        def onExpr(self) -> 'QgsSQLStatement.Node': ...
        def tableDef(self) -> 'QgsSQLStatement.NodeTableDef': ...

    class NodeColumnSorted('QgsSQLStatement.Node'):

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

        def cloneThis(self) -> 'QgsSQLStatement.NodeColumnSorted': ...
        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def ascending(self) -> bool: ...
        def column(self) -> 'QgsSQLStatement.NodeColumnRef': ...

    class NodeSelect('QgsSQLStatement.Node'):

        @typing.overload
        def __init__(self, tableList: typing.Iterable['QgsSQLStatement.NodeTableDef'], columns: typing.Iterable['QgsSQLStatement.NodeSelectedColumn'], distinct: bool) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsSQLStatement.NodeSelect') -> None: ...

        def clone(self) -> 'QgsSQLStatement.Node': ...
        def accept(self, v: 'QgsSQLStatement.Visitor') -> None: ...
        def dump(self) -> str: ...
        def nodeType(self) -> 'QgsSQLStatement.NodeType': ...
        def orderBy(self) -> typing.List['QgsSQLStatement.NodeColumnSorted']: ...
        def where(self) -> 'QgsSQLStatement.Node': ...
        def joins(self) -> typing.List['QgsSQLStatement.NodeJoin']: ...
        def distinct(self) -> bool: ...
        def columns(self) -> typing.List['QgsSQLStatement.NodeSelectedColumn']: ...
        def tables(self) -> typing.List['QgsSQLStatement.NodeTableDef']: ...
        def setOrderBy(self, orderBy: typing.Iterable['QgsSQLStatement.NodeColumnSorted']) -> None: ...
        def setWhere(self, where: 'QgsSQLStatement.Node') -> None: ...
        def appendJoin(self, join: 'QgsSQLStatement.NodeJoin') -> None: ...
        def setJoins(self, joins: typing.Iterable['QgsSQLStatement.NodeJoin']) -> None: ...

    class Visitor(PyQt5.sip.wrapper):

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

        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeInOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeFunction') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeLiteral') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnRef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeTableDef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelect') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeJoin') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnSorted') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeCast') -> None: ...

    class RecursiveVisitor('QgsSQLStatement.Visitor'):

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

        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeUnaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBinaryOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeInOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeBetweenOperator') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeFunction') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeLiteral') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeColumnRef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelectedColumn') -> None: ...
        @typing.overload
        def visit(self, a0: 'QgsSQLStatement.NodeTableDef') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeSelect') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeJoin') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeColumnSorted') -> None: ...
        @typing.overload
        def visit(self, n: 'QgsSQLStatement.NodeCast') -> None: ...

    @typing.overload
    def __init__(self, statement: str) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSQLStatement') -> None: ...
    @typing.overload
    def __init__(self, statement: str, allowFragments: bool) -> None: ...

    def acceptVisitor(self, v: 'QgsSQLStatement.Visitor') -> None: ...
    @staticmethod
    def quotedString(text: str) -> str: ...
    @staticmethod
    def stripMsQuotedIdentifier(text: str) -> str: ...
    @staticmethod
    def stripQuotedIdentifier(text: str) -> str: ...
    @staticmethod
    def quotedIdentifierIfNeeded(name: str) -> str: ...
    @staticmethod
    def quotedIdentifier(name: str) -> str: ...
    def dump(self) -> str: ...
    def statement(self) -> str: ...
    def rootNode(self) -> 'QgsSQLStatement.Node': ...
    def doBasicValidationChecks(self) -> typing.Tuple[bool, str]: ...
    def parserErrorString(self) -> str: ...
    def hasParserError(self) -> bool: ...


class QgsSQLStatementFragment(QgsSQLStatement):

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


class QgsStatisticalSummary(PyQt5.sip.wrapper):

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

    class Statistics(PyQt5.sip.wrapper):

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

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

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

    @staticmethod
    def shortName(statistic: 'QgsStatisticalSummary.Statistic') -> str: ...
    @staticmethod
    def displayName(statistic: 'QgsStatisticalSummary.Statistic') -> str: ...
    def interQuartileRange(self) -> float: ...
    def thirdQuartile(self) -> float: ...
    def firstQuartile(self) -> float: ...
    def majority(self) -> float: ...
    def minority(self) -> float: ...
    def variety(self) -> int: ...
    def sampleStDev(self) -> float: ...
    def stDev(self) -> float: ...
    def last(self) -> float: ...
    def first(self) -> float: ...
    def range(self) -> float: ...
    def max(self) -> float: ...
    def min(self) -> float: ...
    def median(self) -> float: ...
    def mean(self) -> float: ...
    def sum(self) -> float: ...
    def countMissing(self) -> int: ...
    def count(self) -> int: ...
    def statistic(self, stat: 'QgsStatisticalSummary.Statistic') -> float: ...
    def finalize(self) -> None: ...
    def addVariant(self, value: typing.Any) -> None: ...
    def addValue(self, value: float) -> None: ...
    def calculate(self, values: typing.Iterable[float]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union['QgsStatisticalSummary.Statistics', 'QgsStatisticalSummary.Statistic']) -> None: ...
    def statistics(self) -> 'QgsStatisticalSummary.Statistics': ...


class QgsStoredExpression(PyQt5.sip.wrapper):

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

    expression = ... # type: str
    id = ... # type: str
    name = ... # type: str
    tag = ... # type: 'QgsStoredExpression.Category'

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


class QgsStoredExpressionManager(QtCore.QObject):

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

    def readXml(self, layerNode: QtXml.QDomNode) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode) -> bool: ...
    def clearStoredExpressions(self) -> None: ...
    def findStoredExpressionByExpression(self, expression: str, tag: QgsStoredExpression.Category = ...) -> QgsStoredExpression: ...
    def storedExpression(self, id: str) -> QgsStoredExpression: ...
    def storedExpressions(self, tag: QgsStoredExpression.Category = ...) -> typing.List[QgsStoredExpression]: ...
    def addStoredExpressions(self, storedExpressions: typing.Iterable[QgsStoredExpression]) -> None: ...
    def updateStoredExpression(self, id: str, name: str, expression: str, tag: QgsStoredExpression.Category) -> None: ...
    def removeStoredExpression(self, id: str) -> None: ...
    def addStoredExpression(self, name: str, expression: str, tag: QgsStoredExpression.Category = ...) -> str: ...


class QgsStringStatisticalSummary(PyQt5.sip.wrapper):

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

    class Statistics(PyQt5.sip.wrapper):

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

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

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

    @staticmethod
    def displayName(statistic: 'QgsStringStatisticalSummary.Statistic') -> str: ...
    def majority(self) -> str: ...
    def minority(self) -> str: ...
    def meanLength(self) -> float: ...
    def maxLength(self) -> int: ...
    def minLength(self) -> int: ...
    def max(self) -> str: ...
    def min(self) -> str: ...
    def countMissing(self) -> int: ...
    def distinctValues(self) -> typing.Set[str]: ...
    def countDistinct(self) -> int: ...
    def count(self) -> int: ...
    def statistic(self, stat: 'QgsStringStatisticalSummary.Statistic') -> typing.Any: ...
    def finalize(self) -> None: ...
    def addValue(self, value: typing.Any) -> None: ...
    def addString(self, string: str) -> None: ...
    def calculateFromVariants(self, values: typing.Iterable[typing.Any]) -> None: ...
    def calculate(self, values: typing.Iterable[str]) -> None: ...
    def reset(self) -> None: ...
    def setStatistics(self, stats: typing.Union['QgsStringStatisticalSummary.Statistics', 'QgsStringStatisticalSummary.Statistic']) -> None: ...
    def statistics(self) -> 'QgsStringStatisticalSummary.Statistics': ...


class QgsStringReplacement(PyQt5.sip.wrapper):

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

    def __ne__(self, other: object): ...
    @staticmethod
    def fromProperties(properties: typing.Dict[str, str]) -> 'QgsStringReplacement': ...
    def properties(self) -> typing.Dict[str, str]: ...
    def __eq__(self, other: object): ...
    def process(self, input: str) -> str: ...
    def wholeWordOnly(self) -> bool: ...
    def caseSensitive(self) -> bool: ...
    def replacement(self) -> str: ...
    def match(self) -> str: ...


class QgsStringReplacementCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, replacements: typing.Iterable[QgsStringReplacement] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStringReplacementCollection') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> None: ...
    def process(self, input: str) -> str: ...
    def setReplacements(self, replacements: typing.Iterable[QgsStringReplacement]) -> None: ...
    def replacements(self) -> typing.List[QgsStringReplacement]: ...


class QgsStringUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def truncateMiddleOfString(string: str, maxLength: int) -> str: ...
    @staticmethod
    def qRegExpEscape(string: str) -> str: ...
    @staticmethod
    def htmlToMarkdown(html: str) -> str: ...
    @staticmethod
    def substituteVerticalCharacters(string: str) -> str: ...
    @staticmethod
    def wordWrap(string: str, length: int, useMaxLineLength: bool = ..., customDelimiter: str = ...) -> str: ...
    @staticmethod
    def isUrl(string: str) -> bool: ...
    @staticmethod
    def insertLinks(string: str) -> typing.Tuple[str, bool]: ...
    @staticmethod
    def fuzzyScore(candidate: str, search: str) -> float: ...
    @staticmethod
    def soundex(string: str) -> str: ...
    @staticmethod
    def hammingDistance(string1: str, string2: str, caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def longestCommonSubstring(string1: str, string2: str, caseSensitive: bool = ...) -> str: ...
    @staticmethod
    def levenshteinDistance(string1: str, string2: str, caseSensitive: bool = ...) -> int: ...
    @staticmethod
    def ampersandEncode(string: str) -> str: ...
    @staticmethod
    def capitalize(string: str, capitalization: Qgis.Capitalization) -> str: ...


class QgsTableCell(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, content: typing.Any = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTableCell') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setProperties(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def setVerticalAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def verticalAlignment(self) -> QtCore.Qt.Alignment: ...
    def setHorizontalAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def horizontalAlignment(self) -> QtCore.Qt.Alignment: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setForegroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def foregroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setContent(self, content: typing.Any) -> None: ...
    def content(self) -> typing.Any: ...


class QgsTaskManager(QtCore.QObject):

    class TaskDefinition(PyQt5.sip.wrapper):

        dependentTasks = ... # type: typing.Iterable[QgsTask]
        task = ... # type: QgsTask

        @typing.overload
        def __init__(self, task: QgsTask, dependentTasks: typing.Iterable[QgsTask] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsTaskManager.TaskDefinition') -> None: ...

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

    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: QgsTask) -> None: ...
    def countActiveTasks(self, includeHidden: bool = ...) -> int: ...
    def activeTasks(self) -> typing.List[QgsTask]: ...
    def tasksDependentOnLayer(self, layer: QgsMapLayer) -> typing.List[QgsTask]: ...
    def dependentLayers(self, taskId: int) -> typing.List[QgsMapLayer]: ...
    def dependenciesSatisfied(self, taskId: int) -> bool: ...
    def cancelAll(self) -> None: ...
    def taskId(self, task: QgsTask) -> int: ...
    def count(self) -> int: ...
    def tasks(self) -> typing.List[QgsTask]: ...
    def task(self, id: int) -> QgsTask: ...
    @typing.overload
    def addTask(self, task: QgsTask, priority: int = ...) -> int: ...
    @typing.overload
    def addTask(self, task: 'QgsTaskManager.TaskDefinition', priority: int = ...) -> int: ...


class QgsTemporalController(QtCore.QObject):

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

    updateTemporalRange: typing.ClassVar[QtCore.pyqtsignal]


class QgsTemporalNavigationObject(QgsTemporalController, QgsExpressionContextScopeGenerator):

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

    class NavigationMode(int):
        NavigationOff = ... # type: QgsTemporalNavigationObject.NavigationMode
        Animated = ... # type: QgsTemporalNavigationObject.NavigationMode
        FixedRange = ... # type: QgsTemporalNavigationObject.NavigationMode

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

    def skipToEnd(self) -> None: ...
    def rewindToStart(self) -> None: ...
    def previous(self) -> None: ...
    def next(self) -> None: ...
    def playBackward(self) -> None: ...
    def playForward(self) -> None: ...
    def pause(self) -> None: ...
    def play(self) -> None: ...
    temporalFrameDurationChanged: typing.ClassVar[QtCore.pyqtsignal]
    temporalExtentsChanged: typing.ClassVar[QtCore.pyqtsignal]
    navigationModeChanged: typing.ClassVar[QtCore.pyqtsignal]
    stateChanged: typing.ClassVar[QtCore.pyqtsignal]
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def findBestFrameNumberForFrameStart(self, frameStart: typing.Union[QtCore.QDateTime, datetime.datetime]) -> int: ...
    def setLooping(self, loop: bool) -> None: ...
    def isLooping(self) -> bool: ...
    def totalFrameCount(self) -> int: ...
    def temporalRangeCumulative(self) -> bool: ...
    def setTemporalRangeCumulative(self, state: bool) -> None: ...
    def framesPerSecond(self) -> float: ...
    def setFramesPerSecond(self, rate: float) -> None: ...
    def dateTimeRangeForFrameNumber(self, frame: int) -> QgsDateTimeRange: ...
    def frameDuration(self) -> QgsInterval: ...
    def setFrameDuration(self, duration: QgsInterval) -> None: ...
    def currentFrameNumber(self) -> int: ...
    def setCurrentFrameNumber(self, frame: int) -> None: ...
    def availableTemporalRanges(self) -> typing.List[QgsDateTimeRange]: ...
    def setAvailableTemporalRanges(self, ranges: typing.Iterable[QgsDateTimeRange]) -> None: ...
    def temporalExtents(self) -> QgsDateTimeRange: ...
    def setTemporalExtents(self, extents: QgsDateTimeRange) -> None: ...
    def navigationMode(self) -> 'QgsTemporalNavigationObject.NavigationMode': ...
    def setNavigationMode(self, mode: 'QgsTemporalNavigationObject.NavigationMode') -> None: ...
    def animationState(self) -> 'QgsTemporalNavigationObject.AnimationState': ...
    def setAnimationState(self, state: 'QgsTemporalNavigationObject.AnimationState') -> None: ...


class QgsTemporalUtils(PyQt5.sip.wrapper):

    class AnimationExportSettings(PyQt5.sip.wrapper):

        animationRange = ... # type: QgsDateTimeRange
        decorations = ... # type: typing.Iterable[QgsMapDecoration]
        fileNameTemplate = ... # type: str
        frameDuration = ... # type: QgsInterval
        frameRate = ... # type: float
        outputDirectory = ... # type: str

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

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

    @staticmethod
    def calculateDateTimesFromISO8601(string: str, maxValues: int = ...) -> typing.Tuple[typing.List[QtCore.QDateTime], bool, bool]: ...
    @staticmethod
    def calculateDateTimesUsingDuration(start: typing.Union[QtCore.QDateTime, datetime.datetime], end: typing.Union[QtCore.QDateTime, datetime.datetime], duration: str, maxValues: int = ...) -> typing.Tuple[typing.List[QtCore.QDateTime], bool, bool]: ...
    @staticmethod
    def calculateFrameTime(start: typing.Union[QtCore.QDateTime, datetime.datetime], frame: int, interval: QgsInterval) -> QtCore.QDateTime: ...
    @staticmethod
    def exportAnimation(mapSettings: QgsMapSettings, settings: 'QgsTemporalUtils.AnimationExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def usedTemporalRangesForProject(project: 'QgsProject') -> typing.List[QgsDateTimeRange]: ...
    @staticmethod
    def calculateTemporalRangeForProject(project: 'QgsProject') -> QgsDateTimeRange: ...


class QgsTessellator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, originX: float, originY: float, addNormals: bool, invertNormals: bool = ..., addBackFaces: bool = ..., noZ: bool = ..., addTextureCoords: bool = ..., facade: int = ..., textureRotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, bounds: 'QgsRectangle', addNormals: bool, invertNormals: bool = ..., addBackFaces: bool = ..., noZ: bool = ..., addTextureCoords: bool = ..., facade: int = ..., textureRotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTessellator') -> None: ...

    def zMaximum(self) -> float: ...
    def zMinimum(self) -> float: ...
    def stride(self) -> int: ...
    def dataVerticesCount(self) -> int: ...
    def data(self) -> typing.List[float]: ...
    def addPolygon(self, polygon: 'QgsPolygon', extrusionHeight: float) -> None: ...


class QgsTestUtils(PyQt5.sip.simplewrapper):

    def testProviderIteratorThreadSafety(self, provider: 'QgsVectorDataProvider', request: QgsFeatureRequest = ...) -> bool: ...


class QgsTileXYZ(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, tc: int = ..., tr: int = ..., tz: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTileXYZ') -> None: ...

    def 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 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) -> int: ...
    def scaleToZoom(self, scale: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    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):

    class UnitType(int):
        LayerUnits = ... # type: QgsTolerance.UnitType
        Pixels = ... # type: QgsTolerance.UnitType
        ProjectUnits = ... # type: QgsTolerance.UnitType

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def toleranceInMapUnits(tolerance: float, layer: QgsMapLayer, mapSettings: QgsMapSettings, units: 'QgsTolerance.UnitType' = ...) -> float: ...
    @staticmethod
    def toleranceInProjectUnits(tolerance: float, layer: QgsMapLayer, mapSettings: QgsMapSettings, units: 'QgsTolerance.UnitType') -> float: ...
    @staticmethod
    def defaultTolerance(layer: QgsMapLayer, mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(mapSettings: QgsMapSettings) -> float: ...
    @typing.overload
    @staticmethod
    def vertexSearchRadius(layer: QgsMapLayer, mapSettings: QgsMapSettings) -> float: ...


class QgsTracer(QtCore.QObject):

    class PathError(int):
        ErrNone = ... # type: QgsTracer.PathError
        ErrTooManyFeatures = ... # type: QgsTracer.PathError
        ErrPoint1 = ... # type: QgsTracer.PathError
        ErrPoint2 = ... # type: QgsTracer.PathError
        ErrNoPath = ... # type: QgsTracer.PathError

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

    def invalidateGraph(self) -> None: ...
    def configure(self) -> None: ...
    def isPointSnapped(self, pt: QgsPointXY) -> bool: ...
    def findShortestPath(self, p1: QgsPointXY, p2: QgsPointXY) -> typing.Tuple[typing.List[QgsPointXY], 'QgsTracer.PathError']: ...
    def hasTopologyProblem(self) -> bool: ...
    def isInitialized(self) -> bool: ...
    def init(self) -> bool: ...
    def setMaxFeatureCount(self, count: int) -> None: ...
    def maxFeatureCount(self) -> int: ...
    def setOffsetParameters(self, quadSegments: int, joinStyle: int, miterLimit: float) -> None: ...
    def offsetParameters(self) -> typing.Tuple[int, int, float]: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    def setExtent(self, extent: 'QgsRectangle') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def setRenderContext(self, renderContext: QgsRenderContext) -> None: ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext') -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setLayers(self, layers: typing.Iterable[QgsVectorLayer]) -> None: ...
    def layers(self) -> typing.List[QgsVectorLayer]: ...


class QgsVectorLayerTools(QtCore.QObject):

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

    def setForceSuppressFormPopup(self, forceSuppressFormPopup: bool) -> None: ...
    def forceSuppressFormPopup(self) -> bool: ...
    def copyMoveFeatures(self, layer: QgsVectorLayer, request: QgsFeatureRequest, dx: float = ..., dy: float = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, QgsFeatureRequest, str]: ...
    def saveEdits(self, layer: QgsVectorLayer) -> bool: ...
    def stopEditing(self, layer: QgsVectorLayer, allowCancel: bool = ...) -> bool: ...
    def startEditing(self, layer: QgsVectorLayer) -> bool: ...
    def addFeature(self, layer: QgsVectorLayer, defaultValues: typing.Dict[int, typing.Any] = ..., defaultGeometry: 'QgsGeometry' = ..., parentWidget: typing.Optional[QtWidgets.QWidget] = ..., showModal: bool = ..., hideParent: bool = ...) -> typing.Tuple[bool, QgsFeature]: ...


class QgsTrackedVectorLayerTools(QgsVectorLayerTools):

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

    def rollback(self) -> None: ...
    def setVectorLayerTools(self, tools: QgsVectorLayerTools) -> None: ...
    def copyMoveFeatures(self, layer: QgsVectorLayer, request: QgsFeatureRequest, dx: float = ..., dy: float = ..., errorMsg: typing.Optional[str] = ..., topologicalEditing: bool = ..., topologicalLayer: typing.Optional[QgsVectorLayer] = ...) -> bool: ...
    def saveEdits(self, layer: QgsVectorLayer) -> bool: ...
    def stopEditing(self, layer: QgsVectorLayer, allowCancel: bool) -> bool: ...
    def startEditing(self, layer: QgsVectorLayer) -> bool: ...
    def addFeature(self, layer: QgsVectorLayer, defaultValues: typing.Dict[int, typing.Any], defaultGeometry: 'QgsGeometry', feature: QgsFeature, parentWidget: typing.Optional[QtWidgets.QWidget] = ..., showModal: bool = ..., hideParent: bool = ...) -> bool: ...


class QgsTransaction(QtCore.QObject):

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

    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: str) -> typing.Tuple[bool, str]: ...
    @typing.overload
    def createSavepoint(self) -> typing.Tuple[str, str]: ...
    @typing.overload
    def createSavepoint(self, savePointId: str) -> typing.Tuple[str, str]: ...
    @staticmethod
    def supportsTransaction(layer: QgsVectorLayer) -> bool: ...
    def executeSql(self, sql: str, isDirty: bool = ..., name: str = ...) -> typing.Tuple[bool, str]: ...
    def rollback(self) -> typing.Tuple[bool, str]: ...
    def commit(self) -> typing.Tuple[bool, str]: ...
    def begin(self, statementTimeout: int = ...) -> typing.Tuple[bool, str]: ...
    def addLayer(self, layer: QgsVectorLayer, addLayersInEditMode: bool = ...) -> bool: ...
    def connectionString(self) -> str: ...
    @typing.overload
    @staticmethod
    def create(connString: str, providerKey: str) -> 'QgsTransaction': ...
    @typing.overload
    @staticmethod
    def create(layers: typing.Iterable[QgsVectorLayer]) -> 'QgsTransaction': ...


class QgsTransactionGroup(QtCore.QObject):

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

    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: QgsVectorLayer) -> bool: ...


class QgsTranslationContext(PyQt5.sip.wrapper):

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

    def writeTsFile(self, locale: str) -> None: ...
    def registerTranslation(self, context: str, source: str) -> None: ...
    def setFileName(self, fileName: str) -> None: ...
    def fileName(self) -> str: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...


class QgsUnitTypes(PyQt5.sip.wrapper):

    class LayoutUnitType(int):
        LayoutPaperUnits = ... # type: QgsUnitTypes.LayoutUnitType
        LayoutScreenUnits = ... # type: QgsUnitTypes.LayoutUnitType

    class LayoutUnit(int):
        LayoutMillimeters = ... # type: QgsUnitTypes.LayoutUnit
        LayoutCentimeters = ... # type: QgsUnitTypes.LayoutUnit
        LayoutMeters = ... # type: QgsUnitTypes.LayoutUnit
        LayoutInches = ... # type: QgsUnitTypes.LayoutUnit
        LayoutFeet = ... # type: QgsUnitTypes.LayoutUnit
        LayoutPoints = ... # type: QgsUnitTypes.LayoutUnit
        LayoutPicas = ... # type: QgsUnitTypes.LayoutUnit
        LayoutPixels = ... # type: QgsUnitTypes.LayoutUnit

    class RenderUnit(int):
        RenderMillimeters = ... # type: QgsUnitTypes.RenderUnit
        RenderMapUnits = ... # type: QgsUnitTypes.RenderUnit
        RenderPixels = ... # type: QgsUnitTypes.RenderUnit
        RenderPercentage = ... # type: QgsUnitTypes.RenderUnit
        RenderPoints = ... # type: QgsUnitTypes.RenderUnit
        RenderInches = ... # type: QgsUnitTypes.RenderUnit
        RenderUnknownUnit = ... # type: QgsUnitTypes.RenderUnit
        RenderMetersInMapUnits = ... # type: QgsUnitTypes.RenderUnit

    class TemporalUnit(int):
        TemporalMilliseconds = ... # type: QgsUnitTypes.TemporalUnit
        TemporalSeconds = ... # type: QgsUnitTypes.TemporalUnit
        TemporalMinutes = ... # type: QgsUnitTypes.TemporalUnit
        TemporalHours = ... # type: QgsUnitTypes.TemporalUnit
        TemporalDays = ... # type: QgsUnitTypes.TemporalUnit
        TemporalWeeks = ... # type: QgsUnitTypes.TemporalUnit
        TemporalMonths = ... # type: QgsUnitTypes.TemporalUnit
        TemporalYears = ... # type: QgsUnitTypes.TemporalUnit
        TemporalDecades = ... # type: QgsUnitTypes.TemporalUnit
        TemporalCenturies = ... # type: QgsUnitTypes.TemporalUnit
        TemporalIrregularStep = ... # type: QgsUnitTypes.TemporalUnit
        TemporalUnknownUnit = ... # type: QgsUnitTypes.TemporalUnit

    class AngleUnit(int):
        AngleDegrees = ... # type: QgsUnitTypes.AngleUnit
        AngleRadians = ... # type: QgsUnitTypes.AngleUnit
        AngleGon = ... # type: QgsUnitTypes.AngleUnit
        AngleMinutesOfArc = ... # type: QgsUnitTypes.AngleUnit
        AngleSecondsOfArc = ... # type: QgsUnitTypes.AngleUnit
        AngleTurn = ... # type: QgsUnitTypes.AngleUnit
        AngleMilliradiansSI = ... # type: QgsUnitTypes.AngleUnit
        AngleMilNATO = ... # type: QgsUnitTypes.AngleUnit
        AngleUnknownUnit = ... # type: QgsUnitTypes.AngleUnit

    class VolumeUnit(int):
        VolumeCubicMeters = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicFeet = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicYards = ... # type: QgsUnitTypes.VolumeUnit
        VolumeBarrel = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicDecimeter = ... # type: QgsUnitTypes.VolumeUnit
        VolumeLiters = ... # type: QgsUnitTypes.VolumeUnit
        VolumeGallonUS = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicInch = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicCentimeter = ... # type: QgsUnitTypes.VolumeUnit
        VolumeCubicDegrees = ... # type: QgsUnitTypes.VolumeUnit
        VolumeUnknownUnit = ... # type: QgsUnitTypes.VolumeUnit

    class AreaUnit(int):
        AreaSquareMeters = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareKilometers = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareFeet = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareYards = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareMiles = ... # type: QgsUnitTypes.AreaUnit
        AreaHectares = ... # type: QgsUnitTypes.AreaUnit
        AreaAcres = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareNauticalMiles = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareDegrees = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareCentimeters = ... # type: QgsUnitTypes.AreaUnit
        AreaSquareMillimeters = ... # type: QgsUnitTypes.AreaUnit
        AreaUnknownUnit = ... # type: QgsUnitTypes.AreaUnit

    class DistanceUnitType(int):
        Standard = ... # type: QgsUnitTypes.DistanceUnitType
        Geographic = ... # type: QgsUnitTypes.DistanceUnitType
        UnknownType = ... # type: QgsUnitTypes.DistanceUnitType

    class DistanceUnit(int):
        DistanceMeters = ... # type: QgsUnitTypes.DistanceUnit
        DistanceKilometers = ... # type: QgsUnitTypes.DistanceUnit
        DistanceFeet = ... # type: QgsUnitTypes.DistanceUnit
        DistanceNauticalMiles = ... # type: QgsUnitTypes.DistanceUnit
        DistanceYards = ... # type: QgsUnitTypes.DistanceUnit
        DistanceMiles = ... # type: QgsUnitTypes.DistanceUnit
        DistanceDegrees = ... # type: QgsUnitTypes.DistanceUnit
        DistanceCentimeters = ... # type: QgsUnitTypes.DistanceUnit
        DistanceMillimeters = ... # type: QgsUnitTypes.DistanceUnit
        DistanceUnknownUnit = ... # type: QgsUnitTypes.DistanceUnit

    class UnitType(int):
        TypeDistance = ... # type: QgsUnitTypes.UnitType
        TypeArea = ... # type: QgsUnitTypes.UnitType
        TypeVolume = ... # type: QgsUnitTypes.UnitType
        TypeUnknown = ... # type: QgsUnitTypes.UnitType
        TypeTemporal = ... # type: QgsUnitTypes.UnitType

    class SystemOfMeasurement(int):
        UnknownSystem = ... # type: QgsUnitTypes.SystemOfMeasurement
        MetricSystem = ... # type: QgsUnitTypes.SystemOfMeasurement
        ImperialSystem = ... # type: QgsUnitTypes.SystemOfMeasurement
        USCSSystem = ... # type: QgsUnitTypes.SystemOfMeasurement

    class DistanceValue(PyQt5.sip.wrapper):

        unit = ... # type: 'QgsUnitTypes.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: 'QgsUnitTypes.AreaUnit'
        value = ... # type: float

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

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def decodeLayoutUnit(string: str) -> typing.Tuple['QgsUnitTypes.LayoutUnit', bool]: ...
    @staticmethod
    def decodeRenderUnit(string: str) -> typing.Tuple['QgsUnitTypes.RenderUnit', bool]: ...
    @staticmethod
    def formatArea(area: float, decimals: int, unit: 'QgsUnitTypes.AreaUnit', keepBaseUnit: bool = ...) -> str: ...
    @staticmethod
    def formatDistance(distance: float, decimals: int, unit: 'QgsUnitTypes.DistanceUnit', keepBaseUnit: bool = ...) -> str: ...
    @staticmethod
    def scaledArea(area: float, unit: 'QgsUnitTypes.AreaUnit', decimals: int, keepBaseUnit: bool = ...) -> 'QgsUnitTypes.AreaValue': ...
    @staticmethod
    def scaledDistance(distance: float, unit: 'QgsUnitTypes.DistanceUnit', decimals: int, keepBaseUnit: bool = ...) -> 'QgsUnitTypes.DistanceValue': ...
    @staticmethod
    def formatAngle(angle: float, decimals: int, unit: 'QgsUnitTypes.AngleUnit') -> str: ...
    @staticmethod
    def decodeAngleUnit(string: str) -> typing.Tuple['QgsUnitTypes.AngleUnit', bool]: ...
    @staticmethod
    def volumeToDistanceUnit(volumeUnit: 'QgsUnitTypes.VolumeUnit') -> 'QgsUnitTypes.DistanceUnit': ...
    @staticmethod
    def distanceToVolumeUnit(distanceUnit: 'QgsUnitTypes.DistanceUnit') -> 'QgsUnitTypes.VolumeUnit': ...
    @staticmethod
    def stringToVolumeUnit(string: str) -> typing.Tuple['QgsUnitTypes.VolumeUnit', bool]: ...
    @staticmethod
    def decodeVolumeUnit(string: str) -> typing.Tuple['QgsUnitTypes.VolumeUnit', bool]: ...
    @staticmethod
    def stringToTemporalUnit(string: str) -> typing.Tuple['QgsUnitTypes.TemporalUnit', bool]: ...
    @staticmethod
    def decodeTemporalUnit(string: str) -> typing.Tuple['QgsUnitTypes.TemporalUnit', bool]: ...
    @staticmethod
    def areaToDistanceUnit(areaUnit: 'QgsUnitTypes.AreaUnit') -> 'QgsUnitTypes.DistanceUnit': ...
    @staticmethod
    def distanceToAreaUnit(distanceUnit: 'QgsUnitTypes.DistanceUnit') -> 'QgsUnitTypes.AreaUnit': ...
    @staticmethod
    def stringToAreaUnit(string: str) -> typing.Tuple['QgsUnitTypes.AreaUnit', bool]: ...
    @staticmethod
    def decodeAreaUnit(string: str) -> typing.Tuple['QgsUnitTypes.AreaUnit', bool]: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: 'QgsUnitTypes.DistanceUnit', toUnit: 'QgsUnitTypes.DistanceUnit') -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: 'QgsUnitTypes.AreaUnit', toUnit: 'QgsUnitTypes.AreaUnit') -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: 'QgsUnitTypes.TemporalUnit', toUnit: 'QgsUnitTypes.TemporalUnit') -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: 'QgsUnitTypes.VolumeUnit', toUnit: 'QgsUnitTypes.VolumeUnit') -> float: ...
    @typing.overload
    @staticmethod
    def fromUnitToUnitFactor(fromUnit: 'QgsUnitTypes.AngleUnit', toUnit: 'QgsUnitTypes.AngleUnit') -> float: ...
    @staticmethod
    def stringToDistanceUnit(string: str) -> typing.Tuple['QgsUnitTypes.DistanceUnit', bool]: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.DistanceUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.AreaUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.TemporalUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.VolumeUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.RenderUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toAbbreviatedString(unit: 'QgsUnitTypes.LayoutUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.DistanceUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.AreaUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.TemporalUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.VolumeUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.AngleUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.RenderUnit') -> str: ...
    @typing.overload
    @staticmethod
    def toString(unit: 'QgsUnitTypes.LayoutUnit') -> str: ...
    @staticmethod
    def decodeDistanceUnit(string: str) -> typing.Tuple['QgsUnitTypes.DistanceUnit', bool]: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.DistanceUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.AreaUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.TemporalUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.VolumeUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.AngleUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.RenderUnit') -> str: ...
    @typing.overload
    @staticmethod
    def encodeUnit(unit: 'QgsUnitTypes.LayoutUnit') -> str: ...
    @typing.overload
    @staticmethod
    def unitType(unit: 'QgsUnitTypes.DistanceUnit') -> 'QgsUnitTypes.DistanceUnitType': ...
    @typing.overload
    @staticmethod
    def unitType(unit: 'QgsUnitTypes.AreaUnit') -> 'QgsUnitTypes.DistanceUnitType': ...
    @typing.overload
    @staticmethod
    def unitType(unit: 'QgsUnitTypes.VolumeUnit') -> 'QgsUnitTypes.DistanceUnitType': ...
    @typing.overload
    @staticmethod
    def unitType(units: 'QgsUnitTypes.LayoutUnit') -> 'QgsUnitTypes.LayoutUnitType': ...
    @staticmethod
    def decodeUnitType(string: str) -> typing.Tuple['QgsUnitTypes.UnitType', bool]: ...
    @staticmethod
    def encodeUnitType(type: 'QgsUnitTypes.UnitType') -> str: ...


class QgsUnsetAttributeValue(PyQt5.sip.wrapper):

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

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


class QgsUserProfile(PyQt5.sip.wrapper):

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

    def icon(self) -> QtGui.QIcon: ...
    def setAlias(self, alias: str) -> QgsError: ...
    def alias(self) -> str: ...
    def initSettings(self) -> None: ...
    def name(self) -> str: ...
    def validate(self) -> QgsError: ...
    def folder(self) -> str: ...


class QgsUserProfileManager(QtCore.QObject):

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

    profilesChanged: typing.ClassVar[QtCore.pyqtsignal]
    def loadUserProfile(self, name: str) -> None: ...
    def setActiveUserProfile(self, profile: str) -> None: ...
    def userProfile(self) -> QgsUserProfile: ...
    def deleteProfile(self, name: str) -> QgsError: ...
    def createUserProfile(self, name: str) -> QgsError: ...
    def profileForName(self, name: str) -> QgsUserProfile: ...
    def setDefaultFromActive(self) -> None: ...
    def setDefaultProfileName(self, name: str) -> None: ...
    def defaultProfileName(self) -> str: ...
    def profileExists(self, name: str) -> bool: ...
    def allProfiles(self) -> typing.List[str]: ...
    def rootLocationIsSet(self) -> bool: ...
    def isNewProfileNotificationEnabled(self) -> bool: ...
    def setNewProfileNotificationEnabled(self, enabled: bool) -> None: ...
    def rootLocation(self) -> str: ...
    def setRootLocation(self, rootProfileLocation: str) -> None: ...
    def getProfile(self, defaultProfile: str = ..., createNew: bool = ..., initSettings: bool = ...) -> QgsUserProfile: ...
    @staticmethod
    def resolveProfilesFolder(basePath: str = ...) -> str: ...


class QgsVariantUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def isNull(variant: typing.Any) -> bool: ...
    @staticmethod
    def typeToDisplayString(type: QtCore.QVariant.Type, subType: QtCore.QVariant.Type = ...) -> str: ...


class QgsVector(PyQt5.sip.wrapper):

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

    def __repr__(self) -> typing.Any: ...
    def toString(self, precision: int = ...) -> str: ...
    def __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 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

    class FieldNameSource(int):
        Original = ... # type: QgsVectorFileWriter.FieldNameSource
        PreferAlias = ... # type: QgsVectorFileWriter.FieldNameSource

    class SymbologyExport(int):
        NoSymbology = ... # type: QgsVectorFileWriter.SymbologyExport
        FeatureSymbology = ... # type: QgsVectorFileWriter.SymbologyExport
        SymbolLayerSymbology = ... # type: QgsVectorFileWriter.SymbologyExport

    class WriterError(int):
        NoError = ... # type: QgsVectorFileWriter.WriterError
        ErrDriverNotFound = ... # type: QgsVectorFileWriter.WriterError
        ErrCreateDataSource = ... # type: QgsVectorFileWriter.WriterError
        ErrCreateLayer = ... # type: QgsVectorFileWriter.WriterError
        ErrAttributeTypeUnsupported = ... # type: QgsVectorFileWriter.WriterError
        ErrAttributeCreationFailed = ... # type: QgsVectorFileWriter.WriterError
        ErrProjection = ... # type: QgsVectorFileWriter.WriterError
        ErrFeatureWriteFailed = ... # type: QgsVectorFileWriter.WriterError
        ErrInvalidLayer = ... # type: QgsVectorFileWriter.WriterError
        ErrSavingMetadata = ... # type: QgsVectorFileWriter.WriterError
        Canceled = ... # type: QgsVectorFileWriter.WriterError

    class OptionType(int):
        Set = ... # type: QgsVectorFileWriter.OptionType
        String = ... # type: QgsVectorFileWriter.OptionType
        Int = ... # type: QgsVectorFileWriter.OptionType
        Hidden = ... # type: QgsVectorFileWriter.OptionType

    class Option(PyQt5.sip.wrapper):

        docString = ... # type: str
        type = ... # type: 'QgsVectorFileWriter.OptionType'

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

    class SetOption('QgsVectorFileWriter.Option'):

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

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

    class StringOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: str

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

    class IntOption('QgsVectorFileWriter.Option'):

        defaultValue = ... # type: int

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

    class BoolOption('QgsVectorFileWriter.SetOption'):

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

    class HiddenOption('QgsVectorFileWriter.Option'):

        mValue = ... # type: str

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

    class MetaData(PyQt5.sip.wrapper):

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

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, longName: str, trLongName: str, glob: str, ext: str, driverOptions: typing.Any, layerOptions: typing.Any, compulsoryEncoding: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorFileWriter.MetaData') -> None: ...

    class VectorFormatOptions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption']) -> None: ...

        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) -> '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[str]
        ct = ... # type: 'QgsCoordinateTransform'
        datasourceOptions = ... # type: typing.Iterable[str]
        driverName = ... # type: str
        feedback = ... # type: QgsFeedback
        fieldNameSource = ... # type: 'QgsVectorFileWriter.FieldNameSource'
        fieldValueConverter = ... # type: 'QgsVectorFileWriter.FieldValueConverter'
        fileEncoding = ... # type: str
        filterExtent = ... # type: 'QgsRectangle'
        forceMulti = ... # type: bool
        includeZ = ... # type: bool
        layerMetadata = ... # type: 'QgsLayerMetadata'
        layerName = ... # type: str
        layerOptions = ... # type: typing.Iterable[str]
        onlySelectedFeatures = ... # type: bool
        overrideGeometryType = ... # type: 'QgsWkbTypes.Type'
        saveMetadata = ... # type: bool
        skipAttributeCreation = ... # type: bool
        symbologyExport = ... # type: 'QgsVectorFileWriter.SymbologyExport'
        symbologyScale = ... # type: float

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

    class FilterFormatDetails(PyQt5.sip.wrapper):

        driverName = ... # type: str
        filterString = ... # type: str
        globs = ... # type: typing.Iterable[str]

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

    class DriverDetails(PyQt5.sip.wrapper):

        driverName = ... # type: str
        longName = ... # type: str

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

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

    @staticmethod
    def areThereNewFieldsToCreate(datasetName: str, layerName: str, layer: QgsVectorLayer, attributes: typing.Iterable[int]) -> bool: ...
    @staticmethod
    def targetLayerExists(datasetName: str, layerName: str) -> bool: ...
    @staticmethod
    def editionCapabilities(datasetName: str) -> 'QgsVectorFileWriter.EditionCapabilities': ...
    @staticmethod
    def defaultLayerOptions(driverName: str) -> typing.List[str]: ...
    @staticmethod
    def defaultDatasetOptions(driverName: str) -> typing.List[str]: ...
    @staticmethod
    def driverMetadata(driverName: str, driverMetadata: 'QgsVectorFileWriter.MetaData') -> bool: ...
    def setSymbologyScale(self, scale: float) -> None: ...
    def symbologyScale(self) -> float: ...
    def setSymbologyExport(self, symExport: 'QgsVectorFileWriter.SymbologyExport') -> None: ...
    def symbologyExport(self) -> 'QgsVectorFileWriter.SymbologyExport': ...
    @staticmethod
    def deleteShapeFile(fileName: str) -> bool: ...
    def addFeatureWithStyle(self, feature: QgsFeature, renderer: 'QgsFeatureRenderer', outputUnit: QgsUnitTypes.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 errorMessage(self) -> str: ...
    def hasError(self) -> 'QgsVectorFileWriter.WriterError': ...
    @staticmethod
    def convertCodecNameForEncodingOption(codecName: str) -> str: ...
    @staticmethod
    def filterForDriver(driverName: str) -> str: ...
    @staticmethod
    def fileFilterString(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> str: ...
    @staticmethod
    def driverForExtension(extension: str) -> str: ...
    @staticmethod
    def ogrDriverList(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List['QgsVectorFileWriter.DriverDetails']: ...
    @staticmethod
    def supportsFeatureStyles(driverName: str) -> bool: ...
    @staticmethod
    def supportedFormatExtensions(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List[str]: ...
    @staticmethod
    def supportedFiltersAndFormats(options: typing.Union['QgsVectorFileWriter.VectorFormatOptions', 'QgsVectorFileWriter.VectorFormatOption'] = ...) -> typing.List['QgsVectorFileWriter.FilterFormatDetails']: ...
    @staticmethod
    def writeAsVectorFormatV3(layer: QgsVectorLayer, fileName: str, transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions') -> typing.Tuple['QgsVectorFileWriter.WriterError', str, str, str]: ...
    @staticmethod
    def writeAsVectorFormatV2(layer: QgsVectorLayer, fileName: str, transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[str] = ..., newLayer: typing.Optional[str] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @staticmethod
    def create(fileName: str, fields: QgsFields, geometryType: 'QgsWkbTypes.Type', srs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', options: 'QgsVectorFileWriter.SaveVectorOptions', sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., newFilename: typing.Optional[str] = ..., newLayer: typing.Optional[str] = ...) -> 'QgsVectorFileWriter': ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, fileEncoding: str, destCRS: 'QgsCoordinateReferenceSystem' = ..., driverName: str = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[str] = ..., symbologyExport: 'QgsVectorFileWriter.SymbologyExport' = ..., symbologyScale: float = ..., filterExtent: typing.Optional['QgsRectangle'] = ..., overrideGeometryType: 'QgsWkbTypes.Type' = ..., forceMulti: bool = ..., includeZ: bool = ..., attributes: typing.Iterable[int] = ..., fieldValueConverter: typing.Optional['QgsVectorFileWriter.FieldValueConverter'] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, fileEncoding: str, ct: 'QgsCoordinateTransform', driverName: str = ..., onlySelected: bool = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ..., skipAttributeCreation: bool = ..., newFilename: typing.Optional[str] = ..., symbologyExport: 'QgsVectorFileWriter.SymbologyExport' = ..., symbologyScale: float = ..., filterExtent: typing.Optional['QgsRectangle'] = ..., overrideGeometryType: 'QgsWkbTypes.Type' = ..., forceMulti: bool = ..., includeZ: bool = ..., attributes: typing.Iterable[int] = ..., fieldValueConverter: typing.Optional['QgsVectorFileWriter.FieldValueConverter'] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...
    @typing.overload
    @staticmethod
    def writeAsVectorFormat(layer: QgsVectorLayer, fileName: str, options: 'QgsVectorFileWriter.SaveVectorOptions', newFilename: typing.Optional[str] = ...) -> typing.Tuple['QgsVectorFileWriter.WriterError', str]: ...


class QgsVectorFileWriterTask(QgsTask):

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

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


class QgsVectorSimplifyMethod(PyQt5.sip.wrapper):

    class SimplifyAlgorithm(int):
        Distance = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        SnapToGrid = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        Visvalingam = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm
        SnappedToGridGlobal = ... # type: QgsVectorSimplifyMethod.SimplifyAlgorithm

    class SimplifyHint(int):
        NoSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        GeometrySimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        AntialiasingSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint
        FullSimplification = ... # type: QgsVectorSimplifyMethod.SimplifyHint

    class SimplifyHints(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorSimplifyMethod.SimplifyHints', 'QgsVectorSimplifyMethod.SimplifyHint']) -> None: ...

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

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    def maximumScale(self) -> float: ...
    def setMaximumScale(self, maximumScale: float) -> None: ...
    def forceLocalOptimization(self) -> bool: ...
    def setForceLocalOptimization(self, localOptimization: bool) -> None: ...
    def threshold(self) -> float: ...
    def setThreshold(self, threshold: float) -> None: ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def simplifyAlgorithm(self) -> 'QgsVectorSimplifyMethod.SimplifyAlgorithm': ...
    def setSimplifyAlgorithm(self, simplifyAlgorithm: 'QgsVectorSimplifyMethod.SimplifyAlgorithm') -> None: ...
    def simplifyHints(self) -> 'QgsVectorSimplifyMethod.SimplifyHints': ...
    def setSimplifyHints(self, simplifyHints: typing.Union['QgsVectorSimplifyMethod.SimplifyHints', 'QgsVectorSimplifyMethod.SimplifyHint']) -> None: ...


class QgsVirtualLayerDefinition(PyQt5.sip.wrapper):

    class SourceLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, name: str, ref: str) -> None: ...
        @typing.overload
        def __init__(self, name: str, source: str, provider: str, encoding: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVirtualLayerDefinition.SourceLayer') -> None: ...

        def encoding(self) -> str: ...
        def source(self) -> str: ...
        def provider(self) -> str: ...
        def name(self) -> str: ...
        def reference(self) -> str: ...
        def isReferenced(self) -> bool: ...

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

    def setSubsetString(self, subsetString: str) -> None: ...
    def subsetString(self) -> str: ...
    def hasDefinedGeometry(self) -> bool: ...
    def hasReferencedLayers(self) -> bool: ...
    def hasSourceLayer(self, name: str) -> bool: ...
    def setFields(self, fields: QgsFields) -> None: ...
    def fields(self) -> QgsFields: ...
    def setGeometrySrid(self, srid: int) -> None: ...
    def geometrySrid(self) -> int: ...
    def setGeometryWkbType(self, t: 'QgsWkbTypes.Type') -> None: ...
    def geometryWkbType(self) -> 'QgsWkbTypes.Type': ...
    def setGeometryField(self, geometryField: str) -> None: ...
    def geometryField(self) -> str: ...
    def isLazy(self) -> bool: ...
    def setLazy(self, lazy: bool) -> None: ...
    def setUid(self, uid: str) -> None: ...
    def uid(self) -> str: ...
    def setFilePath(self, filePath: str) -> None: ...
    def filePath(self) -> str: ...
    def setQuery(self, query: str) -> None: ...
    def query(self) -> str: ...
    def sourceLayers(self) -> typing.List['QgsVirtualLayerDefinition.SourceLayer']: ...
    @typing.overload
    def addSource(self, name: str, ref: str) -> None: ...
    @typing.overload
    def addSource(self, name: str, source: str, provider: str, encoding: str = ...) -> None: ...
    def toString(self) -> str: ...
    def toUrl(self) -> QtCore.QUrl: ...
    @staticmethod
    def fromUrl(url: QtCore.QUrl) -> 'QgsVirtualLayerDefinition': ...


class QgsVirtualLayerDefinitionUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def fromJoinedLayer(joinedLayer: QgsVectorLayer) -> QgsVirtualLayerDefinition: ...


class QgsVirtualLayerTask(QgsTask):

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

    def setExceptionText(self, exceptionText: str) -> None: ...
    def exceptionText(self) -> str: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...
    def definition(self) -> QgsVirtualLayerDefinition: ...
    def takeLayer(self) -> QgsVectorLayer: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsXmlUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def readVariant(element: QtXml.QDomElement) -> typing.Any: ...
    @staticmethod
    def writeVariant(value: typing.Any, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def writeRectangle(rect: 'QgsRectangle', doc: QtXml.QDomDocument, elementName: str = ...) -> QtXml.QDomElement: ...
    @staticmethod
    def writeMapUnits(units: QgsUnitTypes.DistanceUnit, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @staticmethod
    def readRectangle(element: QtXml.QDomElement) -> 'QgsRectangle': ...
    @staticmethod
    def readMapUnits(element: QtXml.QDomElement) -> QgsUnitTypes.DistanceUnit: ...


class QgsZipUtils(PyQt5.sip.simplewrapper):

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


class Qgs3DRendererAbstractMetadata(PyQt5.sip.wrapper):

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

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsAbstract3DRenderer': ...
    def type(self) -> str: ...


class Qgs3DRendererRegistry(PyQt5.sip.wrapper):

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

    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, type: str) -> Qgs3DRendererAbstractMetadata: ...
    def removeRenderer(self, type: str) -> None: ...
    def addRenderer(self, metadata: Qgs3DRendererAbstractMetadata) -> None: ...


class Qgs3DSymbolAbstractMetadata(PyQt5.sip.wrapper):

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

    def create(self) -> 'QgsAbstract3DSymbol': ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class Qgs3DSymbolRegistry(PyQt5.sip.wrapper):

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

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


class QgsAbstract3DSymbol(PyQt5.sip.wrapper):

    class Property(int):
        PropertyHeight = ... # type: QgsAbstract3DSymbol.Property
        PropertyExtrusionHeight = ... # type: QgsAbstract3DSymbol.Property

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

    def copyBaseSettings(self, destination: 'QgsAbstract3DSymbol') -> None: ...
    def setDefaultPropertiesFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def compatibleGeometryTypes(self) -> typing.Any: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsAbstract3DSymbol': ...
    def type(self) -> str: ...


class QgsAbstract3DRenderer(PyQt5.sip.wrapper):

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

    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsAbstract3DRenderer': ...
    def type(self) -> str: ...


class QgsAbstractPointCloud3DRenderer(QgsAbstract3DRenderer):

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

    def convertFrom2DRenderer(self, renderer: 'QgsPointCloudRenderer') -> bool: ...


class QgsAnnotation(QtCore.QObject):

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

    def copyCommonProperties(self, target: 'QgsAnnotation') -> None: ...
    def _readXml(self, annotationElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _writeXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def minimumFrameSize(self) -> QtCore.QSizeF: ...
    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    mapLayerChanged: typing.ClassVar[QtCore.pyqtsignal]
    moved: typing.ClassVar[QtCore.pyqtsignal]
    appearanceChanged: typing.ClassVar[QtCore.pyqtsignal]
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def setAssociatedFeature(self, feature: QgsFeature) -> None: ...
    def associatedFeature(self) -> QgsFeature: ...
    def setMapLayer(self, layer: QgsMapLayer) -> None: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def markerSymbol(self) -> 'QgsMarkerSymbol': ...
    def setMarkerSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def render(self, context: QgsRenderContext) -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def contentsMargin(self) -> QgsMargins: ...
    def setContentsMargin(self, margins: QgsMargins) -> None: ...
    def frameSizeMm(self) -> QtCore.QSizeF: ...
    def setFrameSizeMm(self, size: QtCore.QSizeF) -> None: ...
    def frameSize(self) -> QtCore.QSizeF: ...
    def setFrameSize(self, size: QtCore.QSizeF) -> None: ...
    def frameOffsetFromReferencePointMm(self) -> QtCore.QPointF: ...
    def setFrameOffsetFromReferencePointMm(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def frameOffsetFromReferencePoint(self) -> QtCore.QPointF: ...
    def setFrameOffsetFromReferencePoint(self, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def setRelativePosition(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def relativePosition(self) -> QtCore.QPointF: ...
    def setMapPositionCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def mapPositionCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setMapPosition(self, position: QgsPointXY) -> None: ...
    def mapPosition(self) -> QgsPointXY: ...
    def setHasFixedMapPosition(self, fixed: bool) -> None: ...
    def hasFixedMapPosition(self) -> bool: ...
    def setVisible(self, visible: bool) -> None: ...
    def isVisible(self) -> bool: ...
    def clone(self) -> 'QgsAnnotation': ...


class QgsAnnotationItem(PyQt5.sip.wrapper):

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

    def readCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def copyCommonProperties(self, other: 'QgsAnnotationItem') -> None: ...
    def setSymbologyReferenceScale(self, scale: float) -> None: ...
    def symbologyReferenceScale(self) -> float: ...
    def setUseSymbologyReferenceScale(self, enabled: bool) -> None: ...
    def useSymbologyReferenceScale(self) -> bool: ...
    def nodes(self) -> typing.List['QgsAnnotationItemNode']: ...
    def setZIndex(self, index: int) -> None: ...
    def zIndex(self) -> int: ...
    def transientEditResults(self, operation: 'QgsAbstractAnnotationItemEditOperation') -> 'QgsAnnotationItemEditOperationTransientResults': ...
    def applyEdit(self, operation: 'QgsAbstractAnnotationItemEditOperation') -> Qgis.AnnotationItemEditOperationResult: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsAnnotationItem': ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAbstractAnnotationItemEditOperation(PyQt5.sip.wrapper):

    class Type(int):
        MoveNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        DeleteNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        AddNode = ... # type: QgsAbstractAnnotationItemEditOperation.Type
        TranslateItem = ... # type: QgsAbstractAnnotationItemEditOperation.Type

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

    def itemId(self) -> str: ...
    def type(self) -> 'QgsAbstractAnnotationItemEditOperation.Type': ...


class QgsAnnotationItemEditOperationMoveNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, nodeId: 'QgsVertexId', before: 'QgsPoint', after: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationMoveNode') -> None: ...

    def after(self) -> 'QgsPoint': ...
    def before(self) -> 'QgsPoint': ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationDeleteNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, nodeId: 'QgsVertexId', before: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationDeleteNode') -> None: ...

    def before(self) -> 'QgsPoint': ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationAddNode(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, point: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationAddNode') -> None: ...

    def point(self) -> 'QgsPoint': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationTranslateItem(QgsAbstractAnnotationItemEditOperation):

    @typing.overload
    def __init__(self, itemId: str, translateX: float, translateY: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemEditOperationTranslateItem') -> None: ...

    def translationY(self) -> float: ...
    def translationX(self) -> float: ...
    def nodeId(self) -> 'QgsVertexId': ...
    def type(self) -> QgsAbstractAnnotationItemEditOperation.Type: ...


class QgsAnnotationItemEditOperationTransientResults(PyQt5.sip.wrapper):

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

    def representativeGeometry(self) -> 'QgsGeometry': ...


class QgsAnnotationItemNode(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, id: 'QgsVertexId', point: QgsPointXY, type: Qgis.AnnotationItemNodeType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemNode') -> None: ...

    def __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: str, visibleName: str, visiblePluralName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAnnotationItemAbstractMetadata') -> None: ...

    def createItem(self) -> QgsAnnotationItem: ...
    def visiblePluralName(self) -> str: ...
    def visibleName(self) -> str: ...
    def type(self) -> str: ...


class QgsAnnotationItemRegistry(QtCore.QObject):

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

    typeAdded: typing.ClassVar[QtCore.pyqtsignal]
    def itemTypes(self) -> typing.Dict[str, str]: ...
    def createItem(self, type: str) -> QgsAnnotationItem: ...
    def addItemType(self, metadata: QgsAnnotationItemAbstractMetadata) -> bool: ...
    def itemMetadata(self, type: str) -> QgsAnnotationItemAbstractMetadata: ...
    def populate(self) -> bool: ...


class QgsAnnotationLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

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

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

    def setPaintEffect(self, effect: 'QgsPaintEffect') -> None: ...
    def paintEffect(self) -> 'QgsPaintEffect': ...
    def htmlMetadata(self) -> str: ...
    def dataProvider(self) -> 'QgsDataProvider': ...
    def supportsEditing(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, a3: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def clone(self) -> 'QgsAnnotationLayer': ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def itemsInBounds(self, bounds: 'QgsRectangle', context: QgsRenderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[str]: ...
    def item(self, id: str) -> QgsAnnotationItem: ...
    def items(self) -> typing.Any: ...
    def isEmpty(self) -> bool: ...
    def clear(self) -> None: ...
    def removeItem(self, id: str) -> bool: ...
    def replaceItem(self, id: str, item: QgsAnnotationItem) -> None: ...
    def addItem(self, item: QgsAnnotationItem) -> str: ...
    def reset(self) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsAnnotationLineItem(QgsAnnotationItem):

    def __init__(self, curve: 'QgsCurve') -> None: ...

    def setSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def symbol(self) -> 'QgsLineSymbol': ...
    def setGeometry(self, geometry: 'QgsCurve') -> None: ...
    def geometry(self) -> 'QgsCurve': ...
    def clone(self) -> 'QgsAnnotationLineItem': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationLineItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationMarkerItem(QgsAnnotationItem):

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

    def setSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def symbol(self) -> 'QgsMarkerSymbol': ...
    def setGeometry(self, geometry: 'QgsPoint') -> None: ...
    def geometry(self) -> QgsPointXY: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationMarkerItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationMarkerItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsAnnotationManager(QtCore.QObject):

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

    annotationAboutToBeRemoved: typing.ClassVar[QtCore.pyqtsignal]
    annotationRemoved: typing.ClassVar[QtCore.pyqtsignal]
    annotationAdded: typing.ClassVar[QtCore.pyqtsignal]
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def cloneAnnotations(self) -> typing.List[QgsAnnotation]: ...
    def annotations(self) -> typing.List[QgsAnnotation]: ...
    def clear(self) -> None: ...
    def removeAnnotation(self, annotation: QgsAnnotation) -> bool: ...
    def addAnnotation(self, annotation: QgsAnnotation) -> bool: ...


class QgsAnnotationPointTextItem(QgsAnnotationItem):

    def __init__(self, text: str, point: QgsPointXY) -> None: ...

    def setAlignment(self, alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> None: ...
    def alignment(self) -> QtCore.Qt.Alignment: ...
    def setAngle(self, angle: float) -> None: ...
    def angle(self) -> float: ...
    def setFormat(self, format: 'QgsTextFormat') -> None: ...
    def format(self) -> 'QgsTextFormat': ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def setPoint(self, point: QgsPointXY) -> None: ...
    def point(self) -> QgsPointXY: ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    @typing.overload
    def boundingBox(self) -> 'QgsRectangle': ...
    @typing.overload
    def boundingBox(self, context: QgsRenderContext) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationPointTextItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationPointTextItem': ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...
    def flags(self) -> Qgis.AnnotationItemFlags: ...


class QgsAnnotationPolygonItem(QgsAnnotationItem):

    def __init__(self, polygon: 'QgsCurvePolygon') -> None: ...

    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def setGeometry(self, geometry: 'QgsCurvePolygon') -> None: ...
    def geometry(self) -> 'QgsCurvePolygon': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clone(self) -> 'QgsAnnotationPolygonItem': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    @staticmethod
    def create() -> 'QgsAnnotationPolygonItem': ...
    def transientEditResults(self, operation: QgsAbstractAnnotationItemEditOperation) -> QgsAnnotationItemEditOperationTransientResults: ...
    def applyEdit(self, operation: QgsAbstractAnnotationItemEditOperation) -> Qgis.AnnotationItemEditOperationResult: ...
    def nodes(self) -> typing.List[QgsAnnotationItemNode]: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def render(self, context: QgsRenderContext, feedback: QgsFeedback) -> None: ...
    def type(self) -> str: ...


class QgsHtmlAnnotation(QgsAnnotation):

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

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsHtmlAnnotation': ...
    def setAssociatedFeature(self, feature: QgsFeature) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def htmlSource(self) -> str: ...
    def setHtmlSource(self, htmlSource: str) -> None: ...
    def sourceFile(self) -> str: ...
    def setSourceFile(self, htmlFile: str) -> None: ...
    def minimumFrameSize(self) -> QtCore.QSizeF: ...
    def clone(self) -> 'QgsHtmlAnnotation': ...


class QgsRenderedAnnotationItemDetails(QgsRenderedItemDetails):

    @typing.overload
    def __init__(self, layerId: str, itemId: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRenderedAnnotationItemDetails') -> None: ...

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


class QgsSvgAnnotation(QgsAnnotation):

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

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsSvgAnnotation': ...
    def filePath(self) -> str: ...
    def setFilePath(self, file: str) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsSvgAnnotation': ...


class QgsTextAnnotation(QgsAnnotation):

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

    def renderAnnotation(self, context: QgsRenderContext, size: QtCore.QSizeF) -> None: ...
    @staticmethod
    def create() -> 'QgsTextAnnotation': ...
    def readXml(self, itemElem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def setDocument(self, doc: QtGui.QTextDocument) -> None: ...
    def document(self) -> QtGui.QTextDocument: ...
    def clone(self) -> 'QgsTextAnnotation': ...


class QgsAuthCertUtils(PyQt5.sip.wrapper):

    class ConstraintGroup(int):
        KeyUsage = ... # type: QgsAuthCertUtils.ConstraintGroup
        ExtendedKeyUsage = ... # type: QgsAuthCertUtils.ConstraintGroup

    class CertUsageType(int):
        UndeterminedUsage = ... # type: QgsAuthCertUtils.CertUsageType
        AnyOrUnspecifiedUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CertAuthorityUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CertIssuerUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsServerUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsServerEvUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TlsClientUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CodeSigningUsage = ... # type: QgsAuthCertUtils.CertUsageType
        EmailProtectionUsage = ... # type: QgsAuthCertUtils.CertUsageType
        TimeStampingUsage = ... # type: QgsAuthCertUtils.CertUsageType
        CRLSigningUsage = ... # type: QgsAuthCertUtils.CertUsageType

    class CertTrustPolicy(int):
        DefaultTrust = ... # type: QgsAuthCertUtils.CertTrustPolicy
        Trusted = ... # type: QgsAuthCertUtils.CertTrustPolicy
        Untrusted = ... # type: QgsAuthCertUtils.CertTrustPolicy
        NoPolicy = ... # type: QgsAuthCertUtils.CertTrustPolicy

    class CaCertSource(int):
        SystemRoot = ... # type: QgsAuthCertUtils.CaCertSource
        FromFile = ... # type: QgsAuthCertUtils.CaCertSource
        InDatabase = ... # type: QgsAuthCertUtils.CaCertSource
        Connection = ... # type: QgsAuthCertUtils.CaCertSource

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

    @staticmethod
    def validatePKIBundle(bundle: 'QgsPkiBundle', useIntermediates: bool = ..., trustRootCa: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def validateCertChain(certificateChain: typing.Iterable[QtNetwork.QSslCertificate], hostName: str = ..., trustRootCa: bool = ...) -> typing.List[QtNetwork.QSslError]: ...
    @staticmethod
    def certIsViable(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certViabilityErrors(cert: QtNetwork.QSslCertificate) -> typing.List[QtNetwork.QSslError]: ...
    @staticmethod
    def certIsCurrent(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def sslErrorEnumString(errenum: QtNetwork.QSslError.SslError) -> str: ...
    @staticmethod
    def certificateIsSslClient(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsSslServer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsAuthorityOrIssuer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsIssuer(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateIsAuthority(cert: QtNetwork.QSslCertificate) -> bool: ...
    @staticmethod
    def certificateUsageTypes(cert: QtNetwork.QSslCertificate) -> typing.List['QgsAuthCertUtils.CertUsageType']: ...
    @staticmethod
    def shaHexForCert(cert: QtNetwork.QSslCertificate, formatted: bool = ...) -> str: ...
    @staticmethod
    def getColonDelimited(txt: str) -> str: ...
    @staticmethod
    def getCertTrustName(trust: 'QgsAuthCertUtils.CertTrustPolicy') -> str: ...
    @staticmethod
    def resolvedCertName(cert: QtNetwork.QSslCertificate, issuer: bool = ...) -> str: ...
    @staticmethod
    def getCaSourceName(source: 'QgsAuthCertUtils.CaCertSource', single: bool = ...) -> str: ...
    @staticmethod
    def pemTextToTempFile(name: str, pemtext: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> str: ...
    @staticmethod
    def certsToPemText(certs: typing.Iterable[QtNetwork.QSslCertificate]) -> QtCore.QByteArray: ...
    @staticmethod
    def pkcs12BundleCas(bundlepath: str, bundlepass: str = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def pkcs12BundleToPem(bundlepath: str, bundlepass: str = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def pemIsPkcs8(keyPemTxt: str) -> bool: ...
    @staticmethod
    def certKeyBundleToPem(certpath: str, keypath: str, keypass: str = ..., reencrypt: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def casRemoveSelfSigned(caList: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromString(pemtext: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def keyFromFile(keypath: str, keypass: str = ..., algtype: typing.Optional[str] = ...) -> QtNetwork.QSslKey: ...
    @staticmethod
    def casMerge(bundle1: typing.Iterable[QtNetwork.QSslCertificate], bundle2: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certFromFile(certpath: str) -> QtNetwork.QSslCertificate: ...
    @staticmethod
    def casFromFile(certspath: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def certsFromFile(certspath: str) -> typing.List[QtNetwork.QSslCertificate]: ...
    @staticmethod
    def fileData(path: str) -> QtCore.QByteArray: ...
    @staticmethod
    def mapDigestToSslConfigs(configs: typing.Iterable['QgsAuthConfigSslServer']) -> typing.Dict[str, 'QgsAuthConfigSslServer']: ...
    @staticmethod
    def mapDigestToCerts(certs: typing.Iterable[QtNetwork.QSslCertificate]) -> typing.Dict[str, QtNetwork.QSslCertificate]: ...
    @staticmethod
    def getSslProtocolName(protocol: QtNetwork.QSsl.SslProtocol) -> str: ...


class QgsAuthMethodConfig(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, method: str = ..., version: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAuthMethodConfig') -> None: ...

    def readXml(self, element: QtXml.QDomElement) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    @staticmethod
    def uriToResource(accessurl: str, resource: str, withpath: bool = ...) -> bool: ...
    def clearConfigMap(self) -> None: ...
    def hasConfig(self, key: str) -> bool: ...
    def configList(self, key: str) -> typing.List[str]: ...
    def config(self, key: str, defaultvalue: str = ...) -> str: ...
    def removeConfig(self, key: str) -> int: ...
    def setConfigList(self, key: str, value: typing.Iterable[str]) -> None: ...
    def setConfig(self, key: str, value: str) -> None: ...
    def setConfigMap(self, map: typing.Dict[str, str]) -> None: ...
    def configMap(self) -> typing.Dict[str, str]: ...
    def loadConfigString(self, configstr: str) -> None: ...
    def configString(self) -> str: ...
    def isValid(self, validateid: bool = ...) -> bool: ...
    def setVersion(self, version: int) -> None: ...
    def version(self) -> int: ...
    def setMethod(self, method: str) -> None: ...
    def method(self) -> str: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...
    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: str, bundlepass: str = ...) -> 'QgsPkiBundle': ...
    @staticmethod
    def fromPemPaths(certPath: str, keyPath: str, keyPass: str = ..., caChain: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> 'QgsPkiBundle': ...


class QgsPkiConfigBundle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, config: QgsAuthMethodConfig, cert: QtNetwork.QSslCertificate, certkey: QtNetwork.QSslKey, cachain: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPkiConfigBundle') -> None: ...

    def setCaChain(self, caChain: typing.Iterable[QtNetwork.QSslCertificate]) -> None: ...
    def caChain(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def setClientCertKey(self, certkey: QtNetwork.QSslKey) -> None: ...
    def clientCertKey(self) -> QtNetwork.QSslKey: ...
    def setClientCert(self, cert: QtNetwork.QSslCertificate) -> None: ...
    def clientCert(self) -> QtNetwork.QSslCertificate: ...
    def setConfig(self, config: QgsAuthMethodConfig) -> None: ...
    def config(self) -> QgsAuthMethodConfig: ...
    def isValid(self) -> bool: ...


class QgsAuthConfigSslServer(PyQt5.sip.wrapper):

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

    def isNull(self) -> bool: ...
    def loadConfigString(self, config: str = ...) -> None: ...
    def configString(self) -> str: ...
    def setQtVersion(self, version: int) -> None: ...
    def qtVersion(self) -> int: ...
    def setVersion(self, version: int) -> None: ...
    def version(self) -> int: ...
    def setSslPeerVerifyDepth(self, depth: int) -> None: ...
    def sslPeerVerifyDepth(self) -> int: ...
    def setSslPeerVerifyMode(self, mode: QtNetwork.QSslSocket.PeerVerifyMode) -> None: ...
    def sslPeerVerifyMode(self) -> QtNetwork.QSslSocket.PeerVerifyMode: ...
    def setSslIgnoredErrorEnums(self, errors: typing.Any) -> None: ...
    def sslIgnoredErrorEnums(self) -> typing.Any: ...
    def sslIgnoredErrors(self) -> typing.List[QtNetwork.QSslError]: ...
    def setSslProtocol(self, protocol: QtNetwork.QSsl.SslProtocol) -> None: ...
    def sslProtocol(self) -> QtNetwork.QSsl.SslProtocol: ...
    def setSslHostPort(self, hostport: str) -> None: ...
    def sslHostPort(self) -> str: ...
    def setSslCertificate(self, cert: QtNetwork.QSslCertificate) -> None: ...
    def sslCertificate(self) -> QtNetwork.QSslCertificate: ...


class QgsAuthManager(QtCore.QObject):

    class MessageLevel(int):
        INFO = ... # type: QgsAuthManager.MessageLevel
        WARNING = ... # type: QgsAuthManager.MessageLevel
        CRITICAL = ... # type: QgsAuthManager.MessageLevel

    AUTH_MAN_TAG = ... # type: str
    AUTH_PASSWORD_HELPER_DISPLAY_NAME = ... # type: str

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

    def clearCachedConfig(self, authcfg: str) -> None: ...
    def clearAllCachedConfigs(self) -> None: ...
    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: ...
    def passwordHelperEnabled(self) -> bool: ...
    def trustedCaCertsPemText(self) -> QtCore.QByteArray: ...
    def trustedCaCertsCache(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def rebuildTrustedCaCertsCache(self) -> bool: ...
    def untrustedCaCerts(self, trustedCAs: typing.Iterable[QtNetwork.QSslCertificate] = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    def trustedCaCerts(self, includeinvalid: bool = ...) -> typing.List[QtNetwork.QSslCertificate]: ...
    def rebuildCertTrustCache(self) -> bool: ...
    def certTrustCache(self) -> typing.Dict[QgsAuthCertUtils.CertTrustPolicy, typing.List[str]]: ...
    def defaultCertTrustPolicy(self) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def setDefaultCertTrustPolicy(self, policy: QgsAuthCertUtils.CertTrustPolicy) -> bool: ...
    def certificateTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def removeCertTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def removeCertTrustPolicies(self, certs: typing.Iterable[QtNetwork.QSslCertificate]) -> bool: ...
    def certTrustPolicy(self, cert: QtNetwork.QSslCertificate) -> QgsAuthCertUtils.CertTrustPolicy: ...
    def storeCertTrustPolicy(self, cert: QtNetwork.QSslCertificate, policy: QgsAuthCertUtils.CertTrustPolicy) -> bool: ...
    def rebuildCaCertsCache(self) -> bool: ...
    def mappedDatabaseCAs(self) -> typing.Dict[str, QtNetwork.QSslCertificate]: ...
    def databaseCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def extraFileCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def systemRootCAs(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def removeCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def existsCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def certAuthority(self, id: str) -> QtNetwork.QSslCertificate: ...
    def storeCertAuthority(self, cert: QtNetwork.QSslCertificate) -> bool: ...
    def storeCertAuthorities(self, certs: typing.Iterable[QtNetwork.QSslCertificate]) -> bool: ...
    def rebuildIgnoredSslErrorCache(self) -> bool: ...
    def updateIgnoredSslErrorsCache(self, shahostport: str, errors: typing.Iterable[QtNetwork.QSslError]) -> bool: ...
    def updateIgnoredSslErrorsCacheFromConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def dumpIgnoredSslErrorsCache_(self) -> None: ...
    def removeSslCertCustomConfig(self, id: str, hostport: str) -> bool: ...
    def existsSslCertCustomConfig(self, id: str, hostport: str) -> bool: ...
    def sslCertCustomConfigs(self) -> typing.List[QgsAuthConfigSslServer]: ...
    def sslCertCustomConfigByHost(self, hostport: str) -> QgsAuthConfigSslServer: ...
    def sslCertCustomConfig(self, id: str, hostport: str) -> QgsAuthConfigSslServer: ...
    def storeSslCertCustomConfig(self, config: QgsAuthConfigSslServer) -> bool: ...
    def removeCertIdentity(self, id: str) -> bool: ...
    def existsCertIdentity(self, id: str) -> bool: ...
    def certIdentityIds(self) -> typing.List[str]: ...
    def certIdentities(self) -> typing.List[QtNetwork.QSslCertificate]: ...
    def certIdentityBundleToPem(self, id: str) -> typing.List[str]: ...
    def certIdentity(self, id: str) -> QtNetwork.QSslCertificate: ...
    def storeCertIdentity(self, cert: QtNetwork.QSslCertificate, key: QtNetwork.QSslKey) -> bool: ...
    def initSslCaches(self) -> bool: ...
    def removeAuthSetting(self, key: str) -> bool: ...
    def existsAuthSetting(self, key: str) -> bool: ...
    def authSetting(self, key: str, defaultValue: typing.Any = ..., decrypt: bool = ...) -> typing.Any: ...
    def storeAuthSetting(self, key: str, value: typing.Any, encrypt: bool = ...) -> bool: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, QtNetwork.QNetworkProxy]: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[str], authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def updateNetworkReply(self, reply: QtNetwork.QNetworkReply, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: str, dataprovider: str = ...) -> typing.Tuple[bool, QtNetwork.QNetworkRequest]: ...
    def eraseAuthenticationDatabase(self, backup: bool, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def backupAuthenticationDatabase(self, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def removeAllAuthenticationConfigs(self) -> bool: ...
    def importAuthenticationConfigsFromXml(self, filename: str, password: str = ..., overwrite: bool = ...) -> bool: ...
    def exportAuthenticationConfigsToXml(self, filename: str, authcfgs: typing.Iterable[str], password: str = ...) -> bool: ...
    def removeAuthenticationConfig(self, authcfg: str) -> bool: ...
    def loadAuthenticationConfig(self, authcfg: str, mconfig: QgsAuthMethodConfig, full: bool = ...) -> typing.Tuple[bool, QgsAuthMethodConfig]: ...
    def updateAuthenticationConfig(self, config: QgsAuthMethodConfig) -> bool: ...
    def storeAuthenticationConfig(self, mconfig: QgsAuthMethodConfig, overwrite: bool = ...) -> typing.Tuple[bool, QgsAuthMethodConfig]: ...
    def configIds(self) -> typing.List[str]: ...
    def configIdRegex(self) -> str: ...
    def hasConfigId(self, txt: str) -> bool: ...
    def configIdUnique(self, id: str) -> bool: ...
    def uniqueConfigId(self) -> str: ...
    def supportedAuthMethodExpansions(self, authcfg: str) -> 'QgsAuthMethod.Expansions': ...
    def authMethodEditWidget(self, authMethodKey: str, parent: QtWidgets.QWidget) -> QtWidgets.QWidget: ...
    def authMethod(self, authMethodKey: str) -> 'QgsAuthMethod': ...
    def authMethodsKeys(self, dataprovider: str = ...) -> typing.List[str]: ...
    def configAuthMethodKey(self, authcfg: str) -> str: ...
    def configAuthMethod(self, authcfg: str) -> 'QgsAuthMethod': ...
    def updateConfigAuthMethods(self) -> None: ...
    def availableAuthMethodConfigs(self, dataprovider: str = ...) -> typing.Dict[str, QgsAuthMethodConfig]: ...
    def registerCoreAuthMethods(self) -> bool: ...
    def authManTag(self) -> str: ...
    def setScheduledAuthDatabaseEraseRequestEmitted(self, emitted: bool) -> None: ...
    def resetMasterPassword(self, newpass: str, oldpass: str, keepbackup: bool, backuppath: typing.Optional[str] = ...) -> typing.Tuple[bool, str]: ...
    def masterPasswordSame(self, pass_: str) -> bool: ...
    def clearMasterPassword(self) -> None: ...
    def masterPasswordHashInDatabase(self) -> bool: ...
    def masterPasswordIsSet(self) -> bool: ...
    def verifyMasterPassword(self, compare: str = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, verify: bool = ...) -> bool: ...
    @typing.overload
    def setMasterPassword(self, pass_: str, verify: bool = ...) -> bool: ...
    def authenticationDatabasePath(self) -> str: ...
    def disabledMessage(self) -> str: ...
    def isDisabled(self) -> bool: ...
    def authDatabaseServersTable(self) -> str: ...
    def authDatabaseConfigTable(self) -> str: ...
    def authDatabaseConnection(self) -> QtSql.QSqlDatabase: ...
    def init(self, pluginPath: str = ..., authDatabasePath: str = ...) -> bool: ...


class QgsAuthMethod(QtCore.QObject):

    class Expansion(int):
        NetworkRequest = ... # type: QgsAuthMethod.Expansion
        NetworkReply = ... # type: QgsAuthMethod.Expansion
        DataSourceUri = ... # type: QgsAuthMethod.Expansion
        GenericDataSourceUri = ... # type: QgsAuthMethod.Expansion
        NetworkProxy = ... # type: QgsAuthMethod.Expansion
        All = ... # type: QgsAuthMethod.Expansion

    class Expansions(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> None: ...

        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[str]) -> None: ...
    def setExpansions(self, expansions: typing.Union['QgsAuthMethod.Expansions', 'QgsAuthMethod.Expansion']) -> None: ...
    def setVersion(self, version: int) -> None: ...
    @staticmethod
    def authMethodTag() -> str: ...
    def updateMethodConfig(self, mconfig: QgsAuthMethodConfig) -> None: ...
    def clearCachedConfig(self, authcfg: str) -> None: ...
    def updateNetworkProxy(self, proxy: QtNetwork.QNetworkProxy, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateDataSourceUriItems(self, connectionItems: typing.Iterable[str], authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkReply(self, reply: QtNetwork.QNetworkReply, authcfg: str, dataprovider: str = ...) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest, authcfg: str, dataprovider: str = ...) -> bool: ...
    def supportedDataProviders(self) -> typing.List[str]: ...
    def supportedExpansions(self) -> 'QgsAuthMethod.Expansions': ...
    def editWidget(self, parent: QtWidgets.QWidget) -> QtWidgets.QWidget: ...
    def version(self) -> int: ...
    def displayDescription(self) -> str: ...
    def description(self) -> str: ...
    def key(self) -> str: ...


class QgsBrowserModel(QtCore.QAbstractItemModel):

    class ItemDataRole(int):
        PathRole = ... # type: QgsBrowserModel.ItemDataRole
        CommentRole = ... # type: QgsBrowserModel.ItemDataRole
        SortRole = ... # type: QgsBrowserModel.ItemDataRole
        ProviderKeyRole = ... # type: QgsBrowserModel.ItemDataRole
        LayerMetadataRole = ... # type: QgsBrowserModel.ItemDataRole

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

    def removeRootItems(self) -> None: ...
    def addRootItems(self) -> None: ...
    def initialize(self) -> None: ...
    def hidePath(self, item: 'QgsDataItem') -> None: ...
    def updateProjectHome(self) -> None: ...
    def removeFavorite(self, index: QtCore.QModelIndex) -> None: ...
    def addFavoriteDirectory(self, directory: str, name: str = ...) -> None: ...
    def itemStateChanged(self, item: 'QgsDataItem', oldState: Qgis.BrowserItemState) -> None: ...
    def itemDataChanged(self, item: 'QgsDataItem') -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: 'QgsDataItem', first: int, last: int) -> None: ...
    def refreshDrives(self) -> None: ...
    def reload(self) -> None: ...
    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: 'QgsDataItem') -> None: ...
    def findUri(self, uri: str, index: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def findPath(self, path: str, matchFlag: QtCore.Qt.MatchFlag = ...) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: str) -> None: ...
    @typing.overload
    def refresh(self, index: QtCore.QModelIndex = ...) -> None: ...
    def dataItem(self, idx: QtCore.QModelIndex) -> 'QgsDataItem': ...
    def findItem(self, item: 'QgsDataItem', parent: typing.Optional['QgsDataItem'] = ...) -> QtCore.QModelIndex: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...


class QgsBrowserProxyModel(QtCore.QSortFilterProxyModel):

    class FilterSyntax(int):
        Normal = ... # type: QgsBrowserProxyModel.FilterSyntax
        Wildcards = ... # type: QgsBrowserProxyModel.FilterSyntax
        RegularExpression = ... # type: QgsBrowserProxyModel.FilterSyntax

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

    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setShowLayers(self, showLayers: bool) -> None: ...
    def showLayers(self) -> bool: ...
    def setShownDataItemProviderKeyFilter(self, shownItemsFilter: typing.Iterable[str]) -> None: ...
    def setHiddenDataItemProviderKeyFilter(self, hiddenItemsFilter: typing.Iterable[str]) -> None: ...
    def setLayerType(self, type: QgsMapLayerType) -> None: ...
    def layerType(self) -> QgsMapLayerType: ...
    def setFilterByLayerType(self, enabled: bool) -> None: ...
    def filterByLayerType(self) -> bool: ...
    def caseSensitivity(self) -> QtCore.Qt.CaseSensitivity: ...
    def setFilterCaseSensitivity(self, sensitivity: QtCore.Qt.CaseSensitivity) -> None: ...
    def filterString(self) -> str: ...
    def setFilterString(self, filter: str) -> None: ...
    def filterSyntax(self) -> 'QgsBrowserProxyModel.FilterSyntax': ...
    def setFilterSyntax(self, syntax: 'QgsBrowserProxyModel.FilterSyntax') -> None: ...
    def dataItem(self, index: QtCore.QModelIndex) -> 'QgsDataItem': ...
    def browserModel(self) -> QgsBrowserModel: ...
    def setBrowserModel(self, model: QgsBrowserModel) -> None: ...


class QgsDataItem(QtCore.QObject):

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

    def updateIcon(self) -> None: ...
    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: str = ...) -> None: ...
    def depopulate(self) -> None: ...
    def deferredDelete(self) -> bool: ...
    @typing.overload
    def refresh(self, children: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def refresh(self) -> None: ...
    @typing.overload
    def populate(self, children: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def populate(self, foreground: bool = ...) -> None: ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    def moveToThread(self, targetThread: QtCore.QThread) -> None: ...
    @typing.overload
    @staticmethod
    def deleteLater(items: typing.Iterable['QgsDataItem']) -> None: ...
    @typing.overload
    def deleteLater(self) -> None: ...
    def toolTip(self) -> str: ...
    def setToolTip(self, msg: str) -> None: ...
    def setIconName(self, iconName: str) -> None: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def setSortKey(self, key: typing.Any) -> None: ...
    def sortKey(self) -> typing.Any: ...
    @staticmethod
    def pathComponent(component: str) -> str: ...
    def setProviderKey(self, value: str) -> None: ...
    def providerKey(self) -> str: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def children(self) -> typing.List['QgsDataItem']: ...
    def setParent(self, parent: 'QgsDataItem') -> None: ...
    def parent(self) -> 'QgsDataItem': ...
    def type(self) -> Qgis.BrowserItemType: ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsDataItem'], item: 'QgsDataItem') -> int: ...
    def setCapabilities(self, capabilities: int) -> None: ...
    def setCapabilitiesV2(self, capabilities: typing.Union[Qgis.BrowserItemCapabilities, Qgis.BrowserItemCapability]) -> None: ...
    def capabilities2(self) -> Qgis.BrowserItemCapabilities: ...
    def rename(self, name: str) -> bool: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> bool: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def mimeUri(self) -> QgsMimeDataUtils.Uri: ...
    def hasDragEnabled(self) -> bool: ...
    def handleDoubleClick(self) -> bool: ...
    def handleDrop(self, a0: QtCore.QMimeData, a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def menus(self, parent: QtWidgets.QWidget) -> typing.List[QtWidgets.QMenu]: ...
    def actions(self, parent: QtWidgets.QWidget) -> typing.List[QtWidgets.QAction]: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    def equal(self, other: 'QgsDataItem') -> bool: ...
    def removeChildItem(self, child: 'QgsDataItem') -> 'QgsDataItem': ...
    def deleteChildItem(self, child: 'QgsDataItem') -> None: ...
    def addChildItem(self, child: 'QgsDataItem', refresh: bool = ...) -> None: ...
    def setState(self, state: Qgis.BrowserItemState) -> None: ...
    def state(self) -> Qgis.BrowserItemState: ...
    def createChildren(self) -> typing.List['QgsDataItem']: ...
    def rowCount(self) -> int: ...
    def layerCollection(self) -> bool: ...
    def hasChildren(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsDataCollectionItem(QgsDataItem):

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

    @staticmethod
    def homeDirIcon(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def openDirIcon(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    @staticmethod
    def iconDataCollection() -> QtGui.QIcon: ...
    @staticmethod
    def iconDir(fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QtGui.QIcon: ...
    def addChild(self, item: QgsDataItem) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsConnectionsRootItem(QgsDataCollectionItem):

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

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


class QgsDatabaseSchemaItem(QgsDataCollectionItem):

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

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


class QgsErrorItem(QgsDataItem):

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

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


class QgsDataItemProvider(PyQt5.sip.wrapper):

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

    def handlesDirectoryPath(self, path: str) -> bool: ...
    def createDataItems(self, path: str, parentItem: QgsDataItem) -> typing.List[QgsDataItem]: ...
    def createDataItem(self, path: str, parentItem: QgsDataItem) -> QgsDataItem: ...
    def capabilities(self) -> int: ...
    def dataProviderKey(self) -> str: ...
    def name(self) -> str: ...


class QgsDataItemProviderRegistry(QtCore.QObject):

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

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


class QgsDirectoryItem(QgsDataCollectionItem):

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

    def directoryChanged(self) -> None: ...
    def childrenCreated(self) -> None: ...
    def setMonitoring(self, monitoring: Qgis.BrowserDirectoryMonitoring) -> None: ...
    def monitoring(self) -> Qgis.BrowserDirectoryMonitoring: ...
    def isMonitored(self) -> bool: ...
    @staticmethod
    def pathShouldByMonitoredByDefault(path: str) -> bool: ...
    @staticmethod
    def monitoringForPath(path: str) -> Qgis.BrowserDirectoryMonitoring: ...
    @staticmethod
    def hiddenPath(path: str) -> bool: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    @staticmethod
    def setCustomColor(directory: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setIconColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def iconColor(self) -> QtGui.QColor: ...
    def icon(self) -> QtGui.QIcon: ...
    def equal(self, other: QgsDataItem) -> bool: ...
    def dirPath(self) -> str: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def setState(self, state: Qgis.BrowserItemState) -> None: ...
    def __repr__(self) -> typing.Any: ...


class QgsDirectoryParamWidget(QtWidgets.QTreeWidget):

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

    def showHideColumn(self) -> None: ...
    def mousePressEvent(self, event: QtGui.QMouseEvent) -> None: ...


class QgsFavoritesItem(QgsDataCollectionItem):

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

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


class QgsFieldDomainsItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, path: str, connectionUri: str, providerKey: str) -> None: ...

    def connectionUri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldDomainItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, domain: 'QgsFieldDomain') -> None: ...

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


class QgsFieldsItem(QgsDataItem):

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

    def canRenameFields(self) -> bool: ...
    def tableProperty(self) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
    def layer(self) -> QgsVectorLayer: ...
    def connectionUri(self) -> str: ...
    def tableName(self) -> str: ...
    def schema(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsFieldItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, field: QgsField) -> None: ...

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


class QgsLayerItem(QgsDataItem):

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

    def setLayerMetadata(self, metadata: 'QgsLayerMetadata') -> None: ...
    def layerMetadata(self) -> 'QgsLayerMetadata': ...
    def databaseConnection(self) -> 'QgsAbstractDatabaseProviderConnection': ...
    def layerName(self) -> str: ...
    @staticmethod
    def iconPointCloud() -> QtGui.QIcon: ...
    @staticmethod
    def iconVectorTile() -> QtGui.QIcon: ...
    @staticmethod
    def iconMesh() -> QtGui.QIcon: ...
    @staticmethod
    def iconDefault() -> QtGui.QIcon: ...
    @staticmethod
    def iconRaster() -> QtGui.QIcon: ...
    @staticmethod
    def iconTable() -> QtGui.QIcon: ...
    @staticmethod
    def iconPolygon() -> QtGui.QIcon: ...
    @staticmethod
    def iconLine() -> QtGui.QIcon: ...
    @staticmethod
    def iconPoint() -> QtGui.QIcon: ...
    @staticmethod
    def iconForWkbType(type: 'QgsWkbTypes.Type') -> QtGui.QIcon: ...
    def deleteLayer(self) -> bool: ...
    @staticmethod
    def iconName(layerType: Qgis.BrowserLayerType) -> str: ...
    @staticmethod
    def layerTypeAsString(layerType: Qgis.BrowserLayerType) -> str: ...
    def comments(self) -> str: ...
    def supportedFormats(self) -> typing.List[str]: ...
    def supportedCrs(self) -> typing.List[str]: ...
    def providerKey(self) -> str: ...
    def uri(self) -> str: ...
    @staticmethod
    def typeFromMapLayer(layer: QgsMapLayer) -> Qgis.BrowserLayerType: ...
    def mapLayerType(self) -> QgsMapLayerType: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def equal(self, other: QgsDataItem) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsProjectItem(QgsDataItem):

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

    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...


class QgsRelationshipsItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, path: str, connectionUri: str, providerKey: str, schema: str = ..., tableName: str = ...) -> None: ...

    def tableName(self) -> str: ...
    def schema(self) -> str: ...
    def connectionUri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsRelationshipItem(QgsDataItem):

    def __init__(self, parent: QgsDataItem, relation: QgsWeakRelation) -> None: ...

    def relation(self) -> QgsWeakRelation: ...
    def icon(self) -> QtGui.QIcon: ...
    def __repr__(self) -> typing.Any: ...


class QgsZipItem(QgsDataCollectionItem):

    sProviderNames = ... # type: typing.Iterable[str]

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

    @staticmethod
    def iconZip() -> QtGui.QIcon: ...
    @staticmethod
    def itemFromFilePath(parent: QgsDataItem, filePath: str, name: str, path: str) -> QgsDataItem: ...
    @staticmethod
    def itemFromPath(parent: QgsDataItem, path: str, name: str) -> QgsDataItem: ...
    @staticmethod
    def vsiPrefix(uri: str) -> str: ...
    def mimeUris(self) -> typing.List[QgsMimeDataUtils.Uri]: ...
    def hasDragEnabled(self) -> bool: ...
    def getZipFileList(self) -> typing.List[str]: ...
    def createChildren(self) -> typing.List[QgsDataItem]: ...
    def __repr__(self) -> typing.Any: ...


class QgsCallout(PyQt5.sip.wrapper):

    class LabelAnchorPoint(int):
        LabelPointOnExterior = ... # type: QgsCallout.LabelAnchorPoint
        LabelCentroid = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopMiddle = ... # type: QgsCallout.LabelAnchorPoint
        LabelTopRight = ... # type: QgsCallout.LabelAnchorPoint
        LabelMiddleLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelMiddleRight = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomLeft = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomMiddle = ... # type: QgsCallout.LabelAnchorPoint
        LabelBottomRight = ... # type: QgsCallout.LabelAnchorPoint

    class AnchorPoint(int):
        PoleOfInaccessibility = ... # type: QgsCallout.AnchorPoint
        PointOnExterior = ... # type: QgsCallout.AnchorPoint
        PointOnSurface = ... # type: QgsCallout.AnchorPoint
        Centroid = ... # type: QgsCallout.AnchorPoint

    class DrawOrder(int):
        OrderBelowAllLabels = ... # type: QgsCallout.DrawOrder
        OrderBelowIndividualLabels = ... # type: QgsCallout.DrawOrder

    class Property(int):
        MinimumCalloutLength = ... # type: QgsCallout.Property
        OffsetFromAnchor = ... # type: QgsCallout.Property
        OffsetFromLabel = ... # type: QgsCallout.Property
        DrawCalloutToAllParts = ... # type: QgsCallout.Property
        AnchorPointPosition = ... # type: QgsCallout.Property
        LabelAnchorPointPosition = ... # type: QgsCallout.Property
        OriginX = ... # type: QgsCallout.Property
        OriginY = ... # type: QgsCallout.Property
        DestinationX = ... # type: QgsCallout.Property
        DestinationY = ... # type: QgsCallout.Property
        Curvature = ... # type: QgsCallout.Property
        Orientation = ... # type: QgsCallout.Property
        Margins = ... # type: QgsCallout.Property
        WedgeWidth = ... # type: QgsCallout.Property
        CornerRadius = ... # type: QgsCallout.Property
        BlendMode = ... # type: QgsCallout.Property

    class QgsCalloutContext(PyQt5.sip.wrapper):

        allFeaturePartsLabeled = ... # type: bool
        originalFeatureCrs = ... # type: 'QgsCoordinateReferenceSystem'

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

        def positions(self) -> typing.List['QgsCalloutPosition']: ...
        def addCalloutPosition(self, position: 'QgsCalloutPosition') -> None: ...
        def originalFeatureToMapTransform(self, renderContext: QgsRenderContext) -> 'QgsCoordinateTransform': ...

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

    def calloutLineToPart(self, labelGeometry: 'QgsGeometry', partGeometry: 'QgsAbstractGeometry', context: QgsRenderContext, calloutContext: 'QgsCallout.QgsCalloutContext') -> typing.Tuple['QgsGeometry', bool]: ...
    def calloutLabelPoint(self, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsCallout.LabelAnchorPoint', context: QgsRenderContext, calloutContext: 'QgsCallout.QgsCalloutContext') -> typing.Tuple['QgsGeometry', bool]: ...
    def labelAnchorGeometry(self, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsCallout.LabelAnchorPoint') -> 'QgsGeometry': ...
    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: 'QgsCallout.QgsCalloutContext') -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    @staticmethod
    def decodeLabelAnchorPoint(name: str) -> typing.Tuple['QgsCallout.LabelAnchorPoint', bool]: ...
    @staticmethod
    def encodeLabelAnchorPoint(anchor: 'QgsCallout.LabelAnchorPoint') -> str: ...
    def setLabelAnchorPoint(self, anchor: 'QgsCallout.LabelAnchorPoint') -> None: ...
    def labelAnchorPoint(self) -> 'QgsCallout.LabelAnchorPoint': ...
    @staticmethod
    def decodeAnchorPoint(name: str) -> typing.Tuple['QgsCallout.AnchorPoint', bool]: ...
    @staticmethod
    def encodeAnchorPoint(anchor: 'QgsCallout.AnchorPoint') -> str: ...
    def setAnchorPoint(self, anchor: 'QgsCallout.AnchorPoint') -> None: ...
    def anchorPoint(self) -> 'QgsCallout.AnchorPoint': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def render(self, context: QgsRenderContext, rect: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: 'QgsCallout.QgsCalloutContext') -> None: ...
    def drawOrder(self) -> 'QgsCallout.DrawOrder': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def containsAdvancedEffects(self) -> bool: ...
    def restoreProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsCallout': ...
    def type(self) -> str: ...


class QgsSimpleLineCallout(QgsCallout):

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

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> None: ...
    def setDrawCalloutToAllParts(self, drawToAllParts: bool) -> None: ...
    def drawCalloutToAllParts(self) -> bool: ...
    def offsetFromLabelMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetFromLabelMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetFromLabelUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetFromLabelUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetFromAnchorUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setMinimumLengthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setMinimumLength(self, length: float) -> None: ...
    def minimumLength(self) -> float: ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsSimpleLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsManhattanLineCallout(QgsSimpleLineCallout):

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

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def clone(self) -> 'QgsManhattanLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsCurvedLineCallout(QgsSimpleLineCallout):

    class Orientation(int):
        Automatic = ... # type: QgsCurvedLineCallout.Orientation
        Clockwise = ... # type: QgsCurvedLineCallout.Orientation
        CounterClockwise = ... # type: QgsCurvedLineCallout.Orientation

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

    def createCalloutLine(self, start: 'QgsPoint', end: 'QgsPoint', context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> 'QgsCurve': ...
    def setOrientation(self, orientation: 'QgsCurvedLineCallout.Orientation') -> None: ...
    def orientation(self) -> 'QgsCurvedLineCallout.Orientation': ...
    def setCurvature(self, curvature: float) -> None: ...
    def curvature(self) -> float: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsCurvedLineCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsBalloonCallout(QgsCallout):

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

    def draw(self, context: QgsRenderContext, bodyBoundingBox: QtCore.QRectF, angle: float, anchor: 'QgsGeometry', calloutContext: QgsCallout.QgsCalloutContext) -> None: ...
    def cornerRadiusMapUnitScale(self) -> QgsMapUnitScale: ...
    def setCornerRadiusMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def cornerRadiusUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setCornerRadiusUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setWedgeWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setWedgeWidth(self, width: float) -> None: ...
    def wedgeWidth(self) -> float: ...
    def marginsUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setMarginsUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetFromAnchorUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setOffsetFromAnchor(self, distance: float) -> None: ...
    def offsetFromAnchor(self) -> float: ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def properties(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsBalloonCallout': ...
    def type(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ..., context: QgsReadWriteContext = ...) -> QgsCallout: ...


class QgsCalloutAbstractMetadata(PyQt5.sip.wrapper):

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

    def createCalloutWidget(self, a0: QgsVectorLayer) -> QgsCalloutWidget: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsCallout: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsCalloutMetadata(QgsCalloutAbstractMetadata):

    def __init__(self, a0: 'QgsCalloutMetadata') -> None: ...

    def createCalloutWidget(self, vl: QgsVectorLayer) -> QgsCalloutWidget: ...
    def createCallout(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsCallout: ...


class QgsCalloutRegistry(PyQt5.sip.wrapper):

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

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


class QgsClassificationMethod(PyQt5.sip.wrapper):

    class ClassPosition(int):
        LowerBound = ... # type: QgsClassificationMethod.ClassPosition
        Inner = ... # type: QgsClassificationMethod.ClassPosition
        UpperBound = ... # type: QgsClassificationMethod.ClassPosition

    class MethodProperty(int):
        NoFlag = ... # type: QgsClassificationMethod.MethodProperty
        ValuesNotRequired = ... # type: QgsClassificationMethod.MethodProperty
        SymmetricModeAvailable = ... # type: QgsClassificationMethod.MethodProperty
        IgnoresClassCount = ... # type: QgsClassificationMethod.MethodProperty

    class MethodProperties(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsClassificationMethod.MethodProperties', 'QgsClassificationMethod.MethodProperty']) -> None: ...

        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: 'QgsProcessingParameterDefinition') -> None: ...
    def formatNumber(self, value: float) -> str: ...
    def copyBase(self, c: 'QgsClassificationMethod') -> None: ...
    def parameterValues(self) -> typing.Dict[str, typing.Any]: ...
    def setParameterValues(self, values: typing.Dict[str, typing.Any]) -> None: ...
    def parameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def parameterDefinition(self, parameterName: str) -> 'QgsProcessingParameterDefinition': ...
    @staticmethod
    def makeBreaksSymmetric(breaks: typing.Iterable[float], symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsClassificationMethod': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @typing.overload
    def classes(self, layer: QgsVectorLayer, expression: str, nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @typing.overload
    def classes(self, values: typing.Iterable[float], nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @typing.overload
    def classes(self, minimum: float, maximum: float, nclasses: int) -> typing.List['QgsClassificationRange']: ...
    @staticmethod
    def rangesToBreaks(classes: typing.Iterable['QgsClassificationRange']) -> typing.List[float]: ...
    def setLabelTrimTrailingZeroes(self, trimTrailingZeroes: bool) -> None: ...
    def labelTrimTrailingZeroes(self) -> bool: ...
    def setLabelPrecision(self, labelPrecision: int) -> None: ...
    def labelPrecision(self) -> int: ...
    def setLabelFormat(self, format: str) -> None: ...
    def labelFormat(self) -> str: ...
    def setSymmetricMode(self, enabled: bool, symmetryPoint: float = ..., symmetryAstride: bool = ...) -> None: ...
    def symmetryAstride(self) -> bool: ...
    def symmetryPoint(self) -> float: ...
    def symmetricModeEnabled(self) -> bool: ...
    def symmetricModeAvailable(self) -> bool: ...
    def codeComplexity(self) -> int: ...
    def valuesRequired(self) -> bool: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    def labelForRange(self, lowerValue: float, upperValue: float, position: 'QgsClassificationMethod.ClassPosition' = ...) -> str: ...
    @typing.overload
    def labelForRange(self, range: 'QgsRendererRange', position: 'QgsClassificationMethod.ClassPosition' = ...) -> str: ...
    def flags(self) -> 'QgsClassificationMethod.MethodProperties': ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsClassificationMethod': ...


class QgsClassificationCustom(QgsClassificationMethod):

    METHOD_ID = ... # type: str

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

    def valuesRequired(self) -> bool: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationEqualInterval(QgsClassificationMethod):

    METHOD_ID = ... # type: str

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

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationFixedInterval(QgsClassificationMethod):

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

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationJenks(QgsClassificationMethod):

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

    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationLogarithmic(QgsClassificationMethod):

    class NegativeValueHandling(int):
        NoHandling = ... # type: QgsClassificationLogarithmic.NegativeValueHandling
        Discard = ... # type: QgsClassificationLogarithmic.NegativeValueHandling
        PrependBreak = ... # type: QgsClassificationLogarithmic.NegativeValueHandling

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

    def valuesRequired(self) -> bool: ...
    def labelForRange(self, lowerValue: float, upperValue: float, position: QgsClassificationMethod.ClassPosition) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> QgsClassificationMethod: ...


class QgsClassificationRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, label: str, lowerBound: float, upperBound: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClassificationRange') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def label(self) -> str: ...
    def upperBound(self) -> float: ...
    def lowerBound(self) -> float: ...


class QgsClassificationMethodRegistry(PyQt5.sip.wrapper):

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

    def icon(self, id: str) -> QtGui.QIcon: ...
    def methodNames(self) -> typing.Dict[str, str]: ...
    def method(self, id: str) -> QgsClassificationMethod: ...
    def addMethod(self, method: QgsClassificationMethod) -> bool: ...


class QgsClassificationPrettyBreaks(QgsClassificationMethod):

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

    def valuesRequired(self) -> bool: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationQuantile(QgsClassificationMethod):

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

    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsClassificationStandardDeviation(QgsClassificationMethod):

    METHOD_ID = ... # type: str

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

    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def labelForRange(self, lowerValue: float, upperValue: float, position: QgsClassificationMethod.ClassPosition) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def clone(self) -> QgsClassificationMethod: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsDiagram(PyQt5.sip.wrapper):

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

    def sizeForValue(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def scaledFont(self, s: QgsDiagramSettings, c: QgsRenderContext) -> QtGui.QFont: ...
    @typing.overload
    def sizePainterUnits(self, size: QtCore.QSizeF, s: QgsDiagramSettings, c: QgsRenderContext) -> QtCore.QSizeF: ...
    @typing.overload
    def sizePainterUnits(self, l: float, s: QgsDiagramSettings, c: QgsRenderContext) -> float: ...
    def setPenWidth(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor], s: QgsDiagramSettings, c: QgsRenderContext) -> None: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def diagramName(self) -> str: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def getExpression(self, expression: str, context: QgsExpressionContext) -> 'QgsExpression': ...
    def clearCache(self) -> None: ...
    def clone(self) -> 'QgsDiagram': ...


class QgsHistogramDiagram(QgsDiagram):

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

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsHistogramDiagram': ...


class QgsPieDiagram(QgsDiagram):

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

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsPieDiagram': ...


class QgsStackedBarDiagram(QgsDiagram):

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

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsStackedBarDiagram': ...


class QgsTextDiagram(QgsDiagram):

    class Orientation(int):
        Horizontal = ... # type: QgsTextDiagram.Orientation
        Vertical = ... # type: QgsTextDiagram.Orientation

    class Shape(int):
        Circle = ... # type: QgsTextDiagram.Shape
        Rectangle = ... # type: QgsTextDiagram.Shape
        Triangle = ... # type: QgsTextDiagram.Shape

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

    def diagramName(self) -> str: ...
    def legendSize(self, value: float, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> float: ...
    @typing.overload
    def diagramSize(self, attributes: typing.Any, c: QgsRenderContext, s: QgsDiagramSettings) -> QtCore.QSizeF: ...
    @typing.overload
    def diagramSize(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, is_: QgsDiagramInterpolationSettings) -> QtCore.QSizeF: ...
    def renderDiagram(self, feature: QgsFeature, c: QgsRenderContext, s: QgsDiagramSettings, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def clone(self) -> 'QgsTextDiagram': ...


class QgsDxfExport(PyQt5.sip.wrapper):

    class DxfPolylineFlag(int):
        Closed = ... # type: QgsDxfExport.DxfPolylineFlag
        Curve = ... # type: QgsDxfExport.DxfPolylineFlag
        Spline = ... # type: QgsDxfExport.DxfPolylineFlag
        Is3DPolyline = ... # type: QgsDxfExport.DxfPolylineFlag
        Is3DPolygonMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        PolygonMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        PolyfaceMesh = ... # type: QgsDxfExport.DxfPolylineFlag
        ContinuousPattern = ... # type: QgsDxfExport.DxfPolylineFlag

    class HAlign(int):
        HLeft = ... # type: QgsDxfExport.HAlign
        HCenter = ... # type: QgsDxfExport.HAlign
        HRight = ... # type: QgsDxfExport.HAlign
        HAligned = ... # type: QgsDxfExport.HAlign
        HMiddle = ... # type: QgsDxfExport.HAlign
        HFit = ... # type: QgsDxfExport.HAlign
        Undefined = ... # type: QgsDxfExport.HAlign

    class VAlign(int):
        VBaseLine = ... # type: QgsDxfExport.VAlign
        VBottom = ... # type: QgsDxfExport.VAlign
        VMiddle = ... # type: QgsDxfExport.VAlign
        VTop = ... # type: QgsDxfExport.VAlign
        Undefined = ... # type: QgsDxfExport.VAlign

    class ExportResult(int):
        Success = ... # type: QgsDxfExport.ExportResult
        InvalidDeviceError = ... # type: QgsDxfExport.ExportResult
        DeviceNotWritableError = ... # type: QgsDxfExport.ExportResult
        EmptyExtentError = ... # type: QgsDxfExport.ExportResult

    class Flag(int):
        FlagNoMText = ... # type: QgsDxfExport.Flag

    class SymbologyExport(int):
        NoSymbology = ... # type: QgsDxfExport.SymbologyExport
        FeatureSymbology = ... # type: QgsDxfExport.SymbologyExport
        SymbolLayerSymbology = ... # type: QgsDxfExport.SymbologyExport

    class DxfLayer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, vl: QgsVectorLayer, layerOutputAttributeIndex: int = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDxfExport.DxfLayer') -> None: ...

        def splitLayerAttribute(self) -> str: ...
        def layerOutputAttributeIndex(self) -> int: ...
        def layer(self) -> QgsVectorLayer: ...

    class Flags(PyQt5.sip.wrapper):

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

        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: str, fid: int, layer: str) -> None: ...
    @staticmethod
    def encodings() -> typing.List[str]: ...
    @staticmethod
    def dxfEncoding(name: str) -> str: ...
    @staticmethod
    def dxfLayerName(name: str) -> str: ...
    def clipValueToMapUnitScale(self, scale: QgsMapUnitScale, pixelToMMFactor: float) -> float: ...
    @staticmethod
    def mapUnitScaleFactor(scale: float, symbolUnits: QgsUnitTypes.RenderUnit, mapUnits: QgsUnitTypes.DistanceUnit, mapUnitsPerPixel: float = ...) -> float: ...
    def writeMText(self, layer: str, text: str, pt: 'QgsPoint', width: float, angle: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def writeTextV2(self, layer: str, text: str, pt: 'QgsPoint', size: float, angle: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], hali: 'QgsDxfExport.HAlign' = ..., vali: 'QgsDxfExport.VAlign' = ...) -> None: ...
    def writeCircleV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float, lineStyleName: str, width: float) -> None: ...
    def writeFillCircleV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint', radius: float) -> None: ...
    def writePointV2(self, layer: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], pt: 'QgsPoint') -> None: ...
    def writeLine(self, pt1: 'QgsPoint', pt2: 'QgsPoint', layer: str, lineStyleName: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], width: float = ...) -> None: ...
    def writeHandle(self, code: int = ..., handle: int = ...) -> int: ...
    def writeString(self, s: str) -> None: ...
    def writeDouble(self, d: float) -> None: ...
    def writeInt(self, i: int) -> None: ...
    def writeGroupCode(self, code: int) -> None: ...
    def writeGroupPointV2(self, code: int, p: 'QgsPoint') -> None: ...
    @typing.overload
    def writeGroup(self, code: int, s: str) -> None: ...
    @typing.overload
    def writeGroup(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], exactMatch: int = ..., rgbCode: int = ..., transparencyCode: int = ...) -> None: ...
    def writeGroupDouble(self, code: int, d: float) -> None: ...
    def writeGroupLong(self, code: int, i: int) -> None: ...
    def writeGroupInt(self, code: int, i: int) -> None: ...
    @typing.overload
    def layerName(self, id: str, f: QgsFeature) -> str: ...
    @typing.overload
    def layerName(self, vl: QgsVectorLayer) -> str: ...
    @staticmethod
    def closestColorMatch(color: int) -> int: ...
    def force2d(self) -> bool: ...
    def setForce2d(self, force2d: bool) -> None: ...
    def layerTitleAsName(self) -> bool: ...
    def setLayerTitleAsName(self, layerTitleAsName: bool) -> None: ...
    def extent(self) -> 'QgsRectangle': ...
    def setExtent(self, r: 'QgsRectangle') -> None: ...
    def symbologyExport(self) -> 'QgsDxfExport.SymbologyExport': ...
    def setSymbologyExport(self, e: 'QgsDxfExport.SymbologyExport') -> None: ...
    def destinationCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setDestinationCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def mapUnits(self) -> QgsUnitTypes.DistanceUnit: ...
    def symbologyScale(self) -> float: ...
    def setSymbologyScale(self, scale: float) -> None: ...
    def writeToFile(self, d: QtCore.QIODevice, codec: str) -> 'QgsDxfExport.ExportResult': ...
    def addLayers(self, layers: typing.Iterable['QgsDxfExport.DxfLayer']) -> None: ...
    def flags(self) -> 'QgsDxfExport.Flags': ...
    def setFlags(self, flags: typing.Union['QgsDxfExport.Flags', 'QgsDxfExport.Flag']) -> None: ...
    def setMapSettings(self, settings: QgsMapSettings) -> None: ...


class QgsEditFormConfig(PyQt5.sip.wrapper):

    class DataDefinedProperty(int):
        NoProperty = ... # type: QgsEditFormConfig.DataDefinedProperty
        AllProperties = ... # type: QgsEditFormConfig.DataDefinedProperty
        Alias = ... # type: QgsEditFormConfig.DataDefinedProperty

    class PythonInitCodeSource(int):
        CodeSourceNone = ... # type: QgsEditFormConfig.PythonInitCodeSource
        CodeSourceFile = ... # type: QgsEditFormConfig.PythonInitCodeSource
        CodeSourceDialog = ... # type: QgsEditFormConfig.PythonInitCodeSource
        CodeSourceEnvironment = ... # type: QgsEditFormConfig.PythonInitCodeSource

    class FeatureFormSuppress(int):
        SuppressDefault = ... # type: QgsEditFormConfig.FeatureFormSuppress
        SuppressOn = ... # type: QgsEditFormConfig.FeatureFormSuppress
        SuppressOff = ... # type: QgsEditFormConfig.FeatureFormSuppress

    class EditorLayout(int):
        GeneratedLayout = ... # type: QgsEditFormConfig.EditorLayout
        TabLayout = ... # type: QgsEditFormConfig.EditorLayout
        UiFileLayout = ... # type: QgsEditFormConfig.EditorLayout

    class GroupData(PyQt5.sip.wrapper):

        mFields = ... # type: typing.Iterable[str]
        mName = ... # type: str

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

    class TabData(PyQt5.sip.wrapper):

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

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

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, o: 'QgsEditFormConfig') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    def __ne__(self, other: object): ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def dataDefinedFieldProperties(self, fieldName: str) -> QgsPropertyCollection: ...
    def setDataDefinedFieldProperties(self, fieldName: str, properties: QgsPropertyCollection) -> None: ...
    def attributeEditorElementFromDomElement(self, elem: QtXml.QDomElement, parent: 'QgsAttributeEditorElement', layerId: str = ..., context: QgsReadWriteContext = ...) -> 'QgsAttributeEditorElement': ...
    def writeXml(self, node: QtXml.QDomNode, context: QgsReadWriteContext) -> None: ...
    def readXml(self, node: QtXml.QDomNode, context: QgsReadWriteContext) -> None: ...
    def setSuppress(self, s: 'QgsEditFormConfig.FeatureFormSuppress') -> None: ...
    def suppress(self) -> 'QgsEditFormConfig.FeatureFormSuppress': ...
    def setInitCodeSource(self, initCodeSource: 'QgsEditFormConfig.PythonInitCodeSource') -> None: ...
    def initCodeSource(self) -> 'QgsEditFormConfig.PythonInitCodeSource': ...
    def setInitFilePath(self, filePath: str) -> None: ...
    def initFilePath(self) -> str: ...
    def setInitCode(self, code: str) -> None: ...
    def initCode(self) -> str: ...
    def setInitFunction(self, function: str) -> None: ...
    def initFunction(self) -> str: ...
    def setReuseLastValue(self, index: int, reuse: bool) -> None: ...
    def reuseLastValue(self, index: int) -> bool: ...
    def setLabelOnTop(self, idx: int, onTop: bool) -> None: ...
    def labelOnTop(self, idx: int) -> bool: ...
    def setReadOnly(self, idx: int, readOnly: bool = ...) -> None: ...
    def readOnly(self, idx: int) -> bool: ...
    def removeWidgetConfig(self, widgetName: str) -> bool: ...
    def widgetConfig(self, widgetName: str) -> typing.Dict[str, typing.Any]: ...
    def setWidgetConfig(self, widgetName: str, config: typing.Dict[str, typing.Any]) -> bool: ...
    def setUiForm(self, ui: str) -> None: ...
    def uiForm(self) -> str: ...
    def setLayout(self, editorLayout: 'QgsEditFormConfig.EditorLayout') -> None: ...
    def layout(self) -> 'QgsEditFormConfig.EditorLayout': ...
    def invisibleRootContainer(self) -> 'QgsAttributeEditorContainer': ...
    def clearTabs(self) -> None: ...
    def tabs(self) -> typing.List['QgsAttributeEditorElement']: ...
    def addTab(self, data: 'QgsAttributeEditorElement') -> None: ...
    def __eq__(self, other: object): ...


class QgsAttributeEditorElement(PyQt5.sip.wrapper):

    class AttributeEditorType(int):
        AeTypeContainer = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeField = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeRelation = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeInvalid = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeQmlElement = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeHtmlElement = ... # type: QgsAttributeEditorElement.AttributeEditorType
        AeTypeAction = ... # type: QgsAttributeEditorElement.AttributeEditorType

    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: 'QgsAttributeEditorElement.AttributeEditorType', name: str, parent: typing.Optional['QgsAttributeEditorElement'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorElement') -> None: ...

    def setLabelStyle(self, labelStyle: 'QgsAttributeEditorElement.LabelStyle') -> None: ...
    def labelStyle(self) -> 'QgsAttributeEditorElement.LabelStyle': ...
    def setShowLabel(self, showLabel: bool) -> None: ...
    def showLabel(self) -> bool: ...
    def clone(self, parent: 'QgsAttributeEditorElement') -> 'QgsAttributeEditorElement': ...
    def toDomElement(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def parent(self) -> 'QgsAttributeEditorElement': ...
    def type(self) -> 'QgsAttributeEditorElement.AttributeEditorType': ...
    def name(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, layerId: str, fields: QgsFields, context: QgsReadWriteContext, parent: typing.Optional['QgsAttributeEditorElement'] = ...) -> 'QgsAttributeEditorElement': ...


class QgsAttributeEditorAction(QgsAttributeEditorElement):

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

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


class QgsAttributeEditorContainer(QgsAttributeEditorElement):

    @typing.overload
    def __init__(self, name: str, parent: QgsAttributeEditorElement, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorContainer') -> None: ...

    def setBackgroundColor(self, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setVisibilityExpression(self, visibilityExpression: QgsOptionalExpression) -> None: ...
    def visibilityExpression(self) -> QgsOptionalExpression: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def setColumnCount(self, columnCount: int) -> None: ...
    def columnCount(self) -> int: ...
    def setName(self, name: str) -> None: ...
    def clear(self) -> None: ...
    def findElements(self, type: QgsAttributeEditorElement.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 addChildElement(self, element: QgsAttributeEditorElement) -> None: ...


class QgsAttributeEditorField(QgsAttributeEditorElement):

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

    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def idx(self) -> int: ...


class QgsAttributeEditorRelation(QgsAttributeEditorElement):

    class Button(int):
        Link = ... # type: QgsAttributeEditorRelation.Button
        Unlink = ... # type: QgsAttributeEditorRelation.Button
        SaveChildEdits = ... # type: QgsAttributeEditorRelation.Button
        AddChildFeature = ... # type: QgsAttributeEditorRelation.Button
        DuplicateChildFeature = ... # type: QgsAttributeEditorRelation.Button
        DeleteChildFeature = ... # type: QgsAttributeEditorRelation.Button
        ZoomToChildFeature = ... # type: QgsAttributeEditorRelation.Button
        AllButtons = ... # type: QgsAttributeEditorRelation.Button

    class Buttons(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAttributeEditorRelation.Buttons', 'QgsAttributeEditorRelation.Button']) -> None: ...

        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: str, relationId: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, name: str, relation: QgsRelation, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, relationId: str, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, relation: QgsRelation, parent: QgsAttributeEditorElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAttributeEditorRelation') -> None: ...

    def setRelationEditorConfiguration(self, config: typing.Dict[str, typing.Any]) -> None: ...
    def relationEditorConfiguration(self) -> typing.Dict[str, typing.Any]: ...
    def setRelationWidgetTypeId(self, relationWidgetTypeId: str) -> None: ...
    def relationWidgetTypeId(self) -> str: ...
    def setLabel(self, label: str = ...) -> None: ...
    def label(self) -> str: ...
    def setNmRelationId(self, nmRelationId: typing.Any = ...) -> None: ...
    def nmRelationId(self) -> typing.Any: ...
    def setForceSuppressFormPopup(self, forceSuppressFormPopup: bool) -> None: ...
    def forceSuppressFormPopup(self) -> bool: ...
    def clone(self, parent: QgsAttributeEditorElement) -> QgsAttributeEditorElement: ...
    def init(self, relManager: QgsRelationManager) -> bool: ...
    def relation(self) -> QgsRelation: ...


class QgsAttributeEditorHtmlElement(QgsAttributeEditorElement):

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

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


class QgsAttributeEditorQmlElement(QgsAttributeEditorElement):

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

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


class QgsProfileRenderContext(PyQt5.sip.wrapper):

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

    def setElevationRange(self, range: QgsDoubleRange) -> None: ...
    def elevationRange(self) -> QgsDoubleRange: ...
    def setDistanceRange(self, range: QgsDoubleRange) -> None: ...
    def distanceRange(self) -> QgsDoubleRange: ...
    def setWorldTransform(self, transform: QtGui.QTransform) -> None: ...
    def worldTransform(self) -> QtGui.QTransform: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsProfileIdentifyContext(PyQt5.sip.wrapper):

    displayRatioElevationVsDistance = ... # type: float
    maximumPointDistanceDelta = ... # type: float
    maximumPointElevationDelta = ... # type: float
    maximumSurfaceDistanceDelta = ... # type: float
    maximumSurfaceElevationDelta = ... # type: float
    project = ... # type: 'QgsProject'

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


class QgsProfileIdentifyResults(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: typing.Optional[QgsMapLayer] = ..., results: typing.Iterable[typing.Dict[str, typing.Any]] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProfileIdentifyResults') -> None: ...

    def results(self) -> typing.List[typing.Dict[str, typing.Any]]: ...
    def layer(self) -> QgsMapLayer: ...


class QgsAbstractProfileResults(PyQt5.sip.wrapper):

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

    def copyPropertiesFromGenerator(self, generator: 'QgsAbstractProfileGenerator') -> None: ...
    @typing.overload
    def identify(self, point: 'QgsProfilePoint', context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    @typing.overload
    def identify(self, distanceRange: QgsDoubleRange, elevationRange: QgsDoubleRange, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    def snapPoint(self, point: 'QgsProfilePoint', context: 'QgsProfileSnapContext') -> 'QgsProfileSnapResult': ...
    def zRange(self) -> QgsDoubleRange: ...
    def renderResults(self, context: QgsProfileRenderContext) -> None: ...
    def 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: QgsUnitTypes.RenderUnit) -> float: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...
    def setElevationRange(self, range: QgsDoubleRange) -> None: ...
    def elevationRange(self) -> QgsDoubleRange: ...
    def setDistanceRange(self, range: QgsDoubleRange) -> None: ...
    def distanceRange(self) -> QgsDoubleRange: ...
    def setMapUnitsPerDistancePixel(self, units: float) -> None: ...
    def mapUnitsPerDistancePixel(self) -> float: ...
    def setMaximumErrorMapUnits(self, error: float) -> None: ...
    def maximumErrorMapUnits(self) -> float: ...


class QgsAbstractProfileGenerator(PyQt5.sip.wrapper):

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

    def takeResults(self) -> QgsAbstractProfileResults: ...
    def feedback(self) -> QgsFeedback: ...
    def generateProfile(self, context: QgsProfileGenerationContext = ...) -> bool: ...
    def flags(self) -> Qgis.ProfileGeneratorFlags: ...
    def sourceId(self) -> str: ...


class 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]
    @typing.overload
    def identify(self, point: QgsProfilePoint, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    @typing.overload
    def identify(self, distanceRange: QgsDoubleRange, elevationRange: QgsDoubleRange, context: QgsProfileIdentifyContext) -> typing.List[QgsProfileIdentifyResults]: ...
    def snapPoint(self, point: QgsProfilePoint, context: 'QgsProfileSnapContext') -> 'QgsProfileSnapResult': ...
    def render(self, context: QgsRenderContext, width: float, height: float, distanceMin: float, distanceMax: float, zMin: float, zMax: float, sourceId: str = ...) -> None: ...
    def renderToImage(self, width: int, height: int, distanceMin: float, distanceMax: float, zMin: float, zMax: float, sourceId: str = ...) -> QtGui.QImage: ...
    def zRange(self) -> QgsDoubleRange: ...
    def regenerateInvalidatedResults(self) -> None: ...
    def invalidateResults(self, source: QgsAbstractProfileSource) -> bool: ...
    def replaceSource(self, source: QgsAbstractProfileSource) -> None: ...
    def invalidateAllRefinableSources(self) -> None: ...
    def setContext(self, context: QgsProfileGenerationContext) -> None: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelGenerationWithoutBlocking(self) -> None: ...
    def cancelGeneration(self) -> None: ...
    def startGeneration(self) -> None: ...
    def sourceIds(self) -> typing.List[str]: ...


class QgsProfileRequest(PyQt5.sip.wrapper):

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

    def setExpressionContext(self, context: QgsExpressionContext) -> 'QgsProfileRequest': ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def stepDistance(self) -> float: ...
    def setStepDistance(self, distance: float) -> 'QgsProfileRequest': ...
    def terrainProvider(self) -> 'QgsAbstractTerrainProvider': ...
    def setTerrainProvider(self, provider: 'QgsAbstractTerrainProvider') -> 'QgsProfileRequest': ...
    def tolerance(self) -> float: ...
    def setTolerance(self, tolerance: float) -> 'QgsProfileRequest': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> 'QgsProfileRequest': ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> 'QgsProfileRequest': ...
    def profileCurve(self) -> 'QgsCurve': ...
    def setProfileCurve(self, curve: 'QgsCurve') -> 'QgsProfileRequest': ...
    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 QgsAbstractTerrainProvider(PyQt5.sip.wrapper):

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

    def readCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    def setScale(self, scale: float) -> None: ...
    def scale(self) -> float: ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def prepare(self) -> None: ...
    def clone(self) -> 'QgsAbstractTerrainProvider': ...
    def type(self) -> str: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def equals(self, other: 'QgsAbstractTerrainProvider') -> bool: ...


class QgsFlatTerrainProvider(QgsAbstractTerrainProvider):

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

    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def prepare(self) -> None: ...
    def clone(self) -> 'QgsFlatTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def type(self) -> str: ...


class QgsRasterDemTerrainProvider(QgsAbstractTerrainProvider):

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

    def layer(self) -> 'QgsRasterLayer': ...
    def setLayer(self, layer: 'QgsRasterLayer') -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def clone(self) -> 'QgsRasterDemTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def type(self) -> str: ...


class QgsMeshTerrainProvider(QgsAbstractTerrainProvider):

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

    def layer(self) -> 'QgsMeshLayer': ...
    def setLayer(self, layer: 'QgsMeshLayer') -> None: ...
    def prepare(self) -> None: ...
    def equals(self, other: QgsAbstractTerrainProvider) -> bool: ...
    def clone(self) -> 'QgsMeshTerrainProvider': ...
    def heightAt(self, x: float, y: float) -> float: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: 'QgsProject') -> None: ...
    def type(self) -> str: ...


class QgsExternalStorage(PyQt5.sip.wrapper):

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

    def doFetch(self, url: str, authCfg: str = ...) -> 'QgsExternalStorageFetchedContent': ...
    def doStore(self, filePath: str, url: str, authCfg: str = ...) -> 'QgsExternalStorageStoredContent': ...
    def fetch(self, url: str, authCfg: str = ..., fetchingMode: Qgis.ActionStart = ...) -> 'QgsExternalStorageFetchedContent': ...
    def store(self, filePath: str, url: str, authCfg: str = ..., storingMode: Qgis.ActionStart = ...) -> 'QgsExternalStorageStoredContent': ...
    def displayName(self) -> str: ...
    def type(self) -> str: ...


class QgsExternalStorageContent(QtCore.QObject):

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

    def setStatus(self, status: Qgis.ContentStatus) -> None: ...
    def reportError(self, errorMsg: str) -> None: ...
    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: QgsExternalStorage) -> None: ...
    def registerExternalStorage(self, storage: QgsExternalStorage) -> None: ...
    def externalStorages(self) -> typing.List[QgsExternalStorage]: ...
    def externalStorageFromType(self, type: str) -> QgsExternalStorage: ...


class QgsPaintEffect(PyQt5.sip.wrapper):

    class DrawMode(int):
        Modifier = ... # type: QgsPaintEffect.DrawMode
        Render = ... # type: QgsPaintEffect.DrawMode
        ModifyAndRender = ... # type: QgsPaintEffect.DrawMode

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

    def fixQPictureDpi(self, painter: QtGui.QPainter) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def imageOffset(self, context: QgsRenderContext) -> QtCore.QPointF: ...
    def sourceAsImage(self, context: QgsRenderContext) -> QtGui.QImage: ...
    def source(self) -> QtGui.QPicture: ...
    def drawSource(self, painter: QtGui.QPainter) -> None: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def setDrawMode(self, drawMode: 'QgsPaintEffect.DrawMode') -> None: ...
    def drawMode(self) -> 'QgsPaintEffect.DrawMode': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def end(self, context: QgsRenderContext) -> None: ...
    def begin(self, context: QgsRenderContext) -> None: ...
    def render(self, picture: QtGui.QPicture, context: QgsRenderContext) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> bool: ...
    @typing.overload
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def readProperties(self, element: QtXml.QDomElement) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsPaintEffect': ...
    def type(self) -> str: ...


class QgsBlurEffect(QgsPaintEffect):

    class BlurMethod(int):
        StackBlur = ... # type: QgsBlurEffect.BlurMethod
        GaussianBlur = ... # type: QgsBlurEffect.BlurMethod

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

    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def blurMethod(self) -> 'QgsBlurEffect.BlurMethod': ...
    def setBlurMethod(self, method: 'QgsBlurEffect.BlurMethod') -> None: ...
    def blurMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setBlurUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def blurLevel(self) -> float: ...
    def setBlurLevel(self, level: float) -> None: ...
    def clone(self) -> 'QgsBlurEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsColorEffect(QgsPaintEffect):

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

    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def colorizeStrength(self) -> int: ...
    def setColorizeStrength(self, colorizeStrength: int) -> None: ...
    def colorizeColor(self) -> QtGui.QColor: ...
    def setColorizeColor(self, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def colorizeOn(self) -> bool: ...
    def setColorizeOn(self, colorizeOn: bool) -> None: ...
    def grayscaleMode(self) -> 'QgsImageOperation.GrayscaleMode': ...
    def setGrayscaleMode(self, grayscaleMode: 'QgsImageOperation.GrayscaleMode') -> None: ...
    def saturation(self) -> float: ...
    def setSaturation(self, saturation: float) -> None: ...
    def contrast(self) -> int: ...
    def setContrast(self, contrast: int) -> None: ...
    def brightness(self) -> int: ...
    def setBrightness(self, brightness: int) -> None: ...
    def clone(self) -> 'QgsColorEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsEffectStack(QgsPaintEffect):

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

    def draw(self, context: QgsRenderContext) -> None: ...
    def effect(self, index: int) -> QgsPaintEffect: ...
    def count(self) -> int: ...
    def effectList(self) -> typing.List[QgsPaintEffect]: ...
    def takeEffect(self, index: int) -> QgsPaintEffect: ...
    def changeEffect(self, index: int, effect: QgsPaintEffect) -> bool: ...
    def insertEffect(self, index: int, effect: QgsPaintEffect) -> bool: ...
    def appendEffect(self, effect: QgsPaintEffect) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    @typing.overload
    def readProperties(self, element: QtXml.QDomElement) -> bool: ...
    @typing.overload
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def saveProperties(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> bool: ...
    def clone(self) -> 'QgsEffectStack': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsGlowEffect(QgsPaintEffect):

    class GlowColorType(int):
        SingleColor = ... # type: QgsGlowEffect.GlowColorType
        ColorRamp = ... # type: QgsGlowEffect.GlowColorType

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

    def shadeExterior(self) -> bool: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def colorType(self) -> 'QgsGlowEffect.GlowColorType': ...
    def setColorType(self, colorType: 'QgsGlowEffect.GlowColorType') -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def ramp(self) -> QgsColorRamp: ...
    def setRamp(self, ramp: QgsColorRamp) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def blurMapUnitScale(self) -> QgsMapUnitScale: ...
    def setBlurMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def blurUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setBlurUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setSpreadUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def spread(self) -> float: ...
    def setSpread(self, spread: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...


class QgsOuterGlowEffect(QgsGlowEffect):

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

    def shadeExterior(self) -> bool: ...
    def clone(self) -> 'QgsOuterGlowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsInnerGlowEffect(QgsGlowEffect):

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

    def shadeExterior(self) -> bool: ...
    def clone(self) -> 'QgsInnerGlowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsImageOperation(PyQt5.sip.wrapper):

    class FlipType(int):
        FlipHorizontal = ... # type: QgsImageOperation.FlipType
        FlipVertical = ... # type: QgsImageOperation.FlipType

    class GrayscaleMode(int):
        GrayscaleLightness = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleLuminosity = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleAverage = ... # type: QgsImageOperation.GrayscaleMode
        GrayscaleOff = ... # type: QgsImageOperation.GrayscaleMode

    class DistanceTransformProperties(PyQt5.sip.wrapper):

        ramp = ... # type: QgsColorRamp
        shadeExterior = ... # type: bool
        spread = ... # type: float
        useMaxDistance = ... # type: bool

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

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

    @staticmethod
    def cropTransparent(image: QtGui.QImage, minSize: QtCore.QSize = ..., center: bool = ...) -> QtGui.QImage: ...
    @staticmethod
    def nonTransparentImageRect(image: QtGui.QImage, minSize: QtCore.QSize = ..., center: bool = ...) -> QtCore.QRect: ...
    @staticmethod
    def flipImage(image: QtGui.QImage, type: 'QgsImageOperation.FlipType') -> None: ...
    @staticmethod
    def gaussianBlur(image: QtGui.QImage, radius: int, feedback: typing.Optional[QgsFeedback] = ...) -> QtGui.QImage: ...
    @staticmethod
    def stackBlur(image: QtGui.QImage, radius: int, alphaOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def distanceTransform(image: QtGui.QImage, properties: 'QgsImageOperation.DistanceTransformProperties', feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def overlayColor(image: QtGui.QImage, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    @staticmethod
    def multiplyOpacity(image: QtGui.QImage, factor: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def adjustHueSaturation(image: QtGui.QImage, saturation: float, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., colorizeStrength: float = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def adjustBrightnessContrast(image: QtGui.QImage, brightness: int, contrast: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    @staticmethod
    def convertToGrayscale(image: QtGui.QImage, mode: 'QgsImageOperation.GrayscaleMode' = ..., feedback: typing.Optional[QgsFeedback] = ...) -> None: ...


class QgsDrawSourceEffect(QgsPaintEffect):

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

    def draw(self, context: QgsRenderContext) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsDrawSourceEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsEffectPainter(PyQt5.sip.wrapper):

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

    def setEffect(self, effect: QgsPaintEffect) -> None: ...


class QgsPaintEffectAbstractMetadata(PyQt5.sip.wrapper):

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

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


class QgsPaintEffectRegistry(PyQt5.sip.wrapper):

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

    @staticmethod
    def isDefaultStack(effect: QgsPaintEffect) -> bool: ...
    @staticmethod
    def defaultStack() -> QgsPaintEffect: ...
    def effects(self) -> typing.List[str]: ...
    @typing.overload
    def createEffect(self, name: str, properties: typing.Dict[str, typing.Any] = ...) -> QgsPaintEffect: ...
    @typing.overload
    def createEffect(self, element: QtXml.QDomElement) -> QgsPaintEffect: ...
    def addEffectType(self, metadata: QgsPaintEffectAbstractMetadata) -> bool: ...
    def effectMetadata(self, name: str) -> QgsPaintEffectAbstractMetadata: ...


class QgsShadowEffect(QgsPaintEffect):

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

    def exteriorShadow(self) -> bool: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setBlurUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def blurLevel(self) -> float: ...
    def setBlurLevel(self, level: float) -> None: ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...


class QgsDropShadowEffect(QgsShadowEffect):

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

    def exteriorShadow(self) -> bool: ...
    def clone(self) -> 'QgsDropShadowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsInnerShadowEffect(QgsShadowEffect):

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

    def exteriorShadow(self) -> bool: ...
    def clone(self) -> 'QgsInnerShadowEffect': ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsTransformEffect(QgsPaintEffect):

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

    def boundingRect(self, rect: QtCore.QRectF, context: QgsRenderContext) -> QtCore.QRectF: ...
    def draw(self, context: QgsRenderContext) -> None: ...
    def reflectY(self) -> bool: ...
    def setReflectY(self, reflectY: bool) -> None: ...
    def reflectX(self) -> bool: ...
    def setReflectX(self, reflectX: bool) -> None: ...
    def shearY(self) -> float: ...
    def setShearY(self, shearY: float) -> None: ...
    def shearX(self) -> float: ...
    def setShearX(self, shearX: float) -> None: ...
    def rotation(self) -> float: ...
    def setRotation(self, rotation: float) -> None: ...
    def scaleY(self) -> float: ...
    def setScaleY(self, scaleY: float) -> None: ...
    def scaleX(self) -> float: ...
    def setScaleX(self, scaleX: float) -> None: ...
    def translateMapUnitScale(self) -> QgsMapUnitScale: ...
    def setTranslateMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def translateUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setTranslateUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def translateY(self) -> float: ...
    def setTranslateY(self, translateY: float) -> None: ...
    def translateX(self) -> float: ...
    def setTranslateX(self, translateX: float) -> None: ...
    def clone(self) -> 'QgsTransformEffect': ...
    def readProperties(self, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def type(self) -> str: ...
    @staticmethod
    def create(map: typing.Dict[str, typing.Any]) -> QgsPaintEffect: ...


class QgsExpression(PyQt5.sip.wrapper):

    class SpatialOperator(int):
        soBbox = ... # type: QgsExpression.SpatialOperator
        soIntersects = ... # type: QgsExpression.SpatialOperator
        soContains = ... # type: QgsExpression.SpatialOperator
        soCrosses = ... # type: QgsExpression.SpatialOperator
        soEquals = ... # type: QgsExpression.SpatialOperator
        soDisjoint = ... # type: QgsExpression.SpatialOperator
        soOverlaps = ... # type: QgsExpression.SpatialOperator
        soTouches = ... # type: QgsExpression.SpatialOperator
        soWithin = ... # type: QgsExpression.SpatialOperator

    class ParserError(PyQt5.sip.wrapper):

        class ParserErrorType(int):
            Unknown = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionUnknown = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionWrongArgs = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionInvalidParams = ... # type: QgsExpression.ParserError.ParserErrorType
            FunctionNamedArgsError = ... # type: QgsExpression.ParserError.ParserErrorType

        errorMsg = ... # type: str
        errorType = ... # type: 'QgsExpression.ParserError.ParserErrorType'
        firstColumn = ... # type: int
        firstLine = ... # type: int
        lastColumn = ... # type: int
        lastLine = ... # type: int

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

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

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def attemptReduceToInClause(expressions: typing.Iterable[str]) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def isFieldEqualityExpression(expression: str) -> typing.Tuple[bool, str, typing.Any]: ...
    @staticmethod
    def createFieldEqualityExpression(fieldName: str, value: typing.Any, fieldType: QtCore.QVariant.Type = ...) -> str: ...
    @staticmethod
    def formatPreviewString(value: typing.Any, htmlOutput: bool = ..., maximumPreviewLength: int = ...) -> str: ...
    @staticmethod
    def group(group: str) -> str: ...
    @staticmethod
    def formatVariableHelp(description: str, showValue: bool = ..., value: typing.Any = ...) -> str: ...
    @staticmethod
    def variableHelpText(variableName: str) -> str: ...
    @staticmethod
    def addVariableHelpText(name: str, description: str) -> bool: ...
    @staticmethod
    def tags(name: str) -> typing.List[str]: ...
    @staticmethod
    def helpText(name: str) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any) -> str: ...
    @typing.overload
    @staticmethod
    def quotedValue(value: typing.Any, type: QtCore.QVariant.Type) -> str: ...
    @staticmethod
    def quotedString(text: str) -> str: ...
    @staticmethod
    def quotedColumnRef(name: str) -> str: ...
    @staticmethod
    def functionCount() -> int: ...
    @staticmethod
    def functionIndex(name: str) -> int: ...
    @staticmethod
    def isFunctionName(name: str) -> bool: ...
    @staticmethod
    def cleanRegisteredFunctions() -> None: ...
    @staticmethod
    def unregisterFunction(name: str) -> bool: ...
    @staticmethod
    def registerFunction(function: QgsExpressionFunction, transferOwnership: bool = ...) -> bool: ...
    @staticmethod
    def BuiltinFunctions() -> typing.List[str]: ...
    @staticmethod
    def Functions() -> typing.List[QgsExpressionFunction]: ...
    @staticmethod
    def evaluateToDouble(text: str, fallbackValue: float) -> float: ...
    @staticmethod
    def replaceExpressionText(action: str, context: QgsExpressionContext, distanceArea: typing.Optional[QgsDistanceArea] = ...) -> str: ...
    def setAreaUnits(self, unit: QgsUnitTypes.AreaUnit) -> None: ...
    def areaUnits(self) -> QgsUnitTypes.AreaUnit: ...
    def setDistanceUnits(self, unit: QgsUnitTypes.DistanceUnit) -> None: ...
    def distanceUnits(self) -> QgsUnitTypes.DistanceUnit: ...
    def setGeomCalculator(self, calc: QgsDistanceArea) -> None: ...
    def geomCalculator(self) -> QgsDistanceArea: ...
    def dump(self) -> str: ...
    def expression(self) -> str: ...
    def setExpression(self, expression: str) -> None: ...
    @staticmethod
    def checkExpression(text: str, context: QgsExpressionContext) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def quoteFieldExpression(expression: str, layer: QgsVectorLayer) -> str: ...
    @staticmethod
    def expressionToLayerFieldIndex(expression: str, layer: QgsVectorLayer) -> int: ...
    def isField(self) -> bool: ...
    def setEvalErrorString(self, str: str) -> None: ...
    def evalErrorString(self) -> str: ...
    def hasEvalError(self) -> bool: ...
    @typing.overload
    def evaluate(self) -> typing.Any: ...
    @typing.overload
    def evaluate(self, context: QgsExpressionContext) -> typing.Any: ...
    def needsGeometry(self) -> bool: ...
    def referencedAttributeIndexes(self, fields: QgsFields) -> typing.Any: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    @typing.overload
    def referencedVariables(self) -> typing.Set[str]: ...
    @typing.overload
    @staticmethod
    def referencedVariables(text: str) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def prepare(self, context: QgsExpressionContext) -> bool: ...
    def rootNode(self) -> 'QgsExpressionNode': ...
    def parserErrors(self) -> typing.List['QgsExpression.ParserError']: ...
    def parserErrorString(self) -> str: ...
    def hasParserError(self) -> bool: ...
    def isValid(self) -> bool: ...
    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') -> QgsExpressionContextScope: ...
    @staticmethod
    def registerContextFunctions() -> None: ...
    @staticmethod
    def notificationScope(message: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def processingModelAlgorithmScope(model: 'QgsProcessingModelAlgorithm', parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> QgsExpressionContextScope: ...
    @staticmethod
    def processingAlgorithmScope(algorithm: 'QgsProcessingAlgorithm', parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> QgsExpressionContextScope: ...
    @staticmethod
    def createFeatureBasedContext(feature: QgsFeature, fields: QgsFields) -> QgsExpressionContext: ...
    @staticmethod
    def setLayoutMultiFrameVariables(frame: 'QgsLayoutMultiFrame', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutMultiFrameVariable(frame: 'QgsLayoutMultiFrame', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def multiFrameScope(frame: 'QgsLayoutMultiFrame') -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayoutItemVariables(item: 'QgsLayoutItem', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutItemVariable(item: 'QgsLayoutItem', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def layoutItemScope(item: 'QgsLayoutItem') -> QgsExpressionContextScope: ...
    @staticmethod
    def atlasScope(atlas: 'QgsLayoutAtlas') -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayoutVariables(layout: 'QgsLayout', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayoutVariable(layout: 'QgsLayout', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def layoutScope(layout: 'QgsLayout') -> QgsExpressionContextScope: ...
    @staticmethod
    def updateSymbolScope(symbol: 'QgsSymbol', symbolScope: typing.Optional[QgsExpressionContextScope] = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def mapToolCaptureScope(matches: typing.Iterable[QgsPointLocator.Match]) -> QgsExpressionContextScope: ...
    @staticmethod
    def mapSettingsScope(mapSettings: QgsMapSettings) -> QgsExpressionContextScope: ...
    @staticmethod
    def setLayerVariables(layer: QgsMapLayer, variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setLayerVariable(layer: QgsMapLayer, name: str, value: typing.Any) -> None: ...
    @staticmethod
    def globalProjectLayerScopes(layer: QgsMapLayer) -> typing.List[QgsExpressionContextScope]: ...
    @staticmethod
    def layerScope(layer: QgsMapLayer) -> QgsExpressionContextScope: ...
    @staticmethod
    def removeProjectVariable(project: 'QgsProject', name: str) -> None: ...
    @staticmethod
    def setProjectVariables(project: 'QgsProject', variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setProjectVariable(project: 'QgsProject', name: str, value: typing.Any) -> None: ...
    @staticmethod
    def projectScope(project: 'QgsProject') -> QgsExpressionContextScope: ...
    @staticmethod
    def removeGlobalVariable(name: str) -> None: ...
    @staticmethod
    def setGlobalVariables(variables: typing.Dict[str, typing.Any]) -> None: ...
    @staticmethod
    def setGlobalVariable(name: str, value: typing.Any) -> None: ...
    @staticmethod
    def parentFormScope(formFeature: QgsFeature = ..., formMode: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def formScope(formFeature: QgsFeature = ..., formMode: str = ...) -> QgsExpressionContextScope: ...
    @staticmethod
    def globalScope() -> QgsExpressionContextScope: ...


class QgsExpressionNode(PyQt5.sip.wrapper):

    class NodeType(int):
        ntUnaryOperator = ... # type: QgsExpressionNode.NodeType
        ntBinaryOperator = ... # type: QgsExpressionNode.NodeType
        ntInOperator = ... # type: QgsExpressionNode.NodeType
        ntFunction = ... # type: QgsExpressionNode.NodeType
        ntLiteral = ... # type: QgsExpressionNode.NodeType
        ntColumnRef = ... # type: QgsExpressionNode.NodeType
        ntCondition = ... # type: QgsExpressionNode.NodeType
        ntIndexOperator = ... # type: QgsExpressionNode.NodeType
        ntBetweenOperator = ... # type: QgsExpressionNode.NodeType

    class NamedNode(PyQt5.sip.wrapper):

        name = ... # type: str
        node = ... # type: 'QgsExpressionNode'

        @typing.overload
        def __init__(self, name: str, node: 'QgsExpressionNode') -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExpressionNode.NamedNode') -> None: ...

    class NodeList(PyQt5.sip.wrapper):

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

        def dump(self) -> str: ...
        def clone(self) -> 'QgsExpressionNode.NodeList': ...
        def names(self) -> typing.List[str]: ...
        def at(self, i: int) -> 'QgsExpressionNode': ...
        def list(self) -> typing.List['QgsExpressionNode']: ...
        def hasNamedNodes(self) -> bool: ...
        def count(self) -> int: ...
        @typing.overload
        def append(self, node: 'QgsExpressionNode') -> None: ...
        @typing.overload
        def append(self, node: 'QgsExpressionNode.NamedNode') -> None: ...

    parserFirstColumn = ... # type: int
    parserFirstLine = ... # type: int
    parserLastColumn = ... # type: int
    parserLastLine = ... # type: int

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

    def effectiveNode(self) -> 'QgsExpressionNode': ...
    def cachedStaticValue(self) -> typing.Any: ...
    def hasCachedStaticValue(self) -> bool: ...
    def prepare(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def clone(self) -> 'QgsExpressionNode': ...
    def eval(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def dump(self) -> str: ...
    def nodeType(self) -> 'QgsExpressionNode.NodeType': ...


class QgsExpressionNodeUnaryOperator(QgsExpressionNode):

    class UnaryOperator(int):
        uoNot = ... # type: QgsExpressionNodeUnaryOperator.UnaryOperator
        uoMinus = ... # type: QgsExpressionNodeUnaryOperator.UnaryOperator

    @typing.overload
    def __init__(self, op: 'QgsExpressionNodeUnaryOperator.UnaryOperator', operand: QgsExpressionNode) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeUnaryOperator') -> None: ...

    def text(self) -> str: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def operand(self) -> QgsExpressionNode: ...
    def op(self) -> 'QgsExpressionNodeUnaryOperator.UnaryOperator': ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeBinaryOperator(QgsExpressionNode):

    class BinaryOperator(int):
        boOr = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boAnd = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boEQ = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boGE = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLT = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boGT = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boRegexp = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boLike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNotLike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boILike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boNotILike = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIs = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIsNot = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boPlus = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMinus = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMul = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boDiv = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boIntDiv = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boMod = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boPow = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator
        boConcat = ... # type: QgsExpressionNodeBinaryOperator.BinaryOperator

    @typing.overload
    def __init__(self, op: 'QgsExpressionNodeBinaryOperator.BinaryOperator', opLeft: QgsExpressionNode, opRight: QgsExpressionNode) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExpressionNodeBinaryOperator') -> None: ...

    def text(self) -> str: ...
    def leftAssociative(self) -> bool: ...
    def precedence(self) -> int: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def opRight(self) -> QgsExpressionNode: ...
    def opLeft(self) -> QgsExpressionNode: ...
    def op(self) -> 'QgsExpressionNodeBinaryOperator.BinaryOperator': ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeIndexOperator(QgsExpressionNode):

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

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def index(self) -> QgsExpressionNode: ...
    def container(self) -> QgsExpressionNode: ...


class QgsExpressionNodeBetweenOperator(QgsExpressionNode):

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

    def negate(self) -> bool: ...
    def higherBound(self) -> QgsExpressionNode: ...
    def lowerBound(self) -> QgsExpressionNode: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def node(self) -> QgsExpressionNode: ...


class QgsExpressionNodeInOperator(QgsExpressionNode):

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

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def list(self) -> QgsExpressionNode.NodeList: ...
    def isNotIn(self) -> bool: ...
    def node(self) -> QgsExpressionNode: ...


class QgsExpressionNodeFunction(QgsExpressionNode):

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

    @staticmethod
    def validateParams(fnIndex: int, args: QgsExpressionNode.NodeList, error: str) -> bool: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def args(self) -> QgsExpressionNode.NodeList: ...
    def fnIndex(self) -> int: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeLiteral(QgsExpressionNode):

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

    def valueAsString(self) -> str: ...
    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def value(self) -> typing.Any: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeColumnRef(QgsExpressionNode):

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

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...
    def name(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsExpressionNodeCondition(QgsExpressionNode):

    class WhenThen(PyQt5.sip.wrapper):

        def __init__(self, whenExp: QgsExpressionNode, thenExp: QgsExpressionNode) -> None: ...

        def thenExp(self) -> QgsExpressionNode: ...
        def whenExp(self) -> QgsExpressionNode: ...
        def clone(self) -> 'QgsExpressionNodeCondition.WhenThen': ...

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

    def isStatic(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def clone(self) -> QgsExpressionNode: ...
    def needsGeometry(self) -> bool: ...
    def referencedFunctions(self) -> typing.Set[str]: ...
    def referencedVariables(self) -> typing.Set[str]: ...
    def referencedColumns(self) -> typing.Set[str]: ...
    def elseExp(self) -> QgsExpressionNode: ...
    def conditions(self) -> typing.List['QgsExpressionNodeCondition.WhenThen']: ...
    def dump(self) -> str: ...
    def prepareNode(self, parent: QgsExpression, context: QgsExpressionContext) -> bool: ...
    def evalNode(self, parent: QgsExpression, context: QgsExpressionContext) -> typing.Any: ...
    def nodeType(self) -> QgsExpressionNode.NodeType: ...


class QgsCheckBoxFieldFormatter(QgsFieldFormatter):

    class TextDisplayMethod(int):
        ShowTrueFalse = ... # type: QgsCheckBoxFieldFormatter.TextDisplayMethod
        ShowStoredValues = ... # type: QgsCheckBoxFieldFormatter.TextDisplayMethod

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

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsDateTimeFieldFormatter(QgsFieldFormatter):

    DATETIME_FORMAT = ... # type: str
    DATE_FORMAT = ... # type: str
    DISPLAY_FOR_ISO_FORMAT = ... # type: str
    QT_ISO_FORMAT = ... # type: str
    TIME_FORMAT = ... # type: str

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

    @staticmethod
    def defaultFormat(type: QtCore.QVariant.Type) -> str: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsFallbackFieldFormatter(QgsFieldFormatter):

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

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


class QgsKeyValueFieldFormatter(QgsFieldFormatter):

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

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsListFieldFormatter(QgsFieldFormatter):

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

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsRangeFieldFormatter(QgsFieldFormatter):

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

    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsRelationReferenceFieldFormatter(QgsFieldFormatter):

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

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    def createCache(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsValueMapFieldFormatter(QgsFieldFormatter):

    NULL_VALUE = ... # type: str

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

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsValueRelationFieldFormatter(QgsFieldFormatter):

    class ValueRelationItem(PyQt5.sip.wrapper):

        description = ... # type: str
        key = ... # type: typing.Any
        value = ... # type: str

        @typing.overload
        def __init__(self, key: typing.Any, value: str, description: str = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsValueRelationFieldFormatter.ValueRelationItem') -> None: ...

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

    def availableValues(self, config: typing.Dict[str, typing.Any], countLimit: int, context: QgsFieldFormatterContext) -> typing.List[typing.Any]: ...
    @staticmethod
    def resolveLayer(config: typing.Dict[str, typing.Any], project: 'QgsProject') -> QgsVectorLayer: ...
    @staticmethod
    def expressionIsUsable(expression: str, feature: QgsFeature, parentFeature: QgsFeature = ...) -> bool: ...
    @staticmethod
    def expressionParentFormVariables(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionParentFormAttributes(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresParentFormScope(expression: str) -> bool: ...
    @staticmethod
    def expressionFormVariables(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionFormAttributes(expression: str) -> typing.Set[str]: ...
    @staticmethod
    def expressionRequiresFormScope(expression: str) -> bool: ...
    @staticmethod
    def valueToStringList(value: typing.Any) -> typing.List[str]: ...
    @typing.overload
    def createCache(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any]) -> typing.Any: ...
    @typing.overload
    @staticmethod
    def createCache(config: typing.Dict[str, typing.Any], formFeature: QgsFeature = ..., parentFormFeature: QgsFeature = ...) -> typing.List['QgsValueRelationFieldFormatter.ValueRelationItem']: ...
    def sortValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> typing.Any: ...
    def representValue(self, layer: QgsVectorLayer, fieldIndex: int, config: typing.Dict[str, typing.Any], cache: typing.Any, value: typing.Any) -> str: ...
    def id(self) -> str: ...


class QgsGeoNodeConnectionUtils(PyQt5.sip.wrapper):

    sGeoNodeConnection = ... # type: str

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

    @staticmethod
    def pathGeoNodeConnectionDetails() -> str: ...
    @staticmethod
    def pathGeoNodeConnection() -> str: ...
    @staticmethod
    def deleteConnection(name: str) -> None: ...
    @staticmethod
    def connectionList() -> typing.List[str]: ...


class QgsGeoNodeConnection(PyQt5.sip.wrapper):

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

    def addWcsConnectionSettings(self, uri: QgsDataSourceUri) -> QgsDataSourceUri: ...
    def addWfsConnectionSettings(self, uri: QgsDataSourceUri) -> QgsDataSourceUri: ...
    def addWmsConnectionSettings(self, uri: QgsDataSourceUri) -> QgsDataSourceUri: ...
    def setUri(self, uri: QgsDataSourceUri) -> None: ...
    def uri(self) -> QgsDataSourceUri: ...
    def setConnectionName(self, connectionName: str) -> None: ...
    def connectionName(self) -> str: ...


class QgsGeoNodeStyle(PyQt5.sip.wrapper):

    body = ... # type: QtXml.QDomDocument
    id = ... # type: str
    name = ... # type: str
    styleUrl = ... # type: str
    title = ... # type: str

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


class QgsGeoNodeRequest(QtCore.QObject):

    class BackendServer(int):
        Unknown = ... # type: QgsGeoNodeRequest.BackendServer
        QgisServer = ... # type: QgsGeoNodeRequest.BackendServer
        Geoserver = ... # type: QgsGeoNodeRequest.BackendServer

    class ServiceLayerDetail(PyQt5.sip.wrapper):

        id = ... # type: str
        name = ... # type: str
        server = ... # type: 'QgsGeoNodeRequest.BackendServer'
        title = ... # type: str
        typeName = ... # type: str
        uuid = ... # type: QtCore.QUuid
        wcsURL = ... # type: str
        wfsURL = ... # type: str
        wmsURL = ... # type: str
        xyzURL = ... # type: str

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

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

    layersFetched: typing.ClassVar[QtCore.pyqtsignal]
    requestFinished: typing.ClassVar[QtCore.pyqtsignal]
    statusChanged: typing.ClassVar[QtCore.pyqtsignal]
    def abort(self) -> None: ...
    def parseOwsUrl(self, layerStruct: 'QgsGeoNodeRequest.ServiceLayerDetail', layerLinks: typing.Iterable[typing.Any]) -> 'QgsGeoNodeRequest.ServiceLayerDetail': ...
    def setProtocol(self, protocol: str) -> None: ...
    def protocol(self) -> str: ...
    def lastResponse(self) -> QtCore.QByteArray: ...
    def lastError(self) -> str: ...
    def fetchServiceUrlDataBlocking(self, serviceType: str) -> typing.Dict[str, str]: ...
    def fetchServiceUrlsBlocking(self, serviceType: str) -> typing.List[str]: ...
    def fetchStyleBlocking(self, styleId: str) -> QgsGeoNodeStyle: ...
    def fetchDefaultStyleBlocking(self, layerName: str) -> QgsGeoNodeStyle: ...
    def fetchStylesBlocking(self, layerName: str) -> typing.List[QgsGeoNodeStyle]: ...
    def fetchLayersBlocking(self) -> typing.List['QgsGeoNodeRequest.ServiceLayerDetail']: ...
    def fetchLayers(self) -> None: ...
    def requestBlocking(self, endPoint: str) -> bool: ...
    def request(self, endPoint: str) -> None: ...


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: str, level: Qgis.MessageLevel = ...) -> None: ...
    def openConfigWidget(self, parent: typing.Optional[QtWidgets.QWidget] = ...) -> None: ...
    def hasConfigWidget(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    @staticmethod
    def fuzzyScore(candidate: str, search: str) -> float: ...
    @staticmethod
    def stringMatches(candidate: str, search: str) -> bool: ...
    def activePrefix(self) -> str: ...
    def setUseWithoutPrefix(self, useWithoutPrefix: bool) -> None: ...
    def useWithoutPrefix(self) -> bool: ...
    def clearPreviousResults(self) -> None: ...
    def triggerResultFromAction(self, result: 'QgsLocatorResult', actionId: int) -> None: ...
    def triggerResult(self, result: 'QgsLocatorResult') -> None: ...
    def fetchResults(self, string: str, context: 'QgsLocatorContext', feedback: QgsFeedback) -> None: ...
    def prepare(self, string: str, context: 'QgsLocatorContext') -> typing.List[str]: ...
    def prefix(self) -> str: ...
    def priority(self) -> 'QgsLocatorFilter.Priority': ...
    def flags(self) -> 'QgsLocatorFilter.Flags': ...
    def description(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsLocatorFilter': ...


class QgsAbstractGeocoderLocatorFilter(QgsLocatorFilter):

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

    def geocoderResultToLocatorResult(self, result: 'QgsGeocoderResult') -> 'QgsLocatorResult': ...
    def locatorResultToGeocoderResult(self, result: 'QgsLocatorResult') -> 'QgsGeocoderResult': ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def geocoder(self) -> 'QgsGeocoderInterface': ...
    def triggerResult(self, result: 'QgsLocatorResult') -> None: ...
    def fetchResults(self, string: str, context: 'QgsLocatorContext', feedback: QgsFeedback) -> None: ...
    def prefix(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...


class QgsGeocoderInterface(PyQt5.sip.wrapper):

    class Flag(int):
        GeocodesStrings = ... # type: QgsGeocoderInterface.Flag
        GeocodesFeatures = ... # type: QgsGeocoderInterface.Flag

    class Flags(PyQt5.sip.wrapper):

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

        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: str, context: 'QgsGeocoderContext', feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsGeocoderResult']: ...
    def wkbType(self) -> 'QgsWkbTypes.Type': ...
    def appendedFields(self) -> QgsFields: ...
    def geocodeFeature(self, feature: QgsFeature, context: 'QgsGeocoderContext', feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsGeocoderResult']: ...
    def flags(self) -> 'QgsGeocoderInterface.Flags': ...


class QgsGeocoderContext(PyQt5.sip.wrapper):

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

    def setAreaOfInterestCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def areaOfInterestCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setAreaOfInterest(self, area: 'QgsGeometry') -> None: ...
    def areaOfInterest(self) -> 'QgsGeometry': ...
    def setTransformContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def transformContext(self) -> 'QgsCoordinateTransformContext': ...


class QgsGeocoderResult(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, identifier: str, geometry: 'QgsGeometry', crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeocoderResult') -> None: ...

    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setGroup(self, group: str) -> None: ...
    def group(self) -> str: ...
    def setAdditionalAttributes(self, attributes: typing.Dict[str, typing.Any]) -> None: ...
    def additionalAttributes(self) -> typing.Dict[str, typing.Any]: ...
    def setViewport(self, viewport: 'QgsRectangle') -> None: ...
    def viewport(self) -> 'QgsRectangle': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setGeometry(self, geometry: 'QgsGeometry') -> None: ...
    def geometry(self) -> 'QgsGeometry': ...
    def identifier(self) -> str: ...
    def error(self) -> str: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def errorResult(errorMessage: str) -> 'QgsGeocoderResult': ...


class QgsNominatimGeocoder(QgsGeocoderInterface):

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

    def setCountryCodes(self, countryCodes: str) -> None: ...
    def countryCodes(self) -> str: ...
    def setRequestsPerSecond(self, number: float) -> None: ...
    def requestsPerSecond(self) -> float: ...
    def setEndpoint(self, endpoint: str) -> None: ...
    def endpoint(self) -> str: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: str, bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: str, context: QgsGeocoderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsGeocoderResult]: ...
    def wkbType(self) -> 'QgsWkbTypes.Type': ...
    def appendedFields(self) -> QgsFields: ...
    def flags(self) -> QgsGeocoderInterface.Flags: ...


class QgsGoogleMapsGeocoder(QgsGeocoderInterface):

    @typing.overload
    def __init__(self, apiKey: str, regionBias: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGoogleMapsGeocoder') -> None: ...

    def setRegion(self, region: str) -> None: ...
    def region(self) -> str: ...
    def setApiKey(self, key: str) -> None: ...
    def apiKey(self) -> str: ...
    def setEndpoint(self, endpoint: str) -> None: ...
    def jsonToResult(self, json: typing.Dict[str, typing.Any]) -> QgsGeocoderResult: ...
    def requestUrl(self, address: str, bounds: 'QgsRectangle' = ...) -> QtCore.QUrl: ...
    def geocodeString(self, string: str, context: QgsGeocoderContext, feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsGeocoderResult]: ...
    def wkbType(self) -> 'QgsWkbTypes.Type': ...
    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 calculateBoundingBox(self) -> 'QgsRectangle': ...
    def setZMTypeFromSubGeometry(self, subggeom: 'QgsAbstractGeometry', baseGeomType: 'QgsWkbTypes.Type') -> None: ...
    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childGeometry(self, index: int) -> 'QgsAbstractGeometry': ...
    def childCount(self) -> int: ...
    def hasChildGeometries(self) -> bool: ...
    def compareToSameClass(self, other: 'QgsAbstractGeometry') -> int: ...
    def sortIndex(self) -> int: ...
    def createEmptyWithSameType(self) -> 'QgsAbstractGeometry': ...
    def vertices(self) -> 'QgsVertexIterator': ...
    def parts(self) -> 'QgsGeometryPartIterator': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def simplifiedTypeRef(self) -> 'QgsAbstractGeometry': ...
    def convertTo(self, type: 'QgsWkbTypes.Type') -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsAbstractGeometry': ...
    def toCurveType(self) -> 'QgsAbstractGeometry': ...
    def segmentize(self, tolerance: float = ..., toleranceType: 'QgsAbstractGeometry.SegmentationToleranceType' = ...) -> 'QgsAbstractGeometry': ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def hasCurvedSegments(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def centroid(self) -> 'QgsPoint': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def area(self) -> float: ...
    def perimeter(self) -> float: ...
    def length(self) -> float: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asJson(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: 'QgsAbstractGeometry.AxisOrder' = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: 'QgsAbstractGeometry.AxisOrder' = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag'] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union['QgsAbstractGeometry.WkbFlags', 'QgsAbstractGeometry.WkbFlag'] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def normalize(self) -> None: ...
    def boundary(self) -> 'QgsAbstractGeometry': ...
    def isMeasure(self) -> bool: ...
    def is3D(self) -> bool: ...
    def wktTypeStr(self) -> str: ...
    def wkbType(self) -> 'QgsWkbTypes.Type': ...
    def geometryType(self) -> str: ...
    def dimension(self) -> int: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def clear(self) -> None: ...
    def compareTo(self, other: 'QgsAbstractGeometry') -> int: ...
    def clone(self) -> 'QgsAbstractGeometry': ...
    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: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVertexIterator') -> None: ...

    def __next__(self) -> 'QgsPoint': ...
    def __iter__(self) -> 'QgsVertexIterator': ...
    def next(self) -> 'QgsPoint': ...
    def hasNext(self) -> bool: ...


class QgsGeometryPartIterator(PyQt5.sip.wrapper):

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

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


class QgsGeometryConstPartIterator(PyQt5.sip.wrapper):

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

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


class QgsBox3d(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, xmin: float = ..., ymin: float = ..., zmin: float = ..., xmax: float = ..., ymax: float = ..., zmax: float = ...) -> None: ...
    @typing.overload
    def __init__(self, p1: 'QgsPoint', p2: 'QgsPoint') -> None: ...
    @typing.overload
    def __init__(self, rect: 'QgsRectangle') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBox3d') -> None: ...

    def __ne__(self, other: object): ...
    @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 contains(self, other: 'QgsBox3d') -> bool: ...
    @typing.overload
    def contains(self, point: 'QgsPoint') -> bool: ...
    def intersects(self, other: 'QgsBox3d') -> bool: ...
    def is2d(self) -> bool: ...
    def intersect(self, other: 'QgsBox3d') -> 'QgsBox3d': ...
    def volume(self) -> float: ...
    def depth(self) -> float: ...
    def height(self) -> float: ...
    def width(self) -> float: ...
    def normalize(self) -> None: ...
    def zMaximum(self) -> float: ...
    def zMinimum(self) -> float: ...
    def setZMaximum(self, z: float) -> None: ...
    def setZMinimum(self, z: float) -> None: ...
    def yMaximum(self) -> float: ...
    def yMinimum(self) -> float: ...
    def setYMaximum(self, y: float) -> None: ...
    def setYMinimum(self, y: float) -> None: ...
    def xMaximum(self) -> float: ...
    def xMinimum(self) -> float: ...
    def setXMaximum(self, x: float) -> None: ...
    def setXMinimum(self, x: float) -> None: ...


class QgsEllipse(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: 'QgsPoint', semiMajorAxis: float, semiMinorAxis: float, azimuth: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEllipse') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def toString(self, pointPrecision: int = ..., axisPrecision: int = ..., azimuthPrecision: int = ...) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def orientedBoundingBox(self) -> 'QgsPolygon': ...
    def toLineString(self, segments: int = ...) -> 'QgsLineString': ...
    def toPolygon(self, segments: int = ...) -> 'QgsPolygon': ...
    def points(self, segments: int = ...) -> typing.List['QgsPoint']: ...
    def quadrant(self) -> typing.List['QgsPoint']: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def eccentricity(self) -> float: ...
    def foci(self) -> typing.List['QgsPoint']: ...
    def focusDistance(self) -> float: ...
    def setAzimuth(self, azimuth: float) -> None: ...
    def setSemiMinorAxis(self, semiMinorAxis: float) -> None: ...
    def setSemiMajorAxis(self, semiMajorAxis: float) -> None: ...
    def setCenter(self, center: 'QgsPoint') -> None: ...
    def azimuth(self) -> float: ...
    def semiMinorAxis(self) -> float: ...
    def semiMajorAxis(self) -> float: ...
    def center(self) -> 'QgsPoint': ...
    def isEmpty(self) -> bool: ...
    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: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def toString(self, pointPrecision: int = ..., radiusPrecision: int = ..., azimuthPrecision: int = ...) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def contains(self, point: 'QgsPoint', epsilon: float = ...) -> bool: ...
    def toCircularString(self, oriented: bool = ...) -> 'QgsCircularString': ...
    def northQuadrant(self) -> typing.List['QgsPoint']: ...
    def setRadius(self, radius: float) -> None: ...
    def radius(self) -> float: ...
    def setSemiMinorAxis(self, semiMinorAxis: float) -> None: ...
    def setSemiMajorAxis(self, semiMajorAxis: float) -> None: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def innerTangents(self, other: 'QgsCircle') -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    def outerTangents(self, other: 'QgsCircle') -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    def tangentToPoint(self, p: QgsPointXY) -> typing.Tuple[bool, QgsPointXY, QgsPointXY]: ...
    def intersections(self, other: 'QgsCircle', useZ: bool = ...) -> typing.Tuple[int, 'QgsPoint', 'QgsPoint']: ...
    @staticmethod
    def minimalCircleFrom3Points(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', epsilon: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def fromExtent(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsCircle': ...
    @staticmethod
    def from3TangentsMulti(pt1_tg1: 'QgsPoint', pt2_tg1: 'QgsPoint', pt1_tg2: 'QgsPoint', pt2_tg2: 'QgsPoint', pt1_tg3: 'QgsPoint', pt2_tg3: 'QgsPoint', epsilon: float = ..., pos: 'QgsPoint' = ...) -> typing.List['QgsCircle']: ...
    @staticmethod
    def from3Tangents(pt1_tg1: 'QgsPoint', pt2_tg1: 'QgsPoint', pt1_tg2: 'QgsPoint', pt2_tg2: 'QgsPoint', pt1_tg3: 'QgsPoint', pt2_tg3: 'QgsPoint', epsilon: float = ..., pos: 'QgsPoint' = ...) -> 'QgsCircle': ...
    @staticmethod
    def fromCenterPoint(center: 'QgsPoint', pt1: 'QgsPoint') -> 'QgsCircle': ...
    @staticmethod
    def fromCenterDiameter(center: 'QgsPoint', diameter: float, azimuth: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def from3Points(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', epsilon: float = ...) -> 'QgsCircle': ...
    @staticmethod
    def from2Points(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsCircle': ...


class QgsCurve(QgsAbstractGeometry):

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

    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childCount(self) -> int: ...
    def clearCache(self) -> None: ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def orientation(self) -> Qgis.AngularDirection: ...
    def sinuosity(self) -> float: ...
    def straightDistance2d(self) -> float: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCurve': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def normalize(self) -> None: ...
    def toCurveType(self) -> 'QgsCurve': ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsCurve': ...
    def asKml(self, precision: int = ...) -> str: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def reversed(self) -> 'QgsCurve': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def pointAt(self, node: int) -> typing.Tuple[bool, 'QgsPoint', Qgis.VertexType]: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def coordinateSequence(self) -> typing.Any: ...
    def sumUpArea(self) -> float: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def numPoints(self) -> int: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def isRing(self) -> bool: ...
    def isClosed2D(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def clone(self) -> 'QgsCurve': ...
    def __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 calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCircularString': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCircularString': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsCircularString': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def hasCurvedSegments(self) -> bool: ...
    def sumUpArea(self) -> float: ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCircularString': ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length(self) -> float: ...
    def append(self, string: 'QgsCircularString') -> None: ...
    def setPoints(self, points: typing.Iterable['QgsPoint']) -> None: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def pointN(self, i: int) -> 'QgsPoint': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def numPoints(self) -> int: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def isEmpty(self) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCircularString': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...
    @staticmethod
    def fromTwoPointsAndCenter(p1: 'QgsPoint', p2: 'QgsPoint', center: 'QgsPoint', useShortestArc: bool = ...) -> 'QgsCircularString': ...


class QgsCompoundCurve(QgsCurve):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, curve: 'QgsCompoundCurve') -> None: ...

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCompoundCurve': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsCompoundCurve': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsCompoundCurve': ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def hasCurvedSegments(self) -> bool: ...
    def close(self) -> None: ...
    def sumUpArea(self) -> float: ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def toggleCircularAtVertex(self, position: 'QgsVertexId') -> bool: ...
    def condenseCurves(self) -> None: ...
    def addVertex(self, pt: 'QgsPoint') -> None: ...
    def removeCurve(self, i: int) -> None: ...
    def addCurve(self, c: QgsCurve, extendPrevious: bool = ...) -> None: ...
    def curveAt(self, i: int) -> QgsCurve: ...
    def nCurves(self) -> int: ...
    def simplifiedTypeRef(self) -> QgsAbstractGeometry: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCompoundCurve': ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def isEmpty(self) -> bool: ...
    def numPoints(self) -> int: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length(self) -> float: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCompoundCurve': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def equals(self, other: QgsCurve) -> bool: ...


class QgsSurface(QgsAbstractGeometry):

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

    def clearCache(self) -> None: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...


class QgsCurvePolygon(QgsSurface):

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

    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def childGeometry(self, index: int) -> QgsAbstractGeometry: ...
    def childCount(self) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsCurvePolygon': ...
    def toCurveType(self) -> 'QgsCurvePolygon': ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> QgsAbstractGeometry: ...
    def hasCurvedSegments(self) -> bool: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def isEmpty(self) -> bool: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def forceCounterClockwise(self) -> None: ...
    def forceClockwise(self) -> None: ...
    def forceRHR(self) -> None: ...
    def removeInvalidRings(self) -> None: ...
    def removeInteriorRings(self, minimumAllowedArea: float = ...) -> None: ...
    def removeInteriorRing(self, i: int) -> bool: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def setInteriorRings(self, rings: typing.Iterable[QgsCurve]) -> None: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def toPolygon(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsPolygon': ...
    def interiorRing(self, i: int) -> QgsCurve: ...
    def exteriorRing(self) -> QgsCurve: ...
    def numInteriorRings(self) -> int: ...
    def roundness(self) -> float: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsCurvePolygon': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def normalize(self) -> None: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsCurvePolygon': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsGeometryParameters(PyQt5.sip.wrapper):

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

    def setGridSize(self, size: float) -> None: ...
    def gridSize(self) -> float: ...


class QgsGeometry(PyQt5.sip.wrapper):

    class Error(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, m: str) -> None: ...
        @typing.overload
        def __init__(self, m: str, p: QgsPointXY) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsGeometry.Error') -> None: ...

        def __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: QgsAbstractGeometry) -> None: ...

    @typing.overload
    @staticmethod
    def convertPointList(input: typing.Iterable[QgsPointXY], output: typing.Iterable['QgsPoint']) -> None: ...
    @typing.overload
    @staticmethod
    def convertPointList(input: typing.Iterable['QgsPoint'], output: typing.Iterable[QgsPointXY]) -> None: ...
    @staticmethod
    def createGeometryEngine(geometry: QgsAbstractGeometry) -> 'QgsGeometryEngine': ...
    def smooth(self, iterations: int = ..., offset: float = ..., minimumDistance: float = ..., maxAngle: float = ...) -> 'QgsGeometry': ...
    @staticmethod
    def compare(obj1: typing.Any, obj2: typing.Any, epsilon: float = ...) -> bool: ...
    @staticmethod
    def createPolygonFromQPolygonF(polygon: QtGui.QPolygonF) -> typing.Any: ...
    @staticmethod
    def createPolylineFromQPolygonF(polygon: QtGui.QPolygonF) -> typing.List[QgsPointXY]: ...
    @staticmethod
    def fromQPolygonF(polygon: QtGui.QPolygonF) -> 'QgsGeometry': ...
    @staticmethod
    def fromQPointF(point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 'QgsGeometry': ...
    def lastError(self) -> str: ...
    def vertexNrFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def vertexIdFromVertexNr(self, number: int) -> typing.Tuple[bool, 'QgsVertexId']: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def mapToPixel(self, mtp: QgsMapToPixel) -> None: ...
    def requiresConversionToStraightSegments(self) -> bool: ...
    def convertToStraightSegment(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> None: ...
    @staticmethod
    def polygonize(geometries: typing.Iterable['QgsGeometry']) -> 'QgsGeometry': ...
    @staticmethod
    def unaryUnion(geometries: typing.Iterable['QgsGeometry'], parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def normalize(self) -> None: ...
    def validateGeometry(self, method: Qgis.GeometryValidationEngine = ..., flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.List['QgsGeometry.Error']: ...
    def forcePolygonCounterClockwise(self) -> 'QgsGeometry': ...
    def forcePolygonClockwise(self) -> 'QgsGeometry': ...
    def forceRHR(self) -> 'QgsGeometry': ...
    def makeValid(self, method: Qgis.MakeValidMethod = ..., keepCollapsed: bool = ...) -> 'QgsGeometry': ...
    def avoidIntersections(self, avoidIntersectionsLayers: typing.Iterable[QgsVectorLayer]) -> int: ...
    def convertGeometryCollectionToSubclass(self, geomType: 'QgsWkbTypes.GeometryType') -> bool: ...
    def convertToSingleType(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: 'QgsWkbTypes.GeometryType', destMultipart: bool = ...) -> 'QgsGeometry': ...
    def coerceToType(self, type: 'QgsWkbTypes.Type', defaultZ: float = ..., defaultM: float = ...) -> typing.List['QgsGeometry']: ...
    def asJson(self, precision: int = ...) -> str: ...
    def __repr__(self) -> typing.Any: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def randomPointsInPolygon(self, count: int, seed: int = ...) -> QgsPolylineXY: ...
    def extrude(self, x: float, y: float) -> 'QgsGeometry': ...
    def symDifference(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def difference(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def mergeLines(self) -> 'QgsGeometry': ...
    def combine(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def clipped(self, rectangle: 'QgsRectangle') -> 'QgsGeometry': ...
    def intersection(self, geometry: 'QgsGeometry', parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def interpolateAngle(self, distance: float) -> float: ...
    def lineLocatePoint(self, point: 'QgsGeometry') -> float: ...
    def interpolate(self, distance: float) -> 'QgsGeometry': ...
    def subdivide(self, maxNodes: int = ..., parameters: QgsGeometryParameters = ...) -> 'QgsGeometry': ...
    def sharedPaths(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def node(self) -> 'QgsGeometry': ...
    def delaunayTriangulation(self, tolerance: float = ..., edgesOnly: bool = ...) -> 'QgsGeometry': ...
    def voronoiDiagram(self, extent: 'QgsGeometry' = ..., tolerance: float = ..., edgesOnly: bool = ...) -> 'QgsGeometry': ...
    def concaveHull(self, targetPercent: float, allowHoles: bool = ...) -> 'QgsGeometry': ...
    def convexHull(self) -> 'QgsGeometry': ...
    def minimumClearanceLine(self) -> 'QgsGeometry': ...
    def minimumClearance(self) -> float: ...
    def minimumWidth(self) -> 'QgsGeometry': ...
    def largestEmptyCircle(self, tolerance: float, boundary: 'QgsGeometry' = ...) -> 'QgsGeometry': ...
    def poleOfInaccessibility(self, precision: float) -> typing.Tuple['QgsGeometry', float]: ...
    def pointOnSurface(self) -> 'QgsGeometry': ...
    def centroid(self) -> 'QgsGeometry': ...
    def convertToCurves(self, distanceTolerance: float = ..., angleTolerance: float = ...) -> 'QgsGeometry': ...
    def densifyByDistance(self, distance: float) -> 'QgsGeometry': ...
    def densifyByCount(self, extraNodesPerSegment: int) -> 'QgsGeometry': ...
    def simplify(self, tolerance: float) -> 'QgsGeometry': ...
    def extendLine(self, startDistance: float, endDistance: float) -> 'QgsGeometry': ...
    def variableWidthBufferByM(self, segments: int) -> 'QgsGeometry': ...
    def taperedBuffer(self, startWidth: float, endWidth: float, segments: int) -> 'QgsGeometry': ...
    def singleSidedBuffer(self, distance: float, segments: int, side: Qgis.BufferSide, joinStyle: Qgis.JoinStyle = ..., miterLimit: float = ...) -> 'QgsGeometry': ...
    def offsetCurve(self, distance: float, segments: int, joinStyle: Qgis.JoinStyle, miterLimit: float) -> 'QgsGeometry': ...
    @typing.overload
    def buffer(self, distance: float, segments: int) -> 'QgsGeometry': ...
    @typing.overload
    def buffer(self, distance: float, segments: int, endCapStyle: Qgis.EndCapStyle, joinStyle: Qgis.JoinStyle, miterLimit: float) -> 'QgsGeometry': ...
    def crosses(self, geometry: 'QgsGeometry') -> bool: ...
    def within(self, geometry: 'QgsGeometry') -> bool: ...
    def overlaps(self, geometry: 'QgsGeometry') -> bool: ...
    def touches(self, geometry: 'QgsGeometry') -> bool: ...
    def disjoint(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def contains(self, p: QgsPointXY) -> bool: ...
    @typing.overload
    def contains(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def boundingBoxIntersects(self, geometry: 'QgsGeometry') -> bool: ...
    @typing.overload
    def intersects(self, rectangle: 'QgsRectangle') -> bool: ...
    @typing.overload
    def intersects(self, geometry: 'QgsGeometry') -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsGeometry': ...
    def applyDashPattern(self, pattern: typing.Iterable[float], startRule: Qgis.DashPatternLineEndingRule = ..., endRule: Qgis.DashPatternLineEndingRule = ..., adjustment: Qgis.DashPatternSizeAdjustment = ..., patternOffset: float = ...) -> 'QgsGeometry': ...
    def roundWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def roundWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def squareWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def squareWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def triangularWavesRandomized(self, minimumWavelength: float, maximumWavelength: float, minimumAmplitude: float, maximumAmplitude: float, seed: int = ...) -> 'QgsGeometry': ...
    def triangularWaves(self, wavelength: float, amplitude: float, strictWavelength: bool = ...) -> 'QgsGeometry': ...
    def orthogonalize(self, tolerance: float = ..., maxIterations: int = ..., angleThreshold: float = ...) -> 'QgsGeometry': ...
    def minimalEnclosingCircle(self, segments: int = ...) -> typing.Tuple['QgsGeometry', QgsPointXY, float]: ...
    def orientedMinimumBoundingBox(self) -> typing.Tuple['QgsGeometry', float, float, float, float]: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def makeDifference(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def reshapeGeometry(self, reshapeLineString: 'QgsLineString') -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitGeometry(self, splitLine: typing.Iterable[QgsPointXY], topological: bool, splitFeature: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List['QgsGeometry'], typing.List[QgsPointXY]]: ...
    @typing.overload
    def splitGeometry(self, splitLine: typing.Iterable['QgsPoint'], topological: bool, splitFeature: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List['QgsGeometry'], typing.List['QgsPoint']]: ...
    @typing.overload
    def splitGeometry(self, curve: QgsCurve, preserveCircular: bool, topological: bool, splitFeature: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List['QgsGeometry'], typing.List['QgsPoint']]: ...
    def rotate(self, rotation: float, center: QgsPointXY) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', direction: Qgis.TransformDirection = ..., transformZ: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> Qgis.GeometryOperationResult: ...
    def translate(self, dx: float, dy: float, dz: float = ..., dm: float = ...) -> Qgis.GeometryOperationResult: ...
    def removeInteriorRings(self, minimumAllowedArea: float = ...) -> 'QgsGeometry': ...
    def addPartGeometry(self, newPart: 'QgsGeometry') -> Qgis.GeometryOperationResult: ...
    def addPart(self, part: QgsAbstractGeometry, geomType: 'QgsWkbTypes.GeometryType' = ...) -> Qgis.GeometryOperationResult: ...
    def addPoints(self, points: typing.Iterable['QgsPoint'], geomType: 'QgsWkbTypes.GeometryType' = ...) -> Qgis.GeometryOperationResult: ...
    def addPointsXY(self, points: typing.Iterable[QgsPointXY], geomType: 'QgsWkbTypes.GeometryType' = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPointXY]) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addRing(self, ring: QgsCurve) -> Qgis.GeometryOperationResult: ...
    def closestSegmentWithContext(self, point: QgsPointXY, epsilon: float = ...) -> typing.Tuple[float, QgsPointXY, int, int]: ...
    def closestVertexWithContext(self, point: QgsPointXY) -> typing.Tuple[float, int]: ...
    def shortestLine(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def nearestPoint(self, other: 'QgsGeometry') -> 'QgsGeometry': ...
    def sqrDistToVertexAt(self, point: QgsPointXY, atVertex: int) -> float: ...
    def vertexAt(self, atVertex: int) -> 'QgsPoint': ...
    def toggleCircularAtVertex(self, atVertex: int) -> bool: ...
    def deleteVertex(self, atVertex: int) -> bool: ...
    @typing.overload
    def moveVertex(self, x: float, y: float, atVertex: int) -> bool: ...
    @typing.overload
    def moveVertex(self, p: 'QgsPoint', atVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, x: float, y: float, beforeVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, point: 'QgsPoint', beforeVertex: int) -> bool: ...
    def adjacentVertices(self, atVertex: int) -> typing.Tuple[int, int]: ...
    def angleAtVertex(self, vertex: int) -> float: ...
    def distanceToVertex(self, vertex: int) -> float: ...
    def closestVertex(self, point: QgsPointXY) -> typing.Tuple[QgsPointXY, int, int, int, float]: ...
    def frechetDistanceDensify(self, geom: 'QgsGeometry', densifyFraction: float) -> float: ...
    def frechetDistance(self, geom: 'QgsGeometry') -> float: ...
    def hausdorffDistanceDensify(self, geom: 'QgsGeometry', densifyFraction: float) -> float: ...
    def hausdorffDistance(self, geom: 'QgsGeometry') -> float: ...
    def constParts(self) -> QgsGeometryConstPartIterator: ...
    def parts(self) -> QgsGeometryPartIterator: ...
    def vertices(self) -> QgsVertexIterator: ...
    def distance(self, geom: 'QgsGeometry') -> float: ...
    def length(self) -> float: ...
    def area(self) -> float: ...
    def isAxisParallelRectangle(self, maximumDeviation: float, simpleRectanglesOnly: bool = ...) -> bool: ...
    def isSimple(self) -> bool: ...
    def isGeosValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> bool: ...
    def isGeosEqual(self, a0: 'QgsGeometry') -> bool: ...
    def equals(self, geometry: 'QgsGeometry') -> bool: ...
    def isMultipart(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def type(self) -> 'QgsWkbTypes.GeometryType': ...
    def wkbType(self) -> 'QgsWkbTypes.Type': ...
    def fromWkb(self, wkb: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> None: ...
    @staticmethod
    def createWedgeBuffer(center: 'QgsPoint', azimuth: float, angularWidth: float, outerRadius: float, innerRadius: float = ...) -> 'QgsGeometry': ...
    @staticmethod
    def collectGeometry(geometries: typing.Iterable['QgsGeometry']) -> 'QgsGeometry': ...
    @staticmethod
    def fromRect(rect: 'QgsRectangle') -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPolygonXY(multipoly: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolygonXY(polygon: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPolylineXY(multiline: typing.Any) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolyline(polyline: typing.Iterable['QgsPoint']) -> 'QgsGeometry': ...
    @staticmethod
    def fromPolylineXY(polyline: typing.Iterable[QgsPointXY]) -> 'QgsGeometry': ...
    @staticmethod
    def fromMultiPointXY(multipoint: typing.Iterable[QgsPointXY]) -> 'QgsGeometry': ...
    @staticmethod
    def fromPointXY(point: QgsPointXY) -> 'QgsGeometry': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsGeometry': ...
    def isNull(self) -> bool: ...
    def set(self, geometry: QgsAbstractGeometry) -> None: ...
    def get(self) -> QgsAbstractGeometry: ...
    def constGet(self) -> QgsAbstractGeometry: ...


class QgsGeometryCollection(QgsAbstractGeometry):

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

    def clearCache(self) -> None: ...
    def calculateBoundingBox(self) -> 'QgsRectangle': ...
    def fromCollectionWkt(self, wkt: str, subtypes: typing.Iterable[QgsAbstractGeometry], defaultChildWkbType: str = ...) -> bool: ...
    def wktOmitChildType(self) -> bool: ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def childGeometry(self, index: int) -> QgsAbstractGeometry: ...
    def childCount(self) -> int: ...
    def createEmptyWithSameType(self) -> 'QgsGeometryCollection': ...
    def __iter__(self) -> QgsGeometryPartIterator: ...
    def __delitem__(self, index: int) -> None: ...
    def __getitem__(self, index: int) -> QgsAbstractGeometry: ...
    def simplifiedTypeRef(self) -> QgsAbstractGeometry: ...
    def toCurveType(self) -> 'QgsGeometryCollection': ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def vertexAt(self, id: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, part: int = ...) -> int: ...
    def vertexCount(self, part: int = ..., ring: int = ...) -> int: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def segmentize(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> QgsAbstractGeometry: ...
    def hasCurvedSegments(self) -> bool: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def length(self) -> float: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: 'QgsAbstractGeometryTransformer', feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def normalize(self) -> None: ...
    def removeGeometry(self, nr: int) -> bool: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def reserve(self, size: int) -> None: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsGeometryCollection': ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def dimension(self) -> int: ...
    def isEmpty(self) -> bool: ...
    def geometryN(self, n: int) -> QgsAbstractGeometry: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def numGeometries(self) -> int: ...
    def clone(self) -> 'QgsGeometryCollection': ...
    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: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeometryEngine') -> None: ...

    def logError(self, engineName: str, message: str) -> None: ...
    def setLogErrors(self, enabled: bool) -> None: ...
    def offsetCurve(self, distance: float, segments: int, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def splitGeometry(self, splitLine: 'QgsLineString', topological: bool, topologyTestPoints: typing.Iterable['QgsPoint'], errorMsg: typing.Optional[str] = ..., skipIntersectionCheck: bool = ...) -> typing.Tuple['QgsGeometryEngine.EngineOperationResult', typing.List[QgsGeometry]]: ...
    def isSimple(self, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def isEmpty(self, errorMsg: str) -> bool: ...
    def isEqual(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def isValid(self, errorMsg: typing.Optional[str] = ..., allowSelfTouchingHoles: bool = ..., errorLoc: typing.Optional[QgsGeometry] = ...) -> bool: ...
    def length(self, errorMsg: typing.Optional[str] = ...) -> float: ...
    def area(self, errorMsg: typing.Optional[str] = ...) -> float: ...
    def relatePattern(self, geom: QgsAbstractGeometry, pattern: str, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def relate(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> str: ...
    def disjoint(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def contains(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def overlaps(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def within(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def crosses(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def touches(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def intersects(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def distanceWithin(self, geom: QgsAbstractGeometry, maxdistance: float, errorMsg: typing.Optional[str] = ...) -> bool: ...
    def distance(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ...) -> float: ...
    def convexHull(self, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def pointOnSurface(self, errorMsg: typing.Optional[str] = ...) -> 'QgsPoint': ...
    def centroid(self, errorMsg: typing.Optional[str] = ...) -> 'QgsPoint': ...
    def envelope(self, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def interpolate(self, distance: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def simplify(self, tolerance: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def buffer(self, distance: float, segments: int, endCapStyle: Qgis.EndCapStyle, joinStyle: Qgis.JoinStyle, miterLimit: float, errorMsg: typing.Optional[str] = ...) -> QgsAbstractGeometry: ...
    def symDifference(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geomList: typing.Iterable[QgsAbstractGeometry], errorMsg: str, parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    @typing.overload
    def combine(self, geometries: typing.Iterable[QgsGeometry], errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def difference(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def intersection(self, geom: QgsAbstractGeometry, errorMsg: typing.Optional[str] = ..., parameters: QgsGeometryParameters = ...) -> QgsAbstractGeometry: ...
    def prepareGeometry(self) -> None: ...
    def geometryChanged(self) -> None: ...


class QgsAbstractGeometryTransformer(PyQt5.sip.wrapper):

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

    def transformPoint(self, x: float, y: float, z: float, m: float) -> typing.Tuple[bool, float, float, float, float]: ...


class QgsGeometryUtils(PyQt5.sip.wrapper):

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

    @staticmethod
    def bisector(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float) -> typing.Tuple[bool, float, float]: ...
    @staticmethod
    def angleBisector(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float, dX: float, dY: float) -> typing.Tuple[bool, float, float, float]: ...
    @typing.overload
    @staticmethod
    def transferFirstZOrMValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @typing.overload
    @staticmethod
    def transferFirstZOrMValueToPoint(geom: QgsGeometry, point: 'QgsPoint') -> bool: ...
    @staticmethod
    def transferFirstMValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def transferFirstZValueToPoint(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def setZValueFromPoints(points: typing.Iterable['QgsPoint'], point: 'QgsPoint') -> bool: ...
    @staticmethod
    def weightedPointInTriangle(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float, weightB: float, weightC: float) -> typing.Tuple[float, float]: ...
    @staticmethod
    def triangleArea(aX: float, aY: float, bX: float, bY: float, cX: float, cY: float) -> float: ...
    @staticmethod
    def linesIntersection3D(La1: QgsVector3D, La2: QgsVector3D, Lb1: QgsVector3D, Lb2: QgsVector3D) -> typing.Tuple[bool, QgsVector3D]: ...
    @staticmethod
    def skewLinesProjection(P1: QgsVector3D, P12: QgsVector3D, P2: QgsVector3D, P22: QgsVector3D, epsilon: float = ...) -> typing.Tuple[bool, QgsVector3D]: ...
    @staticmethod
    def skewLinesDistance(P1: QgsVector3D, P12: QgsVector3D, P2: QgsVector3D, P22: QgsVector3D) -> float: ...
    @staticmethod
    def perpendicularCenterSegment(centerPointX: float, centerPointY: float, segmentPoint1x: float, segmentPoint1y: float, segmentPoint2x: float, segmentPoint2y: float, segmentLength: float = ...) -> typing.Tuple[float, float, float, float]: ...
    @staticmethod
    def perpendicularSegment(p: 'QgsPoint', s1: 'QgsPoint', s2: 'QgsPoint') -> 'QgsLineString': ...
    @staticmethod
    def coefficients(pt1: 'QgsPoint', pt2: 'QgsPoint') -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def gradient(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @staticmethod
    def interpolatePointOnLineByValue(x1: float, y1: float, v1: float, x2: float, y2: float, v2: float, value: float) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def interpolatePointOnLine(x1: float, y1: float, x2: float, y2: float, fraction: float) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def interpolatePointOnLine(p1: 'QgsPoint', p2: 'QgsPoint', fraction: float) -> 'QgsPoint': ...
    @staticmethod
    def midpoint(pt1: 'QgsPoint', pt2: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def closestSideOfRectangle(right: float, bottom: float, left: float, top: float, x: float, y: float) -> int: ...
    @typing.overload
    @staticmethod
    def averageAngle(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @typing.overload
    @staticmethod
    def averageAngle(a1: float, a2: float) -> float: ...
    @staticmethod
    def linePerpendicularAngle(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def angleBetweenThreePoints(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def lineAngle(x1: float, y1: float, x2: float, y2: float) -> float: ...
    @staticmethod
    def normalizedAngle(angle: float) -> float: ...
    @staticmethod
    def interpolateArcValue(angle: float, a1: float, a2: float, a3: float, zm1: float, zm2: float, zm3: float) -> float: ...
    @staticmethod
    def segmentSide(pt1: 'QgsPoint', pt3: 'QgsPoint', pt2: 'QgsPoint') -> int: ...
    @staticmethod
    def pointContinuesArc(a1: 'QgsPoint', a2: 'QgsPoint', a3: 'QgsPoint', b: 'QgsPoint', distanceTolerance: float, pointSpacingAngleTolerance: float) -> bool: ...
    @staticmethod
    def segmentizeArc(p1: 'QgsPoint', p2: 'QgsPoint', p3: 'QgsPoint', tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ..., hasZ: bool = ..., hasM: bool = ...) -> typing.List['QgsPoint']: ...
    @staticmethod
    def circleTangentDirection(tangentPoint: 'QgsPoint', cp1: 'QgsPoint', cp2: 'QgsPoint', cp3: 'QgsPoint') -> float: ...
    @staticmethod
    def segmentMidPointFromCenter(p1: 'QgsPoint', p2: 'QgsPoint', center: 'QgsPoint', useShortestArc: bool = ...) -> 'QgsPoint': ...
    @staticmethod
    def segmentMidPoint(p1: 'QgsPoint', p2: 'QgsPoint', radius: float, mousePos: 'QgsPoint') -> typing.Tuple[bool, 'QgsPoint']: ...
    @staticmethod
    def sweepAngle(centerX: float, centerY: float, x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def circleLength(x1: float, y1: float, x2: float, y2: float, x3: float, y3: float) -> float: ...
    @staticmethod
    def angleOnCircle(angle: float, angle1: float, angle2: float, angle3: float) -> bool: ...
    @staticmethod
    def circleAngleBetween(angle: float, angle1: float, angle2: float, clockwise: bool) -> bool: ...
    @staticmethod
    def circleClockwise(angle1: float, angle2: float, angle3: float) -> bool: ...
    @staticmethod
    def circleCenterRadius(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint') -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def ccwAngle(dy: float, dx: float) -> float: ...
    @staticmethod
    def interpolatePointOnArc(pt1: 'QgsPoint', pt2: 'QgsPoint', pt3: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @staticmethod
    def perpendicularOffsetPointAlongSegment(x1: float, y1: float, x2: float, y2: float, proportion: float, offset: float) -> typing.Tuple[float, float]: ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: 'QgsPoint', directionPoint: 'QgsPoint', distance: float) -> 'QgsPoint': ...
    @typing.overload
    @staticmethod
    def leftOfLine(x: float, y: float, x1: float, y1: float, x2: float, y2: float) -> int: ...
    @typing.overload
    @staticmethod
    def leftOfLine(point: 'QgsPoint', p1: 'QgsPoint', p2: 'QgsPoint') -> int: ...
    @staticmethod
    def projectPointOnSegment(p: 'QgsPoint', s1: 'QgsPoint', s2: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def circleCircleInnerTangents(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def circleCircleOuterTangents(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def tangentPointAndCircle(center: QgsPointXY, radius: float, p: QgsPointXY) -> typing.Tuple[bool, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def circleCircleIntersections(center1: QgsPointXY, radius1: float, center2: QgsPointXY, radius2: float) -> typing.Tuple[int, QgsPointXY, QgsPointXY]: ...
    @staticmethod
    def lineCircleIntersection(center: QgsPointXY, radius: float, linePoint1: QgsPointXY, linePoint2: QgsPointXY, intersection: QgsPointXY) -> typing.Tuple[bool, QgsPointXY]: ...
    @staticmethod
    def segmentIntersection(p1: 'QgsPoint', p2: 'QgsPoint', q1: 'QgsPoint', q2: 'QgsPoint', tolerance: float = ..., acceptImproperIntersection: bool = ...) -> typing.Tuple[bool, 'QgsPoint', bool]: ...
    @staticmethod
    def lineIntersection(p1: 'QgsPoint', v1: QgsVector, p2: 'QgsPoint', v2: QgsVector) -> typing.Tuple[bool, 'QgsPoint']: ...
    @staticmethod
    def distToInfiniteLine(point: 'QgsPoint', linePoint1: 'QgsPoint', linePoint2: 'QgsPoint', epsilon: float = ...) -> float: ...
    @staticmethod
    def sqrDistToLine(ptX: float, ptY: float, x1: float, y1: float, x2: float, y2: float, epsilon: float) -> typing.Tuple[float, float, float]: ...
    @staticmethod
    def sqrDistance2D(pt1: 'QgsPoint', pt2: 'QgsPoint') -> float: ...
    @staticmethod
    def verticesAtDistance(geometry: QgsAbstractGeometry, distance: float) -> typing.Tuple[bool, 'QgsVertexId', 'QgsVertexId']: ...
    @staticmethod
    def distanceToVertex(geom: QgsAbstractGeometry, id: 'QgsVertexId') -> float: ...
    @staticmethod
    def closestPoint(geometry: QgsAbstractGeometry, point: 'QgsPoint') -> 'QgsPoint': ...
    @staticmethod
    def closestVertex(geom: QgsAbstractGeometry, pt: 'QgsPoint') -> typing.Tuple['QgsPoint', 'QgsVertexId']: ...
    @staticmethod
    def extractLineStrings(geom: QgsAbstractGeometry) -> typing.List['QgsLineString']: ...


class QgsLineSegment2D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, start: QgsPointXY, end: QgsPointXY) -> None: ...
    @typing.overload
    def __init__(self, x1: float, y1: float, x2: float, y2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLineSegment2D') -> None: ...

    def __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 calculateBoundingBox(self) -> 'QgsRectangle': ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def calculateBoundingBox3d(self) -> QgsBox3d: ...
    def __delitem__(self, index: int) -> None: ...
    def __setitem__(self, index: int, point: 'QgsPoint') -> None: ...
    def __getitem__(self, index: int) -> 'QgsPoint': ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsLineString': ...
    def scroll(self, firstVertexIndex: int) -> None: ...
    def convertTo(self, type: 'QgsWkbTypes.Type') -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def sumUpArea(self) -> float: ...
    def centroid(self) -> 'QgsPoint': ...
    def pointAt(self, node: int, point: 'QgsPoint') -> typing.Tuple[bool, Qgis.VertexType]: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def curveSubstring(self, startDistance: float, endDistance: float) -> 'QgsLineString': ...
    def interpolatePoint(self, distance: float) -> 'QgsPoint': ...
    def reversed(self) -> 'QgsLineString': ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def drawAsPolygon(self, p: QtGui.QPainter) -> None: ...
    def addToPainterPath(self, path: QtGui.QPainterPath) -> None: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: QgsAbstractGeometryTransformer, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def points(self) -> typing.List['QgsPoint']: ...
    def nCoordinates(self) -> int: ...
    def numPoints(self) -> int: ...
    def curveToLine(self, tolerance: float = ..., toleranceType: QgsAbstractGeometry.SegmentationToleranceType = ...) -> 'QgsLineString': ...
    def endPoint(self) -> 'QgsPoint': ...
    def startPoint(self) -> 'QgsPoint': ...
    def length3D(self) -> float: ...
    def length(self) -> float: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def asQPolygonF(self) -> QtGui.QPolygonF: ...
    def collectDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> typing.List['QgsVertexId']: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def isClosed2D(self) -> bool: ...
    def isClosed(self) -> bool: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsLineString': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def indexOf(self, point: 'QgsPoint') -> int: ...
    def isEmpty(self) -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsLineString': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def extend(self, startDistance: float, endDistance: float) -> None: ...
    def toCurveType(self) -> QgsCompoundCurve: ...
    def close(self) -> None: ...
    def addVertex(self, pt: 'QgsPoint') -> None: ...
    def append(self, line: 'QgsLineString') -> None: ...
    def setPoints(self, points: typing.Iterable['QgsPoint']) -> None: ...
    def setMAt(self, index: int, m: float) -> None: ...
    def setZAt(self, index: int, z: float) -> None: ...
    def setYAt(self, index: int, y: float) -> None: ...
    def setXAt(self, index: int, x: float) -> None: ...
    def mAt(self, index: int) -> float: ...
    def zAt(self, index: int) -> float: ...
    def yAt(self, index: int) -> float: ...
    def xAt(self, index: int) -> float: ...
    def pointN(self, i: int) -> 'QgsPoint': ...
    def equals(self, other: QgsCurve) -> bool: ...
    @staticmethod
    def fromQPolygonF(polygon: QtGui.QPolygonF) -> 'QgsLineString': ...
    @staticmethod
    def fromBezierCurve(start: 'QgsPoint', controlPoint1: 'QgsPoint', controlPoint2: 'QgsPoint', end: 'QgsPoint', segments: int = ...) -> 'QgsLineString': ...


class QgsMultiCurve(QgsGeometryCollection):

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

    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiCurve': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def reversed(self) -> 'QgsMultiCurve': ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiCurve': ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsMultiCurve': ...
    def geometryType(self) -> str: ...
    def curveN(self, index: int) -> QgsCurve: ...


class QgsMultiLineString(QgsMultiCurve):

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

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiLineString': ...
    def toCurveType(self) -> QgsMultiCurve: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsMultiLineString': ...
    def geometryType(self) -> str: ...
    def lineStringN(self, index: int) -> QgsLineString: ...


class QgsMultiPoint(QgsGeometryCollection):

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

    def wktOmitChildType(self) -> bool: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsMultiPoint': ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def nCoordinates(self) -> int: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def clear(self) -> None: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiPoint': ...
    def clone(self) -> 'QgsMultiPoint': ...
    def geometryType(self) -> str: ...
    def pointN(self, index: int) -> 'QgsPoint': ...


class QgsMultiSurface(QgsGeometryCollection):

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

    def createEmptyWithSameType(self) -> 'QgsMultiSurface': ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def insertGeometry(self, g: QgsAbstractGeometry, index: int) -> bool: ...
    def addGeometry(self, g: QgsAbstractGeometry) -> bool: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def toCurveType(self) -> 'QgsMultiSurface': ...
    def clone(self) -> 'QgsMultiSurface': ...
    def clear(self) -> None: ...
    def geometryType(self) -> str: ...
    def surfaceN(self, index: int) -> QgsSurface: ...


class QgsMultiPolygon(QgsMultiSurface):

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

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


class QgsPoint(QgsAbstractGeometry):

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self, x: typing.Optional[typing.Union['QgsPoint', QtCore.QPointF, QtCore.QPoint, float]] = ..., y: typing.Optional[float] = ..., z: typing.Optional[float] = ..., m: typing.Optional[float] = ..., wkbType: typing.Optional[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPoint') -> None: ...

    def childPoint(self, index: int) -> 'QgsPoint': ...
    def childCount(self) -> int: ...
    def compareToSameClass(self, other: QgsAbstractGeometry) -> int: ...
    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsPoint': ...
    def convertTo(self, type: 'QgsWkbTypes.Type') -> bool: ...
    def swapXy(self) -> None: ...
    def dropMValue(self) -> bool: ...
    def dropZValue(self) -> bool: ...
    def addMValue(self, mValue: float = ...) -> bool: ...
    def addZValue(self, zValue: float = ...) -> bool: ...
    def boundingBoxIntersects(self, rectangle: 'QgsRectangle') -> bool: ...
    def segmentLength(self, startVertex: 'QgsVertexId') -> float: ...
    def toCurveType(self) -> 'QgsPoint': ...
    def vertexAt(self, a0: 'QgsVertexId') -> 'QgsPoint': ...
    def partCount(self) -> int: ...
    def ringCount(self, a0: int = ...) -> int: ...
    def vertexCount(self, a0: int = ..., a1: int = ...) -> int: ...
    def vertexAngle(self, vertex: 'QgsVertexId') -> float: ...
    def adjacentVertices(self, vertex: 'QgsVertexId') -> typing.Tuple['QgsVertexId', 'QgsVertexId']: ...
    def nextVertex(self, id: 'QgsVertexId') -> typing.Tuple[bool, 'QgsPoint']: ...
    def closestSegment(self, pt: 'QgsPoint', epsilon: float = ...) -> typing.Tuple[float, 'QgsPoint', 'QgsVertexId', int]: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def moveVertex(self, position: 'QgsVertexId', newPos: 'QgsPoint') -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: 'QgsPoint') -> bool: ...
    def isValid(self, flags: typing.Union[Qgis.GeometryValidityFlags, Qgis.GeometryValidityFlag] = ...) -> typing.Tuple[bool, str]: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def vertexNumberFromVertexId(self, id: 'QgsVertexId') -> int: ...
    def nCoordinates(self) -> int: ...
    def coordinateSequence(self) -> typing.Any: ...
    @typing.overload
    def transform(self, ct: 'QgsCoordinateTransform', d: Qgis.TransformDirection = ..., transformZ: bool = ...) -> None: ...
    @typing.overload
    def transform(self, t: QtGui.QTransform, zTranslate: float = ..., zScale: float = ..., mTranslate: float = ..., mScale: float = ...) -> None: ...
    @typing.overload
    def transform(self, transformer: QgsAbstractGeometryTransformer, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def asQPainterPath(self) -> QtGui.QPainterPath: ...
    def draw(self, p: QtGui.QPainter) -> None: ...
    def asKml(self, precision: int = ...) -> str: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asGml2(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def asWkt(self, precision: int = ...) -> str: ...
    def asWkb(self, a0: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def removeDuplicateNodes(self, epsilon: float = ..., useZValues: bool = ...) -> bool: ...
    def snappedToGrid(self, hSpacing: float, vSpacing: float, dSpacing: float = ..., mSpacing: float = ...) -> 'QgsPoint': ...
    def clone(self) -> 'QgsPoint': ...
    def dimension(self) -> int: ...
    def geometryType(self) -> str: ...
    def boundingBox(self) -> 'QgsRectangle': ...
    def isEmpty(self) -> bool: ...
    def normalize(self) -> None: ...
    def __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): ...


class QgsPolygon(QgsCurvePolygon):

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

    def __repr__(self) -> typing.Any: ...
    def createEmptyWithSameType(self) -> 'QgsPolygon': ...
    def pointDistanceToBoundary(self, x: float, y: float) -> float: ...
    def boundary(self) -> QgsAbstractGeometry: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def toCurveType(self) -> QgsCurvePolygon: ...
    def surfaceToPolygon(self) -> 'QgsPolygon': ...
    def asWkb(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> QtCore.QByteArray: ...
    def wkbSize(self, flags: typing.Union[QgsAbstractGeometry.WkbFlags, QgsAbstractGeometry.WkbFlag] = ...) -> int: ...
    def fromWkb(self, wkb: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsPolygon': ...
    def geometryType(self) -> str: ...


class QgsQuadrilateral(PyQt5.sip.wrapper):

    class Point(int):
        Point1 = ... # type: QgsQuadrilateral.Point
        Point2 = ... # type: QgsQuadrilateral.Point
        Point3 = ... # type: QgsQuadrilateral.Point
        Point4 = ... # type: QgsQuadrilateral.Point

    class ConstructionOption(int):
        Distance = ... # type: QgsQuadrilateral.ConstructionOption
        Projected = ... # type: QgsQuadrilateral.ConstructionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPoint, p2: QgsPoint, p3: QgsPoint, p4: QgsPoint) -> None: ...
    @typing.overload
    def __init__(self, p1: QgsPointXY, p2: QgsPointXY, p3: QgsPointXY, p4: QgsPointXY) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsQuadrilateral') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def toString(self, pointPrecision: int = ...) -> str: ...
    def toLineString(self, force2D: bool = ...) -> QgsLineString: ...
    def toPolygon(self, force2D: bool = ...) -> QgsPolygon: ...
    def points(self) -> typing.List[QgsPoint]: ...
    def setPoints(self, p1: QgsPoint, p2: QgsPoint, p3: QgsPoint, p4: QgsPoint) -> bool: ...
    def setPoint(self, newPoint: QgsPoint, index: 'QgsQuadrilateral.Point') -> bool: ...
    def isValid(self) -> bool: ...
    def __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 setYMaximum(self, y: float) -> None: ...
    def setYMinimum(self, y: float) -> None: ...
    def setXMaximum(self, x: float) -> None: ...
    def setXMinimum(self, x: float) -> None: ...
    @typing.overload
    def set(self, p1: QgsPointXY, p2: QgsPointXY, normalize: bool = ...) -> None: ...
    @typing.overload
    def set(self, xMin: float, yMin: float, xMax: float, yMax: float, normalize: bool = ...) -> None: ...
    @staticmethod
    def fromCenterAndSize(center: QgsPointXY, width: float, height: float) -> 'QgsRectangle': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsRectangle': ...


class QgsReferencedGeometryBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, crs: 'QgsCoordinateReferenceSystem' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedGeometryBase') -> None: ...

    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...


class QgsReferencedRectangle(QgsRectangle, QgsReferencedGeometryBase):

    @typing.overload
    def __init__(self, rectangle: QgsRectangle, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReferencedRectangle') -> None: ...

    def __repr__(self) -> typing.Any: ...
    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': ...


class QgsRegularPolygon(PyQt5.sip.wrapper):

    class ConstructionOption(int):
        InscribedCircle = ... # type: QgsRegularPolygon.ConstructionOption
        CircumscribedCircle = ... # type: QgsRegularPolygon.ConstructionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, center: QgsPoint, radius: float, azimuth: float, numberSides: int, circle: 'QgsRegularPolygon.ConstructionOption') -> None: ...
    @typing.overload
    def __init__(self, center: QgsPoint, pt1: QgsPoint, numberSides: int, circle: 'QgsRegularPolygon.ConstructionOption') -> None: ...
    @typing.overload
    def __init__(self, pt1: QgsPoint, pt2: QgsPoint, numberSides: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRegularPolygon') -> None: ...

    def length(self) -> float: ...
    def perimeter(self) -> float: ...
    def area(self) -> float: ...
    def centralAngle(self) -> float: ...
    def interiorAngle(self) -> float: ...
    def toString(self, pointPrecision: int = ..., radiusPrecision: int = ..., anglePrecision: int = ...) -> str: ...
    def circumscribedCircle(self) -> QgsCircle: ...
    def inscribedCircle(self) -> QgsCircle: ...
    def triangulate(self) -> typing.List['QgsTriangle']: ...
    def toTriangle(self) -> 'QgsTriangle': ...
    def toLineString(self) -> QgsLineString: ...
    def toPolygon(self) -> QgsPolygon: ...
    def points(self) -> typing.List[QgsPoint]: ...
    def setNumberSides(self, numberSides: int) -> None: ...
    def setFirstVertex(self, firstVertex: QgsPoint) -> None: ...
    def setRadius(self, radius: float) -> None: ...
    def setCenter(self, center: QgsPoint) -> None: ...
    def numberSides(self) -> int: ...
    def apothem(self) -> float: ...
    def firstVertex(self) -> QgsPoint: ...
    def radius(self) -> float: ...
    def center(self) -> QgsPoint: ...
    def isEmpty(self) -> bool: ...
    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) -> 'QgsTriangle': ...
    def inscribedCircle(self) -> QgsCircle: ...
    def inscribedRadius(self) -> float: ...
    def inscribedCenter(self) -> QgsPoint: ...
    def circumscribedCircle(self) -> QgsCircle: ...
    def circumscribedRadius(self) -> float: ...
    def circumscribedCenter(self) -> QgsPoint: ...
    def orthocenter(self, lengthTolerance: float = ...) -> QgsPoint: ...
    def medial(self) -> 'QgsTriangle': ...
    def bisectors(self, lengthTolerance: float = ...) -> typing.List[QgsLineString]: ...
    def medians(self) -> typing.List[QgsLineString]: ...
    def altitudes(self) -> typing.List[QgsLineString]: ...
    def isScalene(self, lengthTolerance: float = ...) -> bool: ...
    def isRight(self, angleTolerance: float = ...) -> bool: ...
    def isEquilateral(self, lengthTolerance: float = ...) -> bool: ...
    def isIsocele(self, lengthTolerance: float = ...) -> bool: ...
    def isDegenerate(self) -> bool: ...
    def angles(self) -> typing.List[float]: ...
    def lengths(self) -> typing.List[float]: ...
    def vertexAt(self, atVertex: int) -> QgsPoint: ...
    def boundary(self) -> QgsCurve: ...
    def setExteriorRing(self, ring: QgsCurve) -> None: ...
    def moveVertex(self, vId: 'QgsVertexId', newPos: QgsPoint) -> bool: ...
    def insertVertex(self, position: 'QgsVertexId', vertex: QgsPoint) -> bool: ...
    def deleteVertex(self, position: 'QgsVertexId') -> bool: ...
    def addInteriorRing(self, ring: QgsCurve) -> None: ...
    def toCurveType(self) -> QgsCurvePolygon: ...
    def surfaceToPolygon(self) -> QgsPolygon: ...
    def asGml3(self, doc: QtXml.QDomDocument, precision: int = ..., ns: str = ..., axisOrder: QgsAbstractGeometry.AxisOrder = ...) -> QtXml.QDomElement: ...
    def fromWkt(self, wkt: str) -> bool: ...
    def fromWkb(self, wkbPtr: 'QgsConstWkbPtr') -> bool: ...
    def clear(self) -> None: ...
    def clone(self) -> 'QgsTriangle': ...
    def geometryType(self) -> str: ...
    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: QgsAbstractGeometry) -> bool: ...


class QgsWkbPtr(PyQt5.sip.wrapper):

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


class QgsConstWkbPtr(PyQt5.sip.wrapper):

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


class QgsWkbTypes(PyQt5.sip.wrapper):

    class GeometryType(int):
        PointGeometry = ... # type: QgsWkbTypes.GeometryType
        LineGeometry = ... # type: QgsWkbTypes.GeometryType
        PolygonGeometry = ... # type: QgsWkbTypes.GeometryType
        UnknownGeometry = ... # type: QgsWkbTypes.GeometryType
        NullGeometry = ... # type: QgsWkbTypes.GeometryType

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

    staticMetaObject = ... # type: QtCore.QMetaObject

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

    @staticmethod
    def to25D(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def dropM(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def dropZ(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def addM(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def addZ(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def hasM(type: 'QgsWkbTypes.Type') -> bool: ...
    @staticmethod
    def hasZ(type: 'QgsWkbTypes.Type') -> bool: ...
    @staticmethod
    def geometryDisplayString(type: 'QgsWkbTypes.GeometryType') -> str: ...
    @staticmethod
    def translatedDisplayString(type: 'QgsWkbTypes.Type') -> str: ...
    @staticmethod
    def displayString(type: 'QgsWkbTypes.Type') -> str: ...
    @staticmethod
    def geometryType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.GeometryType': ...
    @staticmethod
    def coordDimensions(type: 'QgsWkbTypes.Type') -> int: ...
    @staticmethod
    def wkbDimensions(type: 'QgsWkbTypes.Type') -> int: ...
    @staticmethod
    def isCurvedType(type: 'QgsWkbTypes.Type') -> bool: ...
    @staticmethod
    def isMultiType(type: 'QgsWkbTypes.Type') -> bool: ...
    @staticmethod
    def isSingleType(type: 'QgsWkbTypes.Type') -> bool: ...
    @staticmethod
    def parseType(wktStr: str) -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def zmType(type: 'QgsWkbTypes.Type', hasZ: bool, hasM: bool) -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def flatType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def linearType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def curveType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def promoteNonPointTypesToMulti(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def multiType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...
    @staticmethod
    def singleType(type: 'QgsWkbTypes.Type') -> 'QgsWkbTypes.Type': ...


class QgsRay3D(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, origin: QtGui.QVector3D, direction: QtGui.QVector3D) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRay3D') -> None: ...

    def angleToPoint(self, point: QtGui.QVector3D) -> float: ...
    def isInFront(self, point: QtGui.QVector3D) -> bool: ...
    def projectedPoint(self, point: QtGui.QVector3D) -> QtGui.QVector3D: ...
    def setDirection(self, direction: QtGui.QVector3D) -> None: ...
    def setOrigin(self, origin: QtGui.QVector3D) -> None: ...
    def direction(self) -> QtGui.QVector3D: ...
    def origin(self) -> QtGui.QVector3D: ...


class QgsAbstractBabelFormat(PyQt5.sip.wrapper):

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

    @staticmethod
    def featureTypeToArgument(type: Qgis.GpsFeatureType) -> str: ...
    def exportCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def capabilities(self) -> Qgis.BabelFormatCapabilities: ...
    def name(self) -> str: ...


class QgsBabelSimpleImportFormat(QgsAbstractBabelFormat):

    @typing.overload
    def __init__(self, format: str, description: str, capabilities: typing.Union[Qgis.BabelFormatCapabilities, Qgis.BabelFormatCapability], extensions: typing.Iterable[str] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBabelSimpleImportFormat') -> None: ...

    def importCommand(self, babel: str, featureType: Qgis.GpsFeatureType, input: str, output: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def extensions(self) -> typing.List[str]: ...
    def description(self) -> str: ...


class QgsBabelFormatRegistry(PyQt5.sip.wrapper):

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

    def reloadFromSettings(self) -> None: ...
    def devices(self) -> typing.Any: ...
    def deviceFormat(self, name: str) -> 'QgsBabelGpsDeviceFormat': ...
    def deviceNames(self) -> typing.List[str]: ...
    def importFileFilter(self) -> str: ...
    def importFormatByDescription(self, description: str) -> QgsBabelSimpleImportFormat: ...
    def importFormat(self, name: str) -> QgsBabelSimpleImportFormat: ...
    def importFormatNames(self) -> typing.List[str]: ...


class QgsBabelGpsDeviceFormat(QgsAbstractBabelFormat):

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

    def exportCommand(self, babel: str, type: Qgis.GpsFeatureType, in_: str, out: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...
    def importCommand(self, babel: str, type: Qgis.GpsFeatureType, in_: str, out: str, flags: typing.Union[Qgis.BabelCommandFlags, Qgis.BabelCommandFlag] = ...) -> typing.List[str]: ...


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


class QgsGpsInformation(PyQt5.sip.wrapper):

    class FixStatus(int):
        NoData = ... # type: QgsGpsInformation.FixStatus
        NoFix = ... # type: QgsGpsInformation.FixStatus
        Fix2D = ... # type: QgsGpsInformation.FixStatus
        Fix3D = ... # type: QgsGpsInformation.FixStatus

    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]
    vacc = ... # type: float
    vdop = ... # type: float

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

    def qualityDescription(self) -> str: ...
    def fixStatus(self) -> 'QgsGpsInformation.FixStatus': ...
    def isValid(self) -> bool: ...


class QgsGpsConnection(QtCore.QObject):

    class Status(int):
        NotConnected = ... # type: QgsGpsConnection.Status
        Connected = ... # type: QgsGpsConnection.Status
        DataReceived = ... # type: QgsGpsConnection.Status
        GPSDataReceived = ... # type: QgsGpsConnection.Status

    def __init__(self, dev: QtCore.QIODevice) -> None: ...

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


class QgsNmeaConnection(QgsGpsConnection):

    def __init__(self, device: QtCore.QIODevice) -> None: ...

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


class QgsGpsdConnection(QgsNmeaConnection):

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


class QgsGpsDetector(QtCore.QObject):

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

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


class QgsCalloutPosition(PyQt5.sip.wrapper):

    featureId = ... # type: int
    layerID = ... # type: str
    providerID = ... # type: str

    @typing.overload
    def __init__(self, id: int, layer: str, providerId: str = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCalloutPosition') -> None: ...

    def setDestinationIsPinned(self, pinned: bool) -> None: ...
    def destinationIsPinned(self) -> bool: ...
    def setOriginIsPinned(self, pinned: bool) -> None: ...
    def originIsPinned(self) -> bool: ...
    def setDestination(self, destination: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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):

    class PolygonPlacementFlag(int):
        AllowPlacementOutsideOfPolygon = ... # type: QgsLabeling.PolygonPlacementFlag
        AllowPlacementInsideOfPolygon = ... # type: QgsLabeling.PolygonPlacementFlag

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

    class LinePlacementFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.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['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __xor__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __ior__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __or__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __iand__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __and__(self, f: typing.Union['QgsLabeling.LinePlacementFlags', 'QgsLabeling.LinePlacementFlag']) -> 'QgsLabeling.LinePlacementFlags': ...
        def __invert__(self) -> 'QgsLabeling.LinePlacementFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class PolygonPlacementFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 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['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __xor__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __ior__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __or__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __iand__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __and__(self, f: typing.Union['QgsLabeling.PolygonPlacementFlags', 'QgsLabeling.PolygonPlacementFlag']) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __invert__(self) -> 'QgsLabeling.PolygonPlacementFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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


class QgsLabelingEngineSettings(PyQt5.sip.wrapper):

    class PlacementEngineVersion(int):
        PlacementEngineVersion1 = ... # type: QgsLabelingEngineSettings.PlacementEngineVersion
        PlacementEngineVersion2 = ... # type: QgsLabelingEngineSettings.PlacementEngineVersion

    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

    class Flag(int):
        UseAllLabels = ... # type: QgsLabelingEngineSettings.Flag
        UsePartialCandidates = ... # type: QgsLabelingEngineSettings.Flag
        RenderOutlineLabels = ... # type: QgsLabelingEngineSettings.Flag
        DrawLabelRectOnly = ... # type: QgsLabelingEngineSettings.Flag
        DrawCandidates = ... # type: QgsLabelingEngineSettings.Flag
        DrawUnplacedLabels = ... # type: QgsLabelingEngineSettings.Flag
        CollectUnplacedLabels = ... # type: QgsLabelingEngineSettings.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.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['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __xor__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __ior__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __or__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __iand__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __and__(self, f: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 'QgsLabelingEngineSettings.Flags': ...
        def __invert__(self) -> 'QgsLabelingEngineSettings.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

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

    def setPlacementVersion(self, version: 'QgsLabelingEngineSettings.PlacementEngineVersion') -> None: ...
    def placementVersion(self) -> 'QgsLabelingEngineSettings.PlacementEngineVersion': ...
    def setUnplacedLabelColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def unplacedLabelColor(self) -> QtGui.QColor: ...
    def setDefaultTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def defaultTextRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def writeSettingsToProject(self, project: 'QgsProject') -> None: ...
    def readSettingsFromProject(self, project: 'QgsProject') -> None: ...
    def searchMethod(self) -> 'QgsLabelingEngineSettings.Search': ...
    def setSearchMethod(self, s: 'QgsLabelingEngineSettings.Search') -> None: ...
    def setNumCandidatePositions(self, candPoint: int, candLine: int, candPolygon: int) -> None: ...
    def numCandidatePositions(self) -> typing.Tuple[int, int, int]: ...
    def setMaximumPolygonCandidatesPerCmSquared(self, candidates: float) -> None: ...
    def maximumPolygonCandidatesPerCmSquared(self) -> float: ...
    def setMaximumLineCandidatesPerCm(self, candidates: float) -> None: ...
    def maximumLineCandidatesPerCm(self) -> float: ...
    def setFlag(self, f: 'QgsLabelingEngineSettings.Flag', enabled: bool = ...) -> None: ...
    def testFlag(self, f: 'QgsLabelingEngineSettings.Flag') -> bool: ...
    def flags(self) -> 'QgsLabelingEngineSettings.Flags': ...
    def setFlags(self, flags: typing.Union['QgsLabelingEngineSettings.Flags', 'QgsLabelingEngineSettings.Flag']) -> 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: QgsUnitTypes.RenderUnit) -> None: ...
    def overrunDistanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOverrunDistance(self, distance: float) -> None: ...
    def overrunDistance(self) -> float: ...
    def setDirectionSymbolPlacement(self, placement: 'QgsLabelLineSettings.DirectionSymbolPlacement') -> None: ...
    def directionSymbolPlacement(self) -> 'QgsLabelLineSettings.DirectionSymbolPlacement': ...
    def setReverseDirectionSymbol(self, reversed: bool) -> None: ...
    def reverseDirectionSymbol(self) -> bool: ...
    def setRightDirectionSymbol(self, symbol: str) -> None: ...
    def rightDirectionSymbol(self) -> str: ...
    def setLeftDirectionSymbol(self, symbol: str) -> None: ...
    def leftDirectionSymbol(self) -> str: ...
    def setAddDirectionSymbol(self, enabled: bool) -> None: ...
    def addDirectionSymbol(self) -> bool: ...
    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setMergeLines(self, merge: bool) -> None: ...
    def mergeLines(self) -> bool: ...
    def setPlacementFlags(self, flags: typing.Union[QgsLabeling.LinePlacementFlags, QgsLabeling.LinePlacementFlag]) -> None: ...
    def placementFlags(self) -> QgsLabeling.LinePlacementFlags: ...


class QgsLabelObstacleSettings(PyQt5.sip.wrapper):

    class ObstacleType(int):
        PolygonInterior = ... # type: QgsLabelObstacleSettings.ObstacleType
        PolygonBoundary = ... # type: QgsLabelObstacleSettings.ObstacleType
        PolygonWhole = ... # type: QgsLabelObstacleSettings.ObstacleType

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

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def obstacleGeometry(self) -> QgsGeometry: ...
    def setObstacleGeometry(self, obstacleGeom: QgsGeometry) -> None: ...
    def setType(self, type: 'QgsLabelObstacleSettings.ObstacleType') -> None: ...
    def type(self) -> 'QgsLabelObstacleSettings.ObstacleType': ...
    def setFactor(self, factor: float) -> None: ...
    def factor(self) -> float: ...
    def setIsObstacle(self, isObstacle: bool) -> None: ...
    def isObstacle(self) -> bool: ...


class QgsLabelPlacementSettings(PyQt5.sip.wrapper):

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

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setAllowDegradedPlacement(self, allow: bool) -> None: ...
    def allowDegradedPlacement(self) -> bool: ...
    def setOverlapHandling(self, handling: Qgis.LabelOverlapHandling) -> None: ...
    def overlapHandling(self) -> Qgis.LabelOverlapHandling: ...


class QgsLabelPosition(PyQt5.sip.wrapper):

    cornerPoints = ... # type: typing.Iterable[QgsPointXY]
    featureId = ... # type: int
    groupedLabelId = ... # type: int
    height = ... # type: float
    isDiagram = ... # type: bool
    isPinned = ... # type: bool
    isUnplaced = ... # type: bool
    labelFont = ... # type: QtGui.QFont
    labelGeometry = ... # type: QgsGeometry
    labelRect = ... # type: QgsRectangle
    labelText = ... # type: str
    layerID = ... # type: str
    providerID = ... # type: str
    rotation = ... # type: float
    upsideDown = ... # type: bool
    width = ... # type: float

    @typing.overload
    def __init__(self, id: int, r: float, corners: typing.Iterable[QgsPointXY], rect: QgsRectangle, w: float, h: float, layer: str, labeltext: str, labelfont: QtGui.QFont, upside_down: bool, diagram: bool = ..., pinned: bool = ..., providerId: str = ..., labelGeometry: QgsGeometry = ..., isUnplaced: bool = ...) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelPosition') -> None: ...

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


class QgsLabelSearchTree(PyQt5.sip.wrapper):

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

    def setMapSettings(self, settings: QgsMapSettings) -> None: ...
    def calloutsInRectangle(self, rectangle: QgsRectangle) -> typing.List[QgsCalloutPosition]: ...
    def allLabels(self) -> typing.List[QgsLabelPosition]: ...
    def clear(self) -> None: ...


class QgsLabelThinningSettings(PyQt5.sip.wrapper):

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

    def updateDataDefinedProperties(self, properties: QgsPropertyCollection, context: QgsExpressionContext) -> None: ...
    def setMinimumFeatureSize(self, size: float) -> None: ...
    def minimumFeatureSize(self) -> float: ...
    def setMaximumNumberLabels(self, number: int) -> None: ...
    def maximumNumberLabels(self) -> int: ...
    def setLimitNumberLabelsEnabled(self, enabled: bool) -> None: ...
    def limitNumberOfLabelsEnabled(self) -> bool: ...


class QgsPalLayerSettings(PyQt5.sip.wrapper):

    class Property(int):
        Size = ... # type: QgsPalLayerSettings.Property
        Bold = ... # type: QgsPalLayerSettings.Property
        Italic = ... # type: QgsPalLayerSettings.Property
        Underline = ... # type: QgsPalLayerSettings.Property
        Color = ... # type: QgsPalLayerSettings.Property
        Strikeout = ... # type: QgsPalLayerSettings.Property
        Family = ... # type: QgsPalLayerSettings.Property
        FontStyle = ... # type: QgsPalLayerSettings.Property
        FontSizeUnit = ... # type: QgsPalLayerSettings.Property
        FontTransp = ... # type: QgsPalLayerSettings.Property
        FontOpacity = ... # type: QgsPalLayerSettings.Property
        FontCase = ... # type: QgsPalLayerSettings.Property
        FontLetterSpacing = ... # type: QgsPalLayerSettings.Property
        FontWordSpacing = ... # type: QgsPalLayerSettings.Property
        FontBlendMode = ... # type: QgsPalLayerSettings.Property
        FontStretchFactor = ... # type: QgsPalLayerSettings.Property
        MultiLineWrapChar = ... # type: QgsPalLayerSettings.Property
        AutoWrapLength = ... # type: QgsPalLayerSettings.Property
        MultiLineHeight = ... # type: QgsPalLayerSettings.Property
        MultiLineAlignment = ... # type: QgsPalLayerSettings.Property
        TextOrientation = ... # type: QgsPalLayerSettings.Property
        DirSymbDraw = ... # type: QgsPalLayerSettings.Property
        DirSymbLeft = ... # type: QgsPalLayerSettings.Property
        DirSymbRight = ... # type: QgsPalLayerSettings.Property
        DirSymbPlacement = ... # type: QgsPalLayerSettings.Property
        DirSymbReverse = ... # type: QgsPalLayerSettings.Property
        NumFormat = ... # type: QgsPalLayerSettings.Property
        NumDecimals = ... # type: QgsPalLayerSettings.Property
        NumPlusSign = ... # type: QgsPalLayerSettings.Property
        BufferDraw = ... # type: QgsPalLayerSettings.Property
        BufferSize = ... # type: QgsPalLayerSettings.Property
        BufferUnit = ... # type: QgsPalLayerSettings.Property
        BufferColor = ... # type: QgsPalLayerSettings.Property
        BufferTransp = ... # type: QgsPalLayerSettings.Property
        BufferOpacity = ... # type: QgsPalLayerSettings.Property
        BufferJoinStyle = ... # type: QgsPalLayerSettings.Property
        BufferBlendMode = ... # type: QgsPalLayerSettings.Property
        MaskEnabled = ... # type: QgsPalLayerSettings.Property
        MaskBufferSize = ... # type: QgsPalLayerSettings.Property
        MaskBufferUnit = ... # type: QgsPalLayerSettings.Property
        MaskOpacity = ... # type: QgsPalLayerSettings.Property
        MaskJoinStyle = ... # type: QgsPalLayerSettings.Property
        ShapeDraw = ... # type: QgsPalLayerSettings.Property
        ShapeKind = ... # type: QgsPalLayerSettings.Property
        ShapeSVGFile = ... # type: QgsPalLayerSettings.Property
        ShapeSizeType = ... # type: QgsPalLayerSettings.Property
        ShapeSizeX = ... # type: QgsPalLayerSettings.Property
        ShapeSizeY = ... # type: QgsPalLayerSettings.Property
        ShapeSizeUnits = ... # type: QgsPalLayerSettings.Property
        ShapeRotationType = ... # type: QgsPalLayerSettings.Property
        ShapeRotation = ... # type: QgsPalLayerSettings.Property
        ShapeOffset = ... # type: QgsPalLayerSettings.Property
        ShapeOffsetUnits = ... # type: QgsPalLayerSettings.Property
        ShapeRadii = ... # type: QgsPalLayerSettings.Property
        ShapeRadiiUnits = ... # type: QgsPalLayerSettings.Property
        ShapeTransparency = ... # type: QgsPalLayerSettings.Property
        ShapeOpacity = ... # type: QgsPalLayerSettings.Property
        ShapeBlendMode = ... # type: QgsPalLayerSettings.Property
        ShapeFillColor = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeColor = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeWidth = ... # type: QgsPalLayerSettings.Property
        ShapeStrokeWidthUnits = ... # type: QgsPalLayerSettings.Property
        ShapeJoinStyle = ... # type: QgsPalLayerSettings.Property
        ShadowDraw = ... # type: QgsPalLayerSettings.Property
        ShadowUnder = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetAngle = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetDist = ... # type: QgsPalLayerSettings.Property
        ShadowOffsetUnits = ... # type: QgsPalLayerSettings.Property
        ShadowRadius = ... # type: QgsPalLayerSettings.Property
        ShadowRadiusUnits = ... # type: QgsPalLayerSettings.Property
        ShadowTransparency = ... # type: QgsPalLayerSettings.Property
        ShadowOpacity = ... # type: QgsPalLayerSettings.Property
        ShadowScale = ... # type: QgsPalLayerSettings.Property
        ShadowColor = ... # type: QgsPalLayerSettings.Property
        ShadowBlendMode = ... # type: QgsPalLayerSettings.Property
        CentroidWhole = ... # type: QgsPalLayerSettings.Property
        OffsetQuad = ... # type: QgsPalLayerSettings.Property
        OffsetXY = ... # type: QgsPalLayerSettings.Property
        OffsetUnits = ... # type: QgsPalLayerSettings.Property
        LabelDistance = ... # type: QgsPalLayerSettings.Property
        DistanceUnits = ... # type: QgsPalLayerSettings.Property
        OffsetRotation = ... # type: QgsPalLayerSettings.Property
        CurvedCharAngleInOut = ... # type: QgsPalLayerSettings.Property
        PositionX = ... # type: QgsPalLayerSettings.Property
        PositionY = ... # type: QgsPalLayerSettings.Property
        PositionPoint = ... # type: QgsPalLayerSettings.Property
        Hali = ... # type: QgsPalLayerSettings.Property
        Vali = ... # type: QgsPalLayerSettings.Property
        Rotation = ... # type: QgsPalLayerSettings.Property
        LabelRotation = ... # type: QgsPalLayerSettings.Property
        RepeatDistance = ... # type: QgsPalLayerSettings.Property
        RepeatDistanceUnit = ... # type: QgsPalLayerSettings.Property
        Priority = ... # type: QgsPalLayerSettings.Property
        PredefinedPositionOrder = ... # type: QgsPalLayerSettings.Property
        LinePlacementOptions = ... # type: QgsPalLayerSettings.Property
        OverrunDistance = ... # type: QgsPalLayerSettings.Property
        LabelAllParts = ... # type: QgsPalLayerSettings.Property
        PolygonLabelOutside = ... # type: QgsPalLayerSettings.Property
        LineAnchorPercent = ... # type: QgsPalLayerSettings.Property
        LineAnchorClipping = ... # type: QgsPalLayerSettings.Property
        LineAnchorType = ... # type: QgsPalLayerSettings.Property
        LineAnchorTextPoint = ... # type: QgsPalLayerSettings.Property
        ScaleVisibility = ... # type: QgsPalLayerSettings.Property
        MinScale = ... # type: QgsPalLayerSettings.Property
        MinimumScale = ... # type: QgsPalLayerSettings.Property
        MaxScale = ... # type: QgsPalLayerSettings.Property
        MaximumScale = ... # type: QgsPalLayerSettings.Property
        FontLimitPixel = ... # type: QgsPalLayerSettings.Property
        FontMinPixel = ... # type: QgsPalLayerSettings.Property
        FontMaxPixel = ... # type: QgsPalLayerSettings.Property
        IsObstacle = ... # type: QgsPalLayerSettings.Property
        ObstacleFactor = ... # type: QgsPalLayerSettings.Property
        ZIndex = ... # type: QgsPalLayerSettings.Property
        CalloutDraw = ... # type: QgsPalLayerSettings.Property
        AllowDegradedPlacement = ... # type: QgsPalLayerSettings.Property
        OverlapHandling = ... # type: QgsPalLayerSettings.Property
        Show = ... # type: QgsPalLayerSettings.Property
        AlwaysShow = ... # type: QgsPalLayerSettings.Property

    class ObstacleType(int):
        PolygonInterior = ... # type: QgsPalLayerSettings.ObstacleType
        PolygonBoundary = ... # type: QgsPalLayerSettings.ObstacleType
        PolygonWhole = ... # type: QgsPalLayerSettings.ObstacleType

    class DirectionSymbols(int):
        SymbolLeftRight = ... # type: QgsPalLayerSettings.DirectionSymbols
        SymbolAbove = ... # type: QgsPalLayerSettings.DirectionSymbols
        SymbolBelow = ... # type: QgsPalLayerSettings.DirectionSymbols

    class LinePlacementFlags(int):
        OnLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        AboveLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        BelowLine = ... # type: QgsPalLayerSettings.LinePlacementFlags
        MapOrientation = ... # type: QgsPalLayerSettings.LinePlacementFlags

    angleOffset = ... # type: float
    autoWrapLength = ... # type: int
    centroidInside = ... # type: bool
    centroidWhole = ... # type: bool
    ct = ... # type: 'QgsCoordinateTransform'
    decimals = ... # type: int
    dist = ... # type: float
    distMapUnitScale = ... # type: QgsMapUnitScale
    distUnits = ... # type: QgsUnitTypes.RenderUnit
    drawLabels = ... # type: bool
    extentGeom = ... # type: QgsGeometry
    fieldIndex = ... # type: int
    fieldName = ... # type: str
    fitInPolygonOnly = ... # type: bool
    fontLimitPixelSize = ... # type: bool
    fontMaxPixelSize = ... # type: int
    fontMinPixelSize = ... # type: int
    formatNumbers = ... # type: bool
    geometryGenerator = ... # type: str
    geometryGeneratorEnabled = ... # type: bool
    geometryGeneratorType = ... # type: QgsWkbTypes.GeometryType
    isExpression = ... # type: bool
    labelOffsetMapUnitScale = ... # type: QgsMapUnitScale
    labelPerPart = ... # type: bool
    layerType = ... # type: QgsWkbTypes.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: QgsUnitTypes.RenderUnit
    placement = ... # type: Qgis.LabelPlacement
    plusSign = ... # type: bool
    preserveRotation = ... # type: bool
    previewBkgrdColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    priority = ... # type: int
    ptOne = ... # type: QgsPointXY
    ptZero = ... # type: QgsPointXY
    quadOffset = ... # type: Qgis.LabelQuadrantPosition
    repeatDistance = ... # type: float
    repeatDistanceMapUnitScale = ... # type: QgsMapUnitScale
    repeatDistanceUnit = ... # type: QgsUnitTypes.RenderUnit
    scaleVisibility = ... # type: bool
    substitutions = ... # type: QgsStringReplacementCollection
    upsidedownLabels = ... # type: Qgis.UpsideDownLabelHandling
    useMaxLineLengthForAutoWrap = ... # type: bool
    useSubstitutions = ... # type: bool
    wrapChar = ... # type: str
    xOffset = ... # type: float
    xform = ... # type: QgsMapToPixel
    yOffset = ... # type: float
    zIndex = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, s: 'QgsPalLayerSettings') -> None: ...

    def setUnplacedVisibility(self, visibility: Qgis.UnplacedLabelVisibility) -> None: ...
    def unplacedVisibility(self) -> Qgis.UnplacedLabelVisibility: ...
    @staticmethod
    def labelSettingsPreviewPixmap(settings: 'QgsPalLayerSettings', size: QtCore.QSize, previewText: str = ..., padding: int = ...) -> QtGui.QPixmap: ...
    def setPlacementSettings(self, settings: QgsLabelPlacementSettings) -> None: ...
    def placementSettings(self) -> QgsLabelPlacementSettings: ...
    def setThinningSettings(self, settings: QgsLabelThinningSettings) -> None: ...
    def thinningSettings(self) -> QgsLabelThinningSettings: ...
    def setObstacleSettings(self, settings: QgsLabelObstacleSettings) -> None: ...
    def obstacleSettings(self) -> QgsLabelObstacleSettings: ...
    def setLineSettings(self, settings: QgsLabelLineSettings) -> None: ...
    def lineSettings(self) -> QgsLabelLineSettings: ...
    def setCallout(self, callout: QgsCallout) -> None: ...
    def callout(self) -> QgsCallout: ...
    def setFormat(self, format: 'QgsTextFormat') -> None: ...
    def format(self) -> 'QgsTextFormat': ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def registerFeature(self, f: QgsFeature, context: QgsRenderContext) -> None: ...
    def calculateLabelSize(self, fm: QtGui.QFontMetricsF, text: str, f: typing.Optional[QgsFeature] = ..., context: typing.Optional[QgsRenderContext] = ...) -> typing.Tuple[float, float, float, float]: ...
    def legendString(self) -> str: ...
    def setLegendString(self, legendString: str) -> None: ...
    def _setDisplayAll(self, display: bool) -> None: ...
    def _getDisplayAll(self) -> bool: ...
    def _setOverrunDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def _getOverrunDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def _setOverrunDistanceUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def _getOverrunDistanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def _setOverrunDistance(self, distance: float) -> None: ...
    def _getOverrunDistance(self) -> float: ...
    def _setPlaceDirectionSymbol(self, placement: 'QgsPalLayerSettings.DirectionSymbols') -> None: ...
    def _getPlaceDirectionSymbol(self) -> 'QgsPalLayerSettings.DirectionSymbols': ...
    def _setReverseDirectionSymbol(self, reverse: bool) -> None: ...
    def _getReverseDirectionSymbol(self) -> bool: ...
    def _setRightDirectionSymbol(self, symbol: str) -> None: ...
    def _getRightDirectionSymbol(self) -> str: ...
    def _setLeftDirectionSymbol(self, symbol: str) -> None: ...
    def _getLeftDirectionSymbol(self) -> str: ...
    def _setAddDirectionSymbol(self, add: bool) -> None: ...
    def _getAddDirectionSymbol(self) -> bool: ...
    def _setMergeLines(self, merge: bool) -> None: ...
    def _getMergeLines(self) -> bool: ...
    def _setLinePlacementFlags(self, flags: int) -> None: ...
    def _getLinePlacementFlags(self) -> int: ...
    def _setObstacleType(self, type: 'QgsPalLayerSettings.ObstacleType') -> None: ...
    def _getObstacleType(self) -> 'QgsPalLayerSettings.ObstacleType': ...
    def _setObstacleFactor(self, factor: float) -> None: ...
    def _getObstacleFactor(self) -> float: ...
    def _setIsObstacle(self, obstacle: bool) -> None: ...
    def _getIsObstacle(self) -> bool: ...
    def _setMinFeatureSize(self, size: float) -> None: ...
    def _minFeatureSize(self) -> float: ...
    def _setMaxNumLabels(self, max: int) -> None: ...
    def _maxNumLabels(self) -> int: ...
    def _setLimitNumLabels(self, limit: bool) -> None: ...
    def _limitNumLabels(self) -> bool: ...
    def setRotationUnit(self, angleUnit: QgsUnitTypes.AngleUnit) -> None: ...
    def rotationUnit(self) -> QgsUnitTypes.AngleUnit: ...
    def setPolygonPlacementFlags(self, flags: typing.Union[QgsLabeling.PolygonPlacementFlags, QgsLabeling.PolygonPlacementFlag]) -> None: ...
    def polygonPlacementFlags(self) -> QgsLabeling.PolygonPlacementFlags: ...
    def getLabelExpression(self) -> QgsExpression: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def containsAdvancedEffects(self) -> bool: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext) -> None: ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def prepare(self, context: QgsRenderContext, attributeNames: typing.Iterable[str], fields: QgsFields, mapSettings: QgsMapSettings, crs: 'QgsCoordinateReferenceSystem') -> typing.Tuple[bool, typing.Set[str]]: ...
    @property
    def displayAll(self) -> bool: ...
    @displayAll.setter
    def displayAll(self, display: bool) -> None: ...
    @property
    def overrunDistanceMapUnitScale(self) -> QgsMapUnitScale: ...
    @overrunDistanceMapUnitScale.setter
    def overrunDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    @property
    def overrunDistanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    @overrunDistanceUnit.setter
    def overrunDistanceUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    @property
    def overrunDistance(self) -> float: ...
    @overrunDistance.setter
    def overrunDistance(self, distance: float) -> None: ...
    @property
    def placeDirectionSymbol(self) -> 'QgsPalLayerSettings.DirectionSymbols': ...
    @placeDirectionSymbol.setter
    def placeDirectionSymbol(self, placement: 'QgsPalLayerSettings.DirectionSymbols') -> None: ...
    @property
    def reverseDirectionSymbol(self) -> bool: ...
    @reverseDirectionSymbol.setter
    def reverseDirectionSymbol(self, reverse: bool) -> None: ...
    @property
    def rightDirectionSymbol(self) -> str: ...
    @rightDirectionSymbol.setter
    def rightDirectionSymbol(self, symbol: str) -> None: ...
    @property
    def leftDirectionSymbol(self) -> str: ...
    @leftDirectionSymbol.setter
    def leftDirectionSymbol(self, symbol: str) -> None: ...
    @property
    def addDirectionSymbol(self) -> bool: ...
    @addDirectionSymbol.setter
    def addDirectionSymbol(self, add: bool) -> None: ...
    @property
    def mergeLines(self) -> bool: ...
    @mergeLines.setter
    def mergeLines(self, merge: bool) -> None: ...
    @property
    def placementFlags(self) -> int: ...
    @placementFlags.setter
    def placementFlags(self, flags: int) -> None: ...
    @property
    def obstacleType(self) -> 'QgsPalLayerSettings.ObstacleType': ...
    @obstacleType.setter
    def obstacleType(self, type: 'QgsPalLayerSettings.ObstacleType') -> None: ...
    @property
    def obstacleFactor(self) -> float: ...
    @obstacleFactor.setter
    def obstacleFactor(self, factor: float) -> None: ...
    @property
    def obstacle(self) -> bool: ...
    @obstacle.setter
    def obstacle(self, obstacle: bool) -> None: ...
    @property
    def minFeatureSize(self) -> float: ...
    @minFeatureSize.setter
    def minFeatureSize(self, size: float) -> None: ...
    @property
    def maxNumLabels(self) -> int: ...
    @maxNumLabels.setter
    def maxNumLabels(self, max: int) -> None: ...
    @property
    def limitNumLabels(self) -> bool: ...
    @limitNumLabels.setter
    def limitNumLabels(self, limit: bool) -> None: ...


class QgsLabelCandidate(PyQt5.sip.wrapper):

    cost = ... # type: float
    rect = ... # type: QtCore.QRectF

    @typing.overload
    def __init__(self, r: QtCore.QRectF, c: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLabelCandidate') -> None: ...


class QgsPalLabeling(PyQt5.sip.wrapper):

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

    @staticmethod
    def splitToGraphemes(text: str) -> typing.List[str]: ...
    @staticmethod
    def splitToLines(text: str, wrapCharacter: str, autoWrapLength: int = ..., useMaxLineLengthWhenAutoWrapping: bool = ...) -> typing.List[str]: ...
    @staticmethod
    def geometryRequiresPreparation(geometry: QgsGeometry, context: QgsRenderContext, ct: 'QgsCoordinateTransform', clipGeometry: QgsGeometry = ..., mergeLines: bool = ...) -> bool: ...
    @staticmethod
    def prepareGeometry(geometry: QgsGeometry, context: QgsRenderContext, ct: 'QgsCoordinateTransform', clipGeometry: QgsGeometry = ..., mergeLines: bool = ...) -> QgsGeometry: ...
    @staticmethod
    def staticWillUseLayer(layer: QgsMapLayer) -> bool: ...


class QgsAbstractVectorLayerLabeling(PyQt5.sip.wrapper):

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

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


class QgsRuleBasedLabeling(QgsAbstractVectorLayerLabeling):

    class Rule(PyQt5.sip.wrapper):

        class RegisterResult(int):
            Filtered = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult
            Inactive = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult
            Registered = ... # type: QgsRuleBasedLabeling.Rule.RegisterResult

        def __init__(self, settings: QgsPalLayerSettings, maximumScale: float = ..., minimumScale: float = ..., filterExp: str = ..., description: str = ..., elseRule: bool = ...) -> None: ...

        def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
        def requiresAdvancedEffects(self) -> bool: ...
        def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
        @staticmethod
        def create(ruleElem: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsRuleBasedLabeling.Rule': ...
        def clone(self) -> 'QgsRuleBasedLabeling.Rule': ...
        def findRuleByKey(self, key: str) -> 'QgsRuleBasedLabeling.Rule': ...
        def removeChildAt(self, i: int) -> None: ...
        def insertChild(self, i: int, rule: 'QgsRuleBasedLabeling.Rule') -> None: ...
        def appendChild(self, rule: 'QgsRuleBasedLabeling.Rule') -> None: ...
        def parent(self) -> 'QgsRuleBasedLabeling.Rule': ...
        def descendants(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def children(self) -> typing.List['QgsRuleBasedLabeling.Rule']: ...
        def setRuleKey(self, key: str) -> None: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: str) -> None: ...
        def setFilterExpression(self, filterExp: str) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setSettings(self, settings: QgsPalLayerSettings) -> None: ...
        def ruleKey(self) -> str: ...
        def isElse(self) -> bool: ...
        def active(self) -> bool: ...
        def description(self) -> str: ...
        def filterExpression(self) -> str: ...
        def minimumScale(self) -> float: ...
        def maximumScale(self) -> float: ...
        def dependsOnScale(self) -> bool: ...
        def settings(self) -> QgsPalLayerSettings: ...

    def __init__(self, root: 'QgsRuleBasedLabeling.Rule') -> None: ...

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


class QgsVectorLayerSimpleLabeling(QgsAbstractVectorLayerLabeling):

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

    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsVectorLayerSimpleLabeling': ...
    def toSld(self, parent: QtXml.QDomNode, props: typing.Dict[str, typing.Any]) -> None: ...
    def requiresAdvancedEffects(self) -> bool: ...
    def setSettings(self, settings: QgsPalLayerSettings, providerId: str = ...) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def settings(self, providerId: str = ...) -> QgsPalLayerSettings: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def clone(self) -> QgsAbstractVectorLayerLabeling: ...
    def type(self) -> str: ...


class QgsLayerTreeModelLegendNode(QtCore.QObject):

    class NodeTypes(int):
        SimpleLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        SymbolLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        RasterSymbolLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        ImageLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        WmsLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        DataDefinedSizeLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        EmbeddedWidget = ... # type: QgsLayerTreeModelLegendNode.NodeTypes
        ColorRampLegend = ... # type: QgsLayerTreeModelLegendNode.NodeTypes

    class LegendNodeRoles(int):
        RuleKeyRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles
        ParentRuleKeyRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles
        NodeTypeRole = ... # type: QgsLayerTreeModelLegendNode.LegendNodeRoles

    class ItemContext(PyQt5.sip.wrapper):

        columnLeft = ... # type: float
        columnRight = ... # type: float
        context = ... # type: QgsRenderContext
        labelXOffset = ... # type: float
        maxSiblingSymbolWidth = ... # type: float
        painter = ... # type: QtGui.QPainter
        patchShape = ... # type: 'QgsLegendPatchShape'
        patchSize = ... # type: QtCore.QSizeF
        point = ... # type: typing.Union[QtCore.QPointF, QtCore.QPoint]
        top = ... # type: float

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

    class ItemMetrics(PyQt5.sip.wrapper):

        labelSize = ... # type: QtCore.QSizeF
        symbolSize = ... # type: QtCore.QSizeF

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

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

    def createTemporaryRenderContext(self) -> QgsRenderContext: ...
    sizeChanged: typing.ClassVar[QtCore.pyqtsignal]
    dataChanged: typing.ClassVar[QtCore.pyqtsignal]
    def toggleAllItems(self) -> None: ...
    def uncheckAllItems(self) -> None: ...
    def checkAllItems(self) -> None: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext', symbolSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext', itemHeight: float) -> QtCore.QSizeF: ...
    def exportToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def draw(self, settings: QgsLegendSettings, ctx: 'QgsLayerTreeModelLegendNode.ItemContext') -> 'QgsLayerTreeModelLegendNode.ItemMetrics': ...
    def invalidateMapBasedData(self) -> None: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def columnBreak(self) -> bool: ...
    def setColumnBreak(self, breakBeforeNode: bool) -> None: ...
    def setUserPatchSize(self, size: QtCore.QSizeF) -> None: ...
    def userPatchSize(self) -> QtCore.QSizeF: ...
    def setUserLabel(self, userLabel: str) -> None: ...
    def userLabel(self) -> str: ...
    def setEmbeddedInParent(self, embedded: bool) -> None: ...
    def isEmbeddedInParent(self) -> bool: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...
    def model(self) -> 'QgsLayerTreeModel': ...
    def layerNode(self) -> 'QgsLayerTreeLayer': ...


class QgsColorRampLegendNode(QgsLayerTreeModelLegendNode):

    @typing.overload
    def __init__(self, nodeLayer: 'QgsLayerTreeLayer', ramp: QgsColorRamp, minimumLabel: str, maximumLabel: str, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, nodeLayer: 'QgsLayerTreeLayer', ramp: QgsColorRamp, settings: 'QgsColorRampLegendNodeSettings', minimumValue: float, maximumValue: float, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setSettings(self, settings: 'QgsColorRampLegendNodeSettings') -> None: ...
    def settings(self) -> 'QgsColorRampLegendNodeSettings': ...
    def ramp(self) -> QgsColorRamp: ...
    def iconSize(self) -> QtCore.QSize: ...
    def setIconSize(self, size: QtCore.QSize) -> None: ...
    def drawSymbolText(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, symbolSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsColorRampLegendNodeSettings(PyQt5.sip.wrapper):

    class Direction(int):
        MinimumToMaximum = ... # type: QgsColorRampLegendNodeSettings.Direction
        MaximumToMinimum = ... # type: QgsColorRampLegendNodeSettings.Direction

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

    def setUseContinuousLegend(self, useContinuousLegend: bool) -> None: ...
    def useContinuousLegend(self) -> bool: ...
    def setOrientation(self, orientation: QtCore.Qt.Orientation) -> None: ...
    def orientation(self) -> QtCore.Qt.Orientation: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setSuffix(self, suffix: str) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def prefix(self) -> str: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setMaximumLabel(self, label: str) -> None: ...
    def maximumLabel(self) -> str: ...
    def setMinimumLabel(self, label: str) -> None: ...
    def minimumLabel(self) -> str: ...
    def setDirection(self, direction: 'QgsColorRampLegendNodeSettings.Direction') -> None: ...
    def direction(self) -> 'QgsColorRampLegendNodeSettings.Direction': ...


class QgsLayerTreeNode(QtCore.QObject):

    class NodeType(int):
        NodeGroup = ... # type: QgsLayerTreeNode.NodeType
        NodeLayer = ... # type: QgsLayerTreeNode.NodeType

    @typing.overload
    def __init__(self, t: 'QgsLayerTreeNode.NodeType', checked: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLayerTreeNode') -> None: ...

    def removeChildrenPrivate(self, from_: int, count: int, destroy: bool = ...) -> None: ...
    def insertChildrenPrivate(self, index: int, nodes: typing.Iterable['QgsLayerTreeNode']) -> None: ...
    def writeCommonXml(self, element: QtXml.QDomElement) -> None: ...
    def readCommonXml(self, element: QtXml.QDomElement) -> None: ...
    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: 'QgsLayerTreeNode') -> bool: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def setExpanded(self, expanded: bool) -> None: ...
    def isExpanded(self) -> bool: ...
    def depth(self) -> int: ...
    def checkedLayers(self) -> typing.List[QgsMapLayer]: ...
    def isItemVisibilityUncheckedRecursive(self) -> bool: ...
    def isItemVisibilityCheckedRecursive(self) -> bool: ...
    def setItemVisibilityCheckedParentRecursive(self, checked: bool) -> None: ...
    def setItemVisibilityCheckedRecursive(self, checked: bool) -> None: ...
    def setItemVisibilityChecked(self, checked: bool) -> None: ...
    def itemVisibilityChecked(self) -> bool: ...
    def isVisible(self) -> bool: ...
    def resolveReferences(self, project: 'QgsProject', looseMatching: bool = ...) -> None: ...
    def clone(self) -> 'QgsLayerTreeNode': ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTreeNode': ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: 'QgsProject') -> 'QgsLayerTreeNode': ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def children(self) -> typing.List['QgsLayerTreeNode']: ...
    def parent(self) -> 'QgsLayerTreeNode': ...
    def nodeType(self) -> 'QgsLayerTreeNode.NodeType': ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTreeGroup(QgsLayerTreeNode):

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

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


class QgsLayerTree(QgsLayerTreeGroup):

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

    hasCustomLayerOrderChanged: typing.ClassVar[QtCore.pyqtsignal]
    layerOrderChanged: typing.ClassVar[QtCore.pyqtsignal]
    customLayerOrderChanged: typing.ClassVar[QtCore.pyqtsignal]
    def clear(self) -> None: ...
    def clone(self) -> 'QgsLayerTree': ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readLayerOrderFromXml(self, doc: QtXml.QDomElement) -> None: ...
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTree': ...
    def setHasCustomLayerOrder(self, hasCustomLayerOrder: bool) -> None: ...
    def hasCustomLayerOrder(self) -> bool: ...
    def layerOrder(self) -> typing.List[QgsMapLayer]: ...
    def setCustomLayerOrderByIds(self, customLayerOrder: typing.Iterable[str]) -> None: ...
    def setCustomLayerOrder(self, customLayerOrder: typing.Iterable[QgsMapLayer]) -> None: ...
    def customLayerOrder(self) -> typing.List[QgsMapLayer]: ...
    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def isLayer(node: QgsLayerTreeNode) -> bool: ...
    @staticmethod
    def isGroup(node: QgsLayerTreeNode) -> bool: ...


class QgsLayerTreeLayer(QgsLayerTreeNode):

    class LegendNodesSplitBehavior(int):
        UseDefaultLegendSetting = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior
        AllowSplittingLegendNodesOverMultipleColumns = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior
        PreventSplittingLegendNodesOverMultipleColumns = ... # type: QgsLayerTreeLayer.LegendNodesSplitBehavior

    @typing.overload
    def __init__(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def __init__(self, layerId: str, name: str = ..., source: str = ..., provider: str = ...) -> None: ...

    def attachToLayer(self) -> None: ...
    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: str) -> None: ...
    def resolveReferences(self, project: 'QgsProject', looseMatching: bool = ...) -> None: ...
    def clone(self) -> 'QgsLayerTreeLayer': ...
    def dump(self) -> str: ...
    def writeXml(self, parentElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsLayerTreeLayer': ...
    @typing.overload
    @staticmethod
    def readXml(element: QtXml.QDomElement, project: 'QgsProject', context: QgsReadWriteContext) -> 'QgsLayerTreeLayer': ...
    def useLayerName(self) -> bool: ...
    def setUseLayerName(self, use: bool = ...) -> None: ...
    def setName(self, n: str) -> None: ...
    def name(self) -> str: ...
    def layer(self) -> QgsMapLayer: ...
    def layerId(self) -> str: ...
    def __repr__(self) -> typing.Any: ...


class QgsLayerTreeModel(QtCore.QAbstractItemModel):

    class Flag(int):
        ShowLegend = ... # type: QgsLayerTreeModel.Flag
        ShowLegendAsTree = ... # type: QgsLayerTreeModel.Flag
        DeferredLegendInvalidation = ... # type: QgsLayerTreeModel.Flag
        UseEmbeddedWidgets = ... # type: QgsLayerTreeModel.Flag
        UseTextFormatting = ... # type: QgsLayerTreeModel.Flag
        AllowNodeReorder = ... # type: QgsLayerTreeModel.Flag
        AllowNodeRename = ... # type: QgsLayerTreeModel.Flag
        AllowNodeChangeVisibility = ... # type: QgsLayerTreeModel.Flag
        AllowLegendChangeState = ... # type: QgsLayerTreeModel.Flag
        ActionHierarchical = ... # type: QgsLayerTreeModel.Flag

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

    def legendInvalidateMapBasedData(self) -> None: ...
    def legendCleanup(self) -> None: ...
    def legendIconEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> QtGui.QIcon: ...
    def legendEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> bool: ...
    def legendNodeFlags(self, node: QgsLayerTreeModelLegendNode) -> QtCore.Qt.ItemFlags: ...
    def legendNodeData(self, node: QgsLayerTreeModelLegendNode, role: int) -> typing.Any: ...
    def legendParent(self, legendNode: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    def legendNodeIndex(self, row: int, column: int, node: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    def legendRootIndex(self, row: int, column: int, nL: QgsLayerTreeLayer) -> QtCore.QModelIndex: ...
    def legendNodeRowCount(self, node: QgsLayerTreeModelLegendNode) -> int: ...
    def legendRootRowCount(self, nL: QgsLayerTreeLayer) -> int: ...
    def indexOfParentLayerTreeNode(self, parentNode: QgsLayerTreeNode) -> QtCore.QModelIndex: ...
    def filterLegendNodes(self, nodes: typing.Iterable[QgsLayerTreeModelLegendNode]) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    @staticmethod
    def iconGroup() -> QtGui.QIcon: ...
    def refreshScaleBasedLayers(self, index: QtCore.QModelIndex = ..., previousScale: float = ...) -> None: ...
    def recursivelyEmitDataChanged(self, index: QtCore.QModelIndex = ...) -> None: ...
    def disconnectFromRootNode(self) -> None: ...
    def connectToRootNode(self) -> None: ...
    def disconnectFromLayers(self, parentGroup: QgsLayerTreeGroup) -> None: ...
    def connectToLayers(self, parentGroup: QgsLayerTreeGroup) -> None: ...
    def disconnectFromLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def connectToLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def addLegendToLayer(self, nodeL: QgsLayerTreeLayer) -> None: ...
    def removeLegendFromLayer(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def invalidateLegendMapBasedData(self) -> None: ...
    def legendNodeDataChanged(self) -> None: ...
    def layerNeedsUpdate(self) -> None: ...
    def layerFlagsChanged(self) -> None: ...
    def layerLegendChanged(self) -> None: ...
    def nodeLayerWillBeUnloaded(self) -> None: ...
    def nodeLayerLoaded(self) -> None: ...
    def nodeCustomPropertyChanged(self, node: QgsLayerTreeNode, key: str) -> None: ...
    def nodeNameChanged(self, node: QgsLayerTreeNode, name: str) -> None: ...
    def nodeVisibilityChanged(self, node: QgsLayerTreeNode) -> None: ...
    def nodeRemovedChildren(self) -> None: ...
    def nodeWillRemoveChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def nodeAddedChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def nodeWillAddChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    messageEmitted: typing.ClassVar[QtCore.pyqtsignal]
    @staticmethod
    def scaleIconSize(standardSize: int) -> int: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[str, str]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def legendMapViewData(self) -> typing.Tuple[float, int, float]: ...
    def setLegendMapViewData(self, mapUnitsPerPixel: float, dpi: int, scale: float) -> None: ...
    def legendFilterMapSettings(self) -> QgsMapSettings: ...
    def setLegendFilter(self, settings: QgsMapSettings, useExtent: bool = ..., polygon: QgsGeometry = ..., useExpressions: bool = ...) -> None: ...
    def setLegendFilterByMap(self, settings: QgsMapSettings) -> None: ...
    def legendFilterByScale(self) -> float: ...
    def setLegendFilterByScale(self, scale: float) -> None: ...
    def autoCollapseLegendNodes(self) -> int: ...
    def setAutoCollapseLegendNodes(self, nodeCount: int) -> None: ...
    def layerTreeNodeFont(self, nodeType: int) -> QtGui.QFont: ...
    def setLayerTreeNodeFont(self, nodeType: int, font: QtGui.QFont) -> None: ...
    def setCurrentIndex(self, currentIndex: QtCore.QModelIndex) -> None: ...
    def currentIndex(self) -> QtCore.QModelIndex: ...
    def refreshLayerLegend(self, nodeLayer: QgsLayerTreeLayer) -> None: ...
    def setRootGroup(self, newRootGroup: QgsLayerTree) -> None: ...
    def rootGroup(self) -> QgsLayerTree: ...
    def findLegendNode(self, layerId: str, ruleKey: str) -> QgsLayerTreeModelLegendNode: ...
    def legendNodeEmbeddedInParent(self, nodeLayer: QgsLayerTreeLayer) -> QgsLayerTreeModelLegendNode: ...
    def layerOriginalLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def layerLegendNodes(self, nodeLayer: QgsLayerTreeLayer, skipNodeEmbeddedInParent: bool = ...) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendNode2index(self, legendNode: QgsLayerTreeModelLegendNode) -> QtCore.QModelIndex: ...
    @staticmethod
    def index2legendNode(index: QtCore.QModelIndex) -> QgsLayerTreeModelLegendNode: ...
    def indexes2nodes(self, list: typing.Iterable[QtCore.QModelIndex], skipInternal: bool = ...) -> typing.List[QgsLayerTreeNode]: ...
    def node2index(self, node: QgsLayerTreeNode) -> QtCore.QModelIndex: ...
    def index2node(self, index: QtCore.QModelIndex) -> QgsLayerTreeNode: ...
    def testFlag(self, f: 'QgsLayerTreeModel.Flag') -> bool: ...
    def setFlag(self, f: 'QgsLayerTreeModel.Flag', on: bool = ...) -> None: ...
    def setFlags(self, f: typing.Union['QgsLayerTreeModel.Flags', 'QgsLayerTreeModel.Flag']) -> None: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    @typing.overload
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    @typing.overload
    def flags(self) -> 'QgsLayerTreeModel.Flags': ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...


class QgsSymbolLegendNode(QgsLayerTreeModelLegendNode):

    MAXIMUM_SIZE = ... # type: float
    MINIMUM_SIZE = ... # type: float

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

    def evaluateLabel(self, context: QgsExpressionContext = ..., label: str = ...) -> str: ...
    def setCustomSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def customSymbol(self) -> 'QgsSymbol': ...
    def setPatchShape(self, shape: 'QgsLegendPatchShape') -> None: ...
    def patchShape(self) -> 'QgsLegendPatchShape': ...
    def symbolLabel(self) -> str: ...
    def setTextOnSymbolTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textOnSymbolTextFormat(self) -> 'QgsTextFormat': ...
    def setTextOnSymbolLabel(self, label: str) -> None: ...
    def textOnSymbolLabel(self) -> str: ...
    def setSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def symbol(self) -> 'QgsSymbol': ...
    @typing.overload
    def minimumIconSize(self) -> QtCore.QSize: ...
    @typing.overload
    def minimumIconSize(self, context: QgsRenderContext) -> QtCore.QSize: ...
    def iconSize(self) -> QtCore.QSize: ...
    def setIconSize(self, sz: QtCore.QSize) -> None: ...
    def invalidateMapBasedData(self) -> None: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def setUserLabel(self, userLabel: str) -> None: ...
    def setEmbeddedInParent(self, embedded: bool) -> None: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...


class QgsSimpleLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, label: str, icon: QtGui.QIcon = ..., parent: typing.Optional[QtCore.QObject] = ..., key: str = ...) -> None: ...

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


class QgsImageLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, img: QtGui.QImage, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsRasterSymbolLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], label: str, parent: typing.Optional[QtCore.QObject] = ..., isCheckable: bool = ..., ruleKey: str = ...) -> None: ...

    def isCheckable(self) -> bool: ...
    def ruleKey(self) -> str: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def setData(self, value: typing.Any, role: int) -> bool: ...
    def data(self, role: int) -> typing.Any: ...
    def flags(self) -> QtCore.Qt.ItemFlags: ...


class QgsWmsLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def invalidateMapBasedData(self) -> None: ...
    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsDataDefinedSizeLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, settings: QgsDataDefinedSizeLegend, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def draw(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext) -> QgsLayerTreeModelLegendNode.ItemMetrics: ...
    def data(self, role: int) -> typing.Any: ...


class QgsVectorLabelLegendNode(QgsLayerTreeModelLegendNode):

    def __init__(self, nodeLayer: QgsLayerTreeLayer, labelSettings: QgsPalLayerSettings, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def exportSymbolToJson(self, settings: QgsLegendSettings, context: QgsRenderContext) -> typing.Dict[str, QtCore.QJsonValue]: ...
    def drawSymbol(self, settings: QgsLegendSettings, ctx: QgsLayerTreeModelLegendNode.ItemContext, itemHeight: float) -> QtCore.QSizeF: ...
    def data(self, role: int) -> typing.Any: ...


class QgsLayerTreeRegistryBridge(QtCore.QObject):

    class InsertionPoint(PyQt5.sip.wrapper):

        group = ... # type: QgsLayerTreeGroup
        position = ... # type: int

        @typing.overload
        def __init__(self, group: QgsLayerTreeGroup, position: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerTreeRegistryBridge.InsertionPoint') -> None: ...

    def __init__(self, root: QgsLayerTreeGroup, project: 'QgsProject', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def removeLayersFromRegistry(self, layerIds: typing.Iterable[str]) -> None: ...
    def groupRemovedChildren(self) -> None: ...
    def groupWillRemoveChildren(self, node: QgsLayerTreeNode, indexFrom: int, indexTo: int) -> None: ...
    def layersWillBeRemoved(self, layerIds: typing.Iterable[str]) -> None: ...
    def layersAdded(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    addedLayersToLayerTree: typing.ClassVar[QtCore.pyqtsignal]
    @typing.overload
    def setLayerInsertionPoint(self, parentGroup: QgsLayerTreeGroup, index: int) -> None: ...
    @typing.overload
    def setLayerInsertionPoint(self, insertionPoint: 'QgsLayerTreeRegistryBridge.InsertionPoint') -> None: ...
    def newLayersVisible(self) -> bool: ...
    def setNewLayersVisible(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...


class QgsLayerTreeFilterProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setLayerChecked(self, layer: QgsMapLayer, checked: bool) -> None: ...
    def isLayerChecked(self, layer: QgsMapLayer) -> bool: ...
    def setFilterText(self, filterText: str = ...) -> None: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def sibling(self, row: int, column: int, idx: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, idx: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def setFilters(self, filters: typing.Union[QgsMapLayerProxyModel.Filters, QgsMapLayerProxyModel.Filter]) -> None: ...
    def setLayerTreeModel(self, layerTreeModel: QgsLayerTreeModel) -> None: ...
    def layerTreeModel(self) -> QgsLayerTreeModel: ...
    def mapLayer(self, idx: QtCore.QModelIndex) -> QgsMapLayer: ...
    def checkedLayers(self) -> typing.List[QgsMapLayer]: ...
    def setCheckedLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...


class QgsLayerTreeUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerTreeUtils') -> None: ...

    @staticmethod
    def firstGroupWithoutCustomProperty(group: QgsLayerTreeGroup, property: str) -> QgsLayerTreeGroup: ...
    @staticmethod
    def countMapLayerInTree(tree: QgsLayerTreeNode, layer: QgsMapLayer) -> int: ...
    @staticmethod
    def collectMapLayersRecursive(nodes: typing.Iterable[QgsLayerTreeNode]) -> typing.Set[QgsMapLayer]: ...
    @staticmethod
    def insertLayerBelow(group: QgsLayerTreeGroup, refLayer: QgsMapLayer, layerToInsert: QgsMapLayer) -> QgsLayerTreeLayer: ...
    @staticmethod
    def hasLegendFilterExpression(group: QgsLayerTreeGroup) -> bool: ...
    @staticmethod
    def legendFilterByExpression(layer: QgsLayerTreeLayer) -> typing.Tuple[str, bool]: ...
    @staticmethod
    def setLegendFilterByExpression(layer: QgsLayerTreeLayer, expr: str, enabled: bool = ...) -> None: ...
    @staticmethod
    def invisibleLayerList(node: QgsLayerTreeNode) -> typing.List[str]: ...
    @staticmethod
    def updateEmbeddedGroupsProjectPath(group: QgsLayerTreeGroup, project: 'QgsProject') -> None: ...
    @staticmethod
    def replaceChildrenOfEmbeddedGroups(group: QgsLayerTreeGroup) -> None: ...
    @staticmethod
    def storeOriginalLayersProperties(group: QgsLayerTreeGroup, doc: QtXml.QDomDocument) -> None: ...
    @staticmethod
    def removeInvalidLayers(group: QgsLayerTreeGroup) -> None: ...
    @staticmethod
    def layersModified(layerNodes: typing.Iterable[QgsLayerTreeLayer]) -> bool: ...
    @staticmethod
    def layersEditable(layerNodes: typing.Iterable[QgsLayerTreeLayer], ignoreLayersWhichCannotBeToggled: bool = ...) -> bool: ...
    @staticmethod
    def checkStateFromXml(txt: str) -> QtCore.Qt.CheckState: ...
    @staticmethod
    def checkStateToXml(state: QtCore.Qt.CheckState) -> str: ...
    @staticmethod
    def writeOldLegend(doc: QtXml.QDomDocument, root: QgsLayerTreeGroup, hasCustomOrder: bool, order: typing.Iterable[QgsMapLayer]) -> QtXml.QDomElement: ...
    @staticmethod
    def readOldLegendLayerOrder(legendElem: QtXml.QDomElement, order: typing.Iterable[str]) -> typing.Tuple[bool, bool]: ...
    @staticmethod
    def readOldLegend(root: QgsLayerTreeGroup, legendElem: QtXml.QDomElement) -> bool: ...


class QgsLegendPatchShape(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.SymbolType, geometry: QgsGeometry, preserveAspectRatio: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLegendPatchShape') -> None: ...

    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def toQPolygonF(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> typing.Any: ...
    def scaledGeometry(self, size: QtCore.QSizeF) -> QgsGeometry: ...
    def setScaleToOutputSize(self, scale: bool) -> None: ...
    def scaleToOutputSize(self) -> bool: ...
    def setPreserveAspectRatio(self, preserve: bool) -> None: ...
    def preserveAspectRatio(self) -> bool: ...
    def setGeometry(self, geometry: QgsGeometry) -> None: ...
    def geometry(self) -> QgsGeometry: ...
    def setSymbolType(self, type: Qgis.SymbolType) -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def isNull(self) -> bool: ...


class QgsAbstractLayoutIterator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractLayoutIterator') -> None: ...

    def filePath(self, baseFilePath: str, extension: str) -> str: ...
    def next(self) -> bool: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def layout(self) -> 'QgsLayout': ...


class QgsReportSectionContext(PyQt5.sip.wrapper):

    currentLayer = ... # type: QgsVectorLayer
    feature = ... # type: QgsFeature
    fieldFilters = ... # type: typing.Dict[str, typing.Any]

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsReportSectionContext') -> None: ...


class QgsAbstractReportSection(QgsAbstractLayoutIterator):

    class SubSection(int):
        Header = ... # type: QgsAbstractReportSection.SubSection
        Body = ... # type: QgsAbstractReportSection.SubSection
        Children = ... # type: QgsAbstractReportSection.SubSection
        Footer = ... # type: QgsAbstractReportSection.SubSection
        End = ... # type: QgsAbstractReportSection.SubSection

    def __init__(self, parentSection: typing.Optional['QgsAbstractReportSection'] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setParentSection(self, parent: 'QgsAbstractReportSection') -> None: ...
    def copyCommonProperties(self, destination: 'QgsAbstractReportSection') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def reloadSettings(self) -> None: ...
    def readXml(self, sectionElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def context(self) -> QgsReportSectionContext: ...
    def setContext(self, context: QgsReportSectionContext) -> None: ...
    def removeChildAt(self, index: int) -> None: ...
    def removeChild(self, section: 'QgsAbstractReportSection') -> None: ...
    def insertChild(self, index: int, section: 'QgsAbstractReportSection') -> None: ...
    def appendChild(self, section: 'QgsAbstractReportSection') -> None: ...
    def childSection(self, index: int) -> 'QgsAbstractReportSection': ...
    def childSections(self) -> typing.List['QgsAbstractReportSection']: ...
    def row(self) -> int: ...
    def childCount(self) -> int: ...
    def setFooter(self, footer: 'QgsLayout') -> None: ...
    def footer(self) -> 'QgsLayout': ...
    def setFooterEnabled(self, enabled: bool) -> None: ...
    def footerEnabled(self) -> bool: ...
    def setHeader(self, header: 'QgsLayout') -> None: ...
    def header(self) -> 'QgsLayout': ...
    def setHeaderEnabled(self, enabled: bool) -> None: ...
    def headerEnabled(self) -> bool: ...
    def nextBody(self) -> typing.Tuple['QgsLayout', bool]: ...
    def prepareFooter(self) -> bool: ...
    def prepareHeader(self) -> bool: ...
    def reset(self) -> None: ...
    def endRender(self) -> bool: ...
    def next(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def layout(self) -> 'QgsLayout': ...
    def filePath(self, baseFilePath: str, extension: str) -> str: ...
    def count(self) -> int: ...
    def project(self) -> 'QgsProject': ...
    def parentSection(self) -> 'QgsAbstractReportSection': ...
    def clone(self) -> 'QgsAbstractReportSection': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsLayoutUndoObjectInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutUndoObjectInterface') -> None: ...

    def createCommand(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...


class QgsLayout(QtWidgets.QGraphicsScene, QgsExpressionContextGenerator, QgsLayoutUndoObjectInterface):

    class UndoCommand(int):
        UndoLayoutDpi = ... # type: QgsLayout.UndoCommand
        UndoNone = ... # type: QgsLayout.UndoCommand

    class ZValues(int):
        ZPage = ... # type: QgsLayout.ZValues
        ZItem = ... # type: QgsLayout.ZValues
        ZGrid = ... # type: QgsLayout.ZValues
        ZGuide = ... # type: QgsLayout.ZValues
        ZSmartGuide = ... # type: QgsLayout.ZValues
        ZMouseHandles = ... # type: QgsLayout.ZValues
        ZViewTool = ... # type: QgsLayout.ZValues
        ZSnapIndicator = ... # type: QgsLayout.ZValues

    def __init__(self, project: 'QgsProject') -> None: ...

    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: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def ungroupItems(self, group: 'QgsLayoutItemGroup') -> typing.List['QgsLayoutItem']: ...
    def groupItems(self, items: typing.Iterable['QgsLayoutItem']) -> 'QgsLayoutItemGroup': ...
    def createCommand(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def undoStack(self) -> 'QgsLayoutUndoStack': ...
    def addItemsFromXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, position: typing.Optional[typing.Union[QtCore.QPointF, QtCore.QPoint]] = ..., pasteInPlace: bool = ...) -> typing.List['QgsLayoutItem']: ...
    def readXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def loadFromTemplate(self, document: QtXml.QDomDocument, context: QgsReadWriteContext, clearExisting: bool = ...) -> typing.Tuple[typing.List['QgsLayoutItem'], bool]: ...
    def saveAsTemplate(self, path: str, context: QgsReadWriteContext) -> bool: ...
    def multiFrames(self) -> typing.List['QgsLayoutMultiFrame']: ...
    def removeMultiFrame(self, multiFrame: 'QgsLayoutMultiFrame') -> None: ...
    def addMultiFrame(self, multiFrame: 'QgsLayoutMultiFrame') -> None: ...
    def removeLayoutItem(self, item: 'QgsLayoutItem') -> None: ...
    def addLayoutItem(self, item: 'QgsLayoutItem') -> None: ...
    def pageItemBounds(self, page: int, visibleOnly: bool = ...) -> QtCore.QRectF: ...
    def layoutBounds(self, ignorePages: bool = ..., margin: float = ...) -> QtCore.QRectF: ...
    def pageCollection(self) -> 'QgsLayoutPageCollection': ...
    def setReferenceMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def referenceMap(self) -> 'QgsLayoutItemMap': ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def guides(self) -> 'QgsLayoutGuideCollection': ...
    def reloadSettings(self) -> None: ...
    def gridSettings(self) -> 'QgsLayoutGridSettings': ...
    def snapper(self) -> 'QgsLayoutSnapper': ...
    def reportContext(self) -> 'QgsLayoutReportContext': ...
    def renderContext(self) -> 'QgsLayoutRenderContext': ...
    @typing.overload
    def convertFromLayoutUnits(self, length: float, unit: QgsUnitTypes.LayoutUnit) -> 'QgsLayoutMeasurement': ...
    @typing.overload
    def convertFromLayoutUnits(self, size: QtCore.QSizeF, unit: QgsUnitTypes.LayoutUnit) -> 'QgsLayoutSize': ...
    @typing.overload
    def convertFromLayoutUnits(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], unit: QgsUnitTypes.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) -> QgsUnitTypes.LayoutUnit: ...
    def setUnits(self, units: QgsUnitTypes.LayoutUnit) -> None: ...
    @typing.overload
    def layoutItemAt(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint], ignoreLocked: bool = ...) -> 'QgsLayoutItem': ...
    @typing.overload
    def layoutItemAt(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint], belowItem: 'QgsLayoutItem', ignoreLocked: bool = ...) -> 'QgsLayoutItem': ...
    def multiFrameByUuid(self, uuid: str, includeTemplateUuids: bool = ...) -> 'QgsLayoutMultiFrame': ...
    def itemById(self, id: str) -> 'QgsLayoutItem': ...
    def itemByTemplateUuid(self, uuid: str) -> 'QgsLayoutItem': ...
    def itemByUuid(self, uuid: str, includeTemplateUuids: bool = ...) -> 'QgsLayoutItem': ...
    def updateZValues(self, addUndoCommands: bool = ...) -> None: ...
    def moveItemToBottom(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def moveItemToTop(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def lowerItem(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def raiseItem(self, item: 'QgsLayoutItem', deferUpdate: bool = ...) -> bool: ...
    def deselectAll(self) -> None: ...
    def setSelectedItem(self, item: 'QgsLayoutItem') -> None: ...
    def selectedLayoutItems(self, includeLockedItems: bool = ...) -> typing.List['QgsLayoutItem']: ...
    def itemsModel(self) -> 'QgsLayoutModel': ...
    def project(self) -> 'QgsProject': ...
    def clear(self) -> None: ...
    def initializeDefaults(self) -> None: ...
    def clone(self) -> 'QgsLayout': ...


class QgsLayoutAligner(PyQt5.sip.wrapper):

    class Resize(int):
        ResizeNarrowest = ... # type: QgsLayoutAligner.Resize
        ResizeWidest = ... # type: QgsLayoutAligner.Resize
        ResizeShortest = ... # type: QgsLayoutAligner.Resize
        ResizeTallest = ... # type: QgsLayoutAligner.Resize
        ResizeToSquare = ... # type: QgsLayoutAligner.Resize

    class Distribution(int):
        DistributeLeft = ... # type: QgsLayoutAligner.Distribution
        DistributeHCenter = ... # type: QgsLayoutAligner.Distribution
        DistributeHSpace = ... # type: QgsLayoutAligner.Distribution
        DistributeRight = ... # type: QgsLayoutAligner.Distribution
        DistributeTop = ... # type: QgsLayoutAligner.Distribution
        DistributeVCenter = ... # type: QgsLayoutAligner.Distribution
        DistributeVSpace = ... # type: QgsLayoutAligner.Distribution
        DistributeBottom = ... # type: QgsLayoutAligner.Distribution

    class Alignment(int):
        AlignLeft = ... # type: QgsLayoutAligner.Alignment
        AlignHCenter = ... # type: QgsLayoutAligner.Alignment
        AlignRight = ... # type: QgsLayoutAligner.Alignment
        AlignTop = ... # type: QgsLayoutAligner.Alignment
        AlignVCenter = ... # type: QgsLayoutAligner.Alignment
        AlignBottom = ... # type: QgsLayoutAligner.Alignment

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutAligner') -> None: ...

    @staticmethod
    def resizeItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], resize: 'QgsLayoutAligner.Resize') -> None: ...
    @staticmethod
    def distributeItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], distribution: 'QgsLayoutAligner.Distribution') -> None: ...
    @staticmethod
    def alignItems(layout: QgsLayout, items: typing.Iterable['QgsLayoutItem'], alignment: 'QgsLayoutAligner.Alignment') -> None: ...


class QgsLayoutSerializableObject(QgsLayoutUndoObjectInterface):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutSerializableObject') -> None: ...

    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutAtlas(QtCore.QObject, QgsAbstractLayoutIterator, QgsLayoutSerializableObject, QgsExpressionContextGenerator):

    def __init__(self, layout: QgsLayout) -> None: ...

    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: str, extension: str) -> str: ...
    def count(self) -> int: ...
    def endRender(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def updateFeatures(self) -> int: ...
    def setFilterExpression(self, expression: str) -> typing.Tuple[bool, str]: ...
    def filterExpression(self) -> str: ...
    def setFilterFeatures(self, filtered: bool) -> None: ...
    def filterFeatures(self) -> bool: ...
    def setSortExpression(self, expression: str) -> None: ...
    def sortExpression(self) -> str: ...
    def setSortAscending(self, ascending: bool) -> None: ...
    def sortAscending(self) -> bool: ...
    def setSortFeatures(self, enabled: bool) -> None: ...
    def sortFeatures(self) -> bool: ...
    def nameForPage(self, page: int) -> str: ...
    def setPageNameExpression(self, expression: str) -> None: ...
    def pageNameExpression(self) -> str: ...
    def setCoverageLayer(self, layer: QgsVectorLayer) -> None: ...
    def coverageLayer(self) -> QgsVectorLayer: ...
    def currentFilename(self) -> str: ...
    def setFilenameExpression(self, expression: str) -> typing.Tuple[bool, str]: ...
    def filenameExpression(self) -> str: ...
    def setHideCoverage(self, hide: bool) -> None: ...
    def hideCoverage(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def readXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutEffect(QtWidgets.QGraphicsEffect):

    def __init__(self) -> None: ...

    def draw(self, painter: QtGui.QPainter) -> None: ...
    def compositionMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setCompositionMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...


class QgsLayoutExporter(PyQt5.sip.wrapper):

    class ExportResult(int):
        Success = ... # type: QgsLayoutExporter.ExportResult
        Canceled = ... # type: QgsLayoutExporter.ExportResult
        MemoryError = ... # type: QgsLayoutExporter.ExportResult
        FileError = ... # type: QgsLayoutExporter.ExportResult
        PrintError = ... # type: QgsLayoutExporter.ExportResult
        SvgLayerError = ... # type: QgsLayoutExporter.ExportResult
        IteratorError = ... # type: QgsLayoutExporter.ExportResult

    class PageExportDetails(PyQt5.sip.wrapper):

        baseName = ... # type: str
        directory = ... # type: str
        extension = ... # type: str
        page = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PageExportDetails') -> None: ...

    class ImageExportSettings(PyQt5.sip.wrapper):

        cropMargins = ... # type: QgsMargins
        cropToContents = ... # type: bool
        dpi = ... # type: float
        exportMetadata = ... # type: bool
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        generateWorldFile = ... # type: bool
        imageSize = ... # type: QtCore.QSize
        pages = ... # type: typing.Iterable[int]
        predefinedMapScales = ... # type: typing.Iterable[float]

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.ImageExportSettings') -> None: ...

    class PdfExportSettings(PyQt5.sip.wrapper):

        appendGeoreference = ... # type: bool
        dpi = ... # type: float
        exportLayersAsSeperateFiles = ... # type: bool
        exportMetadata = ... # type: bool
        exportThemes = ... # type: typing.Iterable[str]
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        forceVectorOutput = ... # type: bool
        includeGeoPdfFeatures = ... # type: bool
        predefinedMapScales = ... # type: typing.Iterable[float]
        rasterizeWholeImage = ... # type: bool
        simplifyGeometries = ... # type: bool
        textRenderFormat = ... # type: Qgis.TextRenderFormat
        useIso32000ExtensionFormatGeoreferencing = ... # type: bool
        useOgcBestPracticeFormatGeoreferencing = ... # type: bool
        writeGeoPdf = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PdfExportSettings') -> None: ...

    class PrintExportSettings(PyQt5.sip.wrapper):

        dpi = ... # type: float
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        predefinedMapScales = ... # type: typing.Iterable[float]
        rasterizeWholeImage = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.PrintExportSettings') -> None: ...

    class SvgExportSettings(PyQt5.sip.wrapper):

        cropMargins = ... # type: QgsMargins
        cropToContents = ... # type: bool
        dpi = ... # type: float
        exportAsLayers = ... # type: bool
        exportLabelsToSeparateLayers = ... # type: bool
        exportMetadata = ... # type: bool
        flags = ... # type: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']
        forceVectorOutput = ... # type: bool
        predefinedMapScales = ... # type: typing.Iterable[float]
        simplifyGeometries = ... # type: bool
        textRenderFormat = ... # type: Qgis.TextRenderFormat

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutExporter.SvgExportSettings') -> None: ...

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutExporter') -> None: ...

    def generateFileName(self, details: 'QgsLayoutExporter.PageExportDetails') -> str: ...
    @staticmethod
    def containsAdvancedEffects(layout: QgsLayout) -> bool: ...
    @staticmethod
    def requiresRasterization(layout: QgsLayout) -> bool: ...
    @typing.overload
    def computeWorldFileParameters(self, dpi: float = ...) -> typing.Tuple[float, float, float, float, float, float]: ...
    @typing.overload
    def computeWorldFileParameters(self, region: QtCore.QRectF, dpi: float = ...) -> typing.Tuple[float, float, float, float, float, float]: ...
    def georeferenceOutput(self, file: str, referenceMap: typing.Optional['QgsLayoutItemMap'] = ..., exportRegion: QtCore.QRectF = ..., dpi: float = ...) -> bool: ...
    def labelingResults(self) -> typing.Any: ...
    def errorFile(self) -> str: ...
    @typing.overload
    def exportToSvg(self, filePath: str, settings: 'QgsLayoutExporter.SvgExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToSvg(iterator: QgsAbstractLayoutIterator, baseFilePath: str, settings: 'QgsLayoutExporter.SvgExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def print(self, printer: QtPrintSupport.QPrinter, settings: 'QgsLayoutExporter.PrintExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def print(iterator: QgsAbstractLayoutIterator, printer: QtPrintSupport.QPrinter, settings: 'QgsLayoutExporter.PrintExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @staticmethod
    def exportToPdfs(iterator: QgsAbstractLayoutIterator, baseFilePath: str, settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToPdf(self, filePath: str, settings: 'QgsLayoutExporter.PdfExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToPdf(iterator: QgsAbstractLayoutIterator, fileName: str, settings: 'QgsLayoutExporter.PdfExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    @typing.overload
    def exportToImage(self, filePath: str, settings: 'QgsLayoutExporter.ImageExportSettings') -> 'QgsLayoutExporter.ExportResult': ...
    @typing.overload
    @staticmethod
    def exportToImage(iterator: QgsAbstractLayoutIterator, baseFilePath: str, extension: str, settings: 'QgsLayoutExporter.ImageExportSettings', feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple['QgsLayoutExporter.ExportResult', str]: ...
    def renderRegionToImage(self, region: QtCore.QRectF, imageSize: QtCore.QSize = ..., dpi: float = ...) -> QtGui.QImage: ...
    def renderRegion(self, painter: QtGui.QPainter, region: QtCore.QRectF) -> None: ...
    def renderPageToImage(self, page: int, imageSize: QtCore.QSize = ..., dpi: float = ...) -> QtGui.QImage: ...
    def renderPage(self, painter: QtGui.QPainter, page: int) -> None: ...
    def layout(self) -> QgsLayout: ...


class QgsLayoutObject(QtCore.QObject, QgsExpressionContextGenerator):

    class PropertyValueType(int):
        EvaluatedValue = ... # type: QgsLayoutObject.PropertyValueType
        OriginalValue = ... # type: QgsLayoutObject.PropertyValueType

    class DataDefinedProperty(int):
        NoProperty = ... # type: QgsLayoutObject.DataDefinedProperty
        AllProperties = ... # type: QgsLayoutObject.DataDefinedProperty
        TestProperty = ... # type: QgsLayoutObject.DataDefinedProperty
        PresetPaperSize = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        NumPages = ... # type: QgsLayoutObject.DataDefinedProperty
        PaperOrientation = ... # type: QgsLayoutObject.DataDefinedProperty
        PageNumber = ... # type: QgsLayoutObject.DataDefinedProperty
        PositionX = ... # type: QgsLayoutObject.DataDefinedProperty
        PositionY = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ItemRotation = ... # type: QgsLayoutObject.DataDefinedProperty
        Transparency = ... # type: QgsLayoutObject.DataDefinedProperty
        Opacity = ... # type: QgsLayoutObject.DataDefinedProperty
        BlendMode = ... # type: QgsLayoutObject.DataDefinedProperty
        ExcludeFromExports = ... # type: QgsLayoutObject.DataDefinedProperty
        FrameColor = ... # type: QgsLayoutObject.DataDefinedProperty
        BackgroundColor = ... # type: QgsLayoutObject.DataDefinedProperty
        MapRotation = ... # type: QgsLayoutObject.DataDefinedProperty
        MapScale = ... # type: QgsLayoutObject.DataDefinedProperty
        MapXMin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapYMin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapXMax = ... # type: QgsLayoutObject.DataDefinedProperty
        MapYMax = ... # type: QgsLayoutObject.DataDefinedProperty
        MapAtlasMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapLayers = ... # type: QgsLayoutObject.DataDefinedProperty
        MapStylePreset = ... # type: QgsLayoutObject.DataDefinedProperty
        MapLabelMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridEnabled = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridIntervalX = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridIntervalY = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridOffsetX = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridOffsetY = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameSize = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameMargin = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridLabelDistance = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridCrossSize = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameLineThickness = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayLeft = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayRight = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayTop = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridAnnotationDisplayBottom = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsLeft = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsRight = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsTop = ... # type: QgsLayoutObject.DataDefinedProperty
        MapGridFrameDivisionsBottom = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSource = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgBackgroundColor = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgStrokeColor = ... # type: QgsLayoutObject.DataDefinedProperty
        PictureSvgStrokeWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        SourceUrl = ... # type: QgsLayoutObject.DataDefinedProperty
        LegendTitle = ... # type: QgsLayoutObject.DataDefinedProperty
        LegendColumnCount = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLeftSegments = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarRightSegments = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarSegmentWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarMinimumWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarMaximumWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarRightSegmentSubdivisions = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarSubdivisionHeight = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarFillColor = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarFillColor2 = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLineColor = ... # type: QgsLayoutObject.DataDefinedProperty
        ScalebarLineWidth = ... # type: QgsLayoutObject.DataDefinedProperty
        AttributeTableSourceLayer = ... # type: QgsLayoutObject.DataDefinedProperty
        MapCrs = ... # type: QgsLayoutObject.DataDefinedProperty
        StartDateTime = ... # type: QgsLayoutObject.DataDefinedProperty
        EndDateTime = ... # type: QgsLayoutObject.DataDefinedProperty

    def __init__(self, layout: QgsLayout) -> None: ...

    def readObjectPropertiesFromElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeObjectPropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    changed: typing.ClassVar[QtCore.pyqtsignal]
    def refresh(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def customProperties(self) -> typing.List[str]: ...
    def removeCustomProperty(self, key: str) -> None: ...
    def customProperty(self, key: str, defaultValue: typing.Any = ...) -> typing.Any: ...
    def setCustomProperty(self, key: str, value: typing.Any) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def layout(self) -> QgsLayout: ...
    @staticmethod
    def propertyAssociatesWithParentMultiframe(property: 'QgsLayoutObject.DataDefinedProperty') -> bool: ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...


class QgsLayoutItem(QgsLayoutObject, QtWidgets.QGraphicsRectItem, QgsLayoutUndoObjectInterface):

    class ExportLayerBehavior(int):
        CanGroupWithAnyOtherItem = ... # type: QgsLayoutItem.ExportLayerBehavior
        CanGroupWithItemsOfSameType = ... # type: QgsLayoutItem.ExportLayerBehavior
        MustPlaceInOwnLayer = ... # type: QgsLayoutItem.ExportLayerBehavior
        ItemContainsSubLayers = ... # type: QgsLayoutItem.ExportLayerBehavior

    class Flag(int):
        FlagOverridesPaint = ... # type: QgsLayoutItem.Flag
        FlagProvidesClipPath = ... # type: QgsLayoutItem.Flag

    class UndoCommand(int):
        UndoNone = ... # type: QgsLayoutItem.UndoCommand
        UndoIncrementalMove = ... # type: QgsLayoutItem.UndoCommand
        UndoIncrementalResize = ... # type: QgsLayoutItem.UndoCommand
        UndoStrokeColor = ... # type: QgsLayoutItem.UndoCommand
        UndoStrokeWidth = ... # type: QgsLayoutItem.UndoCommand
        UndoBackgroundColor = ... # type: QgsLayoutItem.UndoCommand
        UndoOpacity = ... # type: QgsLayoutItem.UndoCommand
        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
        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: str
        mapTheme = ... # type: str
        name = ... # type: str
        opacity = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayoutItem.ExportLayerDetail') -> None: ...

    def __init__(self, layout: QgsLayout, manageZValue: bool = ...) -> None: ...

    def applyDataDefinedSize(self, size: 'QgsLayoutSize') -> 'QgsLayoutSize': ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def topLeftToReferencePoint(self, point: 'QgsLayoutPoint') -> 'QgsLayoutPoint': ...
    def positionAtReferencePoint(self, reference: 'QgsLayoutItem.ReferencePoint') -> QtCore.QPointF: ...
    def adjustPointForReferencePosition(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], 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 drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def framePath(self) -> QtGui.QPainterPath: ...
    def draw(self, context: 'QgsLayoutItemRenderContext') -> None: ...
    def drawDebugRect(self, painter: QtGui.QPainter) -> None: ...
    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 clipPath(self) -> QgsGeometry: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def shouldDrawItem(self) -> bool: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, commandText: str, command: 'QgsLayoutItem.UndoCommand' = ...) -> None: ...
    def zoomContent(self, factor: float, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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) -> QtGui.QColor: ...
    def setBackgroundEnabled(self, drawBackground: bool) -> None: ...
    def hasBackground(self) -> bool: ...
    def setFrameJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def frameJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def frameStrokeWidth(self) -> 'QgsLayoutMeasurement': ...
    def setFrameStrokeWidth(self, width: 'QgsLayoutMeasurement') -> None: ...
    def frameStrokeColor(self) -> QtGui.QColor: ...
    def setFrameStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setFrameEnabled(self, drawFrame: bool) -> None: ...
    def frameEnabled(self) -> bool: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def itemRotation(self) -> float: ...
    def sizeWithUnits(self) -> 'QgsLayoutSize': ...
    def pagePositionWithUnits(self) -> 'QgsLayoutPoint': ...
    def pagePos(self) -> QtCore.QPointF: ...
    def page(self) -> int: ...
    def positionWithUnits(self) -> 'QgsLayoutPoint': ...
    def attemptMoveBy(self, deltaX: float, deltaY: float) -> None: ...
    def attemptSetSceneRect(self, rect: QtCore.QRectF, includesFrame: bool = ...) -> None: ...
    def attemptMove(self, point: 'QgsLayoutPoint', useReferencePoint: bool = ..., includesFrame: bool = ..., page: int = ...) -> None: ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def referencePoint(self) -> 'QgsLayoutItem.ReferencePoint': ...
    def setReferencePoint(self, point: 'QgsLayoutItem.ReferencePoint') -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def exportLayerDetails(self) -> 'QgsLayoutItem.ExportLayerDetail': ...
    def nextExportPart(self) -> bool: ...
    def stopLayeredExport(self) -> None: ...
    def startLayeredExport(self) -> None: ...
    def numberExportLayers(self) -> int: ...
    def exportLayerBehavior(self) -> 'QgsLayoutItem.ExportLayerBehavior': ...
    def setParentGroup(self, group: 'QgsLayoutItemGroup') -> None: ...
    def parentGroup(self) -> 'QgsLayoutItemGroup': ...
    def isGroupMember(self) -> bool: ...
    def isLocked(self) -> bool: ...
    def setLocked(self, locked: bool) -> None: ...
    def setVisibility(self, visible: bool) -> None: ...
    def setSelected(self, selected: bool) -> None: ...
    def displayName(self) -> str: ...
    def setId(self, id: str) -> None: ...
    def id(self) -> str: ...
    def itemFlags(self) -> 'QgsLayoutItem.Flags': ...
    def uuid(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    def cleanup(self) -> None: ...


class QgsLayoutFrame(QgsLayoutItem):

    def __init__(self, layout: QgsLayout, multiFrame: 'QgsLayoutMultiFrame') -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def draw(self, context: 'QgsLayoutItemRenderContext') -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def isEmpty(self) -> bool: ...
    def setHideBackgroundIfEmpty(self, hideBackgroundIfEmpty: bool) -> None: ...
    def hideBackgroundIfEmpty(self) -> bool: ...
    def setHidePageIfEmpty(self, hidePageIfEmpty: bool) -> None: ...
    def hidePageIfEmpty(self) -> bool: ...
    def extent(self) -> QtCore.QRectF: ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    def multiFrame(self) -> 'QgsLayoutMultiFrame': ...
    def setContentSection(self, section: QtCore.QRectF) -> None: ...
    def cleanup(self) -> None: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutFrame': ...


class QgsLayoutGridSettings(QgsLayoutSerializableObject):

    class Style(int):
        StyleLines = ... # type: QgsLayoutGridSettings.Style
        StyleDots = ... # type: QgsLayoutGridSettings.Style
        StyleCrosses = ... # type: QgsLayoutGridSettings.Style

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutGridSettings') -> None: ...

    def readXml(self, gridElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def loadFromSettings(self) -> None: ...
    def style(self) -> 'QgsLayoutGridSettings.Style': ...
    def setStyle(self, style: 'QgsLayoutGridSettings.Style') -> None: ...
    def pen(self) -> QtGui.QPen: ...
    def setPen(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def offset(self) -> 'QgsLayoutPoint': ...
    def setOffset(self, offset: 'QgsLayoutPoint') -> None: ...
    def resolution(self) -> 'QgsLayoutMeasurement': ...
    def setResolution(self, resolution: 'QgsLayoutMeasurement') -> None: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutGuide(QtCore.QObject):

    def __init__(self, orientation: QtCore.Qt.Orientation, position: 'QgsLayoutMeasurement', page: 'QgsLayoutItemPage') -> None: ...

    positionChanged: typing.ClassVar[QtCore.pyqtsignal]
    def setLayoutPosition(self, position: float) -> None: ...
    def layoutPosition(self) -> float: ...
    def item(self) -> QtWidgets.QGraphicsLineItem: ...
    def update(self) -> None: ...
    def setPage(self, page: 'QgsLayoutItemPage') -> None: ...
    def page(self) -> 'QgsLayoutItemPage': ...
    def setPosition(self, position: 'QgsLayoutMeasurement') -> None: ...
    def position(self) -> 'QgsLayoutMeasurement': ...
    def orientation(self) -> QtCore.Qt.Orientation: ...
    def setLayout(self, layout: QgsLayout) -> None: ...
    def layout(self) -> QgsLayout: ...


class QgsLayoutGuideCollection(QtCore.QAbstractTableModel, QgsLayoutSerializableObject):

    class Roles(int):
        OrientationRole = ... # type: QgsLayoutGuideCollection.Roles
        PositionRole = ... # type: QgsLayoutGuideCollection.Roles
        UnitsRole = ... # type: QgsLayoutGuideCollection.Roles
        PageRole = ... # type: QgsLayoutGuideCollection.Roles
        LayoutPositionRole = ... # type: QgsLayoutGuideCollection.Roles

    def __init__(self, layout: QgsLayout, pageCollection: 'QgsLayoutPageCollection') -> None: ...

    def readXml(self, collectionElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setVisible(self, visible: bool) -> None: ...
    def visible(self) -> bool: ...
    def guidesOnPage(self, page: int) -> typing.List[QgsLayoutGuide]: ...
    @typing.overload
    def guides(self) -> typing.List[QgsLayoutGuide]: ...
    @typing.overload
    def guides(self, orientation: QtCore.Qt.Orientation, page: int = ...) -> typing.List[QgsLayoutGuide]: ...
    def update(self) -> None: ...
    def applyGuidesToAllOtherPages(self, sourcePage: int) -> None: ...
    def clear(self) -> None: ...
    def setGuideLayoutPosition(self, guide: QgsLayoutGuide, position: float) -> None: ...
    def removeGuide(self, guide: QgsLayoutGuide) -> None: ...
    def addGuide(self, guide: QgsLayoutGuide) -> None: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, a0: QtCore.QModelIndex) -> int: ...
    def rowCount(self, a0: QtCore.QModelIndex) -> int: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutGuideProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: QtCore.QObject, orientation: QtCore.Qt.Orientation, page: int) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def setPage(self, page: int) -> None: ...


class QgsLayoutItemRenderContext(PyQt5.sip.wrapper):

    def __init__(self, context: QgsRenderContext, viewScaleFactor: float = ...) -> None: ...

    def viewScaleFactor(self) -> float: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsLayoutMultiFrame(QgsLayoutObject, QgsLayoutUndoObjectInterface):

    class UndoCommand(int):
        UndoHtmlBreakDistance = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoHtmlSource = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoHtmlStylesheet = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableCellStyle = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableMaximumFeatures = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableMargin = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableHeaderFontColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableContentFontColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableGridStrokeWidth = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableGridColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoTableBackgroundColor = ... # type: QgsLayoutMultiFrame.UndoCommand
        UndoNone = ... # type: QgsLayoutMultiFrame.UndoCommand

    class ResizeMode(int):
        UseExistingFrames = ... # type: QgsLayoutMultiFrame.ResizeMode
        ExtendToNextPage = ... # type: QgsLayoutMultiFrame.ResizeMode
        RepeatOnEveryPage = ... # type: QgsLayoutMultiFrame.ResizeMode
        RepeatUntilFinished = ... # type: QgsLayoutMultiFrame.ResizeMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    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: str, command: 'QgsLayoutMultiFrame.UndoCommand' = ...) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def displayName(self) -> str: ...
    def createNewFrame(self, currentFrame: QgsLayoutFrame, pos: typing.Union[QtCore.QPointF, QtCore.QPoint], size: QtCore.QSizeF) -> QgsLayoutFrame: ...
    def frameIndex(self, frame: QgsLayoutFrame) -> int: ...
    def frame(self, index: int) -> QgsLayoutFrame: ...
    def frameCount(self) -> int: ...
    def frames(self) -> typing.List[QgsLayoutFrame]: ...
    def readXml(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, includeFrames: bool = ...) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext, includeFrames: bool = ...) -> bool: ...
    def resizeMode(self) -> 'QgsLayoutMultiFrame.ResizeMode': ...
    def setResizeMode(self, mode: 'QgsLayoutMultiFrame.ResizeMode') -> None: ...
    def deleteFrames(self) -> None: ...
    def removeFrame(self, index: int, removeEmptyPages: bool = ...) -> None: ...
    def findNearbyPageBreak(self, yPos: float) -> float: ...
    def addFrame(self, frame: QgsLayoutFrame, recalcFrameSizes: bool = ...) -> None: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def minFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def fixedFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def uuid(self) -> str: ...


class QgsLayoutTable(QgsLayoutMultiFrame):

    class CellStyleGroup(int):
        OddColumns = ... # type: QgsLayoutTable.CellStyleGroup
        EvenColumns = ... # type: QgsLayoutTable.CellStyleGroup
        OddRows = ... # type: QgsLayoutTable.CellStyleGroup
        EvenRows = ... # type: QgsLayoutTable.CellStyleGroup
        FirstColumn = ... # type: QgsLayoutTable.CellStyleGroup
        LastColumn = ... # type: QgsLayoutTable.CellStyleGroup
        HeaderRow = ... # type: QgsLayoutTable.CellStyleGroup
        FirstRow = ... # type: QgsLayoutTable.CellStyleGroup
        LastRow = ... # type: QgsLayoutTable.CellStyleGroup

    class WrapBehavior(int):
        TruncateText = ... # type: QgsLayoutTable.WrapBehavior
        WrapText = ... # type: QgsLayoutTable.WrapBehavior

    class EmptyTableMode(int):
        HeadersOnly = ... # type: QgsLayoutTable.EmptyTableMode
        HideTable = ... # type: QgsLayoutTable.EmptyTableMode
        ShowMessage = ... # type: QgsLayoutTable.EmptyTableMode

    class HeaderMode(int):
        FirstFrame = ... # type: QgsLayoutTable.HeaderMode
        AllFrames = ... # type: QgsLayoutTable.HeaderMode
        NoHeaders = ... # type: QgsLayoutTable.HeaderMode

    class HeaderHAlignment(int):
        FollowColumn = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderLeft = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderCenter = ... # type: QgsLayoutTable.HeaderHAlignment
        HeaderRight = ... # type: QgsLayoutTable.HeaderHAlignment

    def __init__(self, layout: QgsLayout) -> None: ...

    def verticalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def horizontalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def textFormatForHeader(self, column: int) -> 'QgsTextFormat': ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def contentsContainsRow(self, contents: typing.Any, row: typing.Iterable[typing.Any]) -> bool: ...
    def recalculateTableSize(self) -> None: ...
    def drawHorizontalGridLines(self, context: QgsLayoutItemRenderContext, firstRow: int, lastRow: int, drawHeaderLines: bool) -> None: ...
    def rowRange(self, context: QgsRenderContext, frameIndex: int) -> typing.Tuple[int, int]: ...
    @typing.overload
    def rowsVisible(self, context: QgsRenderContext, frameHeight: float, firstRow: int, includeHeader: bool, includeEmptyRows: bool) -> int: ...
    @typing.overload
    def rowsVisible(self, context: QgsRenderContext, frameIndex: int, firstRow: int, includeEmptyRows: bool) -> int: ...
    def totalHeight(self) -> float: ...
    def totalWidth(self) -> float: ...
    def calculateMaxRowHeights(self) -> bool: ...
    def calculateMaxColumnWidths(self) -> bool: ...
    def recalculateFrameSizes(self) -> None: ...
    def refreshAttributes(self) -> None: ...
    def refresh(self) -> None: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def minFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def fixedFrameSize(self, frameIndex: int = ...) -> QtCore.QSizeF: ...
    def contents(self) -> typing.Any: ...
    def scopeForCell(self, row: int, column: int) -> QgsExpressionContextScope: ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    def getTableContents(self, contents: typing.Any) -> bool: ...
    def cellStyle(self, group: 'QgsLayoutTable.CellStyleGroup') -> 'QgsLayoutTableStyle': ...
    def setCellStyle(self, group: 'QgsLayoutTable.CellStyleGroup', style: 'QgsLayoutTableStyle') -> None: ...
    def setSortColumns(self, sortColumns: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def sortColumns(self) -> typing.List['QgsLayoutTableColumn']: ...
    def setColumns(self, columns: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def columns(self) -> typing.List['QgsLayoutTableColumn']: ...
    def wrapBehavior(self) -> 'QgsLayoutTable.WrapBehavior': ...
    def setWrapBehavior(self, behavior: 'QgsLayoutTable.WrapBehavior') -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def verticalGrid(self) -> bool: ...
    def setVerticalGrid(self, verticalGrid: bool) -> None: ...
    def horizontalGrid(self) -> bool: ...
    def setHorizontalGrid(self, horizontalGrid: bool) -> None: ...
    def gridColor(self) -> QtGui.QColor: ...
    def setGridColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def gridStrokeWidth(self) -> float: ...
    def setGridStrokeWidth(self, width: float) -> None: ...
    def showGrid(self) -> bool: ...
    def setShowGrid(self, showGrid: bool) -> None: ...
    def contentTextFormat(self) -> 'QgsTextFormat': ...
    def setContentTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def contentFontColor(self) -> QtGui.QColor: ...
    def setContentFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def contentFont(self) -> QtGui.QFont: ...
    def setContentFont(self, font: QtGui.QFont) -> None: ...
    def headerMode(self) -> 'QgsLayoutTable.HeaderMode': ...
    def setHeaderMode(self, mode: 'QgsLayoutTable.HeaderMode') -> None: ...
    def headerHAlignment(self) -> 'QgsLayoutTable.HeaderHAlignment': ...
    def setHeaderHAlignment(self, alignment: 'QgsLayoutTable.HeaderHAlignment') -> None: ...
    def headerTextFormat(self) -> 'QgsTextFormat': ...
    def setHeaderTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def headerFontColor(self) -> QtGui.QColor: ...
    def setHeaderFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def headerFont(self) -> QtGui.QFont: ...
    def setHeaderFont(self, font: QtGui.QFont) -> None: ...
    def showEmptyRows(self) -> bool: ...
    def setShowEmptyRows(self, showEmpty: bool) -> None: ...
    def emptyTableMessage(self) -> str: ...
    def setEmptyTableMessage(self, message: str) -> None: ...
    def emptyTableBehavior(self) -> 'QgsLayoutTable.EmptyTableMode': ...
    def setEmptyTableBehavior(self, mode: 'QgsLayoutTable.EmptyTableMode') -> None: ...
    def cellMargin(self) -> float: ...
    def setCellMargin(self, margin: float) -> None: ...


class QgsLayoutItemAttributeTable(QgsLayoutTable):

    class ContentSource(int):
        LayerAttributes = ... # type: QgsLayoutItemAttributeTable.ContentSource
        AtlasFeature = ... # type: QgsLayoutItemAttributeTable.ContentSource
        RelationChildren = ... # type: QgsLayoutItemAttributeTable.ContentSource

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setUseConditionalStyling(self, enabled: bool) -> None: ...
    def useConditionalStyling(self) -> bool: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def scopeForCell(self, row: int, column: int) -> QgsExpressionContextScope: ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    def getTableContents(self, contents: typing.Any) -> bool: ...
    def wrapString(self) -> str: ...
    def setWrapString(self, wrapString: str) -> None: ...
    def setDisplayedFields(self, fields: typing.Iterable[str], refresh: bool = ...) -> None: ...
    def setFeatureFilter(self, expression: str) -> None: ...
    def featureFilter(self) -> str: ...
    def setFilterFeatures(self, filter: bool) -> None: ...
    def filterFeatures(self) -> bool: ...
    def filterToAtlasFeature(self) -> bool: ...
    def setFilterToAtlasFeature(self, filterToAtlas: bool) -> None: ...
    def displayOnlyVisibleFeatures(self) -> bool: ...
    def setDisplayOnlyVisibleFeatures(self, visibleOnly: bool) -> None: ...
    def uniqueRowsOnly(self) -> bool: ...
    def setUniqueRowsOnly(self, uniqueOnly: bool) -> None: ...
    def maximumNumberOfFeatures(self) -> int: ...
    def setMaximumNumberOfFeatures(self, features: int) -> None: ...
    def map(self) -> 'QgsLayoutItemMap': ...
    def setMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def resetColumns(self) -> None: ...
    def relationId(self) -> str: ...
    def setRelationId(self, id: str) -> None: ...
    def vectorLayer(self) -> QgsVectorLayer: ...
    def setVectorLayer(self, layer: QgsVectorLayer) -> None: ...
    def sourceLayer(self) -> QgsVectorLayer: ...
    def source(self) -> 'QgsLayoutItemAttributeTable.ContentSource': ...
    def setSource(self, source: 'QgsLayoutItemAttributeTable.ContentSource') -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemAttributeTable': ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemGroup(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def attemptMove(self, point: 'QgsLayoutPoint', useReferencePoint: bool = ..., includesFrame: bool = ..., page: int = ...) -> None: ...
    def setVisibility(self, visible: bool) -> None: ...
    def items(self) -> typing.List[QgsLayoutItem]: ...
    def removeItems(self) -> None: ...
    def addItem(self, item: QgsLayoutItem) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemGroup': ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...
    def cleanup(self) -> None: ...


class QgsLayoutItemHtml(QgsLayoutMultiFrame):

    class ContentMode(int):
        Url = ... # type: QgsLayoutItemHtml.ContentMode
        ManualHtml = ... # type: QgsLayoutItemHtml.ContentMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def recalculateFrameSizes(self) -> None: ...
    def loadHtml(self, useCache: bool = ..., context: typing.Optional[QgsExpressionContext] = ...) -> None: ...
    def findNearbyPageBreak(self, yPos: float) -> float: ...
    def render(self, context: QgsLayoutItemRenderContext, renderExtent: QtCore.QRectF, frameIndex: int) -> None: ...
    def totalSize(self) -> QtCore.QSizeF: ...
    def displayName(self) -> str: ...
    def userStylesheetEnabled(self) -> bool: ...
    def setUserStylesheetEnabled(self, enabled: bool) -> None: ...
    def userStylesheet(self) -> str: ...
    def setUserStylesheet(self, stylesheet: str) -> None: ...
    def maxBreakDistance(self) -> float: ...
    def setMaxBreakDistance(self, distance: float) -> None: ...
    def setUseSmartBreaks(self, useSmartBreaks: bool) -> None: ...
    def useSmartBreaks(self) -> bool: ...
    def setEvaluateExpressions(self, evaluateExpressions: bool) -> None: ...
    def evaluateExpressions(self) -> bool: ...
    def html(self) -> str: ...
    def setHtml(self, html: str) -> None: ...
    def url(self) -> QtCore.QUrl: ...
    def setUrl(self, url: QtCore.QUrl) -> None: ...
    def contentMode(self) -> 'QgsLayoutItemHtml.ContentMode': ...
    def setContentMode(self, mode: 'QgsLayoutItemHtml.ContentMode') -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemHtml': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemLabel(QgsLayoutItem):

    class Mode(int):
        ModeFont = ... # type: QgsLayoutItemLabel.Mode
        ModeHtml = ... # type: QgsLayoutItemLabel.Mode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def convertToStaticText(self) -> None: ...
    def refresh(self) -> None: ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setFrameStrokeWidth(self, strokeWidth: 'QgsLayoutMeasurement') -> None: ...
    def setFrameEnabled(self, drawFrame: bool) -> None: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setMarginY(self, margin: float) -> None: ...
    def setMarginX(self, margin: float) -> None: ...
    def setMargin(self, margin: float) -> None: ...
    def marginY(self) -> float: ...
    def marginX(self) -> float: ...
    def setVAlign(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def setHAlign(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def hAlign(self) -> QtCore.Qt.AlignmentFlag: ...
    def vAlign(self) -> QtCore.Qt.AlignmentFlag: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setMode(self, mode: 'QgsLayoutItemLabel.Mode') -> None: ...
    def mode(self) -> 'QgsLayoutItemLabel.Mode': ...
    def currentText(self) -> str: ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...
    def sizeForText(self) -> QtCore.QSizeF: ...
    def adjustSizeToText(self) -> None: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemLabel': ...


class QgsLegendModel(QgsLayerTreeModel):

    @typing.overload
    def __init__(self, rootNode: QgsLayerTree, parent: typing.Optional[QtCore.QObject] = ..., layout: typing.Optional['QgsLayoutItemLegend'] = ...) -> None: ...
    @typing.overload
    def __init__(self, rootNode: QgsLayerTree, layout: 'QgsLayoutItemLegend') -> None: ...

    refreshLegend: typing.ClassVar[QtCore.pyqtsignal]
    def clearCachedData(self, node: QgsLayerTreeNode) -> None: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsLayoutItemLegend(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def refresh(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    def legendSettings(self) -> QgsLegendSettings: ...
    def updateFilterByMap(self, redraw: bool = ...) -> None: ...
    def updateLegend(self) -> None: ...
    def themeName(self) -> str: ...
    def linkedMap(self) -> 'QgsLayoutItemMap': ...
    def setLinkedMap(self, map: 'QgsLayoutItemMap') -> None: ...
    def setRasterStrokeWidth(self, width: float) -> None: ...
    def rasterStrokeWidth(self) -> float: ...
    def setRasterStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def rasterStrokeColor(self) -> QtGui.QColor: ...
    def setDrawRasterStroke(self, enabled: bool) -> None: ...
    def drawRasterStroke(self) -> bool: ...
    def setEqualColumnWidth(self, equalize: bool) -> None: ...
    def equalColumnWidth(self) -> bool: ...
    def setSplitLayer(self, enabled: bool) -> None: ...
    def splitLayer(self) -> bool: ...
    def setColumnCount(self, count: int) -> None: ...
    def columnCount(self) -> int: ...
    def wrapString(self) -> str: ...
    def setWrapString(self, string: str) -> None: ...
    def setWmsLegendHeight(self, height: float) -> None: ...
    def wmsLegendHeight(self) -> float: ...
    def setWmsLegendWidth(self, width: float) -> None: ...
    def wmsLegendWidth(self) -> float: ...
    def setSymbolHeight(self, height: float) -> None: ...
    def symbolHeight(self) -> float: ...
    def symbolAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setSymbolAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def setMinimumSymbolSize(self, size: float) -> None: ...
    def minimumSymbolSize(self) -> float: ...
    def setMaximumSymbolSize(self, size: float) -> None: ...
    def maximumSymbolSize(self) -> float: ...
    def setSymbolWidth(self, width: float) -> None: ...
    def symbolWidth(self) -> float: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setColumnSpace(self, spacing: float) -> None: ...
    def columnSpace(self) -> float: ...
    def setBoxSpace(self, space: float) -> None: ...
    def boxSpace(self) -> float: ...
    def setLineSpacing(self, spacing: float) -> None: ...
    def lineSpacing(self) -> float: ...
    @typing.overload
    def setStyleMargin(self, component: QgsLegendStyle.Style, margin: float) -> None: ...
    @typing.overload
    def setStyleMargin(self, component: QgsLegendStyle.Style, side: QgsLegendStyle.Side, margin: float) -> None: ...
    def setStyleFont(self, component: QgsLegendStyle.Style, font: QtGui.QFont) -> None: ...
    def styleFont(self, component: QgsLegendStyle.Style) -> QtGui.QFont: ...
    def setStyle(self, component: QgsLegendStyle.Style, style: QgsLegendStyle) -> None: ...
    def style(self, s: QgsLegendStyle.Style) -> QgsLegendStyle: ...
    def rstyle(self, s: QgsLegendStyle.Style) -> QgsLegendStyle: ...
    def setTitleAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def titleAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def legendFilterOutAtlas(self) -> bool: ...
    def setLegendFilterOutAtlas(self, doFilter: bool) -> None: ...
    def legendFilterByMapEnabled(self) -> bool: ...
    def setLegendFilterByMapEnabled(self, enabled: bool) -> None: ...
    def autoUpdateModel(self) -> bool: ...
    def setAutoUpdateModel(self, autoUpdate: bool) -> None: ...
    def model(self) -> QgsLegendModel: ...
    def resizeToContents(self) -> bool: ...
    def setResizeToContents(self, enabled: bool) -> None: ...
    def adjustBoxSize(self) -> None: ...
    def displayName(self) -> str: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemLegend': ...


class QgsLayoutItemManualTable(QgsLayoutTable):

    def __init__(self, layout: QgsLayout) -> None: ...

    def verticalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def horizontalAlignmentForCell(self, row: int, column: int) -> QtCore.Qt.Alignment: ...
    def textFormatForCell(self, row: int, column: int) -> 'QgsTextFormat': ...
    def textFormatForHeader(self, column: int) -> 'QgsTextFormat': ...
    def calculateMaxRowHeights(self) -> bool: ...
    def readPropertiesFromElement(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def setHeaders(self, headers: typing.Iterable['QgsLayoutTableColumn']) -> None: ...
    def headers(self) -> typing.List['QgsLayoutTableColumn']: ...
    def setIncludeTableHeader(self, included: bool) -> None: ...
    def includeTableHeader(self) -> bool: ...
    def setColumnWidths(self, widths: typing.Iterable[float]) -> None: ...
    def columnWidths(self) -> typing.List[float]: ...
    def setRowHeights(self, heights: typing.Iterable[float]) -> None: ...
    def rowHeights(self) -> typing.List[float]: ...
    def tableContents(self) -> typing.Any: ...
    def setTableContents(self, contents: typing.Any) -> None: ...
    def conditionalCellStyle(self, row: int, column: int) -> QgsConditionalStyle: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemManualTable': ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemMapAtlasClippingSettings(QtCore.QObject):

    def __init__(self, map: typing.Optional['QgsLayoutItemMap'] = ...) -> None: ...

    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) -> QgsLayoutItem: ...
    def setSourceItem(self, item: QgsLayoutItem) -> None: ...
    def toMapClippingRegion(self) -> QgsMapClippingRegion: ...
    def clipPathInMapItemCoordinates(self) -> QgsGeometry: ...
    def clippedMapExtent(self) -> QgsGeometry: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    def isActive(self) -> bool: ...


class QgsLayoutItemMap(QgsLayoutItem, QgsTemporalRangeObject):

    class MapItemFlag(int):
        ShowPartialLabels = ... # type: QgsLayoutItemMap.MapItemFlag
        ShowUnplacedLabels = ... # type: QgsLayoutItemMap.MapItemFlag

    class AtlasScalingMode(int):
        Fixed = ... # type: QgsLayoutItemMap.AtlasScalingMode
        Predefined = ... # type: QgsLayoutItemMap.AtlasScalingMode
        Auto = ... # type: QgsLayoutItemMap.AtlasScalingMode

    class MapItemFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> None: ...

        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: 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 itemClippingSettings(self) -> QgsLayoutItemMapItemClipPathSettings: ...
    def atlasClippingSettings(self) -> QgsLayoutItemMapAtlasClippingSettings: ...
    def layoutToMapCoordsTransform(self) -> QtGui.QTransform: ...
    def removeRenderedFeatureHandler(self, handler: QgsRenderedFeatureHandlerInterface) -> None: ...
    def addRenderedFeatureHandler(self, handler: QgsRenderedFeatureHandlerInterface) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def previewLabelingResults(self) -> QgsLabelingResults: ...
    def renderingErrors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def isLabelBlockingItem(self, item: QgsLayoutItem) -> bool: ...
    def removeLabelBlockingItem(self, item: QgsLayoutItem) -> None: ...
    def addLabelBlockingItem(self, item: QgsLayoutItem) -> None: ...
    def layersToRender(self, context: typing.Optional[QgsExpressionContext] = ...) -> typing.List[QgsMapLayer]: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def mapSettings(self, extent: QgsRectangle, size: QtCore.QSizeF, dpi: float, includeLayerSettings: bool) -> QgsMapSettings: ...
    def mapUnitsToLayoutUnits(self) -> float: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def setLabelMargin(self, margin: 'QgsLayoutMeasurement') -> None: ...
    def labelMargin(self) -> 'QgsLayoutMeasurement': ...
    def overview(self) -> 'QgsLayoutItemMapOverview': ...
    def overviews(self) -> 'QgsLayoutItemMapOverviewStack': ...
    def grid(self) -> 'QgsLayoutItemMapGrid': ...
    def grids(self) -> 'QgsLayoutItemMapGridStack': ...
    def setAtlasMargin(self, margin: float) -> None: ...
    def atlasMargin(self, valueType: QgsLayoutObject.PropertyValueType = ...) -> float: ...
    def setAtlasScalingMode(self, mode: 'QgsLayoutItemMap.AtlasScalingMode') -> None: ...
    def atlasScalingMode(self) -> 'QgsLayoutItemMap.AtlasScalingMode': ...
    def setAtlasDriven(self, enabled: bool) -> None: ...
    def atlasDriven(self) -> bool: ...
    def drawAnnotations(self) -> bool: ...
    def setDrawAnnotations(self, draw: bool) -> None: ...
    def mapRotation(self, valueType: QgsLayoutObject.PropertyValueType = ...) -> float: ...
    def setMapRotation(self, rotation: float) -> None: ...
    def containsAdvancedEffects(self) -> bool: ...
    def requiresRasterization(self) -> bool: ...
    def containsWmsLayer(self) -> bool: ...
    def zoomContent(self, factor: float, point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def setMoveContentPreviewOffset(self, dx: float, dy: float) -> None: ...
    def moveContent(self, dx: float, dy: float) -> None: ...
    def setFollowVisibilityPresetName(self, name: str) -> None: ...
    def followVisibilityPresetName(self) -> str: ...
    def setFollowVisibilityPreset(self, follow: bool) -> None: ...
    def followVisibilityPreset(self) -> bool: ...
    def storeCurrentLayerStyles(self) -> None: ...
    def setLayerStyleOverrides(self, overrides: typing.Dict[str, str]) -> None: ...
    def layerStyleOverrides(self) -> typing.Dict[str, str]: ...
    def setKeepLayerStyles(self, enabled: bool) -> None: ...
    def keepLayerStyles(self) -> bool: ...
    def setLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def layers(self) -> typing.List[QgsMapLayer]: ...
    def setKeepLayerSet(self, enabled: bool) -> None: ...
    def keepLayerSet(self) -> bool: ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def presetCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def visibleExtentPolygon(self) -> QtGui.QPolygonF: ...
    def extent(self) -> QgsRectangle: ...
    def zoomToExtent(self, extent: QgsRectangle) -> None: ...
    def setExtent(self, extent: QgsRectangle) -> None: ...
    def setScale(self, scale: float, forceUpdate: bool = ...) -> None: ...
    def scale(self) -> float: ...
    def setFrameStrokeWidth(self, width: 'QgsLayoutMeasurement') -> None: ...
    def exportLayerDetails(self) -> QgsLayoutItem.ExportLayerDetail: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def nextExportPart(self) -> bool: ...
    def stopLayeredExport(self) -> None: ...
    def startLayeredExport(self) -> None: ...
    def numberExportLayers(self) -> int: ...
    def paint(self, painter: QtGui.QPainter, itemStyle: QtWidgets.QStyleOptionGraphicsItem, pWidget: QtWidgets.QWidget) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemMap': ...
    def displayName(self) -> str: ...
    def assignFreeId(self) -> None: ...
    def setMapFlags(self, flags: typing.Union['QgsLayoutItemMap.MapItemFlags', 'QgsLayoutItemMap.MapItemFlag']) -> None: ...
    def mapFlags(self) -> 'QgsLayoutItemMap.MapItemFlags': ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemMapItemStack(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapItemStack') -> None: ...

    def removeItems(self) -> None: ...
    def asList(self) -> typing.List['QgsLayoutItemMapItem']: ...
    def moveItemDown(self, itemId: str) -> None: ...
    def moveItemUp(self, itemId: str) -> None: ...
    def removeItem(self, itemId: str) -> None: ...
    def addItem(self, item: 'QgsLayoutItemMapItem') -> None: ...
    @typing.overload
    def item(self, index: int) -> 'QgsLayoutItemMapItem': ...
    @typing.overload
    def item(self, itemId: str) -> 'QgsLayoutItemMapItem': ...
    def hasEnabledItems(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    def drawItems(self, painter: QtGui.QPainter, ignoreStacking: bool = ...) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def size(self) -> int: ...


class QgsLayoutItemMapGridStack(QgsLayoutItemMapItemStack):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapGridStack') -> None: ...

    def calculateMaxGridExtension(self) -> typing.Tuple[float, float, float, float]: ...
    def maxGridExtension(self) -> float: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def asList(self) -> typing.List['QgsLayoutItemMapGrid']: ...
    def __getitem__(self, index: int) -> 'QgsLayoutItemMapGrid': ...
    @typing.overload
    def grid(self, gridId: str) -> 'QgsLayoutItemMapGrid': ...
    @typing.overload
    def grid(self, index: int) -> 'QgsLayoutItemMapGrid': ...
    def moveGridDown(self, gridId: str) -> None: ...
    def moveGridUp(self, gridId: str) -> None: ...
    def removeGrid(self, gridId: str) -> None: ...
    def addGrid(self, grid: 'QgsLayoutItemMapGrid') -> None: ...


class QgsLayoutItemMapItem(QgsLayoutObject):

    class StackingPosition(int):
        StackBelowMap = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackBelowMapLayer = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackAboveMapLayer = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackBelowMapLabels = ... # type: QgsLayoutItemMapItem.StackingPosition
        StackAboveMapLabels = ... # type: QgsLayoutItemMapItem.StackingPosition

    def __init__(self, name: str, map: QgsLayoutItemMap) -> None: ...

    def createExpressionContext(self) -> QgsExpressionContext: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def setStackingLayer(self, layer: QgsMapLayer) -> None: ...
    def stackingLayer(self) -> QgsMapLayer: ...
    def setStackingPosition(self, position: 'QgsLayoutItemMapItem.StackingPosition') -> None: ...
    def stackingPosition(self) -> 'QgsLayoutItemMapItem.StackingPosition': ...
    def usesAdvancedEffects(self) -> bool: ...
    def enabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def name(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def id(self) -> str: ...
    def map(self) -> QgsLayoutItemMap: ...
    def setMap(self, map: QgsLayoutItemMap) -> None: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMapGrid(QgsLayoutItemMapItem):

    class AnnotationCoordinate(int):
        Longitude = ... # type: QgsLayoutItemMapGrid.AnnotationCoordinate
        Latitude = ... # type: QgsLayoutItemMapGrid.AnnotationCoordinate

    class FrameSideFlag(int):
        FrameLeft = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameRight = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameTop = ... # type: QgsLayoutItemMapGrid.FrameSideFlag
        FrameBottom = ... # type: QgsLayoutItemMapGrid.FrameSideFlag

    class TickLengthMode(int):
        OrthogonalTicks = ... # type: QgsLayoutItemMapGrid.TickLengthMode
        NormalizedTicks = ... # type: QgsLayoutItemMapGrid.TickLengthMode

    class FrameStyle(int):
        NoFrame = ... # type: QgsLayoutItemMapGrid.FrameStyle
        Zebra = ... # type: QgsLayoutItemMapGrid.FrameStyle
        InteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        ExteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        InteriorExteriorTicks = ... # type: QgsLayoutItemMapGrid.FrameStyle
        LineBorder = ... # type: QgsLayoutItemMapGrid.FrameStyle
        LineBorderNautical = ... # type: QgsLayoutItemMapGrid.FrameStyle
        ZebraNautical = ... # type: QgsLayoutItemMapGrid.FrameStyle

    class BorderSide(int):
        Left = ... # type: QgsLayoutItemMapGrid.BorderSide
        Right = ... # type: QgsLayoutItemMapGrid.BorderSide
        Bottom = ... # type: QgsLayoutItemMapGrid.BorderSide
        Top = ... # type: QgsLayoutItemMapGrid.BorderSide

    class AnnotationFormat(int):
        Decimal = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinute = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecond = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DecimalWithSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteNoSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinutePadded = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecondNoSuffix = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        DegreeMinuteSecondPadded = ... # type: QgsLayoutItemMapGrid.AnnotationFormat
        CustomFormat = ... # type: QgsLayoutItemMapGrid.AnnotationFormat

    class AnnotationDirection(int):
        Horizontal = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        Vertical = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        VerticalDescending = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        BoundaryDirection = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        AboveTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        OnTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection
        UnderTick = ... # type: QgsLayoutItemMapGrid.AnnotationDirection

    class AnnotationPosition(int):
        InsideMapFrame = ... # type: QgsLayoutItemMapGrid.AnnotationPosition
        OutsideMapFrame = ... # type: QgsLayoutItemMapGrid.AnnotationPosition

    class DisplayMode(int):
        ShowAll = ... # type: QgsLayoutItemMapGrid.DisplayMode
        LatitudeOnly = ... # type: QgsLayoutItemMapGrid.DisplayMode
        LongitudeOnly = ... # type: QgsLayoutItemMapGrid.DisplayMode
        HideAll = ... # type: QgsLayoutItemMapGrid.DisplayMode

    class GridStyle(int):
        Solid = ... # type: QgsLayoutItemMapGrid.GridStyle
        Cross = ... # type: QgsLayoutItemMapGrid.GridStyle
        Markers = ... # type: QgsLayoutItemMapGrid.GridStyle
        FrameAnnotationsOnly = ... # type: QgsLayoutItemMapGrid.GridStyle

    class GridUnit(int):
        MapUnit = ... # type: QgsLayoutItemMapGrid.GridUnit
        MM = ... # type: QgsLayoutItemMapGrid.GridUnit
        CM = ... # type: QgsLayoutItemMapGrid.GridUnit
        DynamicPageSizeBased = ... # type: QgsLayoutItemMapGrid.GridUnit

    class FrameSideFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> None: ...

        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: str, map: QgsLayoutItemMap) -> None: ...

    crsChanged: typing.ClassVar[QtCore.pyqtsignal]
    def refresh(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def frameFillColor2(self) -> QtGui.QColor: ...
    def setFrameFillColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def frameFillColor1(self) -> QtGui.QColor: ...
    def setFrameFillColor1(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def framePenColor(self) -> QtGui.QColor: ...
    def setFramePenColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def framePenSize(self) -> float: ...
    def setFramePenSize(self, width: float) -> None: ...
    def frameMargin(self) -> float: ...
    def setFrameMargin(self, margin: float) -> None: ...
    def rotatedAnnotationsMarginToCorner(self) -> float: ...
    def setRotatedAnnotationsMarginToCorner(self, margin: float) -> None: ...
    def rotatedAnnotationsMinimumAngle(self) -> float: ...
    def setRotatedAnnotationsMinimumAngle(self, angle: float) -> None: ...
    def rotatedAnnotationsLengthMode(self) -> 'QgsLayoutItemMapGrid.TickLengthMode': ...
    def setRotatedAnnotationsLengthMode(self, mode: 'QgsLayoutItemMapGrid.TickLengthMode') -> None: ...
    def rotatedAnnotationsEnabled(self) -> float: ...
    def setRotatedAnnotationsEnabled(self, state: bool) -> None: ...
    def rotatedTicksMarginToCorner(self) -> float: ...
    def setRotatedTicksMarginToCorner(self, margin: float) -> None: ...
    def rotatedTicksMinimumAngle(self) -> float: ...
    def setRotatedTicksMinimumAngle(self, angle: float) -> None: ...
    def rotatedTicksLengthMode(self) -> 'QgsLayoutItemMapGrid.TickLengthMode': ...
    def setRotatedTicksLengthMode(self, mode: 'QgsLayoutItemMapGrid.TickLengthMode') -> None: ...
    def rotatedTicksEnabled(self) -> float: ...
    def setRotatedTicksEnabled(self, state: bool) -> None: ...
    def frameWidth(self) -> float: ...
    def setFrameWidth(self, width: float) -> None: ...
    def testFrameSideFlag(self, flag: 'QgsLayoutItemMapGrid.FrameSideFlag') -> bool: ...
    def frameSideFlags(self) -> 'QgsLayoutItemMapGrid.FrameSideFlags': ...
    def setFrameSideFlag(self, flag: 'QgsLayoutItemMapGrid.FrameSideFlag', on: bool = ...) -> None: ...
    def setFrameSideFlags(self, flags: typing.Union['QgsLayoutItemMapGrid.FrameSideFlags', 'QgsLayoutItemMapGrid.FrameSideFlag']) -> None: ...
    def frameDivisions(self, side: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.DisplayMode': ...
    def setFrameDivisions(self, divisions: 'QgsLayoutItemMapGrid.DisplayMode', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def frameStyle(self) -> 'QgsLayoutItemMapGrid.FrameStyle': ...
    def setFrameStyle(self, style: 'QgsLayoutItemMapGrid.FrameStyle') -> None: ...
    def annotationExpression(self) -> str: ...
    def setAnnotationExpression(self, expression: str) -> None: ...
    def annotationFormat(self) -> 'QgsLayoutItemMapGrid.AnnotationFormat': ...
    def setAnnotationFormat(self, format: 'QgsLayoutItemMapGrid.AnnotationFormat') -> None: ...
    def annotationDirection(self, border: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.AnnotationDirection': ...
    @typing.overload
    def setAnnotationDirection(self, direction: 'QgsLayoutItemMapGrid.AnnotationDirection', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    @typing.overload
    def setAnnotationDirection(self, direction: 'QgsLayoutItemMapGrid.AnnotationDirection') -> None: ...
    def annotationFrameDistance(self) -> float: ...
    def setAnnotationFrameDistance(self, distance: float) -> None: ...
    def annotationPosition(self, side: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.AnnotationPosition': ...
    def setAnnotationPosition(self, position: 'QgsLayoutItemMapGrid.AnnotationPosition', side: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def annotationDisplay(self, border: 'QgsLayoutItemMapGrid.BorderSide') -> 'QgsLayoutItemMapGrid.DisplayMode': ...
    def setAnnotationDisplay(self, display: 'QgsLayoutItemMapGrid.DisplayMode', border: 'QgsLayoutItemMapGrid.BorderSide') -> None: ...
    def annotationPrecision(self) -> int: ...
    def setAnnotationPrecision(self, precision: int) -> None: ...
    def annotationFontColor(self) -> QtGui.QColor: ...
    def setAnnotationFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def annotationFont(self) -> QtGui.QFont: ...
    def setAnnotationFont(self, font: QtGui.QFont) -> None: ...
    def annotationTextFormat(self) -> 'QgsTextFormat': ...
    def setAnnotationTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def annotationEnabled(self) -> bool: ...
    def setAnnotationEnabled(self, enabled: bool) -> None: ...
    def markerSymbol(self) -> 'QgsMarkerSymbol': ...
    def setMarkerSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def setGridLineColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setGridLineWidth(self, width: float) -> None: ...
    def crossLength(self) -> float: ...
    def setCrossLength(self, length: float) -> None: ...
    def style(self) -> 'QgsLayoutItemMapGrid.GridStyle': ...
    def setStyle(self, style: 'QgsLayoutItemMapGrid.GridStyle') -> None: ...
    def setMaximumIntervalWidth(self, width: float) -> None: ...
    def maximumIntervalWidth(self) -> float: ...
    def setMinimumIntervalWidth(self, width: float) -> None: ...
    def minimumIntervalWidth(self) -> float: ...
    def offsetY(self) -> float: ...
    def setOffsetY(self, offset: float) -> None: ...
    def offsetX(self) -> float: ...
    def setOffsetX(self, offset: float) -> None: ...
    def intervalY(self) -> float: ...
    def setIntervalY(self, interval: float) -> None: ...
    def intervalX(self) -> float: ...
    def setIntervalX(self, interval: float) -> None: ...
    def units(self) -> 'QgsLayoutItemMapGrid.GridUnit': ...
    def setUnits(self, unit: 'QgsLayoutItemMapGrid.GridUnit') -> None: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def calculateMaxExtension(self) -> typing.Tuple[float, float, float, float]: ...
    def maxExtension(self) -> float: ...
    def usesAdvancedEffects(self) -> bool: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMapOverviewStack(QgsLayoutItemMapItemStack):

    @typing.overload
    def __init__(self, map: QgsLayoutItemMap) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemMapOverviewStack') -> None: ...

    def modifyMapLayerList(self, layers: typing.Iterable[QgsMapLayer]) -> typing.List[QgsMapLayer]: ...
    def readXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def asList(self) -> typing.List['QgsLayoutItemMapOverview']: ...
    def __getitem__(self, index: int) -> 'QgsLayoutItemMapOverview': ...
    @typing.overload
    def overview(self, overviewId: str) -> 'QgsLayoutItemMapOverview': ...
    @typing.overload
    def overview(self, index: int) -> 'QgsLayoutItemMapOverview': ...
    def moveOverviewDown(self, overviewId: str) -> None: ...
    def moveOverviewUp(self, overviewId: str) -> None: ...
    def removeOverview(self, overviewId: str) -> None: ...
    def addOverview(self, overview: 'QgsLayoutItemMapOverview') -> None: ...


class QgsLayoutItemMapOverview(QgsLayoutItemMapItem):

    def __init__(self, name: str, map: QgsLayoutItemMap) -> None: ...

    def overviewExtentChanged(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def mapLayer(self) -> QgsMapLayer: ...
    def asMapLayer(self) -> QgsVectorLayer: ...
    def connectSignals(self) -> None: ...
    def setCentered(self, centered: bool) -> None: ...
    def centered(self) -> bool: ...
    def setInverted(self, inverted: bool) -> None: ...
    def inverted(self) -> bool: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def frameSymbol(self) -> 'QgsFillSymbol': ...
    def setFrameSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def usesAdvancedEffects(self) -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def readXml(self, itemElem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, elem: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, painter: QtGui.QPainter) -> None: ...


class QgsLayoutItemMarker(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def finalizeRestoreFromXml(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def fixedSize(self) -> 'QgsLayoutSize': ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def setNorthOffset(self, offset: float) -> None: ...
    def northOffset(self) -> float: ...
    def setNorthMode(self, mode: 'QgsLayoutNorthArrowHandler.NorthMode') -> None: ...
    def northMode(self) -> 'QgsLayoutNorthArrowHandler.NorthMode': ...
    def northArrowRotation(self) -> float: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def symbol(self) -> 'QgsMarkerSymbol': ...
    def setSymbol(self, symbol: 'QgsMarkerSymbol') -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemMarker': ...


class QgsLayoutNodesItem(QgsLayoutItem):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def updateBoundingRect(self) -> None: ...
    def updateSceneRect(self) -> None: ...
    def computeDistance(self, pt1: typing.Union[QtCore.QPointF, QtCore.QPoint], 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 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: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, itemElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def drawBackground(self, context: QgsRenderContext) -> None: ...
    def drawFrame(self, context: QgsRenderContext) -> None: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def redraw(self) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def createCommand(self, text: str, id: int, parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> 'QgsAbstractLayoutUndoCommand': ...
    def attemptResize(self, size: 'QgsLayoutSize', includesFrame: bool = ...) -> None: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    @staticmethod
    def decodePageOrientation(string: str) -> typing.Tuple['QgsLayoutItemPage.Orientation', bool]: ...
    def pageStyleSymbol(self) -> 'QgsFillSymbol': ...
    def setPageStyleSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def orientation(self) -> 'QgsLayoutItemPage.Orientation': ...
    def pageSize(self) -> 'QgsLayoutSize': ...
    def pageLayout(self) -> QtGui.QPageLayout: ...
    @typing.overload
    def setPageSize(self, size: 'QgsLayoutSize') -> None: ...
    @typing.overload
    def setPageSize(self, size: str, orientation: 'QgsLayoutItemPage.Orientation' = ...) -> bool: ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPage': ...


class QgsLayoutItemPicture(QgsLayoutItem):

    class NorthMode(int):
        GridNorth = ... # type: QgsLayoutItemPicture.NorthMode
        TrueNorth = ... # type: QgsLayoutItemPicture.NorthMode

    class Format(int):
        FormatSVG = ... # type: QgsLayoutItemPicture.Format
        FormatRaster = ... # type: QgsLayoutItemPicture.Format
        FormatUnknown = ... # type: QgsLayoutItemPicture.Format

    class ResizeMode(int):
        Zoom = ... # type: QgsLayoutItemPicture.ResizeMode
        Stretch = ... # type: QgsLayoutItemPicture.ResizeMode
        Clip = ... # type: QgsLayoutItemPicture.ResizeMode
        ZoomResizeFrame = ... # type: QgsLayoutItemPicture.ResizeMode
        FrameToImageSize = ... # type: QgsLayoutItemPicture.ResizeMode

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def applyItemSizeConstraint(self, targetSize: QtCore.QSizeF) -> QtCore.QSizeF: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    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[str, QgsProperty]) -> None: ...
    def svgDynamicParameters(self) -> typing.Dict[str, QgsProperty]: ...
    def evaluatedPath(self) -> str: ...
    def isMissingImage(self) -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def setMode(self, mode: 'QgsLayoutItemPicture.Format') -> None: ...
    def originalMode(self) -> 'QgsLayoutItemPicture.Format': ...
    def mode(self) -> 'QgsLayoutItemPicture.Format': ...
    def setSvgStrokeWidth(self, width: float) -> None: ...
    def svgStrokeWidth(self) -> float: ...
    def setSvgStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def svgStrokeColor(self) -> QtGui.QColor: ...
    def setSvgFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def svgFillColor(self) -> QtGui.QColor: ...
    def pictureAnchor(self) -> QgsLayoutItem.ReferencePoint: ...
    def setPictureAnchor(self, anchor: QgsLayoutItem.ReferencePoint) -> None: ...
    def resizeMode(self) -> 'QgsLayoutItemPicture.ResizeMode': ...
    def setNorthOffset(self, offset: float) -> None: ...
    def northOffset(self) -> float: ...
    def setNorthMode(self, mode: 'QgsLayoutItemPicture.NorthMode') -> None: ...
    def northMode(self) -> 'QgsLayoutItemPicture.NorthMode': ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def pictureRotation(self) -> float: ...
    def picturePath(self) -> str: ...
    def setPicturePath(self, path: str, format: 'QgsLayoutItemPicture.Format' = ...) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPicture': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemPolygon(QgsLayoutNodesItem):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polygon: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def _writeXmlStyle(self, doc: QtXml.QDomDocument, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _readXmlStyle(self, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _draw(self, context: QgsLayoutItemRenderContext, itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem] = ...) -> None: ...
    def _removeNode(self, nodeIndex: int) -> bool: ...
    def _addNode(self, indexPoint: int, newPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], radius: float) -> bool: ...
    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def clipPath(self) -> QgsGeometry: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPolygon': ...


class QgsLayoutItemPolyline(QgsLayoutNodesItem):

    class MarkerMode(int):
        NoMarker = ... # type: QgsLayoutItemPolyline.MarkerMode
        ArrowHead = ... # type: QgsLayoutItemPolyline.MarkerMode
        SvgMarker = ... # type: QgsLayoutItemPolyline.MarkerMode

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, polyline: QtGui.QPolygonF, layout: QgsLayout) -> None: ...

    def updateBoundingRect(self) -> None: ...
    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def _writeXmlStyle(self, doc: QtXml.QDomDocument, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _readXmlStyle(self, elmt: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def _draw(self, context: QgsLayoutItemRenderContext, itemStyle: typing.Optional[QtWidgets.QStyleOptionGraphicsItem] = ...) -> None: ...
    def _removeNode(self, nodeIndex: int) -> bool: ...
    def _addNode(self, indexPoint: int, newPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], radius: float) -> bool: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def arrowHeadStrokeWidth(self) -> float: ...
    def setArrowHeadStrokeWidth(self, width: float) -> None: ...
    def setArrowHeadFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def arrowHeadFillColor(self) -> QtGui.QColor: ...
    def setArrowHeadStrokeColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def arrowHeadStrokeColor(self) -> QtGui.QColor: ...
    def endSvgMarkerPath(self) -> str: ...
    def setEndSvgMarkerPath(self, path: str) -> None: ...
    def startSvgMarkerPath(self) -> str: ...
    def setStartSvgMarkerPath(self, path: str) -> None: ...
    def arrowHeadWidth(self) -> float: ...
    def setArrowHeadWidth(self, width: float) -> None: ...
    def setEndMarker(self, mode: 'QgsLayoutItemPolyline.MarkerMode') -> None: ...
    def endMarker(self) -> 'QgsLayoutItemPolyline.MarkerMode': ...
    def setStartMarker(self, mode: 'QgsLayoutItemPolyline.MarkerMode') -> None: ...
    def startMarker(self) -> 'QgsLayoutItemPolyline.MarkerMode': ...
    def setSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def symbol(self) -> 'QgsLineSymbol': ...
    def shape(self) -> QtGui.QPainterPath: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemPolyline': ...


class QgsLayoutItemAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: int, visibleName: str, visiblePluralName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutItemAbstractMetadata') -> None: ...

    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createItem(self, layout: QgsLayout) -> QgsLayoutItem: ...
    def visiblePluralName(self) -> str: ...
    def visibleName(self) -> str: ...
    def type(self) -> int: ...


class QgsLayoutMultiFrameAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, type: int, visibleName: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutMultiFrameAbstractMetadata') -> None: ...

    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createMultiFrame(self, layout: QgsLayout) -> QgsLayoutMultiFrame: ...
    def visibleName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemRegistry(QtCore.QObject):

    class ItemType(int):
        LayoutItem = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutGroup = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPage = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutMap = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPicture = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutLabel = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutLegend = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutShape = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPolygon = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutPolyline = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutScaleBar = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutFrame = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutHtml = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutAttributeTable = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutTextTable = ... # type: QgsLayoutItemRegistry.ItemType
        Layout3DMap = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutManualTable = ... # type: QgsLayoutItemRegistry.ItemType
        LayoutMarker = ... # type: QgsLayoutItemRegistry.ItemType
        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: QgsLayout) -> QgsLayoutMultiFrame: ...
    def createItem(self, type: int, layout: QgsLayout) -> QgsLayoutItem: ...
    def addLayoutMultiFrameType(self, metadata: QgsLayoutMultiFrameAbstractMetadata) -> bool: ...
    def addLayoutItemType(self, metadata: QgsLayoutItemAbstractMetadata) -> bool: ...
    def multiFrameMetadata(self, type: int) -> QgsLayoutMultiFrameAbstractMetadata: ...
    def itemMetadata(self, type: int) -> QgsLayoutItemAbstractMetadata: ...
    def populate(self) -> bool: ...


class QgsLayoutItemScaleBar(QgsLayoutItem):

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def exportLayerBehavior(self) -> QgsLayoutItem.ExportLayerBehavior: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def finalizeRestoreFromXml(self) -> None: ...
    def refreshDataDefinedProperty(self, property: QgsLayoutObject.DataDefinedProperty = ...) -> None: ...
    def update(self) -> None: ...
    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def style(self) -> str: ...
    def setStyle(self, name: str) -> None: ...
    def resizeToMinimumWidth(self) -> None: ...
    def applyDefaultSize(self, units: QgsUnitTypes.DistanceUnit = ...) -> None: ...
    def guessUnits(self) -> QgsUnitTypes.DistanceUnit: ...
    def applyDefaultRendererSettings(self, renderer: 'QgsScaleBarRenderer') -> bool: ...
    def applyDefaultSettings(self) -> None: ...
    def setLineCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def lineCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setLineJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def lineJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setUnits(self, units: QgsUnitTypes.DistanceUnit) -> None: ...
    def units(self) -> QgsUnitTypes.DistanceUnit: ...
    def setAlignment(self, alignment: 'QgsScaleBarSettings.Alignment') -> None: ...
    def alignment(self) -> 'QgsScaleBarSettings.Alignment': ...
    def setLabelHorizontalPlacement(self, placement: 'QgsScaleBarSettings.LabelHorizontalPlacement') -> None: ...
    def labelHorizontalPlacement(self) -> 'QgsScaleBarSettings.LabelHorizontalPlacement': ...
    def setLabelVerticalPlacement(self, placement: 'QgsScaleBarSettings.LabelVerticalPlacement') -> None: ...
    def labelVerticalPlacement(self) -> 'QgsScaleBarSettings.LabelVerticalPlacement': ...
    def setBoxContentSpace(self, space: float) -> None: ...
    def boxContentSpace(self) -> float: ...
    def setLabelBarSpace(self, space: float) -> None: ...
    def labelBarSpace(self) -> float: ...
    def linkedMap(self) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def brush2(self) -> QtGui.QBrush: ...
    def brush(self) -> QtGui.QBrush: ...
    def pen(self) -> QtGui.QPen: ...
    def setLineWidth(self, width: float) -> None: ...
    def lineWidth(self) -> float: ...
    def setLineColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def lineColor(self) -> QtGui.QColor: ...
    def setFillColor2(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fillColor2(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFontColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def fontColor(self) -> QtGui.QColor: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def font(self) -> QtGui.QFont: ...
    def setAlternateFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def alternateFillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setSubdivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def subdivisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setDivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def divisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setUnitLabel(self, label: str) -> None: ...
    def unitLabel(self) -> str: ...
    def setMapUnitsPerScaleBarUnit(self, units: float) -> None: ...
    def mapUnitsPerScaleBarUnit(self) -> float: ...
    def setMaximumBarWidth(self, maxWidth: float) -> None: ...
    def maximumBarWidth(self) -> float: ...
    def setMinimumBarWidth(self, minWidth: float) -> None: ...
    def minimumBarWidth(self) -> float: ...
    def setSegmentSizeMode(self, mode: 'QgsScaleBarSettings.SegmentSizeMode') -> None: ...
    def segmentSizeMode(self) -> 'QgsScaleBarSettings.SegmentSizeMode': ...
    def setUnitsPerSegment(self, units: float) -> None: ...
    def unitsPerSegment(self) -> float: ...
    def setSubdivisionsHeight(self, height: float) -> None: ...
    def subdivisionsHeight(self) -> float: ...
    def setNumberOfSubdivisions(self, subdivisions: int) -> None: ...
    def numberOfSubdivisions(self) -> int: ...
    def setNumberOfSegmentsLeft(self, segments: int) -> None: ...
    def numberOfSegmentsLeft(self) -> int: ...
    def setNumberOfSegments(self, segments: int) -> None: ...
    def numberOfSegments(self) -> int: ...
    def minimumSize(self) -> 'QgsLayoutSize': ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemScaleBar': ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...


class QgsLayoutItemShape(QgsLayoutItem):

    class Shape(int):
        Ellipse = ... # type: QgsLayoutItemShape.Shape
        Rectangle = ... # type: QgsLayoutItemShape.Shape
        Triangle = ... # type: QgsLayoutItemShape.Shape

    def __init__(self, layout: QgsLayout) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def draw(self, context: QgsLayoutItemRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def estimatedFrameBleed(self) -> float: ...
    def boundingRect(self) -> QtCore.QRectF: ...
    def clipPath(self) -> QgsGeometry: ...
    def cornerRadius(self) -> 'QgsLayoutMeasurement': ...
    def setCornerRadius(self, radius: 'QgsLayoutMeasurement') -> None: ...
    def symbol(self) -> 'QgsFillSymbol': ...
    def setSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def setShapeType(self, type: 'QgsLayoutItemShape.Shape') -> None: ...
    def shapeType(self) -> 'QgsLayoutItemShape.Shape': ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def displayName(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def type(self) -> int: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemShape': ...


class QgsLayoutItemTextTable(QgsLayoutTable):

    def __init__(self, layout: QgsLayout) -> None: ...

    def getTableContents(self, contents: typing.Any) -> bool: ...
    def setContents(self, contents: typing.Iterable[typing.Iterable[str]]) -> None: ...
    def addRow(self, row: typing.Iterable[str]) -> None: ...
    @staticmethod
    def create(layout: QgsLayout) -> 'QgsLayoutItemTextTable': ...
    def displayName(self) -> str: ...
    def type(self) -> int: ...


class QgsLayoutManager(QtCore.QObject):

    def __init__(self, project: typing.Optional['QgsProject'] = ...) -> None: ...

    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: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def generateUniqueTitle(self, type: 'QgsMasterLayoutInterface.Type' = ...) -> str: ...
    def duplicateLayout(self, layout: 'QgsMasterLayoutInterface', newName: str) -> 'QgsMasterLayoutInterface': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...
    def layoutByName(self, name: str) -> 'QgsMasterLayoutInterface': ...
    def printLayouts(self) -> typing.List['QgsPrintLayout']: ...
    def layouts(self) -> typing.List['QgsMasterLayoutInterface']: ...
    def clear(self) -> None: ...
    def removeLayout(self, layout: 'QgsMasterLayoutInterface') -> bool: ...
    def addLayout(self, layout: 'QgsMasterLayoutInterface') -> bool: ...


class QgsLayoutManagerModel(QtCore.QAbstractListModel):

    class Role(int):
        LayoutRole = ... # type: QgsLayoutManagerModel.Role

    def __init__(self, manager: QgsLayoutManager, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def allowEmptyLayout(self) -> bool: ...
    def setAllowEmptyLayout(self, allowEmpty: bool) -> None: ...
    def indexFromLayout(self, layout: 'QgsMasterLayoutInterface') -> QtCore.QModelIndex: ...
    def layoutFromIndex(self, index: QtCore.QModelIndex) -> 'QgsMasterLayoutInterface': ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...


class QgsLayoutManagerProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        FilterPrintLayouts = ... # type: QgsLayoutManagerProxyModel.Filter
        FilterReports = ... # type: QgsLayoutManagerProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutManagerProxyModel.Filters', 'QgsLayoutManagerProxyModel.Filter']) -> None: ...

        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: 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: QgsUnitTypes.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: str) -> 'QgsLayoutMeasurement': ...
    def encodeMeasurement(self) -> str: ...
    def setUnits(self, units: QgsUnitTypes.LayoutUnit) -> None: ...
    def units(self) -> QgsUnitTypes.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: QgsUnitTypes.LayoutUnit) -> QgsLayoutMeasurement: ...
    @typing.overload
    def convert(self, size: 'QgsLayoutSize', targetUnits: QgsUnitTypes.LayoutUnit) -> 'QgsLayoutSize': ...
    @typing.overload
    def convert(self, point: 'QgsLayoutPoint', targetUnits: QgsUnitTypes.LayoutUnit) -> 'QgsLayoutPoint': ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...


class QgsLayoutModel(QtCore.QAbstractItemModel):

    class Columns(int):
        Visibility = ... # type: QgsLayoutModel.Columns
        LockStatus = ... # type: QgsLayoutModel.Columns
        ItemId = ... # type: QgsLayoutModel.Columns

    def __init__(self, layout: QgsLayout, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def indexForItem(self, item: QgsLayoutItem, column: int = ...) -> QtCore.QModelIndex: ...
    def itemFromIndex(self, index: QtCore.QModelIndex) -> QgsLayoutItem: ...
    def removeRows(self, row: int, count: int, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dropMimeData(self, data: QtCore.QMimeData, action: QtCore.Qt.DropAction, row: int, column: int, parent: QtCore.QModelIndex) -> bool: ...
    def mimeData(self, indexes: typing.Iterable[QtCore.QModelIndex]) -> QtCore.QMimeData: ...
    def mimeTypes(self) -> typing.List[str]: ...
    def supportedDropActions(self) -> QtCore.Qt.DropActions: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int) -> bool: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...


class QgsLayoutProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, layout: QgsLayout, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, sourceRow: int, sourceParent: QtCore.QModelIndex) -> bool: ...
    def itemFlags(self) -> QgsLayoutItem.Flags: ...
    def setItemFlags(self, flags: typing.Union[QgsLayoutItem.Flags, QgsLayoutItem.Flag]) -> None: ...
    def allowEmptyItem(self) -> bool: ...
    def setAllowEmptyItem(self, allowEmpty: bool) -> None: ...
    def layout(self) -> QgsLayout: ...
    def itemFromSourceIndex(self, sourceIndex: QtCore.QModelIndex) -> QgsLayoutItem: ...
    def sourceLayerModel(self) -> QgsLayoutModel: ...
    def exceptedItemList(self) -> typing.List[QgsLayoutItem]: ...
    def setExceptedItemList(self, items: typing.Iterable[QgsLayoutItem]) -> None: ...
    def setFilterType(self, filter: QgsLayoutItemRegistry.ItemType) -> None: ...
    def filterType(self) -> QgsLayoutItemRegistry.ItemType: ...


class QgsLayoutNorthArrowHandler(QtCore.QObject):

    class NorthMode(int):
        GridNorth = ... # type: QgsLayoutNorthArrowHandler.NorthMode
        TrueNorth = ... # type: QgsLayoutNorthArrowHandler.NorthMode

    def __init__(self, parent: QtCore.QObject) -> None: ...

    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) -> QgsLayoutItemMap: ...
    def setLinkedMap(self, map: QgsLayoutItemMap) -> None: ...
    def arrowRotation(self) -> float: ...


class QgsLayoutPageCollection(QtCore.QObject, QgsLayoutSerializableObject):

    def __init__(self, layout: 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: QgsUnitTypes.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]) -> 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) -> 'QgsFillSymbol': ...
    def setPageStyleSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def takePage(self, page: QgsLayoutItemPage) -> QgsLayoutItemPage: ...
    def clear(self) -> None: ...
    @typing.overload
    def deletePage(self, pageNumber: int) -> None: ...
    @typing.overload
    def deletePage(self, page: QgsLayoutItemPage) -> None: ...
    def insertPage(self, page: QgsLayoutItemPage, beforePage: int) -> None: ...
    def extendByNewPage(self) -> QgsLayoutItemPage: ...
    def addPage(self, page: QgsLayoutItemPage) -> None: ...
    def shouldExportPage(self, page: int) -> bool: ...
    def itemsOnPage(self, page: int) -> typing.List[QgsLayoutItem]: ...
    def pageIsEmpty(self, page: int) -> bool: ...
    def visiblePageNumbers(self, region: QtCore.QRectF) -> typing.List[int]: ...
    def visiblePages(self, region: QtCore.QRectF) -> typing.List[QgsLayoutItemPage]: ...
    def pageNumber(self, page: QgsLayoutItemPage) -> int: ...
    def page(self, pageNumber: int) -> QgsLayoutItemPage: ...
    def pageCount(self) -> int: ...
    def pages(self) -> typing.List[QgsLayoutItemPage]: ...
    def layout(self) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutPoint(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, x: float, y: float, units: QgsUnitTypes.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], units: QgsUnitTypes.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, units: QgsUnitTypes.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: str) -> 'QgsLayoutPoint': ...
    def encodePoint(self) -> str: ...
    def toQPointF(self) -> QtCore.QPointF: ...
    def isNull(self) -> bool: ...
    def setUnits(self, units: QgsUnitTypes.LayoutUnit) -> None: ...
    def units(self) -> QgsUnitTypes.LayoutUnit: ...
    def setY(self, y: float) -> None: ...
    def y(self) -> float: ...
    def setX(self, x: float) -> None: ...
    def x(self) -> float: ...
    def setPoint(self, x: float, y: float) -> None: ...


class QgsLayoutRenderContext(QtCore.QObject):

    class Flag(int):
        FlagDebug = ... # type: QgsLayoutRenderContext.Flag
        FlagOutlineOnly = ... # type: QgsLayoutRenderContext.Flag
        FlagAntialiasing = ... # type: QgsLayoutRenderContext.Flag
        FlagUseAdvancedEffects = ... # type: QgsLayoutRenderContext.Flag
        FlagForceVectorOutput = ... # type: QgsLayoutRenderContext.Flag
        FlagHideCoverageLayer = ... # type: QgsLayoutRenderContext.Flag
        FlagDrawSelection = ... # type: QgsLayoutRenderContext.Flag
        FlagDisableTiledRasterLayerRenders = ... # type: QgsLayoutRenderContext.Flag
        FlagRenderLabelsByMapLayer = ... # type: QgsLayoutRenderContext.Flag
        FlagLosslessImageRendering = ... # type: QgsLayoutRenderContext.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> None: ...

        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: QgsLayout) -> None: ...

    predefinedScalesChanged: typing.ClassVar[QtCore.pyqtsignal]
    dpiChanged: typing.ClassVar[QtCore.pyqtsignal]
    flagsChanged: typing.ClassVar[QtCore.pyqtsignal]
    def setFeatureFilterProvider(self, featureFilterProvider: QgsFeatureFilterProvider) -> None: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def predefinedScales(self) -> typing.List[float]: ...
    def setPredefinedScales(self, scales: typing.Iterable[float]) -> None: ...
    def setExportThemes(self, themes: typing.Iterable[str]) -> None: ...
    def exportThemes(self) -> typing.List[str]: ...
    def simplifyMethod(self) -> QgsVectorSimplifyMethod: ...
    def setSimplifyMethod(self, method: QgsVectorSimplifyMethod) -> None: ...
    def setTextRenderFormat(self, format: Qgis.TextRenderFormat) -> None: ...
    def textRenderFormat(self) -> Qgis.TextRenderFormat: ...
    def currentExportLayer(self) -> int: ...
    def setCurrentExportLayer(self, layer: int = ...) -> None: ...
    def pagesVisible(self) -> bool: ...
    def setPagesVisible(self, visible: bool) -> None: ...
    def setBoundingBoxesVisible(self, visible: bool) -> None: ...
    def boundingBoxesVisible(self) -> bool: ...
    def setGridVisible(self, visible: bool) -> None: ...
    def gridVisible(self) -> bool: ...
    def isPreviewRender(self) -> bool: ...
    def measurementConverter(self) -> QgsLayoutMeasurementConverter: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def dpi(self) -> float: ...
    def setDpi(self, dpi: float) -> None: ...
    def renderContextFlags(self) -> Qgis.RenderContextFlags: ...
    def testFlag(self, flag: 'QgsLayoutRenderContext.Flag') -> bool: ...
    def flags(self) -> 'QgsLayoutRenderContext.Flags': ...
    def setFlag(self, flag: 'QgsLayoutRenderContext.Flag', on: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union['QgsLayoutRenderContext.Flags', 'QgsLayoutRenderContext.Flag']) -> None: ...


class QgsLayoutReportContext(QtCore.QObject):

    def __init__(self, layout: QgsLayout) -> None: ...

    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: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def currentGeometry(self, crs: 'QgsCoordinateReferenceSystem' = ...) -> QgsGeometry: ...
    def feature(self) -> QgsFeature: ...
    def setFeature(self, feature: QgsFeature) -> None: ...


class QgsLayoutSize(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, width: float, height: float, units: QgsUnitTypes.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, size: QtCore.QSizeF, units: QgsUnitTypes.LayoutUnit = ...) -> None: ...
    @typing.overload
    def __init__(self, units: QgsUnitTypes.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: str) -> 'QgsLayoutSize': ...
    def encodeSize(self) -> str: ...
    def toQSizeF(self) -> QtCore.QSizeF: ...
    def isEmpty(self) -> bool: ...
    def setUnits(self, units: QgsUnitTypes.LayoutUnit) -> None: ...
    def units(self) -> QgsUnitTypes.LayoutUnit: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def width(self) -> float: ...
    def setSize(self, width: float, height: float) -> None: ...


class QgsLayoutSnapper(QgsLayoutSerializableObject):

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutSnapper') -> None: ...

    def readXml(self, gridElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, parentElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def snapPointsToItems(self, points: typing.Iterable[float], orientation: QtCore.Qt.Orientation, scaleFactor: float, ignoreItems: typing.Iterable[QgsLayoutItem], snapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ...) -> typing.Tuple[float, bool]: ...
    def snapPointToItems(self, original: float, orientation: QtCore.Qt.Orientation, scaleFactor: float, ignoreItems: typing.Iterable[QgsLayoutItem], snapLine: typing.Optional[QtWidgets.QGraphicsLineItem] = ...) -> typing.Tuple[float, bool]: ...
    def snapPointsToGuides(self, points: typing.Iterable[float], orientation: QtCore.Qt.Orientation, scaleFactor: float) -> typing.Tuple[float, bool]: ...
    def snapPointToGuides(self, original: float, orientation: QtCore.Qt.Orientation, scaleFactor: float) -> typing.Tuple[float, bool]: ...
    def snapPointsToGrid(self, points: typing.Iterable[typing.Union[QtCore.QPointF, QtCore.QPoint]], 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) -> QgsLayout: ...
    def stringType(self) -> str: ...


class QgsLayoutTableStyle(PyQt5.sip.wrapper):

    cellBackgroundColor = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
    enabled = ... # type: bool

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutTableStyle') -> None: ...

    def readXml(self, styleElem: QtXml.QDomElement) -> bool: ...
    def writeXml(self, styleElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsLayoutTableColumn(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, heading: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutTableColumn') -> None: ...

    def __ne__(self, other: object): ...
    def __repr__(self) -> typing.Any: ...
    def __eq__(self, other: object): ...
    def clone(self) -> 'QgsLayoutTableColumn': ...
    def setSortByRank(self, rank: int) -> None: ...
    def sortByRank(self) -> int: ...
    def setSortOrder(self, order: QtCore.Qt.SortOrder) -> None: ...
    def sortOrder(self) -> QtCore.Qt.SortOrder: ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    def setVAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def vAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setHAlignment(self, alignment: QtCore.Qt.AlignmentFlag) -> None: ...
    def hAlignment(self) -> QtCore.Qt.AlignmentFlag: ...
    def setHeading(self, heading: str) -> None: ...
    def heading(self) -> str: ...
    def setWidth(self, width: float) -> None: ...
    def width(self) -> float: ...
    def readXml(self, columnElem: QtXml.QDomElement) -> bool: ...
    def writeXml(self, columnElem: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsAbstractLayoutUndoCommand(QtWidgets.QUndoCommand):

    def __init__(self, text: str, id: int = ..., parent: typing.Optional[QtWidgets.QUndoCommand] = ...) -> None: ...

    def setAfterState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def restoreState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def saveState(self, stateDoc: QtXml.QDomDocument) -> None: ...
    def containsChange(self) -> bool: ...
    def afterState(self) -> QtXml.QDomDocument: ...
    def beforeState(self) -> QtXml.QDomDocument: ...
    def saveAfterState(self) -> None: ...
    def saveBeforeState(self) -> None: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsLayoutUndoStack(QtCore.QObject):

    def __init__(self, layout: QgsLayout) -> None: ...

    undoRedoOccurredForItems: typing.ClassVar[QtCore.pyqtsignal]
    def push(self, command: QtWidgets.QUndoCommand) -> None: ...
    def isBlocked(self) -> bool: ...
    def blockCommands(self, blocked: bool) -> None: ...
    def notifyUndoRedoOccurred(self, item: QgsLayoutItem) -> None: ...
    def stack(self) -> QtWidgets.QUndoStack: ...
    def cancelCommand(self) -> None: ...
    def endCommand(self) -> None: ...
    def beginCommand(self, object: QgsLayoutUndoObjectInterface, commandText: str, id: int = ...) -> None: ...
    def endMacro(self) -> None: ...
    def beginMacro(self, commandText: str) -> None: ...


class QgsLayoutUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutUtils') -> None: ...

    @staticmethod
    def predefinedScales(layout: QgsLayout) -> typing.List[float]: ...
    @staticmethod
    def itemIsAClippingSource(item: QgsLayoutItem) -> bool: ...
    @staticmethod
    def calculatePrettySize(minimumSize: float, maximumSize: float) -> float: ...
    @staticmethod
    def mapLayerFromString(string: str, project: 'QgsProject') -> QgsMapLayer: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: QtWidgets.QStyleOptionGraphicsItem) -> float: ...
    @typing.overload
    @staticmethod
    def scaleFactorFromItemStyle(style: QtWidgets.QStyleOptionGraphicsItem, painter: QtGui.QPainter) -> float: ...
    @staticmethod
    def decodePaperOrientation(string: str) -> typing.Tuple[QgsLayoutItemPage.Orientation, bool]: ...
    @staticmethod
    def largestRotatedRectWithinBounds(originalRect: QtCore.QRectF, boundsRect: QtCore.QRectF, rotation: float) -> QtCore.QRectF: ...
    @typing.overload
    @staticmethod
    def drawText(painter: QtGui.QPainter, position: typing.Union[QtCore.QPointF, QtCore.QPoint], text: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(painter: QtGui.QPainter, rectangle: QtCore.QRectF, text: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., halignment: QtCore.Qt.AlignmentFlag = ..., valignment: QtCore.Qt.AlignmentFlag = ..., flags: int = ...) -> None: ...
    @staticmethod
    def textHeightMM(font: QtGui.QFont, text: str, multiLineHeight: float = ...) -> float: ...
    @staticmethod
    def textWidthMM(font: QtGui.QFont, text: str) -> float: ...
    @staticmethod
    def fontHeightCharacterMM(font: QtGui.QFont, character: str) -> float: ...
    @staticmethod
    def fontHeightMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def fontDescentMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def fontAscentMM(font: QtGui.QFont) -> float: ...
    @staticmethod
    def scaledFontPixelSize(font: QtGui.QFont) -> QtGui.QFont: ...
    @staticmethod
    def relativePosition(position: float, beforeMin: float, beforeMax: float, afterMin: float, afterMax: float) -> float: ...
    @staticmethod
    def relativeResizeRect(rectToResize: QtCore.QRectF, boundsBefore: QtCore.QRectF, boundsAfter: QtCore.QRectF) -> None: ...
    @staticmethod
    def createRenderContextForLayout(layout: QgsLayout, painter: QtGui.QPainter, dpi: float = ...) -> QgsRenderContext: ...
    @staticmethod
    def createRenderContextForMap(map: QgsLayoutItemMap, painter: QtGui.QPainter, dpi: float = ...) -> QgsRenderContext: ...
    @staticmethod
    def snappedAngle(angle: float) -> float: ...
    @staticmethod
    def normalizedAngle(angle: float, allowNegative: bool = ...) -> float: ...
    @staticmethod
    def rotate(angle: float) -> typing.Tuple[float, float]: ...


class QgsMasterLayoutInterface(PyQt5.sip.wrapper):

    class Type(int):
        PrintLayout = ... # type: QgsMasterLayoutInterface.Type
        Report = ... # type: QgsMasterLayoutInterface.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMasterLayoutInterface') -> None: ...

    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def layoutProject(self) -> 'QgsProject': ...
    def setName(self, name: str) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def name(self) -> str: ...
    def layoutType(self) -> 'QgsMasterLayoutInterface.Type': ...
    def clone(self) -> 'QgsMasterLayoutInterface': ...


class QgsPageSize(PyQt5.sip.wrapper):

    displayName = ... # type: str
    name = ... # type: str
    size = ... # type: QgsLayoutSize

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, size: QgsLayoutSize, displayName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, size: QgsLayoutSize) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPageSize') -> None: ...

    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: str, size: QgsPageSize) -> bool: ...
    @typing.overload
    def find(self, name: str) -> typing.List[QgsPageSize]: ...
    @typing.overload
    def find(self, size: QgsLayoutSize) -> str: ...
    def entries(self) -> typing.List[QgsPageSize]: ...
    def add(self, size: QgsPageSize) -> None: ...


class QgsPrintLayout(QgsLayout, QgsMasterLayoutInterface):

    def __init__(self, project: 'QgsProject') -> None: ...

    nameChanged: typing.ClassVar[QtCore.pyqtsignal]
    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def atlas(self) -> QgsLayoutAtlas: ...
    def icon(self) -> QtGui.QIcon: ...
    def layoutType(self) -> QgsMasterLayoutInterface.Type: ...
    def layoutProject(self) -> 'QgsProject': ...
    def clone(self) -> 'QgsPrintLayout': ...


class QgsReport(QtCore.QObject, QgsAbstractReportSection, QgsMasterLayoutInterface):

    def __init__(self, project: 'QgsProject') -> None: ...

    nameChanged: typing.ClassVar[QtCore.pyqtsignal]
    def layoutAccept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def updateSettings(self) -> None: ...
    def readLayoutXml(self, layoutElement: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeLayoutXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsReport': ...
    def layoutProject(self) -> 'QgsProject': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...
    def layoutType(self) -> QgsMasterLayoutInterface.Type: ...


class QgsReportSectionFieldGroup(QgsAbstractReportSection):

    class SectionVisibility(int):
        IncludeWhenFeaturesFound = ... # type: QgsReportSectionFieldGroup.SectionVisibility
        AlwaysInclude = ... # type: QgsReportSectionFieldGroup.SectionVisibility

    def __init__(self, parentSection: typing.Optional[QgsAbstractReportSection] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def reloadSettings(self) -> None: ...
    def setParentSection(self, parentSection: QgsAbstractReportSection) -> None: ...
    def reset(self) -> None: ...
    def nextBody(self) -> typing.Tuple[QgsLayout, bool]: ...
    def prepareFooter(self) -> bool: ...
    def prepareHeader(self) -> bool: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> 'QgsReportSectionFieldGroup': ...
    def setFooterVisibility(self, visibility: 'QgsReportSectionFieldGroup.SectionVisibility') -> None: ...
    def footerVisibility(self) -> 'QgsReportSectionFieldGroup.SectionVisibility': ...
    def setHeaderVisibility(self, visibility: 'QgsReportSectionFieldGroup.SectionVisibility') -> None: ...
    def headerVisibility(self) -> 'QgsReportSectionFieldGroup.SectionVisibility': ...
    def setSortAscending(self, sortAscending: bool) -> None: ...
    def sortAscending(self) -> bool: ...
    def setField(self, field: str) -> None: ...
    def field(self) -> str: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: QgsLayout) -> None: ...
    def body(self) -> QgsLayout: ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsReportSectionLayout(QgsAbstractReportSection):

    def __init__(self, parentSection: typing.Optional[QgsAbstractReportSection] = ...) -> None: ...

    def readPropertiesFromElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writePropertiesToElement(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def reloadSettings(self) -> None: ...
    def nextBody(self) -> typing.Tuple[QgsLayout, bool]: ...
    def beginRender(self) -> bool: ...
    def clone(self) -> 'QgsReportSectionLayout': ...
    def setBodyEnabled(self, enabled: bool) -> None: ...
    def bodyEnabled(self) -> bool: ...
    def setBody(self, body: QgsLayout) -> None: ...
    def body(self) -> QgsLayout: ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def type(self) -> str: ...


class QgsLocator(QtCore.QObject):

    CORE_FILTERS = ... # type: typing.Iterable[str]

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    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: str, context: 'QgsLocatorContext', feedback: typing.Optional[QgsFeedback] = ...) -> None: ...
    def prefixedFilters(self) -> typing.Any: ...
    def filters(self, prefix: str = ...) -> typing.List[QgsLocatorFilter]: ...
    def deregisterFilter(self, filter: QgsLocatorFilter) -> None: ...
    def registerFilter(self, filter: QgsLocatorFilter) -> None: ...


class QgsLocatorContext(PyQt5.sip.wrapper):

    targetExtent = ... # type: QgsRectangle
    targetExtentCrs = ... # type: 'QgsCoordinateReferenceSystem'
    transformContext = ... # type: 'QgsCoordinateTransformContext'
    usingPrefix = ... # type: bool

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocatorContext') -> None: ...


class QgsLocatorResult(PyQt5.sip.wrapper):

    class ResultAction(PyQt5.sip.wrapper):

        iconPath = ... # type: str
        id = ... # type: int
        text = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, id: int, text: str, iconPath: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLocatorResult.ResultAction') -> None: ...

    actions = ... # type: typing.Iterable['QgsLocatorResult.ResultAction']
    description = ... # type: str
    displayString = ... # type: str
    filter = ... # type: QgsLocatorFilter
    group = ... # type: str
    icon = ... # type: QtGui.QIcon
    score = ... # type: float
    userData = ... # type: typing.Any

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, filter: QgsLocatorFilter, displayString: str, userData: typing.Any = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLocatorResult') -> None: ...

    def getUserData(self) -> typing.Any: ...


class QgsLocatorModel(QtCore.QAbstractTableModel):

    class Role(int):
        ResultDataRole = ... # type: QgsLocatorModel.Role
        ResultTypeRole = ... # type: QgsLocatorModel.Role
        ResultFilterPriorityRole = ... # type: QgsLocatorModel.Role
        ResultScoreRole = ... # type: QgsLocatorModel.Role
        ResultFilterNameRole = ... # type: QgsLocatorModel.Role
        ResultFilterGroupSortingRole = ... # type: QgsLocatorModel.Role
        ResultActionsRole = ... # type: QgsLocatorModel.Role

    NoGroup = ... # type: int

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addResult(self, result: QgsLocatorResult) -> None: ...
    def roleNames(self) -> typing.Dict[int, QtCore.QByteArray]: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def deferredClear(self) -> None: ...
    def clear(self) -> None: ...


class QgsLocatorAutomaticModel(QgsLocatorModel):

    def __init__(self, locator: QgsLocator) -> None: ...

    def createContext(self) -> QgsLocatorContext: ...
    def search(self, string: str) -> None: ...
    def locator(self) -> QgsLocator: ...


class QgsLocatorProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...


class QgsLocatorModelBridge(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def updateCanvasCrs(self, crs: 'QgsCoordinateReferenceSystem') -> None: ...
    def updateCanvasExtent(self, extent: QgsRectangle) -> None: ...
    def invalidateResults(self) -> None: ...
    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) -> QgsLocatorProxyModel: ...
    def locator(self) -> QgsLocator: ...
    def performSearch(self, text: str) -> None: ...


class QgsMapRendererCache(QtCore.QObject):

    def __init__(self) -> None: ...

    def invalidateCacheForLayer(self, layer: QgsMapLayer) -> None: ...
    def clearCacheImage(self, cacheKey: str) -> None: ...
    def dependentLayers(self, cacheKey: str) -> typing.List[QgsMapLayer]: ...
    def transformedCacheImage(self, cacheKey: str, mtp: QgsMapToPixel) -> QtGui.QImage: ...
    def cacheImage(self, cacheKey: str) -> QtGui.QImage: ...
    def hasAnyCacheImage(self, cacheKey: str, minimumScaleThreshold: float = ..., maximumScaleThreshold: float = ...) -> bool: ...
    def hasCacheImage(self, cacheKey: str) -> bool: ...
    def setCacheImageWithParameters(self, cacheKey: str, image: QtGui.QImage, extent: QgsRectangle, mapToPixel: QgsMapToPixel, dependentLayers: typing.Iterable[QgsMapLayer] = ...) -> None: ...
    def setCacheImage(self, cacheKey: str, image: QtGui.QImage, dependentLayers: typing.Iterable[QgsMapLayer] = ...) -> None: ...
    def updateParameters(self, extent: QgsRectangle, mtp: QgsMapToPixel) -> bool: ...
    def init(self, extent: QgsRectangle, scale: float) -> bool: ...
    def clear(self) -> None: ...


class QgsMapRendererJob(QtCore.QObject):

    class Error(PyQt5.sip.wrapper):

        layerID = ... # type: str
        message = ... # type: str

        @typing.overload
        def __init__(self, lid: str, msg: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMapRendererJob.Error') -> None: ...

    def __init__(self, settings: QgsMapSettings) -> None: ...

    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: QgsMapRendererCache) -> None: ...
    def errors(self) -> typing.List['QgsMapRendererJob.Error']: ...
    def featureFilterProvider(self) -> QgsFeatureFilterProvider: ...
    def setFeatureFilterProvider(self, f: QgsFeatureFilterProvider) -> None: ...
    def takeRenderedItemResults(self) -> 'QgsRenderedItemResults': ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def layersRedrawnFromCache(self) -> typing.List[str]: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...
    def start(self) -> None: ...


class QgsMapRendererAbstractCustomPainterJob(QgsMapRendererJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def preparePainter(self, painter: QtGui.QPainter, backgroundColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> None: ...


class QgsMapRendererCustomPainterJob(QgsMapRendererAbstractCustomPainterJob):

    def __init__(self, settings: QgsMapSettings, painter: QtGui.QPainter) -> None: ...

    def renderPrepared(self) -> None: ...
    def prepare(self) -> None: ...
    def renderSynchronously(self) -> None: ...
    def waitForFinishedWithEventLoop(self, flags: typing.Union[QtCore.QEventLoop.ProcessEventsFlags, QtCore.QEventLoop.ProcessEventsFlag] = ...) -> None: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererQImageJob(QgsMapRendererJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def renderedImage(self) -> QtGui.QImage: ...


class QgsMapRendererParallelJob(QgsMapRendererQImageJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def renderedImage(self) -> QtGui.QImage: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererSequentialJob(QgsMapRendererQImageJob):

    def __init__(self, settings: QgsMapSettings) -> None: ...

    def internalFinished(self) -> None: ...
    def renderedImage(self) -> QtGui.QImage: ...
    def takeLabelingResults(self) -> QgsLabelingResults: ...
    def usedCachedLabels(self) -> bool: ...
    def isActive(self) -> bool: ...
    def waitForFinished(self) -> None: ...
    def cancelWithoutBlocking(self) -> None: ...
    def cancel(self) -> None: ...


class QgsMapRendererTask(QgsTask):

    class ErrorType(int):
        ImageAllocationFail = ... # type: QgsMapRendererTask.ErrorType
        ImageSaveFail = ... # type: QgsMapRendererTask.ErrorType
        ImageUnsupportedFormat = ... # type: QgsMapRendererTask.ErrorType

    @typing.overload
    def __init__(self, ms: QgsMapSettings, fileName: str, fileFormat: str = ..., forceRaster: bool = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ...) -> None: ...
    @typing.overload
    def __init__(self, ms: QgsMapSettings, p: QtGui.QPainter) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    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[str]) -> None: ...
    @typing.overload
    def transferResults(self, other: 'QgsRenderedItemResults', layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def transferResults(self, other: 'QgsRenderedItemResults') -> None: ...
    def appendResults(self, results: typing.Iterable[QgsRenderedItemDetails], context: QgsRenderContext) -> None: ...
    def renderedAnnotationItemsInBounds(self, bounds: QgsRectangle) -> typing.List[QgsRenderedAnnotationItemDetails]: ...
    def renderedItems(self) -> typing.List[QgsRenderedItemDetails]: ...


class QgsMesh3dAveragingMethod(PyQt5.sip.wrapper):

    class Method(int):
        MultiLevelsAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        SigmaAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        RelativeHeightAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method
        ElevationAveragingMethod = ... # type: QgsMesh3dAveragingMethod.Method

    @typing.overload
    def __init__(self, method: 'QgsMesh3dAveragingMethod.Method') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMesh3dAveragingMethod') -> None: ...

    def method(self) -> 'QgsMesh3dAveragingMethod.Method': ...
    def clone(self) -> 'QgsMesh3dAveragingMethod': ...
    @typing.overload
    @staticmethod
    def equals(a: 'QgsMesh3dAveragingMethod', b: 'QgsMesh3dAveragingMethod') -> bool: ...
    @typing.overload
    def equals(self, other: 'QgsMesh3dAveragingMethod') -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def createFromXml(elem: QtXml.QDomElement) -> 'QgsMesh3dAveragingMethod': ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def calculate(self, block3d: 'QgsMesh3dDataBlock', feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsMeshDataBlock': ...


class QgsMeshMultiLevelsAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startLevel: int, endLevel: int, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, verticalLevel: int, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshMultiLevelsAveragingMethod') -> None: ...

    def isSingleLevel(self) -> bool: ...
    def countedFromTop(self) -> bool: ...
    def endVerticalLevel(self) -> int: ...
    def startVerticalLevel(self) -> int: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshSigmaAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startFraction: float, endFraction: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshSigmaAveragingMethod') -> None: ...

    def endFraction(self) -> float: ...
    def startFraction(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshRelativeHeightAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startHeight: float, endHeight: float, countedFromTop: bool) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRelativeHeightAveragingMethod') -> None: ...

    def countedFromTop(self) -> bool: ...
    def endHeight(self) -> float: ...
    def startHeight(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshElevationAveragingMethod(QgsMesh3dAveragingMethod):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, startElevation: float, endElevation: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshElevationAveragingMethod') -> None: ...

    def endElevation(self) -> float: ...
    def startElevation(self) -> float: ...
    def clone(self) -> QgsMesh3dAveragingMethod: ...
    def equals(self, other: QgsMesh3dAveragingMethod) -> bool: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...


class QgsMeshEditingError(PyQt5.sip.wrapper):

    elementIndex = ... # type: int
    errorType = ... # type: Qgis.MeshEditingErrorType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, type: Qgis.MeshEditingErrorType, elementIndex: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditingError') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsMeshEditor(QtCore.QObject):

    def __init__(self, meshLayer: '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: 'QgsMeshAdvancedEditing') -> None: ...
    def changeCoordinates(self, verticesIndexes: typing.Iterable[int], newCoordinates: typing.Iterable[QgsPoint]) -> None: ...
    def changeXYValues(self, verticesIndexes: typing.Iterable[int], newValues: typing.Iterable[QgsPointXY]) -> None: ...
    def changeZValues(self, verticesIndexes: typing.Iterable[int], newValues: typing.Iterable[float]) -> None: ...
    def removeVerticesFillHoles(self, verticesToRemoveIndexes: typing.Iterable[int]) -> typing.List[int]: ...
    def removeVerticesWithoutFillHoles(self, verticesToRemoveIndexes: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def addPointsAsVertices(self, point: typing.Iterable[QgsPoint], tolerance: float) -> int: ...
    def splitFaces(self, faceIndexes: typing.Iterable[int]) -> int: ...
    def faceCanBeSplit(self, faceIndex: int) -> bool: ...
    def merge(self, vertexIndex1: int, vertexIndex2: int) -> None: ...
    def canBeMerged(self, vertexIndex1: int, vertexIndex2: int) -> bool: ...
    def flipEdge(self, vertexIndex1: int, vertexIndex2: int) -> None: ...
    def edgeCanBeFlipped(self, vertexIndex1: int, vertexIndex2: int) -> bool: ...
    def removeFaces(self, facesToRemove: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def addFace(self, vertexIndexes: typing.Iterable[int]) -> QgsMeshEditingError: ...
    def isFaceGeometricallyCompatible(self, face: typing.Iterable[int]) -> bool: ...
    def faceCanBeAdded(self, face: typing.Iterable[int]) -> bool: ...
    def fixError(self, error: QgsMeshEditingError) -> bool: ...
    def initializeWithErrorsFix(self) -> QgsMeshEditingError: ...
    def initialize(self) -> QgsMeshEditingError: ...
    def createZValueDatasetGroup(self) -> 'QgsMeshDatasetGroup': ...


class QgsMesh(PyQt5.sip.wrapper):

    class ElementType(int):
        Vertex = ... # type: QgsMesh.ElementType
        Edge = ... # type: QgsMesh.ElementType
        Face = ... # type: QgsMesh.ElementType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMesh') -> None: ...

    @staticmethod
    def compareFaces(face1: typing.Iterable[int], face2: typing.Iterable[int]) -> bool: ...
    def clear(self) -> None: ...
    def edge(self, index: int) -> typing.Tuple[int, int]: ...
    def face(self, index: int) -> typing.List[int]: ...
    def vertex(self, index: int) -> QgsPoint: ...
    def edgeCount(self) -> int: ...
    def faceCount(self) -> int: ...
    def vertexCount(self) -> int: ...
    def contains(self, type: 'QgsMesh.ElementType') -> bool: ...


class QgsMeshDataSourceInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataSourceInterface') -> None: ...

    def saveMeshFrame(self, mesh: QgsMesh) -> bool: ...
    def populateMesh(self, mesh: QgsMesh) -> None: ...
    def maximumVerticesCountPerFace(self) -> int: ...
    def edgeCount(self) -> int: ...
    def faceCount(self) -> int: ...
    def vertexCount(self) -> int: ...
    def contains(self, type: QgsMesh.ElementType) -> bool: ...


class QgsMeshDatasetSourceInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetSourceInterface') -> None: ...

    def datasetIndexInTimeInterval(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], groupIndex: int, time1: int, time2: int) -> typing.List['QgsMeshDatasetIndex']: ...
    def datasetIndexAtTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], groupIndex: int, time: int, method: 'QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod') -> 'QgsMeshDatasetIndex': ...
    @typing.overload
    def persistDatasetGroup(self, path: str, meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: str, outputDriver: str, meta: 'QgsMeshDatasetGroupMetadata', datasetValues: typing.Iterable['QgsMeshDataBlock'], datasetActive: typing.Iterable['QgsMeshDataBlock'], times: typing.Iterable[float]) -> bool: ...
    @typing.overload
    def persistDatasetGroup(self, outputFilePath: str, outputDriver: str, source: 'QgsMeshDatasetSourceInterface', datasetGroupIndex: int) -> bool: ...
    def areFacesActive(self, index: 'QgsMeshDatasetIndex', faceIndex: int, count: int) -> 'QgsMeshDataBlock': ...
    def isFaceActive(self, index: 'QgsMeshDatasetIndex', faceIndex: int) -> bool: ...
    def dataset3dValues(self, index: 'QgsMeshDatasetIndex', faceIndex: int, count: int) -> 'QgsMesh3dDataBlock': ...
    def datasetValues(self, index: 'QgsMeshDatasetIndex', valueIndex: int, count: int) -> 'QgsMeshDataBlock': ...
    def datasetValue(self, index: 'QgsMeshDatasetIndex', valueIndex: int) -> 'QgsMeshDatasetValue': ...
    def datasetMetadata(self, index: 'QgsMeshDatasetIndex') -> 'QgsMeshDatasetMetadata': ...
    @typing.overload
    def datasetGroupMetadata(self, groupIndex: int) -> 'QgsMeshDatasetGroupMetadata': ...
    @typing.overload
    def datasetGroupMetadata(self, index: 'QgsMeshDatasetIndex') -> 'QgsMeshDatasetGroupMetadata': ...
    @typing.overload
    def datasetCount(self, groupIndex: int) -> int: ...
    @typing.overload
    def datasetCount(self, index: 'QgsMeshDatasetIndex') -> int: ...
    def datasetGroupCount(self) -> int: ...
    def extraDatasets(self) -> typing.List[str]: ...
    def addDataset(self, uri: str) -> bool: ...


class QgsDataProvider(QtCore.QObject):

    class ReadFlag(int):
        FlagTrustDataSource = ... # type: QgsDataProvider.ReadFlag
        SkipFeatureCount = ... # type: QgsDataProvider.ReadFlag
        FlagLoadDefaultStyle = ... # type: QgsDataProvider.ReadFlag
        SkipGetExtent = ... # type: QgsDataProvider.ReadFlag
        SkipFullScan = ... # type: QgsDataProvider.ReadFlag
        ForceReadOnly = ... # type: QgsDataProvider.ReadFlag

    class ProviderProperty(int):
        EvaluateDefaultValues = ... # type: QgsDataProvider.ProviderProperty
        CustomData = ... # type: QgsDataProvider.ProviderProperty

    class DataCapability(int):
        NoDataCapabilities = ... # type: QgsDataProvider.DataCapability
        File = ... # type: QgsDataProvider.DataCapability
        Dir = ... # type: QgsDataProvider.DataCapability
        Database = ... # type: QgsDataProvider.DataCapability
        Net = ... # type: QgsDataProvider.DataCapability

    class DataCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> None: ...

        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.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __xor__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __ior__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __or__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __iand__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __and__(self, f: typing.Union['QgsDataProvider.DataCapabilities', 'QgsDataProvider.DataCapability']) -> 'QgsDataProvider.DataCapabilities': ...
        def __invert__(self) -> 'QgsDataProvider.DataCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class ProviderOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDataProvider.ProviderOptions') -> None: ...

    class ReadFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsDataProvider.ReadFlags', 'QgsDataProvider.ReadFlag']) -> None: ...

        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: 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]
    @staticmethod
    def sublayerSeparator() -> str: ...
    def writeLayerMetadata(self, metadata: 'QgsLayerMetadata') -> bool: ...
    def layerMetadata(self) -> 'QgsLayerMetadata': ...
    def setListening(self, isListening: bool) -> None: ...
    def providerProperty(self, property: 'QgsDataProvider.ProviderProperty', defaultValue: typing.Any = ...) -> typing.Any: ...
    def setProviderProperty(self, property: 'QgsDataProvider.ProviderProperty', value: typing.Any) -> None: ...
    def leaveUpdateMode(self) -> bool: ...
    def enterUpdateMode(self) -> bool: ...
    def invalidateConnections(self, connection: str) -> None: ...
    def error(self) -> QgsError: ...
    def dataTimestamp(self) -> QtCore.QDateTime: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def reloadData(self) -> None: ...
    def fileRasterFilters(self) -> str: ...
    def fileVectorFilters(self) -> str: ...
    def description(self) -> str: ...
    def name(self) -> str: ...
    def setSubLayerVisibility(self, name: str, vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[str]) -> None: ...
    def subLayerCount(self) -> int: ...
    def subLayerStyles(self) -> typing.List[str]: ...
    def subLayers(self) -> typing.List[str]: ...
    def subsetString(self) -> str: ...
    def supportsSubsetString(self) -> bool: ...
    def setSubsetString(self, subset: str, updateFeatureCount: bool = ...) -> bool: ...
    def updateExtents(self) -> None: ...
    def isValid(self) -> bool: ...
    def extent(self) -> QgsRectangle: ...
    def temporalCapabilities(self) -> QgsDataProviderTemporalCapabilities: ...
    def flags(self) -> Qgis.DataProviderFlags: ...
    def uri(self) -> QgsDataSourceUri: ...
    def setUri(self, uri: QgsDataSourceUri) -> None: ...
    def dataComment(self) -> str: ...
    def dataSourceUri(self, expandAuthConfig: bool = ...) -> str: ...
    def setDataSourceUri(self, uri: str) -> None: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...


class QgsMeshDataProvider(QgsDataProvider, QgsMeshDataSourceInterface, QgsMeshDatasetSourceInterface):

    def __init__(self, uri: str, providerOptions: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    datasetGroupsAdded: typing.ClassVar[QtCore.pyqtsignal]
    def close(self) -> None: ...
    def driverMetadata(self) -> 'QgsMeshDriverMetadata': ...
    def setTemporalUnit(self, unit: QgsUnitTypes.TemporalUnit) -> None: ...
    def temporalCapabilities(self) -> 'QgsMeshDataProviderTemporalCapabilities': ...


class QgsMeshDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    class MatchingTemporalDatasetMethod(int):
        FindClosestDatasetBeforeStartRangeTime = ... # type: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod
        FindClosestDatasetFromStartRangeTime = ... # type: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataProviderTemporalCapabilities') -> None: ...

    def firstTimeStepDuration(self, group: int) -> int: ...
    def clear(self) -> None: ...
    def datasetTime(self, index: 'QgsMeshDatasetIndex') -> int: ...
    def temporalUnit(self) -> QgsUnitTypes.TemporalUnit: ...
    def setTemporalUnit(self, temporalUnit: QgsUnitTypes.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: str, uri: str, isScalar: bool, dataType: 'QgsMeshDatasetGroupMetadata.DataType', minimum: float, maximum: float, maximumVerticalLevels: int, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], isTemporal: bool, extraOptions: typing.Dict[str, str]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroupMetadata') -> None: ...

    def referenceTime(self) -> QtCore.QDateTime: ...
    def maximumVerticalLevelsCount(self) -> int: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def dataType(self) -> 'QgsMeshDatasetGroupMetadata.DataType': ...
    def isTemporal(self) -> bool: ...
    def isScalar(self) -> bool: ...
    def isVector(self) -> bool: ...
    def extraOptions(self) -> typing.Dict[str, str]: ...
    def uri(self) -> str: ...
    def name(self) -> str: ...


class QgsMeshDatasetMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, time: float, isValid: bool, minimum: float, maximum: float, maximumVerticalLevels: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetMetadata') -> None: ...

    def maximumVerticalLevelsCount(self) -> int: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def isValid(self) -> bool: ...
    def time(self) -> float: ...


class QgsMeshDataset(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDataset') -> None: ...

    def valuesCount(self) -> int: ...
    def metadata(self) -> QgsMeshDatasetMetadata: ...
    def isActive(self, faceIndex: int) -> bool: ...
    def areFacesActive(self, faceIndex: int, count: int) -> QgsMeshDataBlock: ...
    def datasetValues(self, isScalar: bool, valueIndex: int, count: int) -> QgsMeshDataBlock: ...
    def datasetValue(self, valueIndex: int) -> QgsMeshDatasetValue: ...


class QgsMeshDatasetGroup(PyQt5.sip.wrapper):

    class Type(int):
        None_ = ... # type: QgsMeshDatasetGroup.Type
        Persistent = ... # type: QgsMeshDatasetGroup.Type
        Memory = ... # type: QgsMeshDatasetGroup.Type
        Virtual = ... # type: QgsMeshDatasetGroup.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, name: str, dataType: QgsMeshDatasetGroupMetadata.DataType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroup') -> None: ...

    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def description(self) -> str: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def datasetGroupNamesDependentOn(self) -> typing.List[str]: ...
    def setStatisticObsolete(self) -> None: ...
    def calculateStatistic(self) -> None: ...
    def checkValueCountPerDataset(self, count: int) -> bool: ...
    def setIsScalar(self, isScalar: bool) -> None: ...
    def isScalar(self) -> bool: ...
    def extraMetadata(self) -> typing.Dict[str, str]: ...
    def addExtraMetadata(self, key: str, value: str) -> None: ...
    def setDataType(self, dataType: QgsMeshDatasetGroupMetadata.DataType) -> None: ...
    def dataType(self) -> QgsMeshDatasetGroupMetadata.DataType: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def setMinimumMaximum(self, min: float, max: float) -> None: ...
    def maximum(self) -> float: ...
    def minimum(self) -> float: ...
    def type(self) -> 'QgsMeshDatasetGroup.Type': ...
    def dataset(self, index: int) -> QgsMeshDataset: ...
    def datasetCount(self) -> int: ...
    def datasetMetadata(self, datasetIndex: int) -> QgsMeshDatasetMetadata: ...
    def groupMetadata(self) -> QgsMeshDatasetGroupMetadata: ...
    def initialize(self) -> None: ...


class QgsMeshDatasetGroupTreeItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, defaultName: str, sourceName: str, isVector: bool, index: int) -> None: ...
    @typing.overload
    def __init__(self, itemElement: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDatasetGroupTreeItem') -> None: ...

    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def setPersistentDatasetGroup(self, uri: str) -> None: ...
    def setDatasetGroup(self, datasetGroup: QgsMeshDatasetGroup) -> None: ...
    def description(self) -> str: ...
    def groupIndexDependencies(self) -> typing.List[int]: ...
    def datasetGroupType(self) -> QgsMeshDatasetGroup.Type: ...
    def defaultName(self) -> str: ...
    def setIsEnabled(self, isEnabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def datasetGroupIndex(self) -> int: ...
    def isVector(self) -> bool: ...
    def providerName(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def row(self) -> int: ...
    def parentItem(self) -> 'QgsMeshDatasetGroupTreeItem': ...
    def enabledDatasetGroupIndexes(self) -> typing.List[int]: ...
    def totalChildCount(self) -> int: ...
    def childCount(self) -> int: ...
    def childFromDatasetGroupIndex(self, index: int) -> 'QgsMeshDatasetGroupTreeItem': ...
    def child(self, row: int) -> 'QgsMeshDatasetGroupTreeItem': ...
    def removeChild(self, item: 'QgsMeshDatasetGroupTreeItem') -> None: ...
    def appendChild(self, item: 'QgsMeshDatasetGroupTreeItem') -> None: ...
    def clone(self) -> 'QgsMeshDatasetGroupTreeItem': ...


class QgsMeshLayer(QgsMapLayer, QgsAbstractProfileSource):

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext' = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsMeshLayer.LayerOptions') -> None: ...

    def __init__(self, path: str = ..., baseName: str = ..., providerLib: str = ..., options: 'QgsMeshLayer.LayerOptions' = ...) -> None: ...

    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 meshEdgeCount(self) -> int: ...
    def meshFaceCount(self) -> int: ...
    def meshVertexCount(self) -> int: ...
    def contains(self, type: QgsMesh.ElementType) -> bool: ...
    def isModified(self) -> bool: ...
    def meshEditor(self) -> QgsMeshEditor: ...
    def reindex(self, transform: 'QgsCoordinateTransform', renumber: bool) -> bool: ...
    def stopFrameEditing(self, transform: 'QgsCoordinateTransform') -> None: ...
    def rollBackFrameEditing(self, transform: 'QgsCoordinateTransform', continueEditing: bool = ...) -> bool: ...
    def commitFrameEditing(self, transform: 'QgsCoordinateTransform', continueEditing: bool = ...) -> bool: ...
    @typing.overload
    def startFrameEditing(self, transform: 'QgsCoordinateTransform') -> bool: ...
    @typing.overload
    def startFrameEditing(self, transform: 'QgsCoordinateTransform', fixErrors: bool) -> typing.Tuple[bool, QgsMeshEditingError]: ...
    def datasetRelativeTimeInMilliseconds(self, index: QgsMeshDatasetIndex) -> int: ...
    def datasetRelativeTime(self, index: QgsMeshDatasetIndex) -> QgsInterval: ...
    def firstValidTimeStep(self) -> QgsInterval: ...
    def resetDatasetGroupTreeItem(self) -> None: ...
    def setDatasetGroupTreeRootItem(self, rootItem: QgsMeshDatasetGroupTreeItem) -> None: ...
    def datasetGroupTreeRootItem(self) -> QgsMeshDatasetGroupTreeItem: ...
    def selectFacesByExpression(self, expression: QgsExpression) -> typing.List[int]: ...
    def selectVerticesByExpression(self, expression: QgsExpression) -> typing.List[int]: ...
    def snapOnElement(self, elementType: QgsMesh.ElementType, point: QgsPointXY, searchRadius: float) -> QgsPointXY: ...
    def setTemporalMatchingMethod(self, matchingMethod: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod) -> None: ...
    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def staticVectorDatasetIndex(self) -> QgsMeshDatasetIndex: ...
    def staticScalarDatasetIndex(self) -> QgsMeshDatasetIndex: ...
    def activeVectorDatasetAtTime(self, timeRange: QgsDateTimeRange) -> QgsMeshDatasetIndex: ...
    def activeScalarDatasetAtTime(self, timeRange: QgsDateTimeRange) -> QgsMeshDatasetIndex: ...
    def datasetIndexInRelativeTimeInterval(self, startRelativeTime: QgsInterval, endRelativeTime: QgsInterval, datasetGroupIndex: int) -> typing.List[QgsMeshDatasetIndex]: ...
    def datasetIndexAtRelativeTime(self, relativeTime: QgsInterval, datasetGroupIndex: int) -> QgsMeshDatasetIndex: ...
    def datasetIndexAtTime(self, timeRange: QgsDateTimeRange, datasetGroupIndex: int) -> QgsMeshDatasetIndex: ...
    def dataset1dValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY, searchRadius: float) -> QgsMeshDatasetValue: ...
    def dataset3dValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY) -> QgsMesh3dDataBlock: ...
    def areFacesActive(self, index: QgsMeshDatasetIndex, faceIndex: int, count: int) -> QgsMeshDataBlock: ...
    def isFaceActive(self, index: QgsMeshDatasetIndex, faceIndex: int) -> bool: ...
    def dataset3dValues(self, index: QgsMeshDatasetIndex, faceIndex: int, count: int) -> QgsMesh3dDataBlock: ...
    def datasetValues(self, index: QgsMeshDatasetIndex, valueIndex: int, count: int) -> QgsMeshDataBlock: ...
    @typing.overload
    def datasetValue(self, index: QgsMeshDatasetIndex, valueIndex: int) -> QgsMeshDatasetValue: ...
    @typing.overload
    def datasetValue(self, index: QgsMeshDatasetIndex, point: QgsPointXY, searchRadius: float = ...) -> QgsMeshDatasetValue: ...
    def datasetMetadata(self, index: QgsMeshDatasetIndex) -> QgsMeshDatasetMetadata: ...
    def datasetCount(self, index: QgsMeshDatasetIndex) -> int: ...
    def datasetGroupMetadata(self, index: QgsMeshDatasetIndex) -> QgsMeshDatasetGroupMetadata: ...
    def enabledDatasetGroupsIndexes(self) -> typing.List[int]: ...
    def datasetGroupsIndexes(self) -> typing.List[int]: ...
    def extraDatasetGroupCount(self) -> int: ...
    def datasetGroupCount(self) -> int: ...
    def formatTime(self, hours: float) -> str: ...
    def setTimeSettings(self, settings: 'QgsMeshTimeSettings') -> None: ...
    def timeSettings(self) -> 'QgsMeshTimeSettings': ...
    def setRendererSettings(self, settings: 'QgsMeshRendererSettings') -> None: ...
    def rendererSettings(self) -> 'QgsMeshRendererSettings': ...
    def updateTriangularMesh(self, transform: 'QgsCoordinateTransform' = ...) -> None: ...
    def saveDataset(self, path: str, datasetGroupIndex: int, driver: str) -> bool: ...
    @typing.overload
    def addDatasets(self, path: str, defaultReferenceTime: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> bool: ...
    @typing.overload
    def addDatasets(self, datasetGroup: QgsMeshDatasetGroup) -> bool: ...
    def providerType(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def supportsEditing(self) -> bool: ...
    def isEditable(self) -> bool: ...
    def htmlMetadata(self) -> str: ...
    def subLayers(self) -> typing.List[str]: ...
    def reload(self) -> None: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def temporalProperties(self) -> QgsMapLayerTemporalProperties: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> 'QgsMeshLayer': ...
    def dataProvider(self) -> QgsMeshDataProvider: ...
    def __repr__(self) -> typing.Any: ...


class QgsMeshLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def profileFillSymbol(self) -> 'QgsFillSymbol': ...
    def setProfileLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def profileLineSymbol(self) -> 'QgsLineSymbol': ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def clone(self) -> 'QgsMeshLayerElevationProperties': ...
    def htmlSummary(self) -> str: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsMeshUtils(PyQt5.sip.simplewrapper):

    def exportRasterBlock(self, layer: QgsMeshLayer, datasetIndex: QgsMeshDatasetIndex, destinationCrs: 'QgsCoordinateReferenceSystem', transformContext: 'QgsCoordinateTransformContext', mapUnitsPerPixel: float, extent: QgsRectangle, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...


class QgsMeshLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setAlwaysLoadReferenceTimeFromSource(self, autoReloadFromProvider: bool) -> None: ...
    def alwaysLoadReferenceTimeFromSource(self) -> bool: ...
    def setIsValid(self, isValid: bool) -> None: ...
    def isValid(self) -> bool: ...
    def setMatchingMethod(self, matchingMethod: QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod) -> None: ...
    def matchingMethod(self) -> QgsMeshDataProviderTemporalCapabilities.MatchingTemporalDatasetMethod: ...
    def setReferenceTime(self, referenceTime: typing.Union[QtCore.QDateTime, datetime.datetime], capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def referenceTime(self) -> QtCore.QDateTime: ...
    def timeExtent(self) -> QgsDateTimeRange: ...
    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...


class QgsMeshRendererMeshSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererMeshSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def setLineWidthUnit(self, lineWidthUnit: QgsUnitTypes.RenderUnit) -> None: ...
    def lineWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setLineWidth(self, lineWidth: float) -> None: ...
    def lineWidth(self) -> float: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...


class QgsMeshRendererScalarSettings(PyQt5.sip.wrapper):

    class DataResamplingMethod(int):
        None_ = ... # type: QgsMeshRendererScalarSettings.DataResamplingMethod
        NeighbourAverage = ... # type: QgsMeshRendererScalarSettings.DataResamplingMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererScalarSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setEdgeStrokeWidthUnit(self, edgeStrokeWidthUnit: QgsUnitTypes.RenderUnit) -> None: ...
    def edgeStrokeWidthUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def maximumTailLengthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setParticlesCount(self, value: int) -> None: ...
    def particlesCount(self) -> int: ...
    def setMaximumTailLength(self, maximumTailLength: float) -> None: ...
    def maximumTailLength(self) -> float: ...


class QgsMeshRendererVectorSettings(PyQt5.sip.wrapper):

    class Symbology(int):
        Arrows = ... # type: QgsMeshRendererVectorSettings.Symbology
        Streamlines = ... # type: QgsMeshRendererVectorSettings.Symbology
        Traces = ... # type: QgsMeshRendererVectorSettings.Symbology

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererVectorSettings') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setTracesSettings(self, tracesSettings: QgsMeshRendererVectorTracesSettings) -> None: ...
    def tracesSettings(self) -> QgsMeshRendererVectorTracesSettings: ...
    def setStreamLinesSettings(self, streamLinesSettings: QgsMeshRendererVectorStreamlineSettings) -> None: ...
    def streamLinesSettings(self) -> QgsMeshRendererVectorStreamlineSettings: ...
    def setArrowsSettings(self, arrowSettings: QgsMeshRendererVectorArrowSettings) -> None: ...
    def arrowSettings(self) -> QgsMeshRendererVectorArrowSettings: ...
    def vectorStrokeColoring(self) -> 'QgsInterpolatedLineColor': ...
    def setColorRampShader(self, colorRampShader: 'QgsColorRampShader') -> None: ...
    def colorRampShader(self) -> 'QgsColorRampShader': ...
    def setColoringMethod(self, coloringMethod: 'QgsInterpolatedLineColor.ColoringMethod') -> None: ...
    def coloringMethod(self) -> 'QgsInterpolatedLineColor.ColoringMethod': ...
    def setSymbology(self, symbology: 'QgsMeshRendererVectorSettings.Symbology') -> None: ...
    def symbology(self) -> 'QgsMeshRendererVectorSettings.Symbology': ...
    def setUserGridCellHeight(self, height: int) -> None: ...
    def userGridCellHeight(self) -> int: ...
    def setUserGridCellWidth(self, width: int) -> None: ...
    def userGridCellWidth(self) -> int: ...
    def setOnUserDefinedGrid(self, enabled: bool) -> None: ...
    def isOnUserDefinedGrid(self) -> bool: ...
    def setFilterMax(self, filterMax: float) -> None: ...
    def filterMax(self) -> float: ...
    def setFilterMin(self, filterMin: float) -> None: ...
    def filterMin(self) -> float: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setLineWidth(self, lineWidth: float) -> None: ...
    def lineWidth(self) -> float: ...


class QgsMeshRendererSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshRendererSettings') -> None: ...

    def hasSettings(self, datasetGroupIndex: int) -> bool: ...
    def setActiveVectorDatasetGroup(self, activeVectorDatasetGroup: int) -> None: ...
    def activeVectorDatasetGroup(self) -> int: ...
    def setActiveScalarDatasetGroup(self, activeScalarDatasetGroup: int) -> None: ...
    def activeScalarDatasetGroup(self) -> int: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def setAveragingMethod(self, method: QgsMesh3dAveragingMethod) -> None: ...
    def averagingMethod(self) -> QgsMesh3dAveragingMethod: ...
    def setVectorSettings(self, groupIndex: int, settings: QgsMeshRendererVectorSettings) -> None: ...
    def vectorSettings(self, groupIndex: int) -> QgsMeshRendererVectorSettings: ...
    def setScalarSettings(self, groupIndex: int, settings: QgsMeshRendererScalarSettings) -> None: ...
    def scalarSettings(self, groupIndex: int) -> QgsMeshRendererScalarSettings: ...
    def setEdgeMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def edgeMeshSettings(self) -> QgsMeshRendererMeshSettings: ...
    def setTriangularMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def triangularMeshSettings(self) -> QgsMeshRendererMeshSettings: ...
    def setNativeMeshSettings(self, settings: QgsMeshRendererMeshSettings) -> None: ...
    def nativeMeshSettings(self) -> QgsMeshRendererMeshSettings: ...


class QgsMeshSpatialIndex(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, mesh: QgsMesh, feedback: typing.Optional[QgsFeedback] = ..., elementType: QgsMesh.ElementType = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsMeshSpatialIndex') -> None: ...

    def removeFace(self, faceIndex: int, mesh: QgsMesh) -> None: ...
    def addFace(self, faceIndex: int, mesh: QgsMesh) -> None: ...
    def elementType(self) -> QgsMesh.ElementType: ...
    def nearestNeighbor(self, point: QgsPointXY, neighbors: int) -> typing.List[int]: ...
    def intersects(self, rectangle: QgsRectangle) -> typing.List[int]: ...


class QgsMeshTimeSettings(PyQt5.sip.wrapper):

    class TimeUnit(int):
        seconds = ... # type: QgsMeshTimeSettings.TimeUnit
        minutes = ... # type: QgsMeshTimeSettings.TimeUnit
        hours = ... # type: QgsMeshTimeSettings.TimeUnit
        days = ... # type: QgsMeshTimeSettings.TimeUnit

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshTimeSettings') -> None: ...

    def setAbsoluteTimeFormat(self, absoluteTimeFormat: str) -> None: ...
    def absoluteTimeFormat(self) -> str: ...
    def setRelativeTimeFormat(self, relativeTimeFormat: str) -> None: ...
    def relativeTimeFormat(self) -> str: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...


class QgsMeshVectorTraceAnimationGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: QgsMeshLayer, rendererContext: QgsRenderContext) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsMeshVectorTraceAnimationGenerator') -> None: ...

    def setTailPersitence(self, p: float) -> None: ...
    def setMinimumTailLength(self, l: int) -> None: ...
    def setTailFactor(self, fct: float) -> None: ...
    def setParticlesSize(self, width: float) -> None: ...
    def setParticlesColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setParticlesLifeTime(self, particleLifeTime: float) -> None: ...
    def setMaxSpeedPixel(self, max: int) -> None: ...
    def setFPS(self, FPS: int) -> None: ...
    def imageRendered(self) -> QtGui.QImage: ...
    def seedRandomParticles(self, count: int) -> None: ...


class QgsMeshCalculator(PyQt5.sip.wrapper):

    class Result(int):
        Success = ... # type: QgsMeshCalculator.Result
        Canceled = ... # type: QgsMeshCalculator.Result
        CreateOutputError = ... # type: QgsMeshCalculator.Result
        InputLayerError = ... # type: QgsMeshCalculator.Result
        ParserError = ... # type: QgsMeshCalculator.Result
        InvalidDatasets = ... # type: QgsMeshCalculator.Result
        EvaluateError = ... # type: QgsMeshCalculator.Result
        MemoryError = ... # type: QgsMeshCalculator.Result

    @typing.overload
    def __init__(self, formulaString: str, outputFile: str, outputExtent: QgsRectangle, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputFile: str, outputMask: QgsGeometry, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputDriver: str, outputGroupName: str, outputFile: str, outputExtent: QgsRectangle, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputDriver: str, outputGroupName: str, outputFile: str, outputMask: QgsGeometry, startTime: float, endTime: float, layer: QgsMeshLayer) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputGroupName: str, outputExtent: QgsRectangle, destination: QgsMeshDatasetGroup.Type, layer: QgsMeshLayer, startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, formulaString: str, outputGroupName: str, outputMask: QgsGeometry, destination: QgsMeshDatasetGroup.Type, layer: QgsMeshLayer, startTime: float, endTime: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshCalculator') -> None: ...

    @staticmethod
    def expressionIsValid(formulaString: str, layer: QgsMeshLayer) -> typing.Tuple['QgsMeshCalculator.Result', 'QgsMeshDriverMetadata.MeshDriverCapability']: ...
    @staticmethod
    def expression_valid(formulaString: str, layer: QgsMeshLayer) -> 'QgsMeshCalculator.Result': ...
    def processCalculation(self, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsMeshCalculator.Result': ...


class QgsMeshAdvancedEditing(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshAdvancedEditing') -> None: ...

    def text(self) -> str: ...
    def isFinished(self) -> bool: ...
    def clear(self) -> None: ...
    def message(self) -> str: ...
    def setInputFaces(self, faceIndexes: typing.Iterable[int]) -> None: ...
    def setInputVertices(self, verticesIndexes: typing.Iterable[int]) -> None: ...


class QgsMeshEditRefineFaces(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditRefineFaces') -> None: ...

    def text(self) -> str: ...


class QgsMeshTransformVerticesByExpression(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshTransformVerticesByExpression') -> None: ...

    def transformedVertex(self, layer: QgsMeshLayer, vertexIndex: int) -> QgsPoint: ...
    def calculate(self, layer: QgsMeshLayer) -> bool: ...
    def setExpressions(self, expressionX: str, expressionY: str, expressionZ: str) -> None: ...
    def text(self) -> str: ...


class QgsMeshEditForceByLine(QgsMeshAdvancedEditing):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditForceByLine') -> None: ...

    def setInterpolateZValueOnMesh(self, interpolateZValueOnMesh: bool) -> None: ...
    def setDefaultZValue(self, defaultZValue: float) -> None: ...
    def setAddVertexOnIntersection(self, addVertex: bool) -> None: ...
    def setTolerance(self, tolerance: float) -> None: ...
    def setInputLine(self, pt1: QgsPoint, pt2: QgsPoint, tolerance: float, newVertexOnIntersection: bool) -> None: ...


class QgsMeshEditForceByPolylines(QgsMeshEditForceByLine):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshEditForceByPolylines') -> None: ...

    def addLinesFromGeometries(self, geometries: typing.Iterable[QgsGeometry]) -> None: ...
    def addLineFromGeometry(self, geom: QgsGeometry) -> None: ...
    def isFinished(self) -> bool: ...
    def text(self) -> str: ...


class QgsPlot(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPlot') -> None: ...

    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class QgsPlotAxis(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def setNumericFormat(self, format: 'QgsNumericFormat') -> None: ...
    def numericFormat(self) -> 'QgsNumericFormat': ...
    def setTextFormat(self, format: 'QgsTextFormat') -> None: ...
    def textFormat(self) -> 'QgsTextFormat': ...
    def setGridMinorSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def gridMinorSymbol(self) -> 'QgsLineSymbol': ...
    def setGridMajorSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def gridMajorSymbol(self) -> 'QgsLineSymbol': ...
    def setLabelInterval(self, interval: float) -> None: ...
    def labelInterval(self) -> float: ...
    def setGridIntervalMajor(self, interval: float) -> None: ...
    def gridIntervalMajor(self) -> float: ...
    def setGridIntervalMinor(self, interval: float) -> None: ...
    def gridIntervalMinor(self) -> float: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class Qgs2DPlot(QgsPlot):

    def __init__(self) -> None: ...

    def setMargins(self, margins: QgsMargins) -> None: ...
    def margins(self) -> QgsMargins: ...
    def setChartBorderSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def chartBorderSymbol(self) -> 'QgsFillSymbol': ...
    def setChartBackgroundSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def chartBackgroundSymbol(self) -> 'QgsFillSymbol': ...
    def yAxis(self) -> QgsPlotAxis: ...
    def xAxis(self) -> QgsPlotAxis: ...
    def setYMaximum(self, maximum: float) -> None: ...
    def yMaximum(self) -> float: ...
    def setXMaximum(self, maximum: float) -> None: ...
    def xMaximum(self) -> float: ...
    def setYMinimum(self, minimum: float) -> None: ...
    def yMinimum(self) -> float: ...
    def setXMinimum(self, minimum: float) -> None: ...
    def xMinimum(self) -> float: ...
    def calculateOptimisedIntervals(self, context: QgsRenderContext) -> None: ...
    def interiorPlotArea(self, context: QgsRenderContext) -> QtCore.QRectF: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def renderContent(self, context: QgsRenderContext, plotArea: QtCore.QRectF) -> None: ...
    def render(self, context: QgsRenderContext) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...


class QgsPointCloudAttribute(PyQt5.sip.wrapper):

    class DataType(int):
        Char = ... # type: QgsPointCloudAttribute.DataType
        UChar = ... # type: QgsPointCloudAttribute.DataType
        Short = ... # type: QgsPointCloudAttribute.DataType
        UShort = ... # type: QgsPointCloudAttribute.DataType
        Int32 = ... # type: QgsPointCloudAttribute.DataType
        UInt32 = ... # type: QgsPointCloudAttribute.DataType
        Int64 = ... # type: QgsPointCloudAttribute.DataType
        UInt64 = ... # type: QgsPointCloudAttribute.DataType
        Float = ... # type: QgsPointCloudAttribute.DataType
        Double = ... # type: QgsPointCloudAttribute.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, name: str, type: 'QgsPointCloudAttribute.DataType') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudAttribute') -> None: ...

    def __repr__(self) -> typing.Any: ...
    @staticmethod
    def isNumeric(type: 'QgsPointCloudAttribute.DataType') -> bool: ...
    def displayType(self) -> str: ...
    def variantType(self) -> QtCore.QVariant.Type: ...
    def type(self) -> 'QgsPointCloudAttribute.DataType': ...
    def size(self) -> int: ...
    def name(self) -> str: ...


class QgsPointCloudAttributeCollection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, attributes: typing.Iterable[QgsPointCloudAttribute]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudAttributeCollection') -> None: ...

    def toFields(self) -> QgsFields: ...
    def pointRecordSize(self) -> int: ...
    def indexOf(self, name: str) -> int: ...
    def find(self, attributeName: str) -> typing.Tuple[QgsPointCloudAttribute, int]: ...
    def at(self, index: int) -> QgsPointCloudAttribute: ...
    def count(self) -> int: ...
    def attributes(self) -> typing.List[QgsPointCloudAttribute]: ...
    def extend(self, otherCollection: 'QgsPointCloudAttributeCollection', matchingNames: typing.Iterable[str]) -> None: ...
    def push_back(self, attribute: QgsPointCloudAttribute) -> None: ...


class QgsPointCloudRenderer(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def saveCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def restoreCommonProperties(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def copyCommonProperties(self, destination: 'QgsPointCloudRenderer') -> None: ...
    def drawPoint(self, x: float, y: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def pointZ(context: 'QgsPointCloudRenderContext', ptr: str, i: int) -> float: ...
    @staticmethod
    def pointXY(context: 'QgsPointCloudRenderContext', ptr: str, i: int) -> typing.Tuple[float, float]: ...
    def setEyeDomeLightingDistanceUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def eyeDomeLightingDistanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setEyeDomeLightingDistance(self, distance: float) -> None: ...
    def eyeDomeLightingDistance(self) -> float: ...
    def setEyeDomeLightingStrength(self, strength: float) -> None: ...
    def eyeDomeLightingStrength(self) -> float: ...
    def setEyeDomeLightingEnabled(self, enabled: bool) -> None: ...
    def eyeDomeLightingEnabled(self) -> bool: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def setMaximumScreenErrorUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def maximumScreenErrorUnit(self) -> QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setPointSizeUnit(self, units: QgsUnitTypes.RenderUnit) -> None: ...
    def pointSize(self) -> float: ...
    def setPointSize(self, size: float) -> None: ...
    def checkLegendItem(self, key: str, state: bool = ...) -> None: ...
    def legendItemChecked(self, key: str) -> bool: ...
    def stopRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def startRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def load(element: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsPointCloudRenderer': ...
    def willRenderPoint(self, pointAttributes: typing.Dict[str, typing.Any]) -> bool: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> 'QgsPointCloudRenderer': ...
    def type(self) -> str: ...


class QgsPointCloudAttributeByRampRenderer(QgsPointCloudRenderer):

    def __init__(self) -> None: ...

    def setMaximum(self, maximum: float) -> None: ...
    def maximum(self) -> float: ...
    def setMinimum(self, minimum: float) -> None: ...
    def minimum(self) -> float: ...
    def setColorRampShader(self, shader: 'QgsColorRampShader') -> None: ...
    def colorRampShader(self) -> 'QgsColorRampShader': ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudAttributeModel(QtCore.QAbstractItemModel):

    class FieldRoles(int):
        AttributeNameRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeIndexRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeSizeRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        AttributeTypeRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        IsEmptyRole = ... # type: QgsPointCloudAttributeModel.FieldRoles
        IsNumericRole = ... # type: QgsPointCloudAttributeModel.FieldRoles

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    @staticmethod
    def iconForAttributeType(type: QgsPointCloudAttribute.DataType) -> QtGui.QIcon: ...
    @staticmethod
    def attributeToolTip(attribute: QgsPointCloudAttribute) -> str: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def columnCount(self, parent: QtCore.QModelIndex) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, child: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def allowEmptyAttributeName(self) -> bool: ...
    def indexFromName(self, name: str) -> QtCore.QModelIndex: ...
    def setAllowEmptyAttributeName(self, allowEmpty: bool) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def setAttributes(self, attributes: QgsPointCloudAttributeCollection) -> None: ...
    def layer(self) -> 'QgsPointCloudLayer': ...
    def setLayer(self, layer: 'QgsPointCloudLayer') -> None: ...


class QgsPointCloudAttributeProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        Char = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Short = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Int32 = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Float = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Double = ... # type: QgsPointCloudAttributeProxyModel.Filter
        Numeric = ... # type: QgsPointCloudAttributeProxyModel.Filter
        AllTypes = ... # type: QgsPointCloudAttributeProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> None: ...

        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: QgsPointCloudAttributeModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def filters(self) -> 'QgsPointCloudAttributeProxyModel.Filters': ...
    def setFilters(self, filters: typing.Union['QgsPointCloudAttributeProxyModel.Filters', 'QgsPointCloudAttributeProxyModel.Filter']) -> 'QgsPointCloudAttributeProxyModel': ...
    def sourceAttributeModel(self) -> QgsPointCloudAttributeModel: ...


class QgsPointCloudCategory(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: int, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudCategory') -> None: ...

    def __ne__(self, other: object): ...
    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setLabel(self, label: str) -> None: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setValue(self, value: int) -> None: ...
    def label(self) -> str: ...
    def color(self) -> QtGui.QColor: ...
    def value(self) -> int: ...
    def __eq__(self, other: object): ...


class QgsPointCloudClassifiedRenderer(QgsPointCloudRenderer):

    def __init__(self, attributeName: str = ..., categories: typing.Iterable[QgsPointCloudCategory] = ...) -> None: ...

    def addCategory(self, category: QgsPointCloudCategory) -> None: ...
    def setCategories(self, categories: typing.Iterable[QgsPointCloudCategory]) -> None: ...
    def categories(self) -> typing.List[QgsPointCloudCategory]: ...
    def setAttribute(self, attribute: str) -> None: ...
    def attribute(self) -> str: ...
    @staticmethod
    def defaultCategories() -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def checkLegendItem(self, key: str, state: bool = ...) -> None: ...
    def legendItemChecked(self, key: str) -> bool: ...
    def legendRuleKeys(self) -> typing.List[str]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usedAttributes(self, context: 'QgsPointCloudRenderContext') -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def willRenderPoint(self, pointAttributes: typing.Dict[str, typing.Any]) -> bool: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudExtentRenderer(QgsPointCloudRenderer):

    def __init__(self, symbol: typing.Optional['QgsFillSymbol'] = ...) -> None: ...

    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    @staticmethod
    def defaultFillSymbol() -> 'QgsFillSymbol': ...
    def renderExtent(self, extent: QgsGeometry, context: 'QgsPointCloudRenderContext') -> None: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def stopRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def startRender(self, context: 'QgsPointCloudRenderContext') -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: 'QgsPointCloudBlock', context: 'QgsPointCloudRenderContext') -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, count: int, attributes: QgsPointCloudAttributeCollection, data: typing.Union[QtCore.QByteArray, bytes, bytearray], scale: QgsVector3D, offset: QgsVector3D) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudBlock') -> None: ...

    def setPointCount(self, size: int) -> None: ...
    def offset(self) -> QgsVector3D: ...
    def scale(self) -> QgsVector3D: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def pointRecordSize(self) -> int: ...
    def pointCount(self) -> int: ...
    def data(self) -> str: ...


class QgsPointCloudLayer(QgsMapLayer, QgsAbstractProfileSource):

    class PointCloudStatisticsCalculationState(int):
        NotStarted = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState
        Calculating = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState
        Calculated = ... # type: QgsPointCloudLayer.PointCloudStatisticsCalculationState

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        skipIndexGeneration = ... # type: bool
        skipStatisticsCalculation = ... # type: bool
        transformContext = ... # type: 'QgsCoordinateTransformContext'

        @typing.overload
        def __init__(self, transformContext: 'QgsCoordinateTransformContext' = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointCloudLayer.LayerOptions') -> None: ...

    def __init__(self, uri: str = ..., baseName: str = ..., providerLib: str = ..., options: 'QgsPointCloudLayer.LayerOptions' = ...) -> None: ...

    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: str) -> bool: ...
    def setRenderer(self, renderer: QgsPointCloudRenderer) -> None: ...
    def renderer(self) -> QgsPointCloudRenderer: ...
    def pointCount(self) -> int: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def htmlMetadata(self) -> str: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def decodedSource(self, source: str, dataProvider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def setTransformContext(self, transformContext: 'QgsCoordinateTransformContext') -> None: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def dataProvider(self) -> 'QgsPointCloudDataProvider': ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def extent(self) -> QgsRectangle: ...
    def clone(self) -> 'QgsPointCloudLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsPointCloudLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setRespectLayerColors(self, enabled: bool) -> None: ...
    def respectLayerColors(self) -> bool: ...
    def pointSizeUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setPointSizeUnit(self, units: QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def maximumScreenErrorUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setMaximumScreenError(self, error: float) -> None: ...
    def maximumScreenError(self) -> float: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsPointCloudLayerElevationProperties': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsPointCloudDataProvider(QgsDataProvider):

    class PointCloudIndexGenerationState(int):
        NotIndexed = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState
        Indexing = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState
        Indexed = ... # type: QgsPointCloudDataProvider.PointCloudIndexGenerationState

    class Capability(int):
        NoCapabilities = ... # type: QgsPointCloudDataProvider.Capability
        ReadLayerMetadata = ... # type: QgsPointCloudDataProvider.Capability
        WriteLayerMetadata = ... # type: QgsPointCloudDataProvider.Capability
        CreateRenderer = ... # type: QgsPointCloudDataProvider.Capability

    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: 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: str, updateFeatureCount: bool = ...) -> bool: ...
    def subsetString(self) -> str: ...
    def supportsSubsetString(self) -> bool: ...
    def metadataStatistics(self) -> 'QgsPointCloudStatistics': ...
    def metadataClassStatistic(self, attribute: str, value: typing.Any, statistic: QgsStatisticalSummary.Statistic) -> typing.Any: ...
    def metadataClasses(self, attribute: str) -> typing.List[typing.Any]: ...
    def metadataStatistic(self, attribute: str, statistic: QgsStatisticalSummary.Statistic) -> typing.Any: ...
    def hasStatisticsMetadata(self) -> bool: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsPointCloudRenderer: ...
    def originalMetadata(self) -> typing.Dict[str, typing.Any]: ...
    def polygonBounds(self) -> QgsGeometry: ...
    def pointCount(self) -> int: ...
    def hasValidIndex(self) -> bool: ...
    def indexingState(self) -> 'QgsPointCloudDataProvider.PointCloudIndexGenerationState': ...
    def generateIndex(self) -> None: ...
    def loadIndex(self) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def capabilities(self) -> 'QgsPointCloudDataProvider.Capabilities': ...
    def identify(self, maxErrorInMapCoords: float, extentGeometry: QgsGeometry, extentZRange: QgsDoubleRange = ..., pointsLimit: int = ...) -> typing.List: ...


class QgsPointCloudRenderContext(PyQt5.sip.wrapper):

    def __init__(self, context: QgsRenderContext, scale: QgsVector3D, offset: QgsVector3D, zValueScale: float, zValueFixedOffset: float, feedback: typing.Optional[QgsFeedback] = ...) -> None: ...

    def feedback(self) -> QgsFeedback: ...
    def zValueFixedOffset(self) -> float: ...
    def zValueScale(self) -> float: ...
    def zOffset(self) -> int: ...
    def yOffset(self) -> int: ...
    def xOffset(self) -> int: ...
    def pointRecordSize(self) -> int: ...
    def setAttributes(self, attributes: QgsPointCloudAttributeCollection) -> None: ...
    def attributes(self) -> QgsPointCloudAttributeCollection: ...
    def incrementPointsRendered(self, count: int) -> None: ...
    def pointsRendered(self) -> int: ...
    def setOffset(self, offset: QgsVector3D) -> None: ...
    def offset(self) -> QgsVector3D: ...
    def setScale(self, scale: QgsVector3D) -> None: ...
    def scale(self) -> QgsVector3D: ...
    def renderContext(self) -> QgsRenderContext: ...


class QgsPointCloudRendererAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str, icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPointCloudRendererAbstractMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsPointCloudRendererMetadata(QgsPointCloudRendererAbstractMetadata):

    def __init__(self, a0: 'QgsPointCloudRendererMetadata') -> None: ...

    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...


class QgsPointCloudRendererRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def classificationAttributeCategories(layer: QgsPointCloudLayer) -> typing.List[QgsPointCloudCategory]: ...
    @staticmethod
    def defaultRenderer(layer: QgsPointCloudLayer) -> QgsPointCloudRenderer: ...
    def renderersList(self) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: str) -> QgsPointCloudRendererAbstractMetadata: ...
    def removeRenderer(self, rendererName: str) -> bool: ...
    def addRenderer(self, metadata: QgsPointCloudRendererAbstractMetadata) -> bool: ...


class QgsPointCloudRgbRenderer(QgsPointCloudRenderer):

    def __init__(self) -> None: ...

    def setBlueContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def blueContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setGreenContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def greenContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setRedContrastEnhancement(self, enhancement: 'QgsContrastEnhancement') -> None: ...
    def redContrastEnhancement(self) -> 'QgsContrastEnhancement': ...
    def setBlueAttribute(self, attribute: str) -> None: ...
    def blueAttribute(self) -> str: ...
    def setGreenAttribute(self, attribute: str) -> None: ...
    def greenAttribute(self) -> str: ...
    def setRedAttribute(self, attribute: str) -> None: ...
    def redAttribute(self) -> str: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsPointCloudRenderer: ...
    def usedAttributes(self, context: QgsPointCloudRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def renderBlock(self, block: QgsPointCloudBlock, context: QgsPointCloudRenderContext) -> None: ...
    def clone(self) -> QgsPointCloudRenderer: ...
    def type(self) -> str: ...


class QgsPointCloudLayerExporter(PyQt5.sip.wrapper):

    class ExportFormat(int):
        Memory = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Las = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Gpkg = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Shp = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Dxf = ... # type: QgsPointCloudLayerExporter.ExportFormat
        Csv = ... # type: QgsPointCloudLayerExporter.ExportFormat

    def __init__(self, layer: QgsPointCloudLayer) -> None: ...

    def lastError(self) -> str: ...
    def takeExportedLayer(self) -> QgsMapLayer: ...
    def doExport(self) -> None: ...
    def prepareExport(self) -> None: ...
    def setActionOnExistingFile(self, action: QgsVectorFileWriter.ActionOnExistingFile) -> None: ...
    def pointsLimit(self) -> int: ...
    def setPointsLimit(self, limit: int) -> None: ...
    def format(self) -> 'QgsPointCloudLayerExporter.ExportFormat': ...
    def setFormat(self, format: 'QgsPointCloudLayerExporter.ExportFormat') -> bool: ...
    def crs(self) -> 'QgsCoordinateReferenceSystem': ...
    def setCrs(self, crs: 'QgsCoordinateReferenceSystem', context: 'QgsCoordinateTransformContext' = ...) -> None: ...
    def attributes(self) -> typing.List[str]: ...
    def setAllAttributes(self) -> None: ...
    def setNoAttributes(self) -> None: ...
    def setAttributes(self, attributes: typing.Iterable[str]) -> None: ...
    def feedback(self) -> QgsFeedback: ...
    def setFeedback(self, feedback: QgsFeedback) -> None: ...
    def zRange(self) -> QgsDoubleRange: ...
    def setZRange(self, zRange: QgsDoubleRange) -> None: ...
    @typing.overload
    def setFilterGeometry(self, geometry: QgsAbstractGeometry) -> None: ...
    @typing.overload
    def setFilterGeometry(self, layer: QgsMapLayer, selectedFeaturesOnly: bool = ...) -> None: ...
    def filterExtent(self) -> QgsRectangle: ...
    def setFilterExtent(self, extent: QgsRectangle) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, filename: str) -> None: ...


class QgsPointCloudLayerExporterTask(QgsTask):

    def __init__(self, exporter: QgsPointCloudLayerExporter) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    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: str) -> float: ...
    def mean(self, attribute: str) -> float: ...
    def maximum(self, attribute: str) -> float: ...
    def minimum(self, attribute: str) -> float: ...
    def classesOf(self, attribute: str) -> typing.List[int]: ...
    def statisticsOf(self, attribute: str) -> QgsPointCloudAttributeStatistics: ...
    @typing.overload
    def clear(self) -> None: ...
    @typing.overload
    def clear(self, attributes: typing.Iterable[QgsPointCloudAttribute]) -> None: ...
    def sampledPointsCount(self) -> int: ...


class QgsCelestialBody(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCelestialBody') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def authority(self) -> str: ...
    def name(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsCoordinateReferenceSystem(PyQt5.sip.wrapper):

    class WktVariant(int):
        WKT1_GDAL = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT1_ESRI = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2015 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2015_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2018 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2018_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2019 = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT2_2019_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED_SIMPLIFIED = ... # type: QgsCoordinateReferenceSystem.WktVariant
        WKT_PREFERRED_GDAL = ... # type: QgsCoordinateReferenceSystem.WktVariant

    class IdentifierType(int):
        ShortString = ... # type: QgsCoordinateReferenceSystem.IdentifierType
        MediumString = ... # type: QgsCoordinateReferenceSystem.IdentifierType
        FullString = ... # type: QgsCoordinateReferenceSystem.IdentifierType

    class CrsType(int):
        InternalCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType
        PostgisCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType
        EpsgCrsId = ... # type: QgsCoordinateReferenceSystem.CrsType

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, definition: str) -> None: ...
    @typing.overload
    def __init__(self, id: int, type: 'QgsCoordinateReferenceSystem.CrsType' = ...) -> None: ...
    @typing.overload
    def __init__(self, srs: 'QgsCoordinateReferenceSystem') -> None: ...

    @staticmethod
    def invalidateCache() -> None: ...
    @staticmethod
    def pushRecentCoordinateReferenceSystem(crs: 'QgsCoordinateReferenceSystem') -> None: ...
    @staticmethod
    def recentCoordinateReferenceSystems() -> typing.List['QgsCoordinateReferenceSystem']: ...
    @staticmethod
    def recentProjections() -> typing.List[str]: ...
    def __repr__(self) -> typing.Any: ...
    def geographicCrsAuthId(self) -> str: ...
    def toGeographicCrs(self) -> 'QgsCoordinateReferenceSystem': ...
    def nativeFormat(self) -> Qgis.CrsDefinitionFormat: ...
    def setNativeFormat(self, format: Qgis.CrsDefinitionFormat) -> None: ...
    def saveAsUserCrs(self, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> int: ...
    @staticmethod
    def syncDatabase() -> int: ...
    def validationHint(self) -> str: ...
    def setValidationHint(self, html: str) -> None: ...
    def updateDefinition(self) -> None: ...
    def toOgcUri(self) -> str: ...
    def bounds(self) -> QgsRectangle: ...
    def mapUnits(self) -> QgsUnitTypes.DistanceUnit: ...
    def axisOrdering(self) -> typing.List[Qgis.CrsAxisDirection]: ...
    def hasAxisInverted(self) -> bool: ...
    def operation(self) -> 'QgsProjOperation': ...
    def factors(self, point: QgsPoint) -> 'QgsProjectionFactors': ...
    def coordinateEpoch(self) -> float: ...
    def setCoordinateEpoch(self, epoch: float) -> None: ...
    def celestialBodyName(self) -> str: ...
    def datumEnsemble(self) -> 'QgsDatumEnsemble': ...
    def isDynamic(self) -> bool: ...
    def isGeographic(self) -> bool: ...
    def toProj(self) -> str: ...
    def toProj4(self) -> str: ...
    def toWkt(self, variant: 'QgsCoordinateReferenceSystem.WktVariant' = ..., multiline: bool = ..., indentationWidth: int = ...) -> str: ...
    def ellipsoidAcronym(self) -> str: ...
    def projectionAcronym(self) -> str: ...
    def userFriendlyIdentifier(self, type: 'QgsCoordinateReferenceSystem.IdentifierType' = ...) -> str: ...
    def description(self) -> str: ...
    def authid(self) -> str: ...
    def postgisSrid(self) -> int: ...
    def srsid(self) -> int: ...
    def writeXml(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument) -> bool: ...
    def readXml(self, node: QtXml.QDomNode) -> bool: ...
    def __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: str) -> bool: ...
    def createFromString(self, definition: str) -> bool: ...
    def createFromProj(self, projString: str) -> bool: ...
    def createFromProj4(self, projString: str) -> bool: ...
    def createFromSrsId(self, srsId: int) -> bool: ...
    def createFromWkt(self, wkt: str) -> bool: ...
    def createFromSrid(self, srid: int) -> bool: ...
    def createFromOgcWmsCrs(self, crs: str) -> bool: ...
    def createFromId(self, id: int, type: 'QgsCoordinateReferenceSystem.CrsType' = ...) -> bool: ...
    @staticmethod
    def fromSrsId(srsId: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromWkt(wkt: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj(proj: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromProj4(proj4: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromEpsgId(epsg: int) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def fromOgcWmsCrs(ogcCrs: str) -> 'QgsCoordinateReferenceSystem': ...
    @staticmethod
    def validSrsIds() -> typing.Any: ...


class QgsCoordinateReferenceSystemRegistry(QtCore.QObject):

    class UserCrsDetails(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        id = ... # type: int
        name = ... # type: str
        proj = ... # type: str
        wkt = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsCoordinateReferenceSystemRegistry.UserCrsDetails') -> None: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    crsDefinitionsChanged: typing.ClassVar[QtCore.pyqtsignal]
    userCrsRemoved: typing.ClassVar[QtCore.pyqtsignal]
    userCrsAdded: typing.ClassVar[QtCore.pyqtsignal]
    userCrsChanged: typing.ClassVar[QtCore.pyqtsignal]
    def celestialBodies(self) -> typing.List[QgsCelestialBody]: ...
    def projOperations(self) -> typing.Dict[str, 'QgsProjOperation']: ...
    def removeUserCrs(self, id: int) -> bool: ...
    def updateUserCrs(self, id: int, crs: QgsCoordinateReferenceSystem, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> bool: ...
    def addUserCrs(self, crs: QgsCoordinateReferenceSystem, name: str, nativeFormat: Qgis.CrsDefinitionFormat = ...) -> int: ...
    def userCrsList(self) -> typing.List['QgsCoordinateReferenceSystemRegistry.UserCrsDetails']: ...


class QgsCoordinateReferenceSystemUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCoordinateReferenceSystemUtils') -> None: ...

    @staticmethod
    def axisDirectionToAbbreviatedString(axis: Qgis.CrsAxisDirection) -> str: ...
    @staticmethod
    def defaultCoordinateOrderForCrs(crs: QgsCoordinateReferenceSystem) -> Qgis.CoordinateOrder: ...


class QgsCoordinateTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, context: 'QgsCoordinateTransformContext', flags: typing.Union[Qgis.CoordinateTransformationFlags, Qgis.CoordinateTransformationFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, project: 'QgsProject', flags: typing.Union[Qgis.CoordinateTransformationFlags, Qgis.CoordinateTransformationFlag] = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, sourceDatumTransformId: int, destinationDatumTransformId: int) -> None: ...
    @typing.overload
    def __init__(self, o: 'QgsCoordinateTransform') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def scaleFactor(self, referenceExtent: QgsRectangle) -> float: ...
    @staticmethod
    def invalidateCache() -> None: ...
    def setDestinationDatumTransformId(self, datumId: int) -> None: ...
    def destinationDatumTransformId(self) -> int: ...
    def setSourceDatumTransformId(self, datumId: int) -> None: ...
    def sourceDatumTransformId(self) -> int: ...
    def fallbackOperationOccurred(self) -> bool: ...
    def disableFallbackOperationHandler(self, disabled: bool) -> None: ...
    def setBallparkTransformsAreAppropriate(self, appropriate: bool) -> None: ...
    def allowFallbackTransforms(self) -> bool: ...
    def setAllowFallbackTransforms(self, allowed: bool) -> None: ...
    def setCoordinateOperation(self, operation: str) -> None: ...
    def instantiatedCoordinateOperationDetails(self) -> 'QgsDatumTransform.TransformDetails': ...
    def coordinateOperation(self) -> str: ...
    def isShortCircuited(self) -> bool: ...
    def transformCoords(self, numPoint: int, direction: Qgis.TransformDirection = ...) -> typing.Tuple[float, float, float]: ...
    def transformPolygon(self, polygon: QtGui.QPolygonF, direction: Qgis.TransformDirection = ...) -> None: ...
    def transformInPlace(self, direction: Qgis.TransformDirection = ...) -> typing.Tuple[float, float, float]: ...
    def transformBoundingBox(self, rectangle: QgsRectangle, direction: Qgis.TransformDirection = ..., handle180Crossover: bool = ...) -> QgsRectangle: ...
    @typing.overload
    def transform(self, point: QgsPointXY, direction: Qgis.TransformDirection = ...) -> QgsPointXY: ...
    @typing.overload
    def transform(self, x: float, y: float, direction: Qgis.TransformDirection = ...) -> QgsPointXY: ...
    @typing.overload
    def transform(self, point: QgsVector3D, direction: Qgis.TransformDirection = ...) -> QgsVector3D: ...
    @typing.overload
    def transform(self, rectangle: QgsRectangle, direction: Qgis.TransformDirection = ...) -> QgsRectangle: ...
    def destinationCrs(self) -> QgsCoordinateReferenceSystem: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def context(self) -> 'QgsCoordinateTransformContext': ...
    def setContext(self, context: 'QgsCoordinateTransformContext') -> None: ...
    def setDestinationCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def setSourceCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def isValid(self) -> bool: ...
    @staticmethod
    def isTransformationPossible(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> bool: ...


class QgsCoordinateTransformContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, rhs: 'QgsCoordinateTransformContext') -> None: ...

    def __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: 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: str
        destinationCrsDescription = ... # type: str
        epsgCode = ... # type: int
        preferred = ... # type: bool
        remarks = ... # type: str
        scope = ... # type: str
        sourceCrsAuthId = ... # type: str
        sourceCrsDescription = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.TransformInfo') -> None: ...

    class GridDetails(PyQt5.sip.wrapper):

        directDownload = ... # type: bool
        fullName = ... # type: str
        isAvailable = ... # type: bool
        openLicense = ... # type: bool
        packageName = ... # type: str
        shortName = ... # type: str
        url = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.GridDetails') -> None: ...

    class SingleOperationDetails(PyQt5.sip.wrapper):

        areaOfUse = ... # type: str
        authority = ... # type: str
        code = ... # type: str
        remarks = ... # type: str
        scope = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.SingleOperationDetails') -> None: ...

    class TransformDetails(PyQt5.sip.wrapper):

        accuracy = ... # type: float
        areaOfUse = ... # type: str
        authority = ... # type: str
        bounds = ... # type: QgsRectangle
        code = ... # type: str
        grids = ... # type: typing.Iterable['QgsDatumTransform.GridDetails']
        isAvailable = ... # type: bool
        name = ... # type: str
        operationDetails = ... # type: typing.Iterable['QgsDatumTransform.SingleOperationDetails']
        proj = ... # type: str
        remarks = ... # type: str
        scope = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsDatumTransform.TransformDetails') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDatumTransform') -> None: ...

    @staticmethod
    def datumTransformInfo(datumTransformId: int) -> 'QgsDatumTransform.TransformInfo': ...
    @staticmethod
    def projStringToDatumTransformId(string: str) -> int: ...
    @staticmethod
    def datumTransformToProj(datumTransformId: int) -> str: ...
    @staticmethod
    def datumTransformations(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem) -> typing.List['QgsDatumTransform.TransformPair']: ...
    @staticmethod
    def operations(source: QgsCoordinateReferenceSystem, destination: QgsCoordinateReferenceSystem, includeSuperseded: bool = ...) -> typing.List['QgsDatumTransform.TransformDetails']: ...


class QgsEllipsoidUtils(PyQt5.sip.wrapper):

    class EllipsoidParameters(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        inverseFlattening = ... # type: float
        semiMajor = ... # type: float
        semiMinor = ... # type: float
        useCustomParameters = ... # type: bool
        valid = ... # type: bool

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEllipsoidUtils.EllipsoidParameters') -> None: ...

    class EllipsoidDefinition(PyQt5.sip.wrapper):

        acronym = ... # type: str
        celestialBodyName = ... # type: str
        description = ... # type: str
        parameters = ... # type: 'QgsEllipsoidUtils.EllipsoidParameters'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsEllipsoidUtils.EllipsoidDefinition') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsEllipsoidUtils') -> None: ...

    @staticmethod
    def celestialBodies() -> typing.List[QgsCelestialBody]: ...
    @staticmethod
    def acronyms() -> typing.List[str]: ...
    @staticmethod
    def definitions() -> typing.List['QgsEllipsoidUtils.EllipsoidDefinition']: ...
    @staticmethod
    def ellipsoidParameters(ellipsoid: str) -> 'QgsEllipsoidUtils.EllipsoidParameters': ...


class QgsProjOperation(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjOperation') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def details(self) -> str: ...
    def description(self) -> str: ...
    def id(self) -> str: ...
    def isValid(self) -> bool: ...


class QgsProjUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjUtils') -> None: ...

    @staticmethod
    def searchPaths() -> typing.List[str]: ...
    @staticmethod
    def ignfDatabaseDate() -> QtCore.QDate: ...
    @staticmethod
    def ignfDatabaseVersion() -> str: ...
    @staticmethod
    def esriDatabaseDate() -> QtCore.QDate: ...
    @staticmethod
    def esriDatabaseVersion() -> str: ...
    @staticmethod
    def epsgRegistryDate() -> QtCore.QDate: ...
    @staticmethod
    def epsgRegistryVersion() -> str: ...
    @staticmethod
    def projVersionMinor() -> int: ...
    @staticmethod
    def projVersionMajor() -> int: ...


class QgsProjectionFactors(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectionFactors') -> None: ...

    def __repr__(self) -> typing.Any: ...
    def dyDphi(self) -> float: ...
    def dyDlam(self) -> float: ...
    def dxDphi(self) -> float: ...
    def dxDlam(self) -> float: ...
    def tissotSemiminor(self) -> float: ...
    def tissotSemimajor(self) -> float: ...
    def meridianConvergence(self) -> float: ...
    def meridianParallelAngle(self) -> float: ...
    def angularDistortion(self) -> float: ...
    def arealScale(self) -> float: ...
    def parallelScale(self) -> float: ...
    def meridionalScale(self) -> float: ...
    def isValid(self) -> bool: ...


class QgsAbstractMetadataBase(PyQt5.sip.wrapper):

    class Address(PyQt5.sip.wrapper):

        address = ... # type: str
        administrativeArea = ... # type: str
        city = ... # type: str
        country = ... # type: str
        postalCode = ... # type: str
        type = ... # type: str

        @typing.overload
        def __init__(self, type: str = ..., address: str = ..., city: str = ..., administrativeArea: str = ..., postalCode: str = ..., country: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Address') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class Contact(PyQt5.sip.wrapper):

        addresses = ... # type: typing.Iterable['QgsAbstractMetadataBase.Address']
        email = ... # type: str
        fax = ... # type: str
        name = ... # type: str
        organization = ... # type: str
        position = ... # type: str
        role = ... # type: str
        voice = ... # type: str

        @typing.overload
        def __init__(self, name: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Contact') -> None: ...

        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...

    class Link(PyQt5.sip.wrapper):

        description = ... # type: str
        format = ... # type: str
        mimeType = ... # type: str
        name = ... # type: str
        size = ... # type: str
        type = ... # type: str
        url = ... # type: str

        @typing.overload
        def __init__(self, name: str = ..., type: str = ..., url: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBase.Link') -> None: ...

        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: 'QgsAbstractMetadataBase') -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def addLink(self, link: 'QgsAbstractMetadataBase.Link') -> None: ...
    def setLinks(self, links: typing.Iterable['QgsAbstractMetadataBase.Link']) -> None: ...
    def links(self) -> typing.List['QgsAbstractMetadataBase.Link']: ...
    def addContact(self, contact: 'QgsAbstractMetadataBase.Contact') -> None: ...
    def setContacts(self, contacts: typing.Iterable['QgsAbstractMetadataBase.Contact']) -> None: ...
    def contacts(self) -> typing.List['QgsAbstractMetadataBase.Contact']: ...
    def setCategories(self, categories: typing.Iterable[str]) -> None: ...
    def categories(self) -> typing.List[str]: ...
    def keywordVocabularies(self) -> typing.List[str]: ...
    def removeKeywords(self, vocabulary: str) -> bool: ...
    def addKeywords(self, vocabulary: str, keywords: typing.Iterable[str]) -> None: ...
    def setKeywords(self, keywords: typing.Dict[str, typing.Iterable[str]]) -> None: ...
    @typing.overload
    def keywords(self) -> typing.Dict[str, typing.List[str]]: ...
    @typing.overload
    def keywords(self, vocabulary: str) -> typing.List[str]: ...
    def addHistoryItem(self, text: str) -> None: ...
    def setHistory(self, history: typing.Iterable[str]) -> None: ...
    def history(self) -> typing.List[str]: ...
    def setAbstract(self, abstract: str) -> None: ...
    def abstract(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    def title(self) -> str: ...
    def setType(self, type: str) -> None: ...
    def type(self) -> str: ...
    def setLanguage(self, language: str) -> None: ...
    def language(self) -> str: ...
    def setParentIdentifier(self, parentIdentifier: str) -> None: ...
    def parentIdentifier(self) -> str: ...
    def setIdentifier(self, identifier: str) -> None: ...
    def identifier(self) -> str: ...
    def clone(self) -> 'QgsAbstractMetadataBase': ...


class QgsLayerMetadata(QgsAbstractMetadataBase):

    class SpatialExtent(PyQt5.sip.wrapper):

        bounds = ... # type: QgsBox3d
        extentCrs = ... # type: QgsCoordinateReferenceSystem

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsLayerMetadata.SpatialExtent') -> None: ...

        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: str
        type = ... # type: str

        @typing.overload
        def __init__(self, constraint: str = ..., type: 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: str) -> bool: ...
    def __eq__(self, other: object): ...
    def combine(self, other: QgsAbstractMetadataBase) -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def readFromLayer(self, layer: QgsMapLayer) -> None: ...
    def saveToLayer(self, layer: QgsMapLayer) -> None: ...
    def setCrs(self, crs: QgsCoordinateReferenceSystem) -> None: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def setExtent(self, extent: 'QgsLayerMetadata.Extent') -> None: ...
    def extent(self) -> 'QgsLayerMetadata.Extent': ...
    def setEncoding(self, encoding: str) -> None: ...
    def encoding(self) -> str: ...
    def setLicenses(self, licenses: typing.Iterable[str]) -> None: ...
    def licenses(self) -> typing.List[str]: ...
    def setRights(self, rights: typing.Iterable[str]) -> None: ...
    def rights(self) -> typing.List[str]: ...
    def setConstraints(self, constraints: typing.Iterable['QgsLayerMetadata.Constraint']) -> None: ...
    def addConstraint(self, constraint: 'QgsLayerMetadata.Constraint') -> None: ...
    def constraints(self) -> typing.List['QgsLayerMetadata.Constraint']: ...
    def setFees(self, fees: str) -> None: ...
    def fees(self) -> str: ...
    def clone(self) -> 'QgsLayerMetadata': ...


class QgsLayerMetadataFormatter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, metadata: QgsLayerMetadata) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataFormatter') -> None: ...

    def linksSectionHtml(self) -> str: ...
    def historySectionHtml(self) -> str: ...
    def identificationSectionHtml(self) -> str: ...
    def extentSectionHtml(self, showSpatialExtent: bool = ...) -> str: ...
    def contactsSectionHtml(self) -> str: ...
    def accessSectionHtml(self) -> str: ...


class QgsAbstractMetadataBaseValidator(PyQt5.sip.wrapper):

    class ValidationResult(PyQt5.sip.wrapper):

        note = ... # type: str
        section = ... # type: str

        @typing.overload
        def __init__(self, section: str, note: str, identifier: typing.Any = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractMetadataBaseValidator.ValidationResult') -> None: ...

        def _setIdentifier(self, identifier: typing.Any) -> None: ...
        def _identifier(self) -> typing.Any: ...
        @property
        def identifier(self) -> typing.Any: ...
        @identifier.setter
        def identifier(self, identifier: typing.Any) -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractMetadataBaseValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List['QgsAbstractMetadataBaseValidator.ValidationResult']]: ...


class QgsNativeMetadataBaseValidator(QgsAbstractMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeMetadataBaseValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsNativeMetadataValidator(QgsNativeMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeMetadataValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsNativeProjectMetadataValidator(QgsNativeMetadataBaseValidator):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNativeProjectMetadataValidator') -> None: ...

    def validate(self, metadata: QgsAbstractMetadataBase) -> typing.Tuple[bool, typing.List[QgsAbstractMetadataBaseValidator.ValidationResult]]: ...


class QgsMetadataUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMetadataUtils') -> None: ...

    @staticmethod
    def convertFromEsri(document: QtXml.QDomDocument) -> QgsLayerMetadata: ...


class QgsProjectMetadata(QgsAbstractMetadataBase):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectMetadata') -> None: ...

    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...
    def combine(self, other: QgsAbstractMetadataBase) -> None: ...
    def writeMetadataXml(self, metadataElement: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readMetadataXml(self, metadataElement: QtXml.QDomElement) -> bool: ...
    def setCreationDateTime(self, creationDateTime: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def creationDateTime(self) -> QtCore.QDateTime: ...
    def setAuthor(self, author: str) -> None: ...
    def author(self) -> str: ...
    def clone(self) -> 'QgsProjectMetadata': ...


class QgsMetadataSearchContext(PyQt5.sip.wrapper):

    transformContext = ... # type: QgsCoordinateTransformContext

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMetadataSearchContext') -> None: ...


class QgsLayerMetadataProviderResult(QgsLayerMetadata):

    @typing.overload
    def __init__(self, metadata: QgsLayerMetadata) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataProviderResult') -> None: ...

    def setStandardUri(self, standardUri: str) -> None: ...
    def standardUri(self) -> str: ...
    def setLayerType(self, layerType: QgsMapLayerType) -> None: ...
    def layerType(self) -> QgsMapLayerType: ...
    def setDataProviderName(self, dataProviderName: str) -> None: ...
    def dataProviderName(self) -> str: ...
    def setUri(self, Uri: str) -> None: ...
    def uri(self) -> str: ...
    def setAuthid(self, authid: str) -> None: ...
    def authid(self) -> str: ...
    def setGeometryType(self, geometryType: QgsWkbTypes.GeometryType) -> None: ...
    def geometryType(self) -> QgsWkbTypes.GeometryType: ...
    def setGeographicExtent(self, geographicExtent: QgsPolygon) -> None: ...
    def geographicExtent(self) -> QgsPolygon: ...


class QgsLayerMetadataSearchResults(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayerMetadataSearchResults') -> None: ...

    def addError(self, error: str) -> None: ...
    def errors(self) -> typing.List[str]: ...
    def addMetadata(self, metadata: QgsLayerMetadataProviderResult) -> None: ...
    def metadata(self) -> typing.List[QgsLayerMetadataProviderResult]: ...


class QgsAbstractLayerMetadataProvider(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractLayerMetadataProvider') -> None: ...

    def search(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> QgsLayerMetadataSearchResults: ...
    def id(self) -> str: ...


class QgsLayerMetadataProviderRegistry(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def search(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> QgsLayerMetadataSearchResults: ...
    def layerMetadataProviderFromId(self, id: str) -> QgsAbstractLayerMetadataProvider: ...
    def layerMetadataProviders(self) -> typing.List[QgsAbstractLayerMetadataProvider]: ...
    def unregisterLayerMetadataProvider(self, metadataProvider: QgsAbstractLayerMetadataProvider) -> None: ...
    def registerLayerMetadataProvider(self, metadataProvider: QgsAbstractLayerMetadataProvider) -> None: ...


class QgsBlockingNetworkRequest(QtCore.QObject):

    class ErrorCode(int):
        NoError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        NetworkError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        TimeoutError = ... # type: QgsBlockingNetworkRequest.ErrorCode
        ServerExceptionError = ... # type: QgsBlockingNetworkRequest.ErrorCode

    def __init__(self) -> None: ...

    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: str) -> None: ...
    def authCfg(self) -> str: ...
    def reply(self) -> 'QgsNetworkReplyContent': ...
    def errorMessage(self) -> str: ...
    def deleteResource(self, request: QtNetwork.QNetworkRequest, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def put(self, request: QtNetwork.QNetworkRequest, data: QtCore.QIODevice, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def put(self, request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    def head(self, request: QtNetwork.QNetworkRequest, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def post(self, request: QtNetwork.QNetworkRequest, data: QtCore.QIODevice, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    @typing.overload
    def post(self, request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...
    def get(self, request: QtNetwork.QNetworkRequest, forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsBlockingNetworkRequest.ErrorCode': ...


class QgsFileDownloader(QtCore.QObject):

    def __init__(self, url: QtCore.QUrl, outputFileName: str, authcfg: str = ..., delayStart: bool = ..., httpMethod: Qgis.HttpMethod = ..., data: typing.Union[QtCore.QByteArray, bytes, bytearray] = ...) -> None: ...

    def startDownload(self) -> None: ...
    def cancelDownload(self) -> None: ...
    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] = ...) -> QtNetwork.QNetworkReply: ...
    cookiesChanged: typing.ClassVar[QtCore.pyqtsignal]
    authBrowserAborted: typing.ClassVar[QtCore.pyqtsignal]
    requestCreated: 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]
    requestAboutToBeCreated: typing.ClassVar[QtCore.pyqtsignal]
    def preprocessRequest(self, req: QtNetwork.QNetworkRequest) -> None: ...
    def abortAuthBrowser(self) -> None: ...
    def requestAuthCloseBrowser(self) -> None: ...
    def requestAuthOpenBrowser(self, url: QtCore.QUrl) -> None: ...
    @staticmethod
    def removeReplyPreprocessor(id: str) -> None: ...
    @staticmethod
    def setReplyPreprocessor(a0: typing.Callable[..., None]) -> str: ...
    @staticmethod
    def removeRequestPreprocessor(id: str) -> None: ...
    @staticmethod
    def setRequestPreprocessor(a0: typing.Callable[..., None]) -> str: ...
    @staticmethod
    def blockingPost(request: QtNetwork.QNetworkRequest, data: typing.Union[QtCore.QByteArray, bytes, bytearray], authCfg: str = ..., forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsNetworkReplyContent': ...
    @staticmethod
    def blockingGet(request: QtNetwork.QNetworkRequest, authCfg: str = ..., forceRefresh: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsNetworkReplyContent': ...
    @staticmethod
    def setTimeout(time: int) -> None: ...
    @staticmethod
    def timeout() -> int: ...
    def useSystemProxy(self) -> bool: ...
    def setupDefaultProxyAndCache(self, connectionType: QtCore.Qt.ConnectionType = ...) -> None: ...
    @staticmethod
    def cacheLoadControlFromName(name: str) -> QtNetwork.QNetworkRequest.CacheLoadControl: ...
    @staticmethod
    def cacheLoadControlName(control: QtNetwork.QNetworkRequest.CacheLoadControl) -> str: ...
    def setFallbackProxyAndExcludes(self, proxy: QtNetwork.QNetworkProxy, excludes: typing.Iterable[str], noProxyURLs: typing.Iterable[str]) -> None: ...
    def noProxyList(self) -> typing.List[str]: ...
    def excludeList(self) -> typing.List[str]: ...
    def fallbackProxy(self) -> QtNetwork.QNetworkProxy: ...
    def proxyFactories(self) -> typing.List[QtNetwork.QNetworkProxyFactory]: ...
    def removeProxyFactory(self, factory: QtNetwork.QNetworkProxyFactory) -> None: ...
    def insertProxyFactory(self, factory: QtNetwork.QNetworkProxyFactory) -> None: ...
    @staticmethod
    def instance(connectionType: QtCore.Qt.ConnectionType = ...) -> 'QgsNetworkAccessManager': ...


class QgsNetworkContentFetcher(QtCore.QObject):

    def __init__(self) -> None: ...

    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) -> QtNetwork.QNetworkReply: ...
    @typing.overload
    def fetchContent(self, url: QtCore.QUrl, authcfg: str = ...) -> None: ...
    @typing.overload
    def fetchContent(self, request: QtNetwork.QNetworkRequest, authcfg: str = ...) -> None: ...


class QgsFetchedContent(QtCore.QObject):

    class ContentStatus(int):
        NotStarted = ... # type: QgsFetchedContent.ContentStatus
        Downloading = ... # type: QgsFetchedContent.ContentStatus
        Finished = ... # type: QgsFetchedContent.ContentStatus
        Failed = ... # type: QgsFetchedContent.ContentStatus

    def __init__(self, url: str, file: typing.Optional[QtCore.QTemporaryFile] = ..., status: 'QgsFetchedContent.ContentStatus' = ..., authConfig: str = ...) -> None: ...

    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: str) -> str: ...
    def fetch(self, url: str, fetchingMode: Qgis.ActionStart = ..., authConfig: str = ...) -> QgsFetchedContent: ...


class QgsNetworkContentFetcherTask(QgsTask):

    @typing.overload
    def __init__(self, url: QtCore.QUrl, authcfg: str = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, request: QtNetwork.QNetworkRequest, authcfg: str = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ..., description: str = ...) -> None: ...

    errorOccurred: typing.ClassVar[QtCore.pyqtsignal]
    fetched: typing.ClassVar[QtCore.pyqtsignal]
    def contentAsString(self) -> str: ...
    def contentDispositionFilename(self) -> str: ...
    def reply(self) -> QtNetwork.QNetworkReply: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsNetworkReplyContent(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, reply: QtNetwork.QNetworkReply) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNetworkReplyContent') -> None: ...

    @staticmethod
    def extractFileNameFromContentDispositionHeader(header: str) -> str: ...
    @staticmethod
    def extractFilenameFromContentDispositionHeader(reply: QtNetwork.QNetworkReply) -> str: ...
    def content(self) -> QtCore.QByteArray: ...
    def setContent(self, content: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> None: ...
    def request(self) -> QtNetwork.QNetworkRequest: ...
    def requestId(self) -> int: ...
    def rawHeader(self, headerName: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> QtCore.QByteArray: ...
    def rawHeaderList(self) -> typing.List[QtCore.QByteArray]: ...
    def hasRawHeader(self, headerName: typing.Union[QtCore.QByteArray, bytes, bytearray]) -> bool: ...
    def errorString(self) -> str: ...
    def error(self) -> QtNetwork.QNetworkReply.NetworkError: ...
    def attribute(self, code: QtNetwork.QNetworkRequest.Attribute) -> typing.Any: ...
    def clear(self) -> None: ...


class QgsNewsFeedModel(QtCore.QAbstractItemModel):

    class Role(int):
        Key = ... # type: QgsNewsFeedModel.Role
        Title = ... # type: QgsNewsFeedModel.Role
        Content = ... # type: QgsNewsFeedModel.Role
        ImageUrl = ... # type: QgsNewsFeedModel.Role
        Image = ... # type: QgsNewsFeedModel.Role
        Link = ... # type: QgsNewsFeedModel.Role
        Sticky = ... # type: QgsNewsFeedModel.Role

    def __init__(self, parser: 'QgsNewsFeedParser', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...


class QgsNewsFeedProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parser: 'QgsNewsFeedParser', parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...


class QgsNewsFeedParser(QtCore.QObject):

    class Entry(PyQt5.sip.wrapper):

        content = ... # type: str
        expiry = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        image = ... # type: QtGui.QPixmap
        imageUrl = ... # type: str
        key = ... # type: int
        link = ... # type: QtCore.QUrl
        sticky = ... # type: bool
        title = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsNewsFeedParser.Entry') -> None: ...

    def __init__(self, feedUrl: QtCore.QUrl, authcfg: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    imageFetched: typing.ClassVar[QtCore.pyqtsignal]
    entryDismissed: typing.ClassVar[QtCore.pyqtsignal]
    entryAdded: typing.ClassVar[QtCore.pyqtsignal]
    fetched: typing.ClassVar[QtCore.pyqtsignal]
    def fetch(self) -> None: ...
    @staticmethod
    def keyForFeed(baseUrl: str) -> str: ...
    def authcfg(self) -> str: ...
    def dismissAll(self) -> None: ...
    def dismissEntry(self, key: int) -> None: ...
    def entries(self) -> typing.List['QgsNewsFeedParser.Entry']: ...


class QgsHttpHeaders(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, headers: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, settings: 'QgsSettings', key: str = ...) -> None: ...
    @typing.overload
    def __init__(self, key: str) -> None: ...
    @typing.overload
    def __init__(self, element: QtXml.QDomElement) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHttpHeaders') -> None: ...

    def toSpacedString(self) -> str: ...
    def keys(self) -> typing.List[str]: ...
    def insert(self, key: str, value: typing.Any) -> None: ...
    def __getitem__(self, key: str) -> typing.Any: ...
    def sanitizeKey(self, key: str) -> str: ...
    def setFromDomElement(self, element: QtXml.QDomElement) -> None: ...
    def setFromMap(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def setFromUrlQuery(self, uri: QtCore.QUrlQuery) -> None: ...
    def setFromSettings(self, settings: 'QgsSettings', key: str = ...) -> None: ...
    def updateDomElement(self, el: QtXml.QDomElement) -> bool: ...
    def updateMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def updateUrlQuery(self, uri: QtCore.QUrlQuery) -> bool: ...
    def updateNetworkRequest(self, request: QtNetwork.QNetworkRequest) -> bool: ...
    def updateSettings(self, settings: 'QgsSettings', key: str = ...) -> bool: ...


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) -> 'QgsNumericFormat': ...
    def clone(self) -> 'QgsNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsBasicNumericFormat(QgsNumericFormat):

    class RoundingType(int):
        DecimalPlaces = ... # type: QgsBasicNumericFormat.RoundingType
        SignificantFigures = ... # type: QgsBasicNumericFormat.RoundingType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBasicNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setDecimalSeparator(self, character: str) -> None: ...
    def decimalSeparator(self) -> str: ...
    def setThousandsSeparator(self, character: str) -> None: ...
    def thousandsSeparator(self) -> str: ...
    def setRoundingType(self, type: 'QgsBasicNumericFormat.RoundingType') -> None: ...
    def roundingType(self) -> 'QgsBasicNumericFormat.RoundingType': ...
    def setShowTrailingZeros(self, show: bool) -> None: ...
    def showTrailingZeros(self) -> bool: ...
    def setShowPlusSign(self, show: bool) -> None: ...
    def showPlusSign(self) -> bool: ...
    def setShowThousandsSeparator(self, show: bool) -> None: ...
    def showThousandsSeparator(self) -> bool: ...
    def setNumberDecimalPlaces(self, places: int) -> None: ...
    def numberDecimalPlaces(self) -> int: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsBearingNumericFormat(QgsBasicNumericFormat):

    class FormatDirectionOption(int):
        UseRange0To180WithEWDirectionalSuffix = ... # type: QgsBearingNumericFormat.FormatDirectionOption
        UseRangeNegative180ToPositive180 = ... # type: QgsBearingNumericFormat.FormatDirectionOption
        UseRange0To360 = ... # type: QgsBearingNumericFormat.FormatDirectionOption

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBearingNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setDirectionFormat(self, format: 'QgsBearingNumericFormat.FormatDirectionOption') -> None: ...
    def directionFormat(self) -> 'QgsBearingNumericFormat.FormatDirectionOption': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> 'QgsBearingNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsGeographicCoordinateNumericFormat(QgsBasicNumericFormat):

    class AngleFormat(int):
        DegreesMinutesSeconds = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat
        DegreesMinutes = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat
        DecimalDegrees = ... # type: QgsGeographicCoordinateNumericFormat.AngleFormat

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsGeographicCoordinateNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def setShowDirectionalSuffix(self, show: bool) -> None: ...
    def showDirectionalSuffix(self) -> bool: ...
    def setShowDegreeLeadingZeros(self, show: bool) -> None: ...
    def showDegreeLeadingZeros(self) -> bool: ...
    def setShowLeadingZeros(self, show: bool) -> None: ...
    def showLeadingZeros(self) -> bool: ...
    def setAngleFormat(self, format: 'QgsGeographicCoordinateNumericFormat.AngleFormat') -> None: ...
    def angleFormat(self) -> 'QgsGeographicCoordinateNumericFormat.AngleFormat': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> 'QgsGeographicCoordinateNumericFormat': ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsCurrencyNumericFormat(QgsBasicNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCurrencyNumericFormat') -> None: ...

    def setSuffix(self, suffix: str) -> None: ...
    def suffix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def prefix(self) -> str: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFallbackNumericFormat(QgsNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFallbackNumericFormat') -> None: ...

    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFractionNumericFormat(QgsNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFractionNumericFormat') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def toUnicodeSubscript(input: str) -> str: ...
    @staticmethod
    def toUnicodeSuperscript(input: str) -> str: ...
    @staticmethod
    def doubleToVulgarFraction(value: float, tolerance: float = ...) -> typing.Tuple[bool, int, int, int]: ...
    def setThousandsSeparator(self, character: str) -> None: ...
    def thousandsSeparator(self) -> str: ...
    def setShowPlusSign(self, show: bool) -> None: ...
    def showPlusSign(self) -> bool: ...
    def setShowThousandsSeparator(self, show: bool) -> None: ...
    def showThousandsSeparator(self) -> bool: ...
    def setUseUnicodeSuperSubscript(self, enabled: bool) -> None: ...
    def useUnicodeSuperSubscript(self) -> bool: ...
    def setUseDedicatedUnicodeCharacters(self, enabled: bool) -> None: ...
    def useDedicatedUnicodeCharacters(self) -> bool: ...
    def suggestSampleValue(self) -> float: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: 'QgsNumericFormatContext') -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsNumericFormatContext(PyQt5.sip.wrapper):

    class Interpretation(int):
        Generic = ... # type: QgsNumericFormatContext.Interpretation
        Latitude = ... # type: QgsNumericFormatContext.Interpretation
        Longitude = ... # type: QgsNumericFormatContext.Interpretation

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericFormatContext') -> None: ...

    def setInterpretation(self, interpretation: 'QgsNumericFormatContext.Interpretation') -> None: ...
    def interpretation(self) -> 'QgsNumericFormatContext.Interpretation': ...
    def setExponential(self, character: str) -> None: ...
    def exponential(self) -> str: ...
    def setPositiveSign(self, character: str) -> None: ...
    def positiveSign(self) -> str: ...
    def setNegativeSign(self, character: str) -> None: ...
    def negativeSign(self) -> str: ...
    def setZeroDigit(self, character: str) -> None: ...
    def zeroDigit(self) -> str: ...
    def setPercent(self, character: str) -> None: ...
    def percent(self) -> str: ...
    def setDecimalSeparator(self, separator: str) -> None: ...
    def decimalSeparator(self) -> str: ...
    def setThousandsSeparator(self, separator: str) -> None: ...
    def thousandsSeparator(self) -> str: ...


class QgsNumericFormatRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericFormatRegistry') -> None: ...

    def sortKey(self, id: str) -> int: ...
    def visibleName(self, id: str) -> str: ...
    def fallbackFormat(self) -> QgsNumericFormat: ...
    def createFromXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def create(self, id: str, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def format(self, id: str) -> QgsNumericFormat: ...
    def removeFormat(self, id: str) -> None: ...
    def addFormat(self, format: QgsNumericFormat) -> None: ...
    def formats(self) -> typing.List[str]: ...


class QgsPercentageNumericFormat(QgsBasicNumericFormat):

    class InputValues(int):
        ValuesArePercentage = ... # type: QgsPercentageNumericFormat.InputValues
        ValuesAreFractions = ... # type: QgsPercentageNumericFormat.InputValues

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsPercentageNumericFormat') -> None: ...

    def setInputValues(self, format: 'QgsPercentageNumericFormat.InputValues') -> None: ...
    def inputValues(self) -> 'QgsPercentageNumericFormat.InputValues': ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: QgsNumericFormatContext) -> str: ...
    def suggestSampleValue(self) -> float: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsScientificNumericFormat(QgsBasicNumericFormat):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScientificNumericFormat') -> None: ...

    def setNumberDecimalPlaces(self, places: int) -> None: ...
    def configuration(self, context: QgsReadWriteContext) -> typing.Dict[str, typing.Any]: ...
    def create(self, configuration: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> QgsNumericFormat: ...
    def clone(self) -> QgsNumericFormat: ...
    def formatDouble(self, value: float, context: QgsNumericFormatContext) -> str: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsProcessingAlgorithm(PyQt5.sip.wrapper):

    class PropertyAvailability(int):
        NotAvailable = ... # type: QgsProcessingAlgorithm.PropertyAvailability
        Available = ... # type: QgsProcessingAlgorithm.PropertyAvailability

    class Flag(int):
        FlagHideFromToolbox = ... # type: QgsProcessingAlgorithm.Flag
        FlagHideFromModeler = ... # type: QgsProcessingAlgorithm.Flag
        FlagSupportsBatch = ... # type: QgsProcessingAlgorithm.Flag
        FlagCanCancel = ... # type: QgsProcessingAlgorithm.Flag
        FlagRequiresMatchingCrs = ... # type: QgsProcessingAlgorithm.Flag
        FlagNoThreading = ... # type: QgsProcessingAlgorithm.Flag
        FlagDisplayNameIsLiteral = ... # type: QgsProcessingAlgorithm.Flag
        FlagSupportsInPlaceEdits = ... # type: QgsProcessingAlgorithm.Flag
        FlagKnownIssues = ... # type: QgsProcessingAlgorithm.Flag
        FlagCustomException = ... # type: QgsProcessingAlgorithm.Flag
        FlagPruneModelBranchesBasedOnAlgorithmResults = ... # type: QgsProcessingAlgorithm.Flag
        FlagSkipGenericModelLogging = ... # type: QgsProcessingAlgorithm.Flag
        FlagNotAvailableInStandaloneTool = ... # type: QgsProcessingAlgorithm.Flag
        FlagRequiresProject = ... # type: QgsProcessingAlgorithm.Flag
        FlagDeprecated = ... # type: QgsProcessingAlgorithm.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingAlgorithm.Flags', 'QgsProcessingAlgorithm.Flag']) -> 'QgsProcessingAlgorithm.Flags': ...
        def __invert__(self) -> 'QgsProcessingAlgorithm.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VectorProperties(PyQt5.sip.wrapper):

        availability = ... # type: 'QgsProcessingAlgorithm.PropertyAvailability'
        crs = ... # type: QgsCoordinateReferenceSystem
        fields = ... # type: QgsFields
        wkbType = ... # type: QgsWkbTypes.Type

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingAlgorithm.VectorProperties') -> None: ...

    def __init__(self) -> None: ...

    def supportInPlaceEdit(self, layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def writeFeatureError(sink: QgsFeatureSink, parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidSinkError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidRasterError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    @staticmethod
    def invalidSourceError(parameters: typing.Dict[str, typing.Any], name: str) -> str: ...
    def parameterAsAnnotationLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsAnnotationLayer: ...
    def parameterAsPointCloudLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsPointCloudLayer: ...
    def parameterAsDateTime(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QtCore.QDateTime: ...
    def parameterAsDatabaseTableName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsSchema(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsConnectionName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsColor(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QtGui.QColor: ...
    def parameterAsLayoutItem(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', layout: QgsPrintLayout) -> QgsLayoutItem: ...
    def parameterAsLayout(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsPrintLayout: ...
    def parameterAsFields(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsRange(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[float]: ...
    def parameterAsFileList(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsLayerList(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[QgsMapLayer]: ...
    def parameterAsMatrix(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[typing.Any]: ...
    def parameterAsFile(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsGeometryCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsGeometry(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsPointCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsPoint(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    def parameterAsExtentCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsExtentGeometry(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    def parameterAsExtent(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    def parameterAsCrs(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsCoordinateReferenceSystem: ...
    def parameterAsVectorLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsVectorLayer: ...
    def parameterAsFileOutput(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsOutputLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsMeshLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsMeshLayer: ...
    def parameterAsRasterLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> 'QgsRasterLayer': ...
    def parameterAsLayer(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> QgsMapLayer: ...
    def parameterAsCompatibleSourceLayerPathAndLayerName(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> typing.Tuple[str, str]: ...
    def parameterAsCompatibleSourceLayerPath(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional['QgsProcessingFeedback'] = ...) -> str: ...
    def parameterAsSource(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> 'QgsProcessingFeatureSource': ...
    def parameterAsSink(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext', fields: QgsFields, geometryType: QgsWkbTypes.Type = ..., crs: QgsCoordinateReferenceSystem = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    def parameterAsBoolean(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> bool: ...
    def parameterAsBool(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> bool: ...
    def parameterAsEnumStrings(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[str]: ...
    def parameterAsEnumString(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsEnums(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsEnum(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> int: ...
    def parameterAsInts(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> typing.List[int]: ...
    def parameterAsInt(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> int: ...
    def parameterAsDouble(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> float: ...
    def parameterAsExpression(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def parameterAsString(self, parameters: typing.Dict[str, typing.Any], name: str, context: 'QgsProcessingContext') -> str: ...
    def postProcessAlgorithm(self, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def prepareAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> bool: ...
    def addOutput(self, outputDefinition: 'QgsProcessingOutputDefinition') -> bool: ...
    def removeParameter(self, name: str) -> None: ...
    def addParameter(self, parameterDefinition: 'QgsProcessingParameterDefinition', createOutput: bool = ...) -> bool: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def createInstance(self) -> 'QgsProcessingAlgorithm': ...
    def setProvider(self, provider: 'QgsProcessingProvider') -> None: ...
    def asMap(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Dict[str, typing.Any]: ...
    def asQgisProcessCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Tuple[str, bool]: ...
    def asPythonCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> str: ...
    def validateInputCrs(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> bool: ...
    def createExpressionContext(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', source: typing.Optional['QgsProcessingFeatureSource'] = ...) -> QgsExpressionContext: ...
    def createCustomParametersWidget(self, parent: typing.Optional[QtWidgets.QWidget] = ...) -> QtWidgets.QWidget: ...
    def postProcess(self, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def runPrepared(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def prepare(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> bool: ...
    def run(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback', configuration: typing.Dict[str, typing.Any] = ..., catchExceptions: bool = ...) -> typing.Tuple[typing.Dict[str, typing.Any], bool]: ...
    def sinkProperties(self, sink: str, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[str, 'QgsProcessingAlgorithm.VectorProperties']) -> 'QgsProcessingAlgorithm.VectorProperties': ...
    def hasHtmlOutputs(self) -> bool: ...
    def outputDefinition(self, name: str) -> 'QgsProcessingOutputDefinition': ...
    def outputDefinitions(self) -> typing.List['QgsProcessingOutputDefinition']: ...
    def destinationParameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def countVisibleParameters(self) -> int: ...
    def parameterDefinition(self, name: str) -> 'QgsProcessingParameterDefinition': ...
    def parameterDefinitions(self) -> typing.List['QgsProcessingParameterDefinition']: ...
    def provider(self) -> 'QgsProcessingProvider': ...
    def preprocessParameters(self, parameters: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]: ...
    def checkParameterValues(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> typing.Tuple[bool, str]: ...
    def canExecute(self) -> typing.Tuple[bool, str]: ...
    def flags(self) -> 'QgsProcessingAlgorithm.Flags': ...
    def groupId(self) -> str: ...
    def group(self) -> str: ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def helpUrl(self) -> str: ...
    def helpString(self) -> str: ...
    def shortHelpString(self) -> str: ...
    def tags(self) -> typing.List[str]: ...
    def shortDescription(self) -> str: ...
    def displayName(self) -> str: ...
    def id(self) -> str: ...
    def name(self) -> str: ...
    def create(self, configuration: typing.Dict[str, typing.Any] = ...) -> 'QgsProcessingAlgorithm': ...


class QgsProcessingModelAlgorithm(QgsProcessingAlgorithm):

    class VariableDefinition(PyQt5.sip.wrapper):

        description = ... # type: str
        source = ... # type: 'QgsProcessingModelChildParameterSource'
        value = ... # type: typing.Any

        @typing.overload
        def __init__(self, value: typing.Any = ..., source: 'QgsProcessingModelChildParameterSource' = ..., description: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingModelAlgorithm.VariableDefinition') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self, name: str = ..., group: str = ..., groupId: str = ...) -> None: ...

    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def createInstance(self) -> QgsProcessingAlgorithm: ...
    @staticmethod
    def safeName(name: str, capitalize: bool = ...) -> str: ...
    def modelParameterFromChildIdAndOutputName(self, childId: str, childOutputName: str) -> 'QgsProcessingParameterDefinition': ...
    def setDesignerParameterValues(self, values: typing.Dict[str, typing.Any]) -> None: ...
    def designerParameterValues(self) -> typing.Dict[str, typing.Any]: ...
    def setVariables(self, variables: typing.Dict[str, typing.Any]) -> None: ...
    def variables(self) -> typing.Dict[str, typing.Any]: ...
    def createExpressionContextScopeForChildAlgorithm(self, childId: str, context: 'QgsProcessingContext', modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> QgsExpressionContextScope: ...
    def variablesForChildAlgorithm(self, childId: str, context: 'QgsProcessingContext', modelParameters: typing.Dict[str, typing.Any] = ..., results: typing.Dict[str, typing.Any] = ...) -> typing.Dict[str, 'QgsProcessingModelAlgorithm.VariableDefinition']: ...
    def availableSourcesForChild(self, childId: str, parameterTypes: typing.Iterable[str] = ..., outputTypes: typing.Iterable[str] = ..., dataTypes: typing.Iterable[int] = ...) -> typing.List['QgsProcessingModelChildParameterSource']: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', indentSize: int) -> typing.List[str]: ...
    def modelNameMatchesFilePath(self) -> bool: ...
    def setSourceFilePath(self, path: str) -> None: ...
    def sourceFilePath(self) -> str: ...
    def setHelpContent(self, contents: typing.Dict[str, typing.Any]) -> None: ...
    def helpContent(self) -> typing.Dict[str, typing.Any]: ...
    def loadVariant(self, variant: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def fromFile(self, path: str) -> bool: ...
    def toFile(self, path: str) -> bool: ...
    def removeGroupBox(self, uuid: str) -> None: ...
    def groupBoxes(self) -> typing.List['QgsProcessingModelGroupBox']: ...
    def addGroupBox(self, groupBox: 'QgsProcessingModelGroupBox') -> None: ...
    def updateDestinationParameters(self) -> None: ...
    def setParameterOrder(self, order: typing.Iterable[str]) -> None: ...
    def orderedParameters(self) -> typing.List['QgsProcessingModelParameter']: ...
    def parameterComponent(self, name: str) -> 'QgsProcessingModelParameter': ...
    def setParameterComponent(self, component: 'QgsProcessingModelParameter') -> None: ...
    def setParameterComponents(self, parameterComponents: typing.Dict[str, 'QgsProcessingModelParameter']) -> None: ...
    def parameterComponents(self) -> typing.Dict[str, 'QgsProcessingModelParameter']: ...
    def otherParametersDependOnParameter(self, name: str) -> bool: ...
    def childAlgorithmsDependOnParameter(self, name: str) -> bool: ...
    def changeParameterName(self, oldName: str, newName: str) -> None: ...
    def removeModelParameter(self, name: str) -> None: ...
    def updateModelParameter(self, definition: 'QgsProcessingParameterDefinition') -> None: ...
    def addModelParameter(self, definition: 'QgsProcessingParameterDefinition', component: 'QgsProcessingModelParameter') -> None: ...
    def validateChildAlgorithm(self, childId: str) -> typing.Tuple[bool, typing.List[str]]: ...
    def availableDependenciesForChildAlgorithm(self, childId: str) -> typing.List['QgsProcessingModelChildDependency']: ...
    def dependsOnChildAlgorithms(self, childId: str) -> typing.Set[str]: ...
    def dependentChildAlgorithms(self, childId: str, conditionalBranch: str = ...) -> typing.Set[str]: ...
    def activateChildAlgorithm(self, id: str) -> bool: ...
    def deactivateChildAlgorithm(self, id: str) -> None: ...
    def removeChildAlgorithm(self, id: str) -> bool: ...
    def childAlgorithm(self, id: str) -> 'QgsProcessingModelChildAlgorithm': ...
    def addChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> str: ...
    def setChildAlgorithm(self, algorithm: 'QgsProcessingModelChildAlgorithm') -> None: ...
    def setChildAlgorithms(self, childAlgorithms: typing.Dict[str, 'QgsProcessingModelChildAlgorithm']) -> None: ...
    def childAlgorithms(self) -> typing.Dict[str, 'QgsProcessingModelChildAlgorithm']: ...
    def validate(self) -> typing.Tuple[bool, typing.List[str]]: ...
    def setGroup(self, group: str) -> None: ...
    def setName(self, name: str) -> None: ...
    def createExpressionContext(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', source: typing.Optional['QgsProcessingFeatureSource'] = ...) -> QgsExpressionContext: ...
    def asPythonCommand(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> str: ...
    def canExecute(self) -> typing.Tuple[bool, str]: ...
    def helpUrl(self) -> str: ...
    def shortDescription(self) -> str: ...
    def shortHelpString(self) -> str: ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def groupId(self) -> str: ...
    def group(self) -> str: ...
    def displayName(self) -> str: ...
    def name(self) -> str: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...


class QgsProcessingModelComponent(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProcessingModelComponent') -> None: ...

    def copyNonDefinitionProperties(self, other: 'QgsProcessingModelComponent') -> None: ...
    def restoreCommonProperties(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def saveCommonProperties(self, map: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsProcessingModelComponent': ...
    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> 'QgsProcessingModelComment': ...
    def setLinksCollapsed(self, edge: QtCore.Qt.Edge, collapsed: bool) -> None: ...
    def linksCollapsed(self, edge: QtCore.Qt.Edge) -> bool: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def setPosition(self, position: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> None: ...
    def position(self) -> QtCore.QPointF: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...


class QgsProcessingModelChildAlgorithm(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, algorithmId: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsProcessingModelChildAlgorithm') -> None: ...

    def setComment(self, comment: 'QgsProcessingModelComment') -> None: ...
    def comment(self) -> 'QgsProcessingModelComment': ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', extraParameters: typing.Dict[str, str], currentIndent: int, indentSize: int, friendlyChildNames: typing.Dict[str, str], friendlyOutputNames: typing.Dict[str, str]) -> typing.List[str]: ...
    def loadVariant(self, child: typing.Any) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def removeModelOutput(self, name: str) -> bool: ...
    def setModelOutputs(self, outputs: typing.Dict[str, 'QgsProcessingModelOutput']) -> None: ...
    def modelOutput(self, name: str) -> 'QgsProcessingModelOutput': ...
    def modelOutputs(self) -> typing.Dict[str, 'QgsProcessingModelOutput']: ...
    def setDependencies(self, dependencies: typing.Iterable['QgsProcessingModelChildDependency']) -> None: ...
    def dependencies(self) -> typing.List['QgsProcessingModelChildDependency']: ...
    def setActive(self, active: bool) -> None: ...
    def isActive(self) -> bool: ...
    def addParameterSources(self, name: str, source: typing.Iterable['QgsProcessingModelChildParameterSource']) -> None: ...
    def setParameterSources(self, sources: typing.Any) -> None: ...
    def parameterSources(self) -> typing.Any: ...
    def algorithm(self) -> QgsProcessingAlgorithm: ...
    def setConfiguration(self, configuration: typing.Dict[str, typing.Any]) -> None: ...
    def configuration(self) -> typing.Dict[str, typing.Any]: ...
    def reattach(self) -> bool: ...
    def setAlgorithmId(self, algorithmId: str) -> bool: ...
    def algorithmId(self) -> str: ...
    def generateChildId(self, model: QgsProcessingModelAlgorithm) -> None: ...
    def setChildId(self, id: str) -> None: ...
    def childId(self) -> str: ...
    def copyNonDefinitionPropertiesFromModel(self, model: QgsProcessingModelAlgorithm) -> None: ...
    def clone(self) -> 'QgsProcessingModelChildAlgorithm': ...


class QgsProcessingModelChildDependency(PyQt5.sip.wrapper):

    childId = ... # type: str
    conditionalBranch = ... # type: str

    @typing.overload
    def __init__(self, childId: str = ..., conditionalBranch: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelChildDependency') -> None: ...

    def __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):

    class Source(int):
        ModelParameter = ... # type: QgsProcessingModelChildParameterSource.Source
        ChildOutput = ... # type: QgsProcessingModelChildParameterSource.Source
        StaticValue = ... # type: QgsProcessingModelChildParameterSource.Source
        Expression = ... # type: QgsProcessingModelChildParameterSource.Source
        ExpressionText = ... # type: QgsProcessingModelChildParameterSource.Source
        ModelOutput = ... # type: QgsProcessingModelChildParameterSource.Source

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelChildParameterSource') -> None: ...

    def friendlyIdentifier(self, model: QgsProcessingModelAlgorithm) -> str: ...
    def asPythonComment(self, definition: 'QgsProcessingParameterDefinition') -> str: ...
    def asPythonCode(self, outputType: 'QgsProcessing.PythonOutputType', definition: 'QgsProcessingParameterDefinition', friendlyChildNames: typing.Dict[str, str]) -> str: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setExpressionText(self, text: str) -> None: ...
    def expressionText(self) -> str: ...
    def setExpression(self, expression: str) -> None: ...
    def expression(self) -> str: ...
    def setOutputName(self, name: str) -> None: ...
    def outputName(self) -> str: ...
    def setOutputChildId(self, id: str) -> None: ...
    def outputChildId(self) -> str: ...
    def setParameterName(self, name: str) -> None: ...
    def parameterName(self) -> str: ...
    def setStaticValue(self, value: typing.Any) -> None: ...
    def staticValue(self) -> typing.Any: ...
    def setSource(self, source: 'QgsProcessingModelChildParameterSource.Source') -> None: ...
    def source(self) -> 'QgsProcessingModelChildParameterSource.Source': ...
    @staticmethod
    def fromExpressionText(text: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromExpression(expression: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromChildOutput(childId: str, outputName: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromModelParameter(parameterName: str) -> 'QgsProcessingModelChildParameterSource': ...
    @staticmethod
    def fromStaticValue(value: typing.Any) -> 'QgsProcessingModelChildParameterSource': ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsProcessingModelComment(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelComment') -> None: ...

    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsProcessingModelComment': ...


class QgsProcessingModelGroupBox(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelGroupBox') -> None: ...

    def uuid(self) -> str: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any], ignoreUuid: bool = ...) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def clone(self) -> 'QgsProcessingModelGroupBox': ...


class QgsProcessingModelOutput(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, name: str = ..., description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelOutput') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> QgsProcessingModelComment: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setChildOutputName(self, name: str) -> None: ...
    def childOutputName(self) -> str: ...
    def setChildId(self, id: str) -> None: ...
    def childId(self) -> str: ...
    def setMandatory(self, mandatory: bool) -> None: ...
    def isMandatory(self) -> bool: ...
    def setDefaultValue(self, value: typing.Any) -> None: ...
    def defaultValue(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def clone(self) -> 'QgsProcessingModelOutput': ...


class QgsProcessingModelParameter(QgsProcessingModelComponent):

    @typing.overload
    def __init__(self, parameterName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingModelParameter') -> None: ...

    def setComment(self, comment: QgsProcessingModelComment) -> None: ...
    def comment(self) -> QgsProcessingModelComment: ...
    def loadVariant(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariant(self) -> typing.Any: ...
    def setParameterName(self, name: str) -> None: ...
    def parameterName(self) -> str: ...
    def clone(self) -> 'QgsProcessingModelParameter': ...


class QgsProcessing(PyQt5.sip.wrapper):

    class PythonOutputType(int):
        PythonQgsProcessingAlgorithmSubclass = ... # type: QgsProcessing.PythonOutputType

    class SourceType(int):
        TypeMapLayer = ... # type: QgsProcessing.SourceType
        TypeVectorAnyGeometry = ... # type: QgsProcessing.SourceType
        TypeVectorPoint = ... # type: QgsProcessing.SourceType
        TypeVectorLine = ... # type: QgsProcessing.SourceType
        TypeVectorPolygon = ... # type: QgsProcessing.SourceType
        TypeRaster = ... # type: QgsProcessing.SourceType
        TypeFile = ... # type: QgsProcessing.SourceType
        TypeVector = ... # type: QgsProcessing.SourceType
        TypeMesh = ... # type: QgsProcessing.SourceType
        TypePlugin = ... # type: QgsProcessing.SourceType
        TypePointCloud = ... # type: QgsProcessing.SourceType
        TypeAnnotation = ... # type: QgsProcessing.SourceType

    TEMPORARY_OUTPUT = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessing') -> None: ...

    @staticmethod
    def sourceTypeToString(type: 'QgsProcessing.SourceType') -> str: ...


class QgsProcessingFeatureBasedAlgorithm(QgsProcessingAlgorithm):

    def __init__(self) -> None: ...

    def sinkProperties(self, sink: str, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', sourceProperties: typing.Dict[str, QgsProcessingAlgorithm.VectorProperties]) -> QgsProcessingAlgorithm.VectorProperties: ...
    def prepareSource(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext') -> None: ...
    def supportInPlaceEdit(self, layer: QgsMapLayer) -> bool: ...
    def request(self) -> QgsFeatureRequest: ...
    def processAlgorithm(self, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.Dict[str, typing.Any]: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def initParameters(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def outputCrs(self, inputCrs: QgsCoordinateReferenceSystem) -> QgsCoordinateReferenceSystem: ...
    def outputFields(self, inputFields: QgsFields) -> QgsFields: ...
    def outputWkbType(self, inputWkbType: QgsWkbTypes.Type) -> QgsWkbTypes.Type: ...
    def sinkFlags(self) -> QgsFeatureSink.SinkFlags: ...
    def sourceFlags(self) -> 'QgsProcessingFeatureSource.Flag': ...
    def outputLayerType(self) -> QgsProcessing.SourceType: ...
    def inputLayerTypes(self) -> typing.List[int]: ...
    def outputName(self) -> str: ...
    def inputParameterDescription(self) -> str: ...
    def inputParameterName(self) -> str: ...
    def initAlgorithm(self, configuration: typing.Dict[str, typing.Any] = ...) -> None: ...
    def processFeature(self, feature: QgsFeature, context: 'QgsProcessingContext', feedback: 'QgsProcessingFeedback') -> typing.List[QgsFeature]: ...
    def flags(self) -> QgsProcessingAlgorithm.Flags: ...


class QgsProcessingAlgRunnerTask(QgsTask):

    def __init__(self, algorithm: QgsProcessingAlgorithm, parameters: typing.Dict[str, typing.Any], context: 'QgsProcessingContext', feedback: typing.Optional['QgsProcessingFeedback'] = ..., flags: typing.Union[QgsTask.Flags, QgsTask.Flag] = ...) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    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 pushVersionInfo(self, provider: typing.Optional['QgsProcessingProvider'] = ...) -> None: ...
    def pushConsoleInfo(self, info: str) -> None: ...
    def pushDebugInfo(self, info: str) -> None: ...
    def pushCommandInfo(self, info: str) -> None: ...
    def pushInfo(self, info: str) -> None: ...
    def pushWarning(self, warning: str) -> None: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: str) -> None: ...


class QgsProcessingMultiStepFeedback(QgsProcessingFeedback):

    def __init__(self, steps: int, feedback: QgsProcessingFeedback) -> None: ...

    def textLog(self) -> str: ...
    def htmlLog(self) -> str: ...
    def pushConsoleInfo(self, info: str) -> None: ...
    def pushDebugInfo(self, info: str) -> None: ...
    def pushCommandInfo(self, info: str) -> None: ...
    def pushInfo(self, info: str) -> None: ...
    def pushWarning(self, warning: str) -> None: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...
    def setProgressText(self, text: str) -> None: ...
    def setCurrentStep(self, step: int) -> None: ...


class QgsProcessingBatchFeedback(QgsProcessingMultiStepFeedback):

    def __init__(self, tasks: int, feedback: QgsProcessingFeedback) -> None: ...

    def popErrors(self) -> typing.List[str]: ...
    def reportError(self, error: str, fatalError: bool = ...) -> None: ...


class QgsProcessingContext(PyQt5.sip.wrapper):

    class ProcessArgumentFlag(int):
        IncludeProjectPath = ... # type: QgsProcessingContext.ProcessArgumentFlag

    class LogLevel(int):
        DefaultLevel = ... # type: QgsProcessingContext.LogLevel
        Verbose = ... # type: QgsProcessingContext.LogLevel

    class Flag(int):
        Unused = ... # type: QgsProcessingContext.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> None: ...

        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
        layerTypeHint = ... # type: 'QgsProcessingUtils.LayerHint'
        name = ... # type: str
        outputName = ... # type: str
        project = ... # type: 'QgsProject'

        @typing.overload
        def __init__(self, name: str, project: 'QgsProject', outputName: str = ..., layerTypeHint: 'QgsProcessingUtils.LayerHint' = ...) -> None: ...
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingContext.LayerDetails') -> None: ...

        def setOutputLayerName(self, layer: QgsMapLayer) -> None: ...
        def setPostProcessor(self, processor: 'QgsProcessingLayerPostProcessorInterface') -> None: ...
        def postProcessor(self) -> 'QgsProcessingLayerPostProcessorInterface': ...

    class ProcessArgumentFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag']) -> None: ...

        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 asQgisProcessArguments(self, flags: typing.Union['QgsProcessingContext.ProcessArgumentFlags', 'QgsProcessingContext.ProcessArgumentFlag'] = ...) -> typing.List[str]: ...
    def exportToMap(self) -> typing.Dict[str, typing.Any]: ...
    def setLogLevel(self, level: 'QgsProcessingContext.LogLevel') -> None: ...
    def logLevel(self) -> 'QgsProcessingContext.LogLevel': ...
    def setPreferredRasterFormat(self, format: str) -> None: ...
    def preferredRasterFormat(self) -> str: ...
    def setPreferredVectorFormat(self, format: str) -> None: ...
    def preferredVectorFormat(self) -> str: ...
    def takeResultLayer(self, id: str) -> QgsMapLayer: ...
    def getMapLayer(self, identifier: str) -> QgsMapLayer: ...
    def takeResultsFrom(self, context: 'QgsProcessingContext') -> None: ...
    def pushToThread(self, thread: QtCore.QThread) -> None: ...
    def thread(self) -> QtCore.QThread: ...
    def setFeedback(self, feedback: QgsProcessingFeedback) -> None: ...
    def feedback(self) -> QgsProcessingFeedback: ...
    def setDefaultEncoding(self, encoding: str) -> None: ...
    def defaultEncoding(self) -> str: ...
    def setTransformErrorCallback(self, a0: typing.Callable[..., None]) -> None: ...
    def setInvalidGeometryCallback(self, a0: typing.Callable[..., None]) -> None: ...
    def setInvalidGeometryCheck(self, check: QgsFeatureRequest.InvalidGeometryCheck) -> None: ...
    def invalidGeometryCheck(self) -> QgsFeatureRequest.InvalidGeometryCheck: ...
    def layerToLoadOnCompletionDetails(self, layer: str) -> 'QgsProcessingContext.LayerDetails': ...
    def addLayerToLoadOnCompletion(self, layer: str, details: 'QgsProcessingContext.LayerDetails') -> None: ...
    def setLayersToLoadOnCompletion(self, layers: typing.Dict[str, 'QgsProcessingContext.LayerDetails']) -> None: ...
    def willLoadLayerOnCompletion(self, layer: str) -> bool: ...
    def layersToLoadOnCompletion(self) -> typing.Dict[str, 'QgsProcessingContext.LayerDetails']: ...
    def temporaryLayerStore(self) -> QgsMapLayerStore: ...
    def setCurrentTimeRange(self, currentTimeRange: QgsDateTimeRange) -> None: ...
    def currentTimeRange(self) -> QgsDateTimeRange: ...
    def setAreaUnit(self, areaUnit: QgsUnitTypes.AreaUnit) -> None: ...
    def areaUnit(self) -> QgsUnitTypes.AreaUnit: ...
    def setDistanceUnit(self, unit: QgsUnitTypes.DistanceUnit) -> None: ...
    def distanceUnit(self) -> QgsUnitTypes.DistanceUnit: ...
    def setEllipsoid(self, ellipsoid: str) -> None: ...
    def ellipsoid(self) -> str: ...
    def setTransformContext(self, context: QgsCoordinateTransformContext) -> None: ...
    def transformContext(self) -> QgsCoordinateTransformContext: ...
    def setExpressionContext(self, context: QgsExpressionContext) -> None: ...
    def expressionContext(self) -> QgsExpressionContext: ...
    def setProject(self, project: 'QgsProject') -> None: ...
    def project(self) -> 'QgsProject': ...
    def setFlags(self, flags: typing.Union['QgsProcessingContext.Flags', 'QgsProcessingContext.Flag']) -> None: ...
    def flags(self) -> 'QgsProcessingContext.Flags': ...
    def copyThreadSafeSettings(self, other: 'QgsProcessingContext') -> None: ...


class QgsProcessingLayerPostProcessorInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingLayerPostProcessorInterface') -> None: ...

    def postProcessLayer(self, layer: QgsMapLayer, context: QgsProcessingContext, feedback: QgsProcessingFeedback) -> None: ...


class QgsProcessingOutputDefinition(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputDefinition') -> None: ...

    def autoCreated(self) -> bool: ...
    def setAutoCreated(self, autoCreated: bool) -> None: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def type(self) -> str: ...


class QgsProcessingOutputMapLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputMapLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputVectorLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputVectorLayer') -> None: ...

    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputRasterLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputRasterLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputPointCloudLayer(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputPointCloudLayer') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputMultipleLayers(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputMultipleLayers') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputHtml(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputHtml') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputNumber(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputNumber') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputString(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputString') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputBoolean(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputBoolean') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFolder(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFolder') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputFile(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputFile') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingOutputConditionalBranch(QgsProcessingOutputDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputConditionalBranch') -> None: ...

    def type(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDefinition(PyQt5.sip.wrapper):

    class Flag(int):
        FlagAdvanced = ... # type: QgsProcessingParameterDefinition.Flag
        FlagHidden = ... # type: QgsProcessingParameterDefinition.Flag
        FlagOptional = ... # type: QgsProcessingParameterDefinition.Flag
        FlagIsModelOutput = ... # type: QgsProcessingParameterDefinition.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __invert__(self) -> 'QgsProcessingParameterDefinition.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., help: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDefinition') -> None: ...

    def setAdditionalExpressionContextVariables(self, variables: typing.Iterable[str]) -> None: ...
    def additionalExpressionContextVariables(self) -> typing.List[str]: ...
    def setDynamicLayerParameterName(self, name: str) -> None: ...
    def dynamicLayerParameterName(self) -> str: ...
    def setDynamicPropertyDefinition(self, definition: QgsPropertyDefinition) -> None: ...
    def dynamicPropertyDefinition(self) -> QgsPropertyDefinition: ...
    def setIsDynamic(self, dynamic: bool) -> None: ...
    def isDynamic(self) -> bool: ...
    def toolTip(self) -> str: ...
    def provider(self) -> 'QgsProcessingProvider': ...
    def algorithm(self) -> QgsProcessingAlgorithm: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def setMetadata(self, metadata: typing.Dict[str, typing.Any]) -> None: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonComment(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def valueAsStringList(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[typing.List[str], bool]: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def setFlags(self, flags: typing.Union['QgsProcessingParameterDefinition.Flags', 'QgsProcessingParameterDefinition.Flag']) -> None: ...
    def flags(self) -> 'QgsProcessingParameterDefinition.Flags': ...
    def defaultValueForGui(self) -> typing.Any: ...
    def setGuiDefaultValueOverride(self, value: typing.Any) -> None: ...
    def guiDefaultValueOverride(self) -> typing.Any: ...
    def setDefaultValue(self, value: typing.Any) -> None: ...
    def defaultValue(self) -> typing.Any: ...
    def setHelp(self, help: str) -> None: ...
    def help(self) -> str: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def isDestination(self) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDefinition': ...


class QgsProcessingParameterAggregate(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., parentLayerParameterName: str = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAggregate') -> None: ...

    def setParentLayerParameterName(self, name: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterDxfLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDxfLayers') -> None: ...

    @staticmethod
    def layerAsVariantMap(layer: QgsDxfExport.DxfLayer) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantMapAsLayer(layerVariantMap: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsDxfExport.DxfLayer: ...
    @staticmethod
    def parameterAsLayers(layersVariant: typing.Any, context: QgsProcessingContext) -> typing.List[QgsDxfExport.DxfLayer]: ...
    @staticmethod
    def typeName() -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterFieldMapping(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., parentLayerParameterName: str = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFieldMapping') -> None: ...

    def setParentLayerParameterName(self, name: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterMeshDatasetGroups(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., meshLayerParameterName: str = ..., supportedDataType: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshDatasetGroups') -> None: ...

    @staticmethod
    def valueAsDatasetGroup(value: typing.Any) -> typing.List[int]: ...
    def isDataTypeSupported(self, dataType: QgsMeshDatasetGroupMetadata.DataType) -> bool: ...
    def meshLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterMeshDatasetTime(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., meshLayerParameterName: str = ..., datasetGroupParameterName: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshDatasetTime') -> None: ...

    @staticmethod
    def timeValueAsDefinedDateTime(value: typing.Any) -> QtCore.QDateTime: ...
    @staticmethod
    def timeValueAsDatasetIndex(value: typing.Any) -> QgsMeshDatasetIndex: ...
    @staticmethod
    def valueAsTimeType(value: typing.Any) -> str: ...
    def datasetGroupParameterName(self) -> str: ...
    def meshLayerParameterName(self) -> str: ...
    @staticmethod
    def typeName() -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingFeatureSourceDefinition(PyQt5.sip.wrapper):

    class Flag(int):
        FlagOverrideDefaultGeometryCheck = ... # type: QgsProcessingFeatureSourceDefinition.Flag
        FlagCreateIndividualOutputPerInputFeature = ... # type: QgsProcessingFeatureSourceDefinition.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __invert__(self) -> 'QgsProcessingFeatureSourceDefinition.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    featureLimit = ... # type: int
    flags = ... # type: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag']
    geometryCheck = ... # type: QgsFeatureRequest.InvalidGeometryCheck
    selectedFeaturesOnly = ... # type: bool
    source = ... # type: QgsProperty

    @typing.overload
    def __init__(self, source: str = ..., selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag'] = ..., geometryCheck: QgsFeatureRequest.InvalidGeometryCheck = ...) -> None: ...
    @typing.overload
    def __init__(self, source: QgsProperty, selectedFeaturesOnly: bool = ..., featureLimit: int = ..., flags: typing.Union['QgsProcessingFeatureSourceDefinition.Flags', 'QgsProcessingFeatureSourceDefinition.Flag'] = ..., geometryCheck: QgsFeatureRequest.InvalidGeometryCheck = ...) -> 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: str
    destinationProject = ... # type: 'QgsProject'
    sink = ... # type: QgsProperty

    @typing.overload
    def __init__(self, sink: str = ..., destinationProject: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, sink: QgsProperty, destinationProject: typing.Optional['QgsProject'] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingOutputLayerDefinition') -> None: ...

    def __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: str) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def descriptionFromName(name: str) -> str: ...
    @staticmethod
    def parameterFromVariantMap(map: typing.Dict[str, typing.Any]) -> QgsProcessingParameterDefinition: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsAnnotationLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsAnnotationLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsAnnotationLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsPointCloudLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCloudLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsPointCloudLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsDatabaseTableName(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSchema(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsConnectionName(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsColor(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtGui.QColor: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layout: QgsPrintLayout) -> QgsLayoutItem: ...
    @typing.overload
    @staticmethod
    def parameterAsLayoutItem(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, layout: QgsPrintLayout) -> QgsLayoutItem: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsPrintLayout: ...
    @typing.overload
    @staticmethod
    def parameterAsLayout(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsPrintLayout: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFields(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsRange(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[float]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsFileList(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayerList(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsLayerList(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[QgsMapLayer]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsMatrix(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[typing.Any]: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFile(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometryCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsGeometry(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPointCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsPoint(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsPointXY: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsExtentCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def parameterAsExtentGeometry(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsGeometry: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsExtent(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsCrs(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsMeshLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsMeshLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsMeshLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QgsVectorLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsVectorLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QgsVectorLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsFileOutput(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsOutputLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsRasterLayer': ...
    @typing.overload
    @staticmethod
    def parameterAsRasterLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> 'QgsRasterLayer': ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ...) -> QgsMapLayer: ...
    @typing.overload
    @staticmethod
    def parameterAsLayer(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext, layerHint: 'QgsProcessingUtils.LayerHint' = ...) -> QgsMapLayer: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPathAndLayerName(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> typing.Tuple[str, str]: ...
    @staticmethod
    def parameterAsCompatibleSourceLayerPath(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext, compatibleFormats: typing.Iterable[str], preferredFormat: str = ..., feedback: typing.Optional[QgsProcessingFeedback] = ...) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsProcessingFeatureSource': ...
    @typing.overload
    @staticmethod
    def parameterAsSource(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> 'QgsProcessingFeatureSource': ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], fields: QgsFields, geometryType: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @typing.overload
    @staticmethod
    def parameterAsSink(definition: QgsProcessingParameterDefinition, value: typing.Any, fields: QgsFields, geometryType: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ..., createOptions: typing.Dict[str, typing.Any] = ..., datasourceOptions: typing.Iterable[str] = ..., layerOptions: typing.Iterable[str] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBoolean(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsBool(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> bool: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumStrings(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[str]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnumString(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnums(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsEnum(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsTime(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDate(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QDate: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsDateTime(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInts(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsInt(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> int: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsDouble(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> float: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsExpression(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: QgsProcessingParameterDefinition, parameters: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> str: ...
    @typing.overload
    @staticmethod
    def parameterAsString(definition: QgsProcessingParameterDefinition, value: typing.Any, context: QgsProcessingContext) -> str: ...
    @staticmethod
    def isDynamic(parameters: typing.Dict[str, typing.Any], name: str) -> bool: ...


class QgsProcessingParameterBoolean(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterBoolean') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterBoolean': ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCrs(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterCrs') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterCrs': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExtent(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExtent') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterExtent': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPoint(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPoint') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPoint': ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterGeometry(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., geometryTypes: typing.Iterable[int] = ..., allowMultipart: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterGeometry') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterGeometry': ...
    def setAllowMultipart(self, allowMultipart: bool) -> None: ...
    def allowMultipart(self) -> bool: ...
    def setGeometryTypes(self, geometryTypes: typing.Iterable[int]) -> None: ...
    def geometryTypes(self) -> typing.List[int]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFile(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    class Behavior(int):
        File = ... # type: QgsProcessingParameterFile.Behavior
        Folder = ... # type: QgsProcessingParameterFile.Behavior

    @typing.overload
    def __init__(self, name: str, description: str = ..., behavior: 'QgsProcessingParameterFile.Behavior' = ..., extension: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., fileFilter: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFile') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str, behavior: 'QgsProcessingParameterFile.Behavior' = ...) -> 'QgsProcessingParameterFile': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: str) -> None: ...
    def fileFilter(self) -> str: ...
    def setExtension(self, extension: str) -> None: ...
    def extension(self) -> str: ...
    def setBehavior(self, behavior: 'QgsProcessingParameterFile.Behavior') -> None: ...
    def behavior(self) -> 'QgsProcessingParameterFile.Behavior': ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMatrix(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., numberRows: int = ..., hasFixedNumberRows: bool = ..., headers: typing.Iterable[str] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMatrix') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMatrix': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setHasFixedNumberRows(self, hasFixedNumberRows: bool) -> None: ...
    def hasFixedNumberRows(self) -> bool: ...
    def setNumberRows(self, rows: int) -> None: ...
    def numberRows(self) -> int: ...
    def setHeaders(self, headers: typing.Iterable[str]) -> None: ...
    def headers(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMultipleLayers(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., layerType: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMultipleLayers') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMultipleLayers': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setMinimumNumberInputs(self, minimum: int) -> None: ...
    def minimumNumberInputs(self) -> int: ...
    def setLayerType(self, type: QgsProcessing.SourceType) -> None: ...
    def layerType(self) -> QgsProcessing.SourceType: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterNumber(QgsProcessingParameterDefinition):

    class Type(int):
        Integer = ... # type: QgsProcessingParameterNumber.Type
        Double = ... # type: QgsProcessingParameterNumber.Type

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: 'QgsProcessingParameterNumber.Type' = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterNumber') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterNumber': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: 'QgsProcessingParameterNumber.Type') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterNumber.Type': ...
    def setMaximum(self, maximum: float) -> None: ...
    def maximum(self) -> float: ...
    def setMinimum(self, minimum: float) -> None: ...
    def minimum(self) -> float: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def toolTip(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDistance(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentParameterName: str = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDistance') -> None: ...

    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultUnit(self, unit: QgsUnitTypes.DistanceUnit) -> None: ...
    def defaultUnit(self) -> QgsUnitTypes.DistanceUnit: ...
    def setParentParameterName(self, parentParameterName: str) -> None: ...
    def parentParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDistance': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDuration(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: float = ..., maxValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDuration') -> None: ...

    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultUnit(self, unit: QgsUnitTypes.TemporalUnit) -> None: ...
    def defaultUnit(self) -> QgsUnitTypes.TemporalUnit: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterDuration': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterScale(QgsProcessingParameterNumber):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterScale') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterScale': ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> 'QgsProcessingParameterScale': ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRange(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessingParameterNumber.Type = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRange') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRange': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, dataType: QgsProcessingParameterNumber.Type) -> None: ...
    def dataType(self) -> QgsProcessingParameterNumber.Type: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRasterLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterEnum(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., options: typing.Iterable[str] = ..., allowMultiple: bool = ..., defaultValue: typing.Any = ..., optional: bool = ..., usesStaticStrings: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterEnum') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterEnum': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setUsesStaticStrings(self, usesStaticStrings: bool) -> None: ...
    def usesStaticStrings(self) -> bool: ...
    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    def setOptions(self, options: typing.Iterable[str]) -> None: ...
    def options(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonComment(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterString(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., multiLine: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterString') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterString': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setMultiLine(self, multiLine: bool) -> None: ...
    def multiLine(self) -> bool: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAuthConfig(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAuthConfig') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterAuthConfig': ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterExpression(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterExpression') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterExpression': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLimitedDataTypes(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, types: typing.Iterable[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLimitedDataTypes') -> None: ...

    def setDataTypes(self, types: typing.Iterable[int]) -> None: ...
    def dataTypes(self) -> typing.List[int]: ...


class QgsProcessingParameterVectorLayer(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterVectorLayer': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMeshLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMeshLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMeshLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapLayer(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., types: typing.Iterable[int] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMapLayer': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterField(QgsProcessingParameterDefinition):

    class DataType(int):
        Any = ... # type: QgsProcessingParameterField.DataType
        Numeric = ... # type: QgsProcessingParameterField.DataType
        String = ... # type: QgsProcessingParameterField.DataType
        DateTime = ... # type: QgsProcessingParameterField.DataType

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., type: 'QgsProcessingParameterField.DataType' = ..., allowMultiple: bool = ..., optional: bool = ..., defaultToAllFields: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterField') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterField': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDefaultToAllFields(self, enabled: bool) -> None: ...
    def defaultToAllFields(self) -> bool: ...
    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    def setDataType(self, type: 'QgsProcessingParameterField.DataType') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterField.DataType': ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFeatureSource(QgsProcessingParameterDefinition, QgsProcessingParameterLimitedDataTypes, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., types: typing.Iterable[int] = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSource') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFeatureSource': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingDestinationParameter(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingDestinationParameter') -> None: ...

    def originalProvider(self) -> 'QgsProcessingProvider': ...
    def setCreateByDefault(self, createByDefault: bool) -> None: ...
    def createByDefault(self) -> bool: ...
    def isSupportedOutputValue(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[bool, str]: ...
    def generateTemporaryDestination(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def setSupportsNonFileBasedOutput(self, supportsNonFileBasedOutput: bool) -> None: ...
    def supportsNonFileBasedOutput(self) -> bool: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def isDestination(self) -> bool: ...


class QgsProcessingParameterFeatureSink(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ..., supportsAppend: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFeatureSink') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFeatureSink': ...
    def generateTemporaryDestination(self) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setSupportsAppend(self, supportsAppend: bool) -> None: ...
    def supportsAppend(self) -> bool: ...
    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterVectorDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: QgsProcessing.SourceType = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterVectorDestination': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: QgsProcessing.SourceType) -> None: ...
    def hasGeometry(self) -> bool: ...
    def dataType(self) -> QgsProcessing.SourceType: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterRasterDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterRasterDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterRasterDestination': ...
    def supportedOutputRasterLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFileDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., fileFilter: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFileDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFileDestination': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setFileFilter(self, filter: str) -> None: ...
    def fileFilter(self) -> str: ...
    def createFileFilter(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterFolderDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterFolderDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterFolderDestination': ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterBand(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayerParameterName: str = ..., optional: bool = ..., allowMultiple: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterBand') -> None: ...

    def setAllowMultiple(self, allowMultiple: bool) -> None: ...
    def allowMultiple(self) -> bool: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterBand': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setParentLayerParameterName(self, parentLayerParameterName: str) -> None: ...
    def parentLayerParameterName(self) -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayout(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLayout') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterLayout': ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterLayoutItem(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., parentLayoutParameterName: str = ..., itemType: int = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterLayoutItem') -> None: ...

    def setItemType(self, type: int) -> None: ...
    def itemType(self) -> int: ...
    def setParentLayoutParameterName(self, name: str) -> None: ...
    def parentLayoutParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterLayoutItem': ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterColor(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., opacityEnabled: bool = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterColor') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterColor': ...
    def setOpacityEnabled(self, enabled: bool) -> None: ...
    def opacityEnabled(self) -> bool: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterCoordinateOperation(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., sourceCrsParameterName: str = ..., destinationCrsParameterName: str = ..., staticSourceCrs: typing.Any = ..., staticDestinationCrs: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterCoordinateOperation') -> None: ...

    def setDestinationCrs(self, crs: typing.Any) -> None: ...
    def destinationCrs(self) -> typing.Any: ...
    def setSourceCrs(self, crs: typing.Any) -> None: ...
    def sourceCrs(self) -> typing.Any: ...
    def setDestinationCrsParameterName(self, name: str) -> None: ...
    def destinationCrsParameterName(self) -> str: ...
    def setSourceCrsParameterName(self, name: str) -> None: ...
    def sourceCrsParameterName(self) -> str: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterCoordinateOperation': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterMapTheme(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterMapTheme') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterMapTheme': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDateTime(QgsProcessingParameterDefinition):

    class Type(int):
        DateTime = ... # type: QgsProcessingParameterDateTime.Type
        Date = ... # type: QgsProcessingParameterDateTime.Type
        Time = ... # type: QgsProcessingParameterDateTime.Type

    @typing.overload
    def __init__(self, name: str, description: str = ..., type: 'QgsProcessingParameterDateTime.Type' = ..., defaultValue: typing.Any = ..., optional: bool = ..., minValue: typing.Union[QtCore.QDateTime, datetime.datetime] = ..., maxValue: typing.Union[QtCore.QDateTime, datetime.datetime] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDateTime') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDateTime': ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def setDataType(self, type: 'QgsProcessingParameterDateTime.Type') -> None: ...
    def dataType(self) -> 'QgsProcessingParameterDateTime.Type': ...
    def setMaximum(self, maximum: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def maximum(self) -> QtCore.QDateTime: ...
    def setMinimum(self, minimum: typing.Union[QtCore.QDateTime, datetime.datetime]) -> None: ...
    def minimum(self) -> QtCore.QDateTime: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def toolTip(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterProviderConnection(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, provider: str, defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterProviderConnection') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterProviderConnection': ...
    def setProviderId(self, provider: str) -> None: ...
    def providerId(self) -> str: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseSchema(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, connectionParameterName: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDatabaseSchema') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDatabaseSchema': ...
    def setParentConnectionParameterName(self, name: str) -> None: ...
    def parentConnectionParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterDatabaseTable(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str, connectionParameterName: str = ..., schemaParameterName: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., allowNewTableNames: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterDatabaseTable') -> None: ...

    def setAllowNewTableNames(self, allowed: bool) -> None: ...
    def allowNewTableNames(self) -> bool: ...
    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterDatabaseTable': ...
    def setParentSchemaParameterName(self, name: str) -> None: ...
    def parentSchemaParameterName(self) -> str: ...
    def setParentConnectionParameterName(self, name: str) -> None: ...
    def parentConnectionParameterName(self) -> str: ...
    def dependsOnOtherParameters(self) -> typing.List[str]: ...
    def fromVariantMap(self, map: typing.Dict[str, typing.Any]) -> bool: ...
    def toVariantMap(self) -> typing.Dict[str, typing.Any]: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def asScriptCode(self) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudLayer(QgsProcessingParameterDefinition, QgsFileFilterGenerator):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPointCloudLayer': ...
    def createFileFilter(self) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterAnnotationLayer(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterAnnotationLayer') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterAnnotationLayer': ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterPointCloudDestination(QgsProcessingDestinationParameter):

    @typing.overload
    def __init__(self, name: str, description: str = ..., defaultValue: typing.Any = ..., optional: bool = ..., createByDefault: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterPointCloudDestination') -> None: ...

    @staticmethod
    def fromScriptCode(name: str, description: str, isOptional: bool, definition: str) -> 'QgsProcessingParameterPointCloudDestination': ...
    def supportedOutputPointCloudLayerExtensions(self) -> typing.List[str]: ...
    def createFileFilter(self) -> str: ...
    def defaultFileExtension(self) -> str: ...
    def toOutputDefinition(self) -> QgsProcessingOutputDefinition: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...
    @staticmethod
    def typeName() -> str: ...


class QgsProcessingParameterTinInputLayers(QgsProcessingParameterDefinition):

    class Type(int):
        Vertices = ... # type: QgsProcessingParameterTinInputLayers.Type
        StructureLines = ... # type: QgsProcessingParameterTinInputLayers.Type
        BreakLines = ... # type: QgsProcessingParameterTinInputLayers.Type

    class InputLayer(PyQt5.sip.wrapper):

        attributeIndex = ... # type: int
        source = ... # type: str
        type = ... # type: 'QgsProcessingParameterTinInputLayers.Type'

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProcessingParameterTinInputLayers.InputLayer') -> None: ...

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterTinInputLayers') -> None: ...

    @staticmethod
    def typeName() -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsJsonObject(self, value: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    def valueAsString(self, value: typing.Any, context: QgsProcessingContext) -> typing.Tuple[str, bool]: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterType(PyQt5.sip.wrapper):

    class ParameterFlag(int):
        ExposeToModeler = ... # type: QgsProcessingParameterType.ParameterFlag

    class ParameterFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __xor__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __ior__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __or__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __iand__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __and__(self, f: typing.Union['QgsProcessingParameterType.ParameterFlags', 'QgsProcessingParameterType.ParameterFlag']) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __invert__(self) -> 'QgsProcessingParameterType.ParameterFlags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterType') -> None: ...

    def acceptedStringValues(self) -> typing.List[str]: ...
    def acceptedPythonTypes(self) -> typing.List[str]: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def flags(self) -> 'QgsProcessingParameterType.ParameterFlags': ...
    def id(self) -> str: ...
    def className(self) -> str: ...
    def pythonImportString(self) -> str: ...
    def name(self) -> str: ...
    def description(self) -> str: ...
    def create(self, name: str) -> QgsProcessingParameterDefinition: ...


class QgsProcessingParameterVectorTileWriterLayers(QgsProcessingParameterDefinition):

    @typing.overload
    def __init__(self, name: str, description: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingParameterVectorTileWriterLayers') -> None: ...

    @staticmethod
    def layerAsVariantMap(layer: 'QgsVectorTileWriter.Layer') -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantMapAsLayer(layerVariantMap: typing.Dict[str, typing.Any], context: QgsProcessingContext) -> 'QgsVectorTileWriter.Layer': ...
    @staticmethod
    def parameterAsLayers(layersVariant: typing.Any, context: QgsProcessingContext) -> typing.List['QgsVectorTileWriter.Layer']: ...
    @staticmethod
    def typeName() -> str: ...
    def asPythonString(self, outputType: QgsProcessing.PythonOutputType = ...) -> str: ...
    def valueAsPythonString(self, value: typing.Any, context: QgsProcessingContext) -> str: ...
    def checkValueIsAcceptable(self, input: typing.Any, context: typing.Optional[QgsProcessingContext] = ...) -> bool: ...
    def type(self) -> str: ...
    def clone(self) -> QgsProcessingParameterDefinition: ...


class QgsProcessingProvider(QtCore.QObject):

    class Flag(int):
        FlagDeemphasiseSearchResults = ... # type: QgsProcessingProvider.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingProvider.Flags', 'QgsProcessingProvider.Flag']) -> 'QgsProcessingProvider.Flags': ...
        def __invert__(self) -> 'QgsProcessingProvider.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addAlgorithm(self, algorithm: QgsProcessingAlgorithm) -> bool: ...
    def loadAlgorithms(self) -> None: ...
    algorithmsLoaded: typing.ClassVar[QtCore.pyqtsignal]
    def algorithm(self, name: str) -> QgsProcessingAlgorithm: ...
    def algorithms(self) -> typing.List[QgsProcessingAlgorithm]: ...
    def refreshAlgorithms(self) -> None: ...
    def unload(self) -> None: ...
    def load(self) -> bool: ...
    def supportsNonFileBasedOutput(self) -> bool: ...
    def defaultPointCloudFileExtension(self) -> str: ...
    def defaultRasterFileExtension(self) -> str: ...
    def defaultVectorFileExtension(self, hasGeometry: bool = ...) -> str: ...
    def isSupportedOutputValue(self, outputValue: typing.Any, parameter: QgsProcessingDestinationParameter, context: QgsProcessingContext) -> typing.Tuple[bool, str]: ...
    def supportedOutputTableExtensions(self) -> typing.List[str]: ...
    def supportedOutputPointCloudLayerExtensions(self) -> typing.List[str]: ...
    def supportedOutputVectorLayerExtensions(self) -> typing.List[str]: ...
    def supportedOutputRasterLayerExtensions(self) -> typing.List[str]: ...
    def isActive(self) -> bool: ...
    def warningMessage(self) -> str: ...
    def canBeActivated(self) -> bool: ...
    def versionInfo(self) -> str: ...
    def longName(self) -> str: ...
    def name(self) -> str: ...
    def helpId(self) -> str: ...
    def id(self) -> str: ...
    def flags(self) -> 'QgsProcessingProvider.Flags': ...
    def svgIconPath(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...


class 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: str) -> QgsProcessingParameterType: ...
    def removeParameterType(self, type: QgsProcessingParameterType) -> None: ...
    def addParameterType(self, type: QgsProcessingParameterType) -> bool: ...
    def addAlgorithmAlias(self, aliasId: str, actualId: str) -> None: ...
    def createAlgorithmById(self, id: str, configuration: typing.Dict[str, typing.Any] = ...) -> QgsProcessingAlgorithm: ...
    def algorithmById(self, id: str) -> QgsProcessingAlgorithm: ...
    def algorithms(self) -> typing.List[QgsProcessingAlgorithm]: ...
    def providerById(self, id: str) -> QgsProcessingProvider: ...
    @typing.overload
    def removeProvider(self, provider: QgsProcessingProvider) -> bool: ...
    @typing.overload
    def removeProvider(self, providerId: str) -> bool: ...
    def addProvider(self, provider: QgsProcessingProvider) -> bool: ...
    def providers(self) -> typing.List[QgsProcessingProvider]: ...


class QgsProcessingUtils(PyQt5.sip.wrapper):

    class LayerHint(int):
        UnknownType = ... # type: QgsProcessingUtils.LayerHint
        Vector = ... # type: QgsProcessingUtils.LayerHint
        Raster = ... # type: QgsProcessingUtils.LayerHint
        Mesh = ... # type: QgsProcessingUtils.LayerHint
        PointCloud = ... # type: QgsProcessingUtils.LayerHint
        Annotation = ... # type: QgsProcessingUtils.LayerHint

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingUtils') -> None: ...

    @staticmethod
    def removePointerValuesFromMap(map: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def defaultPointCloudExtension() -> str: ...
    @staticmethod
    def defaultRasterExtension() -> str: ...
    @staticmethod
    def defaultVectorExtension() -> str: ...
    @staticmethod
    def indicesToFields(indices: typing.Iterable[int], fields: QgsFields) -> QgsFields: ...
    @staticmethod
    def fieldNamesToIndices(fieldNames: typing.Iterable[str], fields: QgsFields) -> typing.List[int]: ...
    @staticmethod
    def combineFields(fieldsA: QgsFields, fieldsB: QgsFields, fieldsBPrefix: str = ...) -> QgsFields: ...
    @staticmethod
    def convertToCompatibleFormatAndLayerName(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: typing.Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = ...) -> typing.Tuple[str, str]: ...
    @staticmethod
    def convertToCompatibleFormat(layer: QgsVectorLayer, selectedFeaturesOnly: bool, baseName: str, compatibleFormats: typing.Iterable[str], preferredFormat: str, context: QgsProcessingContext, feedback: QgsProcessingFeedback, featureLimit: int = ...) -> str: ...
    @staticmethod
    def formatHelpMapAsHtml(map: typing.Dict[str, typing.Any], algorithm: QgsProcessingAlgorithm) -> str: ...
    @staticmethod
    def generateTempFilename(basename: str) -> str: ...
    @staticmethod
    def tempFolder() -> str: ...
    @staticmethod
    def generateIteratingDestination(input: typing.Any, id: typing.Any, context: QgsProcessingContext) -> typing.Any: ...
    @typing.overload
    @staticmethod
    def combineLayerExtents(layers: typing.Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem, context: QgsProcessingContext) -> QgsRectangle: ...
    @typing.overload
    @staticmethod
    def combineLayerExtents(layers: typing.Iterable[QgsMapLayer], crs: QgsCoordinateReferenceSystem = ...) -> QgsRectangle: ...
    @staticmethod
    def createFeatureSink(destination: str, context: QgsProcessingContext, fields: QgsFields, geometryType: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem, createOptions: typing.Dict[str, typing.Any] = ...) -> typing.Tuple[QgsFeatureSink, str]: ...
    @staticmethod
    def stringToPythonLiteral(string: str) -> str: ...
    @staticmethod
    def variantToPythonLiteral(value: typing.Any) -> str: ...
    @staticmethod
    def normalizeLayerSource(source: str) -> str: ...
    @staticmethod
    def variantToCrs(value: typing.Any, context: QgsProcessingContext, fallbackValue: typing.Any = ...) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def variantToSource(value: typing.Any, context: QgsProcessingContext, fallbackValue: typing.Any = ...) -> 'QgsProcessingFeatureSource': ...
    @staticmethod
    def mapLayerFromString(string: str, context: QgsProcessingContext, allowLoadingNewLayers: bool = ..., typeHint: 'QgsProcessingUtils.LayerHint' = ...) -> QgsMapLayer: ...
    @staticmethod
    def decodeProviderKeyAndUri(string: str) -> typing.Tuple[bool, str, str]: ...
    @staticmethod
    def encodeProviderKeyAndUri(providerKey: str, uri: str) -> str: ...
    @staticmethod
    def compatibleLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsMapLayer]: ...
    @staticmethod
    def compatibleAnnotationLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsAnnotationLayer]: ...
    @staticmethod
    def compatiblePointCloudLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsPointCloudLayer]: ...
    @staticmethod
    def compatiblePluginLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsPluginLayer]: ...
    @staticmethod
    def compatibleMeshLayers(project: 'QgsProject', sort: bool = ...) -> typing.List[QgsMeshLayer]: ...
    @staticmethod
    def compatibleVectorLayers(project: 'QgsProject', sourceTypes: typing.Iterable[int] = ..., sort: bool = ...) -> typing.List[QgsVectorLayer]: ...
    @staticmethod
    def compatibleRasterLayers(project: 'QgsProject', sort: bool = ...) -> typing.List['QgsRasterLayer']: ...


class QgsProcessingFeatureSource(QgsFeatureSource):

    class Flag(int):
        FlagSkipGeometryValidityChecks = ... # type: QgsProcessingFeatureSource.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> None: ...

        def __hash__(self) -> int: ...
        def __bool__(self) -> int: ...
        def __ne__(self, other: object): ...
        def __eq__(self, other: object): ...
        def __ixor__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __xor__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __ior__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __or__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __iand__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __and__(self, f: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> 'QgsProcessingFeatureSource.Flags': ...
        def __invert__(self) -> 'QgsProcessingFeatureSource.Flags': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    @typing.overload
    def __init__(self, originalSource: QgsFeatureSource, context: QgsProcessingContext, ownsOriginalSource: bool = ..., featureLimit: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProcessingFeatureSource') -> None: ...

    def setInvalidGeometryCheck(self, method: QgsFeatureRequest.InvalidGeometryCheck) -> None: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def hasSpatialIndex(self) -> QgsFeatureSource.SpatialIndexPresence: ...
    def allFeatureIds(self) -> typing.Any: ...
    def sourceExtent(self) -> QgsRectangle: ...
    def maximumValue(self, fieldIndex: int) -> typing.Any: ...
    def minimumValue(self, fieldIndex: int) -> typing.Any: ...
    def uniqueValues(self, fieldIndex: int, limit: int = ...) -> typing.Set[typing.Any]: ...
    def sourceName(self) -> str: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> QgsWkbTypes.Type: ...
    def fields(self) -> QgsFields: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def hasFeatures(self) -> QgsFeatureSource.FeatureAvailability: ...
    @typing.overload
    def getFeatures(self, request: QgsFeatureRequest, flags: typing.Union['QgsProcessingFeatureSource.Flags', 'QgsProcessingFeatureSource.Flag']) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsProjectTranslator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectTranslator') -> None: ...

    def translate(self, context: str, sourceText: str, disambiguation: typing.Optional[str] = ..., n: int = ...) -> str: ...


class QgsProject(QtCore.QObject, QgsExpressionContextGenerator, QgsExpressionContextScopeGenerator, QgsProjectTranslator):

    class DataDefinedServerProperty(int):
        NoProperty = ... # type: QgsProject.DataDefinedServerProperty
        AllProperties = ... # type: QgsProject.DataDefinedServerProperty
        WMSOnlineResource = ... # type: QgsProject.DataDefinedServerProperty

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., capabilities: typing.Union[Qgis.ProjectCapabilities, Qgis.ProjectCapability] = ...) -> None: ...

    def rollBack(self, stopEditing: bool = ..., vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def commitChanges(self, stopEditing: bool = ..., vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def startEditing(self, vectorLayer: typing.Optional[QgsVectorLayer] = ...) -> bool: ...
    def dataDefinedServerProperties(self) -> QgsPropertyCollection: ...
    def setDataDefinedServerProperties(self, properties: QgsPropertyCollection) -> None: ...
    def registerTranslatableObjects(self, translationContext: QgsTranslationContext) -> None: ...
    def registerTranslatableContainers(self, translationContext: QgsTranslationContext, parent: QgsAttributeEditorContainer, layerId: str) -> None: ...
    def setPresetHomePath(self, path: str) -> None: ...
    def setDirty(self, b: bool = ...) -> None: ...
    def setSnappingConfig(self, snappingConfig: QgsSnappingConfig) -> None: ...
    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]
    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]
    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]
    cleared: typing.ClassVar[QtCore.pyqtsignal]
    def __repr__(self) -> typing.Any: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def translate(self, context: str, sourceText: str, disambiguation: typing.Optional[str] = ..., n: int = ...) -> str: ...
    def generateTsFile(self, locale: str) -> None: ...
    def useProjectScales(self) -> bool: ...
    def setUseProjectScales(self, enabled: bool) -> None: ...
    def mapScales(self) -> typing.List[float]: ...
    def setMapScales(self, scales: typing.Iterable[float]) -> None: ...
    def selectionColor(self) -> QtGui.QColor: ...
    def setSelectionColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def backgroundColor(self) -> QtGui.QColor: ...
    def setBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def setProjectColors(self, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]]) -> None: ...
    def setRequiredLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def requiredLayers(self) -> typing.Set[QgsMapLayer]: ...
    def setMetadata(self, metadata: QgsProjectMetadata) -> None: ...
    def metadata(self) -> QgsProjectMetadata: ...
    def resolveAttachmentIdentifier(self, identifier: str) -> str: ...
    def attachmentIdentifier(self, attachedFile: str) -> str: ...
    def removeAttachedFile(self, path: str) -> bool: ...
    def attachedFiles(self) -> typing.List[str]: ...
    def createAttachedFile(self, nameTemplate: str) -> str: ...
    def auxiliaryStorage(self) -> QgsAuxiliaryStorage: ...
    def trustLayerMetadata(self) -> bool: ...
    def setTrustLayerMetadata(self, trust: bool) -> None: ...
    def defaultCrsForNewLayers(self) -> QgsCoordinateReferenceSystem: ...
    def reloadAllLayers(self) -> None: ...
    def removeAllMapLayers(self) -> None: ...
    def mainAnnotationLayer(self) -> QgsAnnotationLayer: ...
    def takeMapLayer(self, layer: QgsMapLayer) -> QgsMapLayer: ...
    @typing.overload
    def removeMapLayer(self, layerId: str) -> None: ...
    @typing.overload
    def removeMapLayer(self, layer: QgsMapLayer) -> None: ...
    @typing.overload
    def removeMapLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    @typing.overload
    def removeMapLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    def addMapLayer(self, mapLayer: QgsMapLayer, addToLegend: bool = ...) -> QgsMapLayer: ...
    def addMapLayers(self, mapLayers: typing.Iterable[QgsMapLayer], addToLegend: bool = ...) -> typing.List[QgsMapLayer]: ...
    def isZipped(self) -> bool: ...
    def mapLayers(self, validOnly: bool = ...) -> typing.Any: ...
    def mapLayersByShortName(self, shortName: str) -> typing.List[QgsMapLayer]: ...
    def mapLayersByName(self, layerName: str) -> typing.List[QgsMapLayer]: ...
    def mapLayer(self, layerId: str) -> QgsMapLayer: ...
    def validCount(self) -> int: ...
    def count(self) -> int: ...
    def layerStore(self) -> QgsMapLayerStore: ...
    def labelingEngineSettings(self) -> QgsLabelingEngineSettings: ...
    def setLabelingEngineSettings(self, settings: QgsLabelingEngineSettings) -> None: ...
    def setCustomVariables(self, customVariables: typing.Dict[str, typing.Any]) -> None: ...
    def customVariables(self) -> typing.Dict[str, typing.Any]: ...
    def avoidIntersectionsMode(self) -> Qgis.AvoidIntersectionsMode: ...
    def setAvoidIntersectionsMode(self, mode: Qgis.AvoidIntersectionsMode) -> None: ...
    def setAvoidIntersectionsLayers(self, layers: typing.Iterable[QgsVectorLayer]) -> None: ...
    def avoidIntersectionsLayers(self) -> typing.List[QgsVectorLayer]: ...
    def snappingConfig(self) -> QgsSnappingConfig: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def createExpressionContext(self) -> QgsExpressionContext: ...
    def setEvaluateDefaultValues(self, evaluateDefaultValues: bool) -> None: ...
    def evaluateDefaultValues(self) -> bool: ...
    def editBufferGroup(self) -> 'QgsVectorLayerEditBufferGroup': ...
    def transactionGroup(self, providerKey: str, connString: str) -> QgsTransactionGroup: ...
    def setTransactionMode(self, transactionMode: Qgis.TransactionMode) -> bool: ...
    def transactionMode(self) -> Qgis.TransactionMode: ...
    def setAutoTransaction(self, autoTransaction: bool) -> None: ...
    def autoTransaction(self) -> bool: ...
    def nonIdentifiableLayers(self) -> typing.List[str]: ...
    @typing.overload
    def setNonIdentifiableLayers(self, layers: typing.Iterable[QgsMapLayer]) -> None: ...
    @typing.overload
    def setNonIdentifiableLayers(self, layerIds: typing.Iterable[str]) -> None: ...
    def annotationManager(self) -> QgsAnnotationManager: ...
    def mapThemeCollection(self) -> QgsMapThemeCollection: ...
    def layerTreeRegistryBridge(self) -> QgsLayerTreeRegistryBridge: ...
    def layerTreeRoot(self) -> QgsLayerTree: ...
    def displaySettings(self) -> 'QgsProjectDisplaySettings': ...
    def elevationProperties(self) -> 'QgsProjectElevationProperties': ...
    def timeSettings(self) -> 'QgsProjectTimeSettings': ...
    def styleSettings(self) -> 'QgsProjectStyleSettings': ...
    def viewSettings(self) -> 'QgsProjectViewSettings': ...
    def bookmarkManager(self) -> QgsBookmarkManager: ...
    def viewsManager(self) -> 'QgsMapViewsManager': ...
    def layoutManager(self) -> QgsLayoutManager: ...
    def relationManager(self) -> QgsRelationManager: ...
    def presetHomePath(self) -> str: ...
    def homePath(self) -> str: ...
    def setAreaUnits(self, unit: QgsUnitTypes.AreaUnit) -> None: ...
    def areaUnits(self) -> QgsUnitTypes.AreaUnit: ...
    def setDistanceUnits(self, unit: QgsUnitTypes.DistanceUnit) -> None: ...
    def distanceUnits(self) -> QgsUnitTypes.DistanceUnit: ...
    def topologicalEditing(self) -> bool: ...
    def setTopologicalEditing(self, enabled: bool) -> None: ...
    def createEmbeddedGroup(self, groupName: str, projectFilePath: str, invisibleLayers: typing.Iterable[str], flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> QgsLayerTreeGroup: ...
    def layerIsEmbedded(self, id: str) -> str: ...
    def setBadLayerHandler(self, handler: 'QgsProjectBadLayerHandler') -> None: ...
    def error(self) -> str: ...
    def readPath(self, filename: str) -> str: ...
    def writePath(self, filename: str) -> str: ...
    def pathResolver(self) -> QgsPathResolver: ...
    def dumpProperties(self) -> None: ...
    def subkeyList(self, scope: str, key: str) -> typing.List[str]: ...
    def entryList(self, scope: str, key: str) -> typing.List[str]: ...
    def removeEntry(self, scope: str, key: str) -> bool: ...
    def readBoolEntry(self, scope: str, key: str, def_: bool = ...) -> typing.Tuple[bool, bool]: ...
    def readDoubleEntry(self, scope: str, key: str, def_: float = ...) -> typing.Tuple[float, bool]: ...
    def readNumEntry(self, scope: str, key: str, def_: int = ...) -> typing.Tuple[int, bool]: ...
    def readEntry(self, scope: str, key: str, def_: str = ...) -> typing.Tuple[str, bool]: ...
    def readListEntry(self, scope: str, key: str, def_: typing.Iterable[str] = ...) -> typing.Tuple[typing.List[str], bool]: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: int) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: str) -> bool: ...
    @typing.overload
    def writeEntry(self, scope: str, key: str, value: typing.Iterable[str]) -> bool: ...
    def writeEntryDouble(self, scope: str, key: str, value: float) -> bool: ...
    def writeEntryBool(self, scope: str, key: str, value: bool) -> bool: ...
    @typing.overload
    def write(self, filename: str) -> bool: ...
    @typing.overload
    def write(self) -> bool: ...
    def readLayer(self, layerNode: QtXml.QDomNode) -> bool: ...
    @typing.overload
    def read(self, filename: str, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    @typing.overload
    def read(self, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    def clear(self) -> None: ...
    def setTransformContext(self, context: QgsCoordinateTransformContext) -> None: ...
    def transformContext(self) -> QgsCoordinateTransformContext: ...
    def setEllipsoid(self, ellipsoid: str) -> None: ...
    def ellipsoid(self) -> str: ...
    def setCrs(self, crs: QgsCoordinateReferenceSystem, adjustEllipsoid: bool = ...) -> None: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def setFilePathStorage(self, type: Qgis.FilePathType) -> None: ...
    def filePathStorage(self) -> Qgis.FilePathType: ...
    def baseName(self) -> str: ...
    def absolutePath(self) -> str: ...
    def absoluteFilePath(self) -> str: ...
    def lastModified(self) -> QtCore.QDateTime: ...
    def projectStorage(self) -> 'QgsProjectStorage': ...
    def fileInfo(self) -> QtCore.QFileInfo: ...
    def originalPath(self) -> str: ...
    def setOriginalPath(self, path: str) -> None: ...
    def fileName(self) -> str: ...
    def setFileName(self, name: str) -> None: ...
    def isDirty(self) -> bool: ...
    def lastSaveVersion(self) -> 'QgsProjectVersion': ...
    def lastSaveDateTime(self) -> QtCore.QDateTime: ...
    def saveUserFullName(self) -> str: ...
    def saveUser(self) -> str: ...
    def setFlag(self, flag: Qgis.ProjectFlag, enabled: bool = ...) -> None: ...
    def setFlags(self, flags: typing.Union[Qgis.ProjectFlags, Qgis.ProjectFlag]) -> None: ...
    def flags(self) -> Qgis.ProjectFlags: ...
    def capabilities(self) -> Qgis.ProjectCapabilities: ...
    def title(self) -> str: ...
    def setTitle(self, title: str) -> None: ...
    @staticmethod
    def setInstance(project: 'QgsProject') -> None: ...
    @staticmethod
    def instance() -> 'QgsProject': ...


class QgsProjectDirtyBlocker(PyQt5.sip.wrapper):

    def __init__(self, project: QgsProject) -> None: ...


class QgsProjectBadLayerHandler(PyQt5.sip.wrapper):

    class ProviderType(int):
        IS_FILE = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_DATABASE = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_URL = ... # type: QgsProjectBadLayerHandler.ProviderType
        IS_Unknown = ... # type: QgsProjectBadLayerHandler.ProviderType

    class DataType(int):
        IS_VECTOR = ... # type: QgsProjectBadLayerHandler.DataType
        IS_RASTER = ... # type: QgsProjectBadLayerHandler.DataType
        IS_BOGUS = ... # type: QgsProjectBadLayerHandler.DataType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectBadLayerHandler') -> None: ...

    def setDataSource(self, layerNode: QtXml.QDomNode, dataSource: str) -> None: ...
    def providerType(self, layerNode: QtXml.QDomNode) -> 'QgsProjectBadLayerHandler.ProviderType': ...
    def dataSource(self, layerNode: QtXml.QDomNode) -> str: ...
    def dataType(self, layerNode: QtXml.QDomNode) -> 'QgsProjectBadLayerHandler.DataType': ...
    def handleBadLayers(self, layers: typing.Iterable[QtXml.QDomNode]) -> None: ...


class QgsProjectDisplaySettings(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    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) -> QgsGeographicCoordinateNumericFormat: ...
    def setGeographicCoordinateFormat(self, format: QgsGeographicCoordinateNumericFormat) -> None: ...
    def bearingFormat(self) -> QgsBearingNumericFormat: ...
    def setBearingFormat(self, format: QgsBearingNumericFormat) -> None: ...
    def reset(self) -> None: ...


class QgsProjectElevationProperties(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    changed: typing.ClassVar[QtCore.pyqtsignal]
    def setTerrainProvider(self, provider: QgsAbstractTerrainProvider) -> None: ...
    def terrainProvider(self) -> QgsAbstractTerrainProvider: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def resolveReferences(self, project: QgsProject) -> None: ...
    def reset(self) -> None: ...


class QgsProjectFileTransform(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, domDocument: QtXml.QDomDocument, version: 'QgsProjectVersion') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectFileTransform') -> None: ...

    def currentVersion(self) -> 'QgsProjectVersion': ...
    def dom(self) -> QtXml.QDomDocument: ...
    @staticmethod
    def convertRasterProperties(doc: QtXml.QDomDocument, parentNode: QtXml.QDomNode, rasterPropertiesElem: QtXml.QDomElement, rlayer: 'QgsRasterLayer') -> None: ...
    def dump(self) -> None: ...
    def updateRevision(self, version: 'QgsProjectVersion') -> bool: ...


class QgsProjectProperty(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectProperty') -> None: ...

    def value(self) -> typing.Any: ...
    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def isLeaf(self) -> bool: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...


class QgsProjectPropertyValue(QgsProjectProperty):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: typing.Any) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectPropertyValue') -> None: ...

    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...
    def isLeaf(self) -> bool: ...
    def value(self) -> typing.Any: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...


class QgsProjectPropertyKey(QgsProjectProperty):

    @typing.overload
    def __init__(self, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectPropertyKey') -> None: ...

    def find(self, propertyName: str) -> QgsProjectProperty: ...
    def clearKeys(self) -> None: ...
    def clear(self) -> None: ...
    def subkeyList(self, entries: typing.Iterable[str]) -> None: ...
    def entryList(self, entries: typing.Iterable[str]) -> None: ...
    def isLeaf(self) -> bool: ...
    def isValue(self) -> bool: ...
    def isKey(self) -> bool: ...
    def isEmpty(self) -> bool: ...
    def count(self) -> int: ...
    def writeXml(self, nodeName: str, element: QtXml.QDomElement, document: QtXml.QDomDocument) -> bool: ...
    def readXml(self, keyNode: QtXml.QDomNode) -> bool: ...
    def dump(self, tabs: int = ...) -> None: ...
    @typing.overload
    def setValue(self, name: str, value: typing.Any) -> QgsProjectPropertyValue: ...
    @typing.overload
    def setValue(self, value: typing.Any) -> QgsProjectPropertyValue: ...
    def removeKey(self, keyName: str) -> None: ...
    def addKey(self, keyName: str) -> 'QgsProjectPropertyKey': ...
    def value(self) -> typing.Any: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsProjectServerValidator(PyQt5.sip.wrapper):

    class ValidationError(int):
        DuplicatedNames = ... # type: QgsProjectServerValidator.ValidationError
        LayerShortName = ... # type: QgsProjectServerValidator.ValidationError
        LayerEncoding = ... # type: QgsProjectServerValidator.ValidationError
        ProjectShortName = ... # type: QgsProjectServerValidator.ValidationError
        ProjectRootNameConflict = ... # type: QgsProjectServerValidator.ValidationError

    class ValidationResult(PyQt5.sip.wrapper):

        error = ... # type: 'QgsProjectServerValidator.ValidationError'
        identifier = ... # type: typing.Any

        @typing.overload
        def __init__(self, error: 'QgsProjectServerValidator.ValidationError', identifier: typing.Any) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProjectServerValidator.ValidationResult') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectServerValidator') -> None: ...

    @staticmethod
    def validate(project: QgsProject) -> typing.Tuple[bool, typing.List['QgsProjectServerValidator.ValidationResult']]: ...
    @staticmethod
    def displayValidationError(error: 'QgsProjectServerValidator.ValidationError') -> str: ...


class QgsProjectStorage(PyQt5.sip.wrapper):

    class Metadata(PyQt5.sip.wrapper):

        lastModified = ... # type: typing.Union[QtCore.QDateTime, datetime.datetime]
        name = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProjectStorage.Metadata') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectStorage') -> None: ...

    def showSaveGui(self) -> str: ...
    def showLoadGui(self) -> str: ...
    def visibleName(self) -> str: ...
    def filePath(self, uri: str) -> str: ...
    def readProjectStorageMetadata(self, uri: str) -> typing.Tuple[bool, 'QgsProjectStorage.Metadata']: ...
    def renameProject(self, uri: str, uriNew: str) -> bool: ...
    def removeProject(self, uri: str) -> bool: ...
    def writeProject(self, uri: str, device: QtCore.QIODevice, context: QgsReadWriteContext) -> bool: ...
    def readProject(self, uri: str, device: QtCore.QIODevice, context: QgsReadWriteContext) -> bool: ...
    def listProjects(self, uri: str) -> typing.List[str]: ...
    def isSupportedUri(self, uri: str) -> bool: ...
    def type(self) -> str: ...


class QgsProjectStorageRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectStorageRegistry') -> None: ...

    def unregisterProjectStorage(self, storage: QgsProjectStorage) -> None: ...
    def registerProjectStorage(self, storage: QgsProjectStorage) -> None: ...
    def projectStorages(self) -> typing.List[QgsProjectStorage]: ...
    def projectStorageFromUri(self, uri: str) -> QgsProjectStorage: ...
    def projectStorageFromType(self, type: str) -> QgsProjectStorage: ...


class QgsProjectStyleSettings(QtCore.QObject):

    def __init__(self, project: typing.Optional[QgsProject] = ...) -> None: ...

    styleDatabasesChanged: typing.ClassVar[QtCore.pyqtsignal]
    def combinedStyleModel(self) -> 'QgsCombinedStyleModel': ...
    def setStyleDatabasePaths(self, paths: typing.Iterable[str]) -> None: ...
    def addStyleDatabasePath(self, path: str) -> None: ...
    def styleAtPath(self, path: str) -> 'QgsStyle': ...
    def styles(self) -> typing.List['QgsStyle']: ...
    def styleDatabasePaths(self) -> typing.List[str]: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext, flags: typing.Union[Qgis.ProjectReadFlags, Qgis.ProjectReadFlag] = ...) -> bool: ...
    def projectStyle(self) -> 'QgsStyle': ...
    def setProjectStyle(self, style: 'QgsStyle') -> None: ...
    def reset(self) -> None: ...
    def setDefaultSymbolOpacity(self, opacity: float) -> None: ...
    def defaultSymbolOpacity(self) -> float: ...
    def setRandomizeDefaultSymbolColor(self, randomized: bool) -> None: ...
    def randomizeDefaultSymbolColor(self) -> bool: ...
    def setDefaultTextFormat(self, textFormat: 'QgsTextFormat') -> None: ...
    def defaultTextFormat(self) -> 'QgsTextFormat': ...
    def setDefaultColorRamp(self, colorRamp: QgsColorRamp) -> None: ...
    def defaultColorRamp(self) -> QgsColorRamp: ...
    def setDefaultSymbol(self, symbolType: Qgis.SymbolType, symbol: 'QgsSymbol') -> None: ...
    def defaultSymbol(self, symbolType: Qgis.SymbolType) -> 'QgsSymbol': ...


class QgsProjectStyleDatabaseModel(QtCore.QAbstractListModel):

    class Role(int):
        StyleRole = ... # type: QgsProjectStyleDatabaseModel.Role
        PathRole = ... # type: QgsProjectStyleDatabaseModel.Role

    def __init__(self, settings: QgsProjectStyleSettings, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def showDefaultStyle(self) -> bool: ...
    def setShowDefaultStyle(self, show: bool) -> None: ...
    def indexFromStyle(self, style: 'QgsStyle') -> QtCore.QModelIndex: ...
    def styleFromIndex(self, index: QtCore.QModelIndex) -> 'QgsStyle': ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...


class QgsProjectStyleDatabaseProxyModel(QtCore.QSortFilterProxyModel):

    class Filter(int):
        FilterHideReadOnly = ... # type: QgsProjectStyleDatabaseProxyModel.Filter

    class Filters(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsProjectStyleDatabaseProxyModel.Filters', 'QgsProjectStyleDatabaseProxyModel.Filter']) -> None: ...

        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: 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 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: QgsUnitTypes.TemporalUnit) -> None: ...
    def timeStepUnit(self) -> QgsUnitTypes.TemporalUnit: ...
    def writeXml(self, document: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def setTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def temporalRange(self) -> QgsDateTimeRange: ...
    def reset(self) -> None: ...


class QgsProjectUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectUtils') -> None: ...

    @staticmethod
    def layerIsContainedInGroupLayer(project: QgsProject, layer: QgsMapLayer) -> bool: ...
    @staticmethod
    def updateLayerPath(project: QgsProject, oldPath: str, newPath: str) -> bool: ...
    @staticmethod
    def layersMatchingPath(project: QgsProject, path: str) -> typing.List[QgsMapLayer]: ...


class QgsProjectVersion(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, major: int, minor: int, sub: int, name: str = ...) -> None: ...
    @typing.overload
    def __init__(self, string: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProjectVersion') -> None: ...

    def __lt__(self, other: 'QgsProjectVersion') -> bool: ...
    def __le__(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: QgsProject) -> None: ...

    views3DListChanged: typing.ClassVar[QtCore.pyqtsignal]
    def rename3DView(self, oldTitle: str, newTitle: str) -> None: ...
    def remove3DView(self, name: str) -> None: ...
    def clear(self) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument) -> bool: ...


class QgsAbstractDbTableModel(QtGui.QStandardItemModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setSql(self, index: QtCore.QModelIndex, sql: str) -> None: ...
    def searchableColumn(self, column: int) -> bool: ...
    def defaultSearchColumn(self) -> int: ...
    def columns(self) -> typing.List[str]: ...


class QgsAbstractProviderConnection(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractProviderConnection') -> None: ...

    def setConfiguration(self, configuration: typing.Dict[str, typing.Any]) -> None: ...
    def configuration(self) -> typing.Dict[str, typing.Any]: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def icon(self) -> QtGui.QIcon: ...
    def remove(self, name: str) -> None: ...
    def store(self, name: str) -> None: ...


class QgsAbstractDatabaseProviderConnection(QgsAbstractProviderConnection):

    class GeometryColumnCapability(int):
        Z = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        M = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePart = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        Curves = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePoint = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SingleLineString = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability
        SinglePolygon = ... # type: QgsAbstractDatabaseProviderConnection.GeometryColumnCapability

    class Capability(int):
        CreateVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropRasterTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameVectorTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameRasterTable = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        CreateSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DropSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameSchema = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        ExecuteSql = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Vacuum = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Tables = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Schemas = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SqlLayers = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        TableExists = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        Spatial = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        CreateSpatialIndex = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SpatialIndexExists = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteSpatialIndex = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        DeleteFieldCascade = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        AddField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        ListFieldDomains = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RetrieveFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        SetFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        AddFieldDomain = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RenameField = ... # type: QgsAbstractDatabaseProviderConnection.Capability
        RetrieveRelationships = ... # type: QgsAbstractDatabaseProviderConnection.Capability

    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

    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) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
        def rowCount(self) -> int: ...
        def fetchedRowCount(self) -> int: ...
        def nextRow(self) -> typing.List[typing.Any]: ...
        def hasNextRow(self) -> bool: ...
        def rows(self, feedback: typing.Optional[QgsFeedback] = ...) -> typing.Any: ...
        def columns(self) -> typing.List[str]: ...

    class SqlVectorLayerOptions(PyQt5.sip.wrapper):

        disableSelectAtId = ... # type: bool
        filter = ... # type: str
        geometryColumn = ... # type: str
        layerName = ... # type: str
        primaryKeyColumns = ... # type: typing.Iterable[str]
        sql = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions') -> None: ...

    class TableProperty(PyQt5.sip.wrapper):

        class GeometryColumnType(PyQt5.sip.wrapper):

            crs = ... # type: QgsCoordinateReferenceSystem
            wkbType = ... # type: QgsWkbTypes.Type

            @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: str) -> None: ...
        def comment(self) -> str: ...
        def setFlags(self, flags: typing.Union['QgsAbstractDatabaseProviderConnection.TableFlags', 'QgsAbstractDatabaseProviderConnection.TableFlag']) -> None: ...
        def flags(self) -> 'QgsAbstractDatabaseProviderConnection.TableFlags': ...
        def crsList(self) -> typing.List[QgsCoordinateReferenceSystem]: ...
        def setPrimaryKeyColumns(self, primaryKeyColumns: typing.Iterable[str]) -> None: ...
        def primaryKeyColumns(self) -> typing.List[str]: ...
        def setGeometryColumn(self, geometryColumn: str) -> None: ...
        def geometryColumn(self) -> str: ...
        def setSchema(self, schema: str) -> None: ...
        def schema(self) -> str: ...
        def at(self, index: int) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
        def defaultName(self) -> str: ...
        def setGeometryColumnTypes(self, geometryColumnTypes: typing.Iterable['QgsAbstractDatabaseProviderConnection.TableProperty.GeometryColumnType']) -> None: ...
        def geometryColumnTypes(self) -> typing.List['QgsAbstractDatabaseProviderConnection.TableProperty.GeometryColumnType']: ...
        def addGeometryColumnType(self, type: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem) -> None: ...
        def setTableName(self, name: str) -> None: ...
        def tableName(self) -> str: ...
        def __repr__(self) -> typing.Any: ...

    class SpatialIndexOptions(PyQt5.sip.wrapper):

        geometryColumnName = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection.SpatialIndexOptions') -> None: ...

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsAbstractDatabaseProviderConnection.Capabilities', 'QgsAbstractDatabaseProviderConnection.Capability']) -> None: ...

        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: str) -> None: ...
    @typing.overload
    def __init__(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractDatabaseProviderConnection') -> None: ...

    def checkCapability(self, capability: 'QgsAbstractDatabaseProviderConnection.Capability') -> None: ...
    def searchLayerMetadata(self, searchContext: QgsMetadataSearchContext, searchString: str = ..., geographicExtent: QgsRectangle = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[QgsLayerMetadataProviderResult]: ...
    def queryBuilder(self) -> 'QgsProviderSqlQueryBuilder': ...
    def relationships(self, schema: str = ..., tableName: str = ...) -> typing.List[QgsWeakRelation]: ...
    def addFieldDomain(self, domain: 'QgsFieldDomain', schema: str) -> None: ...
    def setFieldDomainName(self, fieldName: str, schema: str, tableName: str, domainName: str) -> None: ...
    def fieldDomain(self, name: str) -> 'QgsFieldDomain': ...
    def supportedFieldDomainTypes(self) -> typing.List[Qgis.FieldDomainType]: ...
    def fieldDomainNames(self) -> typing.List[str]: ...
    def sqlDictionary(self) -> typing.Dict[Qgis.SqlKeywordCategory, typing.List[typing.List[str]]]: ...
    def providerKey(self) -> str: ...
    def nativeTypes(self) -> typing.List['QgsVectorDataProvider.NativeType']: ...
    def fields(self, schema: str, table: str) -> QgsFields: ...
    def schemas(self) -> typing.List[str]: ...
    def tables(self, schema: str = ..., flags: int = ...) -> typing.List['QgsAbstractDatabaseProviderConnection.TableProperty']: ...
    def table(self, schema: str, table: str) -> 'QgsAbstractDatabaseProviderConnection.TableProperty': ...
    def deleteSpatialIndex(self, schema: str, name: str, geometryColumn: str) -> None: ...
    def spatialIndexExists(self, schema: str, name: str, geometryColumn: str) -> bool: ...
    def createSpatialIndex(self, schema: str, name: str, options: 'QgsAbstractDatabaseProviderConnection.SpatialIndexOptions' = ...) -> None: ...
    def vacuum(self, schema: str, name: str) -> None: ...
    def execSql(self, sql: str, feedback: typing.Optional[QgsFeedback] = ...) -> 'QgsAbstractDatabaseProviderConnection.QueryResult': ...
    def sqlOptions(self, layerSource: str) -> 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions': ...
    def createSqlVectorLayer(self, options: 'QgsAbstractDatabaseProviderConnection.SqlVectorLayerOptions') -> QgsVectorLayer: ...
    def executeSql(self, sql: str, feedback: typing.Optional[QgsFeedback] = ...) -> typing.Any: ...
    def renameSchema(self, name: str, newName: str) -> None: ...
    def renameField(self, schema: str, tableName: str, name: str, newName: str) -> None: ...
    def addField(self, field: QgsField, schema: str, tableName: str) -> None: ...
    def deleteField(self, fieldName: str, schema: str, tableName: str, force: bool = ...) -> None: ...
    def dropSchema(self, name: str, force: bool = ...) -> None: ...
    def createSchema(self, name: str) -> None: ...
    def renameRasterTable(self, schema: str, name: str, newName: str) -> None: ...
    def renameVectorTable(self, schema: str, name: str, newName: str) -> None: ...
    def dropRasterTable(self, schema: str, name: str) -> None: ...
    def dropVectorTable(self, schema: str, name: str) -> None: ...
    def tableExists(self, schema: str, name: str) -> bool: ...
    def createVectorTable(self, schema: str, name: str, fields: QgsFields, wkbType: QgsWkbTypes.Type, srs: QgsCoordinateReferenceSystem, overwrite: bool, options: typing.Dict[str, typing.Any]) -> None: ...
    def tableUri(self, schema: str, name: str) -> str: ...
    def sqlLayerDefinitionCapabilities(self) -> Qgis.SqlLayerDefinitionCapabilities: ...
    def geometryColumnCapabilities(self) -> 'QgsAbstractDatabaseProviderConnection.GeometryColumnCapabilities': ...
    def 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: str, description: str, capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: str) -> None: ...
    @typing.overload
    def __init__(self, name: str, description: str, capabilities: typing.Union['QgsMeshDriverMetadata.MeshDriverCapabilities', 'QgsMeshDriverMetadata.MeshDriverCapability'], writeDatasetOnFileSuffix: str, writeMeshFrameOnFileSuffix: str, maxVerticesPerface: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMeshDriverMetadata') -> None: ...

    def maximumVerticesCountPerFace(self) -> int: ...
    def writeMeshFrameOnFileSuffix(self) -> str: ...
    def writeDatasetOnFileSuffix(self) -> str: ...
    def description(self) -> str: ...
    def name(self) -> str: ...
    def capabilities(self) -> 'QgsMeshDriverMetadata.MeshDriverCapabilities': ...


class QgsProviderMetadata(QtCore.QObject):

    class FilterType(int):
        FilterVector = ... # type: QgsProviderMetadata.FilterType
        FilterRaster = ... # type: QgsProviderMetadata.FilterType
        FilterMesh = ... # type: QgsProviderMetadata.FilterType
        FilterMeshDataset = ... # type: QgsProviderMetadata.FilterType
        FilterPointCloud = ... # type: QgsProviderMetadata.FilterType

    class ProviderCapability(int):
        FileBasedUris = ... # type: QgsProviderMetadata.ProviderCapability
        SaveLayerMetadata = ... # 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: str, description: str, library: 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: QgsAbstractProviderConnection, name: str) -> None: ...
    def deleteConnection(self, name: str) -> None: ...
    @typing.overload
    def createConnection(self, uri: str, configuration: typing.Dict[str, typing.Any]) -> QgsAbstractProviderConnection: ...
    @typing.overload
    def createConnection(self, name: str) -> QgsAbstractProviderConnection: ...
    def findConnection(self, name: str, cached: bool = ...) -> QgsAbstractProviderConnection: ...
    def dbConnections(self, cached: bool = ...) -> typing.Any: ...
    def connections(self, cached: bool = ...) -> typing.Any: ...
    def createTransaction(self, connString: str) -> QgsTransaction: ...
    def createDb(self, dbPath: str, errCause: str) -> bool: ...
    def saveLayerMetadata(self, uri: str, metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStyle(self, uri: str, errCause: str) -> str: ...
    def saveStyle(self, uri: str, qmlStyle: str, sldStyle: str, styleName: str, styleDescription: str, uiFileContent: str, useAsDefault: bool, errCause: str) -> bool: ...
    def deleteStyleById(self, uri: str, styleId: str, errCause: str) -> bool: ...
    def getStyleById(self, uri: str, styleId: str, errCause: str) -> str: ...
    def styleExists(self, uri: str, styleId: str) -> typing.Tuple[bool, str]: ...
    def listStyles(self, uri: str, ids: typing.Iterable[str], names: typing.Iterable[str], descriptions: typing.Iterable[str], errCause: str) -> int: ...
    def dataItemProviders(self) -> typing.List[QgsDataItemProvider]: ...
    def encodeUri(self, parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, uri: str) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self) -> typing.List[typing.Tuple[str, str]]: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, fileName: str, driverName: str, crs: QgsCoordinateReferenceSystem) -> bool: ...
    @typing.overload
    def createMeshData(self, mesh: QgsMesh, uri: str, crs: QgsCoordinateReferenceSystem) -> bool: ...
    def createRasterDataProvider(self, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def createDatabase(self, uri: str) -> typing.Tuple[bool, str]: ...
    @staticmethod
    def boolParameter(uri: typing.Dict[str, typing.Any], parameter: str, defaultValue: bool = ...) -> bool: ...
    @staticmethod
    def setBoolParameter(uri: typing.Dict[str, typing.Any], parameter: str, value: typing.Any) -> None: ...
    def createProvider(self, uri: str, options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> QgsDataProvider: ...
    def querySublayers(self, uri: str, flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def sidecarFilesForUri(self, uri: str) -> typing.List[str]: ...
    def uriIsBlocklisted(self, uri: str) -> bool: ...
    def validLayerTypesForUri(self, uri: str) -> typing.List[QgsMapLayerType]: ...
    def priorityForUri(self, uri: str) -> int: ...
    def meshDriversMetadata(self) -> typing.List[QgsMeshDriverMetadata]: ...
    def filters(self, type: 'QgsProviderMetadata.FilterType') -> str: ...
    def cleanupProvider(self) -> None: ...
    def initProvider(self) -> None: ...
    def library(self) -> str: ...
    def supportedLayerTypes(self) -> typing.List[QgsMapLayerType]: ...
    def providerCapabilities(self) -> 'QgsProviderMetadata.ProviderCapabilities': ...
    def capabilities(self) -> 'QgsProviderMetadata.ProviderMetadataCapabilities': ...
    def icon(self) -> QtGui.QIcon: ...
    def description(self) -> str: ...
    def key(self) -> str: ...


class QgsProviderRegistry(PyQt5.sip.wrapper):

    class WidgetMode(int):
        None_ = ... # type: QgsProviderRegistry.WidgetMode
        Embedded = ... # type: QgsProviderRegistry.WidgetMode
        Manager = ... # type: QgsProviderRegistry.WidgetMode

    class ProviderCandidateDetails(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, metadata: QgsProviderMetadata, layerTypes: typing.Iterable[QgsMapLayerType]) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.ProviderCandidateDetails') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def layerTypes(self) -> typing.List[QgsMapLayerType]: ...
        def metadata(self) -> QgsProviderMetadata: ...

    class UnusableUriDetails(PyQt5.sip.wrapper):

        detailedWarning = ... # type: str
        layerTypes = ... # type: typing.Iterable[QgsMapLayerType]
        uri = ... # type: str
        warning = ... # type: str

        @typing.overload
        def __init__(self, uri: str = ..., warning: str = ..., layerTypes: typing.Iterable[QgsMapLayerType] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.UnusableUriDetails') -> None: ...

        def __repr__(self) -> typing.Any: ...

    class UnusableUriHandlerInterface(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderRegistry.UnusableUriHandlerInterface') -> None: ...

        def details(self, uri: str) -> 'QgsProviderRegistry.UnusableUriDetails': ...
        def matchesUri(self, uri: str) -> bool: ...

    def __init__(self, a0: 'QgsProviderRegistry') -> None: ...

    def registerProvider(self, providerMetadata: QgsProviderMetadata) -> bool: ...
    def registerGuis(self, widget: QtWidgets.QWidget) -> None: ...
    def protocolDrivers(self) -> str: ...
    def directoryDrivers(self) -> str: ...
    def databaseDrivers(self) -> str: ...
    def filePointCloudFilters(self) -> str: ...
    def fileMeshDatasetFilters(self) -> str: ...
    def fileMeshFilters(self) -> str: ...
    def fileRasterFilters(self) -> str: ...
    def fileVectorFilters(self) -> str: ...
    def querySublayers(self, uri: str, flags: typing.Union[Qgis.SublayerQueryFlags, Qgis.SublayerQueryFlag] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List['QgsProviderSublayerDetails']: ...
    def uriIsBlocklisted(self, uri: str) -> bool: ...
    def shouldDeferUriForOtherProviders(self, uri: str, providerKey: str) -> bool: ...
    def handleUnusableUri(self, uri: str) -> typing.Tuple[bool, 'QgsProviderRegistry.UnusableUriDetails']: ...
    def registerUnusableUriHandler(self, handler: 'QgsProviderRegistry.UnusableUriHandlerInterface') -> bool: ...
    def preferredProvidersForUri(self, uri: str) -> typing.List['QgsProviderRegistry.ProviderCandidateDetails']: ...
    def providersForLayerType(self, type: QgsMapLayerType) -> typing.Set[str]: ...
    def providerMetadata(self, providerKey: str) -> QgsProviderMetadata: ...
    def providerList(self) -> typing.List[str]: ...
    def createProviderLibrary(self, providerKey: str) -> QtCore.QLibrary: ...
    def function(self, providerKey: str, functionName: str) -> PyQt5.sip.voidptr: ...
    def createTransaction(self, providerKey: str, connString: str) -> QgsTransaction: ...
    def createDb(self, providerKey: str, dbPath: str, errCause: str) -> bool: ...
    def saveLayerMetadata(self, providerKey: str, uri: str, metadata: QgsLayerMetadata) -> typing.Tuple[bool, str]: ...
    def loadStyle(self, providerKey: str, uri: str, errCause: str) -> str: ...
    def saveStyle(self, providerKey: str, uri: str, qmlStyle: str, sldStyle: str, styleName: str, styleDescription: str, uiFileContent: str, useAsDefault: bool, errCause: str) -> bool: ...
    def deleteStyleById(self, providerKey: str, uri: str, styleId: str, errCause: str) -> bool: ...
    def getStyleById(self, providerKey: str, uri: str, styleId: str, errCause: str) -> str: ...
    def styleExists(self, providerKey: str, uri: str, styleId: str) -> typing.Tuple[bool, str]: ...
    def listStyles(self, providerKey: str, uri: str, ids: typing.Iterable[str], names: typing.Iterable[str], descriptions: typing.Iterable[str], errCause: str) -> int: ...
    def dataItemProviders(self, providerKey: str) -> typing.List[QgsDataItemProvider]: ...
    def createSelectionWidget(self, providerKey: str, parent: typing.Optional[QtWidgets.QWidget] = ..., fl: typing.Union[QtCore.Qt.WindowFlags, QtCore.Qt.WindowType] = ..., widgetMode: 'QgsProviderRegistry.WidgetMode' = ...) -> QtWidgets.QWidget: ...
    def encodeUri(self, providerKey: str, parts: typing.Dict[str, typing.Any]) -> str: ...
    def decodeUri(self, providerKey: str, uri: str) -> typing.Dict[str, typing.Any]: ...
    def pyramidResamplingMethods(self, providerKey: str) -> typing.List[typing.Tuple[str, str]]: ...
    def createRasterDataProvider(self, providerKey: str, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def providerCapabilities(self, providerKey: str) -> int: ...
    def createProvider(self, providerKey: str, dataSource: str, options: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> QgsDataProvider: ...
    def setLibraryDirectory(self, path: QtCore.QDir) -> None: ...
    def libraryDirectory(self) -> QtCore.QDir: ...
    def pluginList(self, asHtml: bool = ...) -> str: ...
    def library(self, providerKey: str) -> str: ...
    @staticmethod
    def instance(pluginPath: str = ...) -> 'QgsProviderRegistry': ...


class QgsProviderSqlQueryBuilder(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsProviderSqlQueryBuilder') -> None: ...

    def quoteIdentifier(self, identifier: str) -> str: ...
    def createLimitQueryForTable(self, schema: str, name: str, limit: int = ...) -> str: ...


class QgsProviderSublayerDetails(PyQt5.sip.wrapper):

    class LayerOptions(PyQt5.sip.wrapper):

        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: str) -> None: ...
    def geometryColumnName(self) -> str: ...
    def setWkbType(self, type: QgsWkbTypes.Type) -> None: ...
    def wkbType(self) -> QgsWkbTypes.Type: ...
    def setFeatureCount(self, count: int) -> None: ...
    def featureCount(self) -> int: ...
    def setPath(self, path: typing.Iterable[str]) -> None: ...
    def path(self) -> typing.List[str]: ...
    def setDriverName(self, driver: str) -> None: ...
    def driverName(self) -> str: ...
    def setFlags(self, newFlags: typing.Union[Qgis.SublayerFlags, Qgis.SublayerFlag]) -> None: ...
    def flags(self) -> Qgis.SublayerFlags: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def toLayer(self, options: 'QgsProviderSublayerDetails.LayerOptions') -> QgsMapLayer: ...
    def setUri(self, uri: str) -> None: ...
    def uri(self) -> str: ...
    def setType(self, type: QgsMapLayerType) -> None: ...
    def type(self) -> QgsMapLayerType: ...
    def setProviderKey(self, key: str) -> None: ...
    def providerKey(self) -> str: ...


class QgsProviderSublayerModel(QtCore.QAbstractItemModel):

    class Column(int):
        Name = ... # type: QgsProviderSublayerModel.Column
        Description = ... # type: QgsProviderSublayerModel.Column

    class Role(int):
        ProviderKey = ... # type: QgsProviderSublayerModel.Role
        LayerType = ... # type: QgsProviderSublayerModel.Role
        Uri = ... # type: QgsProviderSublayerModel.Role
        Name = ... # type: QgsProviderSublayerModel.Role
        Description = ... # type: QgsProviderSublayerModel.Role
        Path = ... # type: QgsProviderSublayerModel.Role
        FeatureCount = ... # type: QgsProviderSublayerModel.Role
        WkbType = ... # type: QgsProviderSublayerModel.Role
        GeometryColumnName = ... # type: QgsProviderSublayerModel.Role
        LayerNumber = ... # type: QgsProviderSublayerModel.Role
        IsNonLayerItem = ... # type: QgsProviderSublayerModel.Role
        NonLayerItemType = ... # type: QgsProviderSublayerModel.Role
        Flags = ... # type: QgsProviderSublayerModel.Role

    class NonLayerItem(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsProviderSublayerModel.NonLayerItem') -> None: ...

        def __repr__(self) -> typing.Any: ...
        def __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: str) -> None: ...
        def uri(self) -> str: ...
        def setDescription(self, description: str) -> None: ...
        def description(self) -> str: ...
        def setName(self, name: str) -> None: ...
        def name(self) -> str: ...
        def setType(self, type: str) -> None: ...
        def type(self) -> str: ...

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def rowCount(self, parent: QtCore.QModelIndex) -> int: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def addNonLayerItem(self, item: 'QgsProviderSublayerModel.NonLayerItem') -> None: ...
    def indexToNonLayerItem(self, index: QtCore.QModelIndex) -> 'QgsProviderSublayerModel.NonLayerItem': ...
    def indexToSublayer(self, index: QtCore.QModelIndex) -> QgsProviderSublayerDetails: ...
    def sublayerDetails(self) -> typing.List[QgsProviderSublayerDetails]: ...
    def setSublayerDetails(self, details: typing.Iterable[QgsProviderSublayerDetails]) -> None: ...


class QgsProviderSublayerProxyModel(QtCore.QSortFilterProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def lessThan(self, source_left: QtCore.QModelIndex, source_right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def setIncludeEmptyLayers(self, include: bool) -> None: ...
    def includeEmptyLayers(self) -> bool: ...
    def setIncludeSystemTables(self, include: bool) -> None: ...
    def includeSystemTables(self) -> bool: ...
    def setFilterString(self, filter: str) -> None: ...
    def filterString(self) -> str: ...


class QgsProviderSublayerTask(QgsTask):

    def __init__(self, uri: 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: str) -> str: ...
    @staticmethod
    def sublayerDetailsAreIncomplete(details: typing.Iterable[QgsProviderSublayerDetails], flags: typing.Union['QgsProviderUtils.SublayerCompletenessFlags', 'QgsProviderUtils.SublayerCompletenessFlag'] = ...) -> bool: ...


class QgsArcGisPortalUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsArcGisPortalUtils') -> None: ...

    @typing.overload
    @staticmethod
    def retrieveGroupItemsOfType(contentUrl: str, groupId: str, authcfg: str, itemTypes: typing.Iterable[int], requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupItemsOfType(contentUrl: str, groupId: str, authcfg: str, itemTypes: typing.Iterable[int], requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: str, groupId: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveGroupContent(contentUrl: str, groupId: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ..., pageSize: int = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: str, user: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserGroups(communityUrl: str, user: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: str, user: str, authcfg: str, requestHeaders: QgsHttpHeaders = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.Dict[str, typing.Any], str, str]: ...
    @typing.overload
    @staticmethod
    def retrieveUserInfo(communityUrl: str, user: str, authcfg: str, requestHeaders: typing.Dict[str, typing.Any], feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.Dict[str, typing.Any], str, str]: ...


class QgsArcGisRestContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsArcGisRestContext') -> None: ...

    def objectIdFieldName(self) -> str: ...
    def setObjectIdFieldName(self, name: str) -> None: ...
    def timeZone(self) -> QtCore.QTimeZone: ...
    def setTimeZone(self, zone: QtCore.QTimeZone) -> None: ...


class QgsArcGisRestUtils(PyQt5.sip.wrapper):

    class FeatureToJsonFlag(int):
        IncludeGeometry = ... # type: QgsArcGisRestUtils.FeatureToJsonFlag
        IncludeNonObjectIdAttributes = ... # type: QgsArcGisRestUtils.FeatureToJsonFlag

    class FeatureToJsonFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag']) -> None: ...

        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: str) -> Qgis.ArcGisRestServiceType: ...
    @staticmethod
    def fieldDefinitionToJson(field: QgsField) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def variantToAttributeValue(variant: typing.Any, expectedType: QtCore.QVariant.Type, context: QgsArcGisRestContext) -> typing.Any: ...
    @staticmethod
    def featureToJson(feature: QgsFeature, context: QgsArcGisRestContext, crs: QgsCoordinateReferenceSystem = ..., flags: typing.Union['QgsArcGisRestUtils.FeatureToJsonFlags', 'QgsArcGisRestUtils.FeatureToJsonFlag'] = ...) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def crsToJson(crs: QgsCoordinateReferenceSystem) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def geometryToJson(geometry: QgsGeometry, context: QgsArcGisRestContext, crs: QgsCoordinateReferenceSystem = ...) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def convertDateTime(value: typing.Any) -> QtCore.QDateTime: ...
    @staticmethod
    def convertFillStyle(style: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def convertLineStyle(style: str) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def convertColor(data: typing.Any) -> QtGui.QColor: ...
    @staticmethod
    def convertLabelingExpression(string: str) -> str: ...
    @staticmethod
    def convertLabeling(data: typing.Iterable[typing.Any]) -> QgsAbstractVectorLayerLabeling: ...
    @staticmethod
    def convertRenderer(rendererData: typing.Dict[str, typing.Any]) -> 'QgsFeatureRenderer': ...
    @staticmethod
    def convertSymbol(definition: typing.Dict[str, typing.Any]) -> 'QgsSymbol': ...
    @staticmethod
    def convertSpatialReference(spatialReferenceMap: typing.Dict[str, typing.Any]) -> QgsCoordinateReferenceSystem: ...
    @staticmethod
    def convertGeometry(geometry: typing.Dict[str, typing.Any], esriGeometryType: str, hasM: bool, hasZ: bool) -> typing.Tuple[QgsAbstractGeometry, QgsCoordinateReferenceSystem]: ...
    @staticmethod
    def convertGeometryType(type: str) -> QgsWkbTypes.Type: ...
    @staticmethod
    def convertFieldType(type: str) -> QtCore.QVariant.Type: ...


class QgsMemoryProviderUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMemoryProviderUtils') -> None: ...

    @staticmethod
    def createMemoryLayer(name: str, fields: QgsFields, geometryType: QgsWkbTypes.Type = ..., crs: QgsCoordinateReferenceSystem = ...) -> QgsVectorLayer: ...


class QgsRasterResampler(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def clone(self) -> 'QgsRasterResampler': ...
    def type(self) -> str: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...


class QgsRasterResamplerV2(QgsRasterResampler):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterResamplerV2') -> None: ...

    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...


class QgsBilinearRasterResampler(QgsRasterResamplerV2):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsBilinearRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def clone(self) -> 'QgsBilinearRasterResampler': ...
    def type(self) -> str: ...
    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...


class QgsRasterInterface(PyQt5.sip.wrapper):

    class Capability(int):
        NoCapabilities = ... # type: QgsRasterInterface.Capability
        Size = ... # type: QgsRasterInterface.Capability
        Create = ... # type: QgsRasterInterface.Capability
        Remove = ... # type: QgsRasterInterface.Capability
        BuildPyramids = ... # type: QgsRasterInterface.Capability
        Identify = ... # type: QgsRasterInterface.Capability
        IdentifyValue = ... # type: QgsRasterInterface.Capability
        IdentifyText = ... # type: QgsRasterInterface.Capability
        IdentifyHtml = ... # type: QgsRasterInterface.Capability
        IdentifyFeature = ... # type: QgsRasterInterface.Capability
        Prefetch = ... # type: QgsRasterInterface.Capability

    def __init__(self, input: typing.Optional['QgsRasterInterface'] = ...) -> None: ...

    def initStatistics(self, statistics: 'QgsRasterBandStats', bandNo: int, stats: int = ..., boundingBox: QgsRectangle = ..., binCount: int = ...) -> None: ...
    def initHistogram(self, histogram: 'QgsRasterHistogram', bandNo: int, binCount: int, minimum: typing.Any = ..., maximum: typing.Any = ..., boundingBox: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ...) -> None: ...
    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def cumulativeCut(self, bandNo: int, lowerCount: float, upperCount: float, extent: QgsRectangle = ..., sampleSize: int = ...) -> typing.Tuple[float, float]: ...
    def hasHistogram(self, bandNo: int, binCount: int, minimum: typing.Any = ..., maximum: typing.Any = ..., extent: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ...) -> bool: ...
    def histogram(self, bandNo: int, binCount: int = ..., minimum: typing.Any = ..., maximum: typing.Any = ..., extent: QgsRectangle = ..., sampleSize: int = ..., includeOutOfRange: bool = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterHistogram': ...
    def hasStatistics(self, bandNo: int, stats: int = ..., extent: QgsRectangle = ..., sampleSize: int = ...) -> bool: ...
    def bandStatistics(self, bandNo: int, stats: int = ..., extent: QgsRectangle = ..., sampleSize: int = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBandStats': ...
    def sourceInput(self) -> 'QgsRasterInterface': ...
    def setOn(self, on: bool) -> None: ...
    def on(self) -> bool: ...
    def input(self) -> 'QgsRasterInterface': ...
    def setInput(self, input: 'QgsRasterInterface') -> bool: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def displayBandName(self, bandNumber: int) -> str: ...
    def colorInterpretationName(self, bandNumber: int) -> str: ...
    def generateBandName(self, bandNumber: int) -> str: ...
    def ySize(self) -> int: ...
    def xSize(self) -> int: ...
    def yBlockSize(self) -> int: ...
    def xBlockSize(self) -> int: ...
    def bandCount(self) -> int: ...
    def dataTypeSize(self, bandNo: int) -> int: ...
    def extent(self) -> QgsRectangle: ...
    def sourceDataType(self, bandNo: int) -> Qgis.DataType: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def capabilitiesString(self) -> str: ...
    def capabilities(self) -> int: ...
    def clone(self) -> 'QgsRasterInterface': ...


class QgsBrightnessContrastFilter(QgsRasterInterface):

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def gamma(self) -> float: ...
    def setGamma(self, gamma: float) -> None: ...
    def contrast(self) -> int: ...
    def setContrast(self, contrast: int) -> None: ...
    def brightness(self) -> int: ...
    def setBrightness(self, brightness: int) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsBrightnessContrastFilter': ...


class QgsContrastEnhancementFunction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, f: 'QgsContrastEnhancementFunction') -> None: ...

    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...
    def isValueInDisplayableRange(self, value: float) -> bool: ...
    def enhance(self, value: float) -> int: ...


class QgsClipToMinMaxEnhancement(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsClipToMinMaxEnhancement') -> None: ...

    def isValueInDisplayableRange(self, a0: float) -> bool: ...
    def enhance(self, a0: float) -> int: ...


class QgsRasterShaderFunction(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, minimumValue: float = ..., maximumValue: float = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterShaderFunction') -> None: ...

    def setLabelPrecision(self, labelPrecision: int) -> None: ...
    def labelPrecision(self) -> int: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def maximumValue(self) -> float: ...
    def minimumValue(self) -> float: ...
    def minimumMaximumRange(self) -> float: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...


class QgsColorRampShader(QgsRasterShaderFunction):

    class ClassificationMode(int):
        Continuous = ... # type: QgsColorRampShader.ClassificationMode
        EqualInterval = ... # type: QgsColorRampShader.ClassificationMode
        Quantile = ... # type: QgsColorRampShader.ClassificationMode

    class Type(int):
        Interpolated = ... # type: QgsColorRampShader.Type
        Discrete = ... # type: QgsColorRampShader.Type
        Exact = ... # type: QgsColorRampShader.Type

    class ColorRampItem(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: str
        value = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, val: float, col: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], lbl: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsColorRampShader.ColorRampItem') -> None: ...

        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: 'QgsColorRampShader.Type' = ..., classificationMode: 'QgsColorRampShader.ClassificationMode' = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsColorRampShader') -> None: ...

    def __ne__(self, other: object): ...
    def setLegendSettings(self, settings: QgsColorRampLegendNodeSettings) -> None: ...
    def legendSettings(self) -> QgsColorRampLegendNodeSettings: ...
    def clip(self) -> bool: ...
    def setClip(self, clip: bool) -> None: ...
    def classificationMode(self) -> 'QgsColorRampShader.ClassificationMode': ...
    def setClassificationMode(self, classificationMode: 'QgsColorRampShader.ClassificationMode') -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext = ...) -> QtXml.QDomElement: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def classifyColorRampV2(self, band: int = ..., extent: QgsRectangle = ..., input: typing.Optional[QgsRasterInterface] = ...) -> None: ...
    def classifyColorRamp(self, classes: int = ..., band: int = ..., extent: QgsRectangle = ..., input: typing.Optional[QgsRasterInterface] = ...) -> None: ...
    def setSourceColorRamp(self, colorramp: QgsColorRamp) -> None: ...
    def createColorRamp(self) -> QgsColorRamp: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def setColorRampType(self, colorRampType: 'QgsColorRampShader.Type') -> None: ...
    @typing.overload
    def setColorRampType(self, type: str) -> None: ...
    def setColorRampItemList(self, list: typing.Iterable['QgsColorRampShader.ColorRampItem']) -> None: ...
    def colorRampTypeAsQString(self) -> str: ...
    def colorRampType(self) -> 'QgsColorRampShader.Type': ...
    def colorRampItemList(self) -> typing.List['QgsColorRampShader.ColorRampItem']: ...
    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: QgsContrastEnhancementFunction) -> None: ...
    def setContrastEnhancementAlgorithm(self, algorithm: 'QgsContrastEnhancement.ContrastEnhancementAlgorithm', generateTable: bool = ...) -> None: ...
    def isValueInDisplayableRange(self, value: float) -> bool: ...
    def enhanceContrast(self, value: float) -> int: ...
    def contrastEnhancementAlgorithm(self) -> 'QgsContrastEnhancement.ContrastEnhancementAlgorithm': ...
    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...
    @staticmethod
    def contrastEnhancementAlgorithmFromString(contrastEnhancementString: str) -> 'QgsContrastEnhancement.ContrastEnhancementAlgorithm': ...
    @staticmethod
    def contrastEnhancementAlgorithmString(algorithm: 'QgsContrastEnhancement.ContrastEnhancementAlgorithm') -> str: ...
    @staticmethod
    def minimumValuePossible(dataType: Qgis.DataType) -> float: ...
    @staticmethod
    def maximumValuePossible(dataType: Qgis.DataType) -> float: ...


class QgsCubicRasterResampler(QgsRasterResamplerV2):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCubicRasterResampler') -> None: ...

    def tileBufferPixels(self) -> int: ...
    def type(self) -> str: ...
    def resample(self, srcImage: QtGui.QImage, dstImage: QtGui.QImage) -> None: ...
    def resampleV2(self, source: QtGui.QImage, size: QtCore.QSize) -> QtGui.QImage: ...
    def clone(self) -> 'QgsCubicRasterResampler': ...


class QgsExifTools(PyQt5.sip.wrapper):

    class GeoTagDetails(PyQt5.sip.wrapper):

        elevation = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsExifTools.GeoTagDetails') -> None: ...

    staticMetaObject = ... # type: QtCore.QMetaObject

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsExifTools') -> None: ...

    @staticmethod
    def geoTagImage(imagePath: str, location: QgsPointXY, details: 'QgsExifTools.GeoTagDetails' = ...) -> bool: ...
    @staticmethod
    def hasGeoTag(imagePath: str) -> bool: ...
    @staticmethod
    def getGeoTag(imagePath: str) -> typing.Tuple[QgsPoint, bool]: ...
    @staticmethod
    def readTag(imagePath: str, key: str) -> typing.Any: ...
    @staticmethod
    def readTags(imagePath: str) -> typing.Dict[str, typing.Any]: ...


class QgsRasterRenderer(QgsRasterInterface):

    NODATA_COLOR = ... # type: int

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ..., type: str = ...) -> None: ...

    def renderColorForNodataPixel(self) -> int: ...
    def _writeXml(self, doc: QtXml.QDomDocument, rasterRendererElem: QtXml.QDomElement) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def setMinMaxOrigin(self, origin: 'QgsRasterMinMaxOrigin') -> None: ...
    def minMaxOrigin(self) -> 'QgsRasterMinMaxOrigin': ...
    def usesBands(self) -> typing.List[int]: ...
    def copyCommonProperties(self, other: 'QgsRasterRenderer', copyMinMaxOrigin: bool = ...) -> None: ...
    def readXml(self, rendererElem: QtXml.QDomElement) -> None: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def alphaBand(self) -> int: ...
    def setAlphaBand(self, band: int) -> None: ...
    def rasterTransparency(self) -> 'QgsRasterTransparency': ...
    def setRasterTransparency(self, t: 'QgsRasterTransparency') -> None: ...
    def setNodataColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def nodataColor(self) -> QtGui.QColor: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def usesTransparency(self) -> bool: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def type(self) -> str: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterRenderer': ...


class QgsHillshadeRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int, lightAzimuth: float, lightAltitude: float) -> None: ...

    def setMultiDirectional(self, isMultiDirectional: bool) -> None: ...
    def setZFactor(self, zfactor: float) -> None: ...
    def setAltitude(self, altitude: float) -> None: ...
    def setAzimuth(self, azimuth: float) -> None: ...
    def multiDirectional(self) -> bool: ...
    def zFactor(self) -> float: ...
    def altitude(self) -> float: ...
    def azimuth(self) -> float: ...
    def setBand(self, bandNo: int) -> None: ...
    def band(self) -> int: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsHillshadeRenderer': ...


class QgsHueSaturationFilter(QgsRasterInterface):

    class GrayscaleMode(int):
        GrayscaleOff = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleLightness = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleLuminosity = ... # type: QgsHueSaturationFilter.GrayscaleMode
        GrayscaleAverage = ... # type: QgsHueSaturationFilter.GrayscaleMode

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def colorizeStrength(self) -> int: ...
    def setColorizeStrength(self, colorizeStrength: int) -> None: ...
    def colorizeColor(self) -> QtGui.QColor: ...
    def setColorizeColor(self, colorizeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def colorizeOn(self) -> bool: ...
    def setColorizeOn(self, colorizeOn: bool) -> None: ...
    def grayscaleMode(self) -> 'QgsHueSaturationFilter.GrayscaleMode': ...
    def setGrayscaleMode(self, grayscaleMode: 'QgsHueSaturationFilter.GrayscaleMode') -> None: ...
    def invertColors(self) -> bool: ...
    def setInvertColors(self, invertColors: bool) -> None: ...
    def saturation(self) -> int: ...
    def setSaturation(self, saturation: int) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsHueSaturationFilter': ...


class QgsLinearMinMaxEnhancement(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLinearMinMaxEnhancement') -> None: ...

    def enhance(self, a0: float) -> int: ...


class QgsLinearMinMaxEnhancementWithClip(QgsContrastEnhancementFunction):

    @typing.overload
    def __init__(self, a0: Qgis.DataType, a1: float, a2: float) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLinearMinMaxEnhancementWithClip') -> None: ...

    def isValueInDisplayableRange(self, a0: float) -> bool: ...
    def enhance(self, a0: float) -> int: ...


class QgsMultiBandColorRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, redBand: int, greenBand: int, blueBand: int, redEnhancement: typing.Optional[QgsContrastEnhancement] = ..., greenEnhancement: typing.Optional[QgsContrastEnhancement] = ..., blueEnhancement: typing.Optional[QgsContrastEnhancement] = ...) -> None: ...

    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usesBands(self) -> typing.List[int]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setBlueContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def blueContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setGreenContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def greenContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setRedContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def redContrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setBlueBand(self, band: int) -> None: ...
    def blueBand(self) -> int: ...
    def setGreenBand(self, band: int) -> None: ...
    def greenBand(self) -> int: ...
    def setRedBand(self, band: int) -> None: ...
    def redBand(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsMultiBandColorRenderer': ...


class QgsPalettedRasterRenderer(QgsRasterRenderer):

    class Class(PyQt5.sip.wrapper):

        color = ... # type: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]
        label = ... # type: str
        value = ... # type: float

        @typing.overload
        def __init__(self, value: float, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., label: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPalettedRasterRenderer.Class') -> None: ...

    def __init__(self, input: QgsRasterInterface, bandNumber: int, classes: typing.Iterable['QgsPalettedRasterRenderer.Class']) -> None: ...

    @staticmethod
    def classDataFromRaster(raster: QgsRasterInterface, bandNumber: int, ramp: typing.Optional[QgsColorRamp] = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def classDataToString(classes: typing.Iterable['QgsPalettedRasterRenderer.Class']) -> str: ...
    @staticmethod
    def classDataFromFile(path: str) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def classDataFromString(string: str) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    @staticmethod
    def colorTableToClassData(table: typing.Iterable[QgsColorRampShader.ColorRampItem]) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def band(self) -> int: ...
    def setLabel(self, idx: float, label: str) -> None: ...
    def label(self, idx: float) -> str: ...
    def classes(self) -> typing.List['QgsPalettedRasterRenderer.Class']: ...
    def nColors(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterBlock': ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsPalettedRasterRenderer': ...


class QgsRaster(PyQt5.sip.wrapper):

    class DrawingStyle(int):
        UndefinedDrawingStyle = ... # type: QgsRaster.DrawingStyle
        SingleBandGray = ... # type: QgsRaster.DrawingStyle
        SingleBandPseudoColor = ... # type: QgsRaster.DrawingStyle
        PalettedColor = ... # type: QgsRaster.DrawingStyle
        PalettedSingleBandGray = ... # type: QgsRaster.DrawingStyle
        PalettedSingleBandPseudoColor = ... # type: QgsRaster.DrawingStyle
        PalettedMultiBandColor = ... # type: QgsRaster.DrawingStyle
        MultiBandSingleBandGray = ... # type: QgsRaster.DrawingStyle
        MultiBandSingleBandPseudoColor = ... # type: QgsRaster.DrawingStyle
        MultiBandColor = ... # type: QgsRaster.DrawingStyle
        SingleBandColorDataStyle = ... # type: QgsRaster.DrawingStyle

    class RasterPyramidsFormat(int):
        PyramidsGTiff = ... # type: QgsRaster.RasterPyramidsFormat
        PyramidsInternal = ... # type: QgsRaster.RasterPyramidsFormat
        PyramidsErdas = ... # type: QgsRaster.RasterPyramidsFormat

    class RasterBuildPyramids(int):
        PyramidsFlagNo = ... # type: QgsRaster.RasterBuildPyramids
        PyramidsFlagYes = ... # type: QgsRaster.RasterBuildPyramids
        PyramidsCopyExisting = ... # type: QgsRaster.RasterBuildPyramids

    class IdentifyFormat(int):
        IdentifyFormatUndefined = ... # type: QgsRaster.IdentifyFormat
        IdentifyFormatValue = ... # type: QgsRaster.IdentifyFormat
        IdentifyFormatText = ... # type: QgsRaster.IdentifyFormat
        IdentifyFormatHtml = ... # type: QgsRaster.IdentifyFormat
        IdentifyFormatFeature = ... # type: QgsRaster.IdentifyFormat

    class ColorInterpretation(int):
        UndefinedColorInterpretation = ... # type: QgsRaster.ColorInterpretation
        GrayIndex = ... # type: QgsRaster.ColorInterpretation
        PaletteIndex = ... # type: QgsRaster.ColorInterpretation
        RedBand = ... # type: QgsRaster.ColorInterpretation
        GreenBand = ... # type: QgsRaster.ColorInterpretation
        BlueBand = ... # type: QgsRaster.ColorInterpretation
        AlphaBand = ... # type: QgsRaster.ColorInterpretation
        HueBand = ... # type: QgsRaster.ColorInterpretation
        SaturationBand = ... # type: QgsRaster.ColorInterpretation
        LightnessBand = ... # type: QgsRaster.ColorInterpretation
        CyanBand = ... # type: QgsRaster.ColorInterpretation
        MagentaBand = ... # type: QgsRaster.ColorInterpretation
        YellowBand = ... # type: QgsRaster.ColorInterpretation
        BlackBand = ... # type: QgsRaster.ColorInterpretation
        YCbCr_YBand = ... # type: QgsRaster.ColorInterpretation
        YCbCr_CbBand = ... # type: QgsRaster.ColorInterpretation
        YCbCr_CrBand = ... # type: QgsRaster.ColorInterpretation
        ContinuousPalette = ... # type: QgsRaster.ColorInterpretation

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRaster') -> None: ...

    @staticmethod
    def representableValue(value: float, dataType: Qgis.DataType) -> float: ...


class QgsRasterBandStats(PyQt5.sip.wrapper):

    class Stats(int):
        None_ = ... # type: QgsRasterBandStats.Stats
        Min = ... # type: QgsRasterBandStats.Stats
        Max = ... # type: QgsRasterBandStats.Stats
        Range = ... # type: QgsRasterBandStats.Stats
        Sum = ... # type: QgsRasterBandStats.Stats
        Mean = ... # type: QgsRasterBandStats.Stats
        StdDev = ... # type: QgsRasterBandStats.Stats
        SumOfSquares = ... # type: QgsRasterBandStats.Stats
        All = ... # type: QgsRasterBandStats.Stats

    bandNumber = ... # type: int
    elementCount = ... # type: int
    extent = ... # type: QgsRectangle
    height = ... # type: int
    maximumValue = ... # type: float
    mean = ... # type: float
    minimumValue = ... # type: float
    range = ... # type: float
    statsGathered = ... # type: int
    stdDev = ... # type: float
    sum = ... # type: float
    sumOfSquares = ... # type: float
    width = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterBandStats') -> None: ...

    def contains(self, s: 'QgsRasterBandStats') -> bool: ...


class QgsRasterBlock(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, dataType: Qgis.DataType, width: int, height: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterBlock') -> None: ...

    def height(self) -> int: ...
    def width(self) -> int: ...
    @staticmethod
    def subRect(extent: QgsRectangle, width: int, height: int, subExtent: QgsRectangle) -> QtCore.QRect: ...
    def toString(self) -> str: ...
    def setError(self, error: QgsError) -> None: ...
    def error(self) -> QgsError: ...
    def applyScaleOffset(self, scale: float, offset: float) -> None: ...
    def applyNoDataValues(self, rangeList: typing.Iterable['QgsRasterRange']) -> None: ...
    def setImage(self, image: QtGui.QImage) -> bool: ...
    def image(self) -> QtGui.QImage: ...
    def convert(self, destDataType: Qgis.DataType) -> bool: ...
    @staticmethod
    def printValue(value: float) -> str: ...
    def setData(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], offset: int = ...) -> None: ...
    def data(self) -> QtCore.QByteArray: ...
    @typing.overload
    def setIsData(self, row: int, column: int) -> None: ...
    @typing.overload
    def setIsData(self, index: int) -> None: ...
    def setIsNoDataExcept(self, exceptRect: QtCore.QRect) -> bool: ...
    @typing.overload
    def setIsNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def setIsNoData(self, index: int) -> bool: ...
    @typing.overload
    def setIsNoData(self) -> bool: ...
    @typing.overload
    def setColor(self, row: int, column: int, color: int) -> bool: ...
    @typing.overload
    def setColor(self, index: int, color: int) -> bool: ...
    @typing.overload
    def setValue(self, row: int, column: int, value: float) -> bool: ...
    @typing.overload
    def setValue(self, index: int, value: float) -> bool: ...
    @typing.overload
    def isNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def isNoData(self, row: int, column: int) -> bool: ...
    @typing.overload
    def isNoData(self, index: int) -> bool: ...
    @typing.overload
    def color(self, row: int, column: int) -> int: ...
    @typing.overload
    def color(self, index: int) -> int: ...
    @typing.overload
    def value(self, row: int, column: int) -> float: ...
    @typing.overload
    def value(self, index: int) -> float: ...
    @staticmethod
    def valueBytes(dataType: Qgis.DataType, value: float) -> QtCore.QByteArray: ...
    def noDataValue(self) -> float: ...
    def resetNoDataValue(self) -> None: ...
    def setNoDataValue(self, noDataValue: float) -> None: ...
    def hasNoData(self) -> bool: ...
    def hasNoDataValue(self) -> bool: ...
    @staticmethod
    def typeWithNoDataValue(dataType: Qgis.DataType) -> typing.Tuple[Qgis.DataType, float]: ...
    def dataType(self) -> Qgis.DataType: ...
    @staticmethod
    def typeIsColor(type: Qgis.DataType) -> bool: ...
    @staticmethod
    def typeIsNumeric(type: Qgis.DataType) -> bool: ...
    def dataTypeSize(self) -> int: ...
    @staticmethod
    def typeSize(dataType: Qgis.DataType) -> int: ...
    def isEmpty(self) -> bool: ...
    def setValid(self, valid: bool) -> None: ...
    def isValid(self) -> bool: ...
    def reset(self, dataType: Qgis.DataType, width: int, height: int) -> bool: ...


class QgsRasterChecker(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterChecker') -> None: ...

    def runTest(self, verifiedKey: str, verifiedUri: str, expectedKey: str, expectedUri: str) -> bool: ...
    def report(self) -> str: ...


class QgsRasterContourRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface) -> None: ...

    def setDownscale(self, scale: float) -> None: ...
    def downscale(self) -> float: ...
    def setContourIndexSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def contourIndexSymbol(self) -> 'QgsLineSymbol': ...
    def setContourIndexInterval(self, interval: float) -> None: ...
    def contourIndexInterval(self) -> float: ...
    def setContourSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def contourSymbol(self) -> 'QgsLineSymbol': ...
    def setContourInterval(self, interval: float) -> None: ...
    def contourInterval(self) -> float: ...
    def setInputBand(self, band: int) -> None: ...
    def inputBand(self) -> int: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def usesBands(self) -> typing.List[int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> QgsRasterBlock: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def clone(self) -> 'QgsRasterContourRenderer': ...


class QgsImageFetcher(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    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 ProviderCapability(int):
        NoProviderCapabilities = ... # type: QgsRasterDataProvider.ProviderCapability
        ReadLayerMetadata = ... # type: QgsRasterDataProvider.ProviderCapability
        WriteLayerMetadata = ... # type: QgsRasterDataProvider.ProviderCapability
        ProviderHintBenefitsFromResampling = ... # type: QgsRasterDataProvider.ProviderCapability
        ProviderHintCanPerformProviderResampling = ... # type: QgsRasterDataProvider.ProviderCapability
        ReloadData = ... # type: QgsRasterDataProvider.ProviderCapability
        DpiDependentData = ... # type: QgsRasterDataProvider.ProviderCapability

    class ProviderCapabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.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['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __xor__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __ior__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __or__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __iand__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __and__(self, f: typing.Union['QgsRasterDataProvider.ProviderCapabilities', 'QgsRasterDataProvider.ProviderCapability']) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __invert__(self) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
        def __index__(self) -> int: ...
        def __int__(self) -> int: ...

    class VirtualRasterInputLayers(PyQt5.sip.wrapper):

        name = ... # type: str
        provider = ... # type: str
        uri = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterDataProvider.VirtualRasterInputLayers') -> None: ...

    class VirtualRasterParameters(PyQt5.sip.wrapper):

        crs = ... # type: QgsCoordinateReferenceSystem
        extent = ... # type: QgsRectangle
        formula = ... # type: str
        height = ... # type: int
        rInputLayers = ... # type: typing.Iterable['QgsRasterDataProvider.VirtualRasterInputLayers']
        width = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterDataProvider.VirtualRasterParameters') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, uri: str, providerOptions: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def copyBaseSettings(self, other: 'QgsRasterDataProvider') -> None: ...
    def userNoDataValuesContains(self, bandNo: int, value: float) -> bool: ...
    statusChanged: typing.ClassVar[QtCore.pyqtsignal]
    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: QgsRaster.IdentifyFormat) -> QgsRasterInterface.Capability: ...
    @staticmethod
    def identifyFormatLabel(format: QgsRaster.IdentifyFormat) -> str: ...
    @staticmethod
    def identifyFormatFromName(formatName: str) -> QgsRaster.IdentifyFormat: ...
    @staticmethod
    def identifyFormatName(format: QgsRaster.IdentifyFormat) -> str: ...
    def validatePyramidsConfigOptions(self, pyramidsFormat: QgsRaster.RasterPyramidsFormat, configOptions: typing.Iterable[str], fileFormat: str) -> str: ...
    def validateCreationOptions(self, createOptions: typing.Iterable[str], format: str) -> str: ...
    @staticmethod
    def encodeVirtualRasterProviderUri(parts: 'QgsRasterDataProvider.VirtualRasterParameters') -> str: ...
    @staticmethod
    def decodeVirtualRasterProviderUri(uri: str) -> typing.Tuple['QgsRasterDataProvider.VirtualRasterParameters', bool]: ...
    @staticmethod
    def pyramidResamplingMethods(providerKey: str) -> typing.List[typing.Tuple[str, str]]: ...
    def remove(self) -> bool: ...
    def setNoDataValue(self, bandNo: int, noDataValue: float) -> bool: ...
    @staticmethod
    def create(providerKey: str, uri: str, format: str, nBands: int, type: Qgis.DataType, width: int, height: int, crs: QgsCoordinateReferenceSystem, createOptions: typing.Iterable[str] = ...) -> typing.Tuple['QgsRasterDataProvider', float]: ...
    def writeBlock(self, block: QgsRasterBlock, band: int, xOffset: int = ..., yOffset: int = ...) -> bool: ...
    def write(self, data: PyQt5.sip.voidptr, band: int, width: int, height: int, xOffset: int, yOffset: int) -> bool: ...
    def setEditable(self, enabled: bool) -> bool: ...
    def isEditable(self) -> bool: ...
    def dataTimestamp(self) -> QtCore.QDateTime: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def setDpi(self, dpi: int) -> None: ...
    def dpi(self) -> int: ...
    def lastErrorFormat(self) -> str: ...
    def lastError(self) -> str: ...
    def lastErrorTitle(self) -> str: ...
    def sample(self, point: QgsPointXY, band: int, boundingBox: QgsRectangle = ..., width: int = ..., height: int = ..., dpi: int = ...) -> typing.Tuple[float, bool]: ...
    def identify(self, point: QgsPointXY, format: QgsRaster.IdentifyFormat, boundingBox: QgsRectangle = ..., width: int = ..., height: int = ..., dpi: int = ...) -> 'QgsRasterIdentifyResult': ...
    def htmlMetadata(self) -> str: ...
    def hasPyramids(self) -> bool: ...
    def buildPyramidList(self, overviewList: typing.Iterable[int] = ...) -> typing.List['QgsRasterPyramid']: ...
    def buildPyramids(self, pyramidList: typing.Iterable['QgsRasterPyramid'], resamplingMethod: str = ..., format: QgsRaster.RasterPyramidsFormat = ..., configOptions: typing.Iterable[str] = ..., feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> str: ...
    def getLegendGraphicFetcher(self, mapSettings: QgsMapSettings) -> QgsImageFetcher: ...
    def supportsLegendGraphic(self) -> bool: ...
    def temporalCapabilities(self) -> 'QgsRasterDataProviderTemporalCapabilities': ...
    def subLayers(self) -> typing.List[str]: ...
    def colorTable(self, bandNo: int) -> typing.List[QgsColorRampShader.ColorRampItem]: ...
    def userNoDataValues(self, bandNo: int) -> typing.List['QgsRasterRange']: ...
    def setUserNoDataValue(self, bandNo: int, noData: typing.Iterable['QgsRasterRange']) -> None: ...
    def sourceNoDataValue(self, bandNo: int) -> float: ...
    def setUseSourceNoDataValue(self, bandNo: int, use: bool) -> None: ...
    def useSourceNoDataValue(self, bandNo: int) -> bool: ...
    def sourceHasNoDataValue(self, bandNo: int) -> bool: ...
    def block(self, bandNo: int, boundingBox: QgsRectangle, width: int, height: int, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> QgsRasterBlock: ...
    def bandOffset(self, bandNo: int) -> float: ...
    def bandScale(self, bandNo: int) -> float: ...
    def colorInterpretationName(self, bandNo: int) -> str: ...
    def reload(self) -> bool: ...
    def colorName(self, colorInterpretation: int) -> str: ...
    def colorInterpretation(self, bandNo: int) -> int: ...
    def sourceDataType(self, bandNo: int) -> Qgis.DataType: ...
    def fields(self) -> QgsFields: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def extent(self) -> QgsRectangle: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def providerCapabilities(self) -> 'QgsRasterDataProvider.ProviderCapabilities': ...
    def clone(self) -> 'QgsRasterDataProvider': ...


class QgsRasterDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    @typing.overload
    def __init__(self, enabled: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDataProviderTemporalCapabilities') -> None: ...

    def setDefaultInterval(self, interval: QgsInterval) -> None: ...
    def defaultInterval(self) -> QgsInterval: ...
    def requestedTemporalRange(self) -> QgsDateTimeRange: ...
    def availableReferenceTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableReferenceTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def allAvailableTemporalRanges(self) -> typing.List[QgsDateTimeRange]: ...
    def setAllAvailableTemporalRanges(self, ranges: typing.Iterable[QgsDateTimeRange]) -> None: ...
    def availableTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setIntervalHandlingMethod(self, method: Qgis.TemporalIntervalMatchMethod) -> None: ...
    def intervalHandlingMethod(self) -> Qgis.TemporalIntervalMatchMethod: ...
    def setFlags(self, flags: typing.Union[Qgis.RasterTemporalCapabilityFlags, Qgis.RasterTemporalCapabilityFlag]) -> None: ...
    def flags(self) -> Qgis.RasterTemporalCapabilityFlags: ...


class QgsRasterDrawer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, iterator: 'QgsRasterIterator', dpiTarget: float) -> None: ...
    @typing.overload
    def __init__(self, iterator: 'QgsRasterIterator') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterDrawer') -> None: ...

    @typing.overload
    def draw(self, p: QtGui.QPainter, viewPort: 'QgsRasterViewPort', qgsMapToPixel: QgsMapToPixel, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> None: ...
    @typing.overload
    def draw(self, context: QgsRenderContext, viewPort: 'QgsRasterViewPort', feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> None: ...


class QgsRasterFileWriter(PyQt5.sip.wrapper):

    class RasterFormatOption(int):
        SortRecommended = ... # type: QgsRasterFileWriter.RasterFormatOption

    class WriterError(int):
        NoError = ... # type: QgsRasterFileWriter.WriterError
        SourceProviderError = ... # type: QgsRasterFileWriter.WriterError
        DestProviderError = ... # type: QgsRasterFileWriter.WriterError
        CreateDatasourceError = ... # type: QgsRasterFileWriter.WriterError
        WriteError = ... # type: QgsRasterFileWriter.WriterError
        NoDataConflict = ... # type: QgsRasterFileWriter.WriterError
        WriteCanceled = ... # type: QgsRasterFileWriter.WriterError

    class Mode(int):
        Raw = ... # type: QgsRasterFileWriter.Mode
        Image = ... # type: QgsRasterFileWriter.Mode

    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: str
        filterString = ... # type: str

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterFileWriter.FilterFormatDetails') -> None: ...

    @typing.overload
    def __init__(self, outputUrl: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterFileWriter') -> None: ...

    @staticmethod
    def extensionsForFormat(format: str) -> typing.List[str]: ...
    @staticmethod
    def driverForExtension(extension: str) -> str: ...
    @staticmethod
    def supportedFormatExtensions(options: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption'] = ...) -> typing.List[str]: ...
    @staticmethod
    def supportedFiltersAndFormats(options: typing.Union['QgsRasterFileWriter.RasterFormatOptions', 'QgsRasterFileWriter.RasterFormatOption'] = ...) -> typing.List['QgsRasterFileWriter.FilterFormatDetails']: ...
    @staticmethod
    def filterForDriver(driverName: str) -> str: ...
    def pyramidsConfigOptions(self) -> typing.List[str]: ...
    def setPyramidsConfigOptions(self, list: typing.Iterable[str]) -> None: ...
    def createOptions(self) -> typing.List[str]: ...
    def setCreateOptions(self, list: typing.Iterable[str]) -> None: ...
    def maxTileHeight(self) -> int: ...
    def setMaxTileHeight(self, h: int) -> None: ...
    def setPyramidsFormat(self, f: QgsRaster.RasterPyramidsFormat) -> None: ...
    def pyramidsFormat(self) -> QgsRaster.RasterPyramidsFormat: ...
    def setPyramidsResampling(self, str: str) -> None: ...
    def pyramidsResampling(self) -> str: ...
    def setPyramidsList(self, list: typing.Iterable[int]) -> None: ...
    def pyramidsList(self) -> typing.List[int]: ...
    def setBuildPyramidsFlag(self, f: QgsRaster.RasterBuildPyramids) -> None: ...
    def buildPyramidsFlag(self) -> QgsRaster.RasterBuildPyramids: ...
    def maxTileWidth(self) -> int: ...
    def setMaxTileWidth(self, w: int) -> None: ...
    def tiledMode(self) -> bool: ...
    def setTiledMode(self, t: bool) -> None: ...
    def outputProviderKey(self) -> str: ...
    def setOutputProviderKey(self, key: str) -> None: ...
    def outputFormat(self) -> str: ...
    def setOutputFormat(self, format: str) -> None: ...
    def outputUrl(self) -> str: ...
    @typing.overload
    def writeRaster(self, pipe: 'QgsRasterPipe', nCols: int, nRows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterFileWriter.WriterError': ...
    @typing.overload
    def writeRaster(self, pipe: 'QgsRasterPipe', nCols: int, nRows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext, feedback: typing.Optional['QgsRasterBlockFeedback'] = ...) -> 'QgsRasterFileWriter.WriterError': ...
    def createMultiBandRaster(self, dataType: Qgis.DataType, width: int, height: int, extent: QgsRectangle, crs: QgsCoordinateReferenceSystem, nBands: int) -> QgsRasterDataProvider: ...
    def createOneBandRaster(self, dataType: Qgis.DataType, width: int, height: int, extent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> QgsRasterDataProvider: ...


class QgsRasterFileWriterTask(QgsTask):

    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: 'QgsRasterPipe', columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem) -> None: ...
    @typing.overload
    def __init__(self, writer: QgsRasterFileWriter, pipe: 'QgsRasterPipe', columns: int, rows: int, outputExtent: QgsRectangle, crs: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    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: QgsRaster.IdentifyFormat, results: typing.Dict[int, typing.Any]) -> None: ...
    @typing.overload
    def __init__(self, error: QgsError) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterIdentifyResult') -> None: ...

    def setError(self, error: QgsError) -> None: ...
    def error(self) -> QgsError: ...
    def params(self) -> typing.Dict[str, typing.Any]: ...
    def setParams(self, params: typing.Dict[str, typing.Any]) -> None: ...
    def results(self) -> typing.Dict[int, typing.Any]: ...
    def format(self) -> QgsRaster.IdentifyFormat: ...
    def isValid(self) -> bool: ...


class QgsRasterBlockFeedback(QgsFeedback):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setRenderContext(self, renderContext: QgsRenderContext) -> None: ...
    def renderContext(self) -> QgsRenderContext: ...
    def errors(self) -> typing.List[str]: ...
    def appendError(self, error: str) -> None: ...
    def setRenderPartialOutput(self, enable: bool) -> None: ...
    def renderPartialOutput(self) -> bool: ...
    def setPreviewOnly(self, preview: bool) -> None: ...
    def isPreviewOnly(self) -> bool: ...
    def onNewData(self) -> None: ...


class QgsRasterIterator(PyQt5.sip.wrapper):

    DEFAULT_MAXIMUM_TILE_HEIGHT = ... # type: int
    DEFAULT_MAXIMUM_TILE_WIDTH = ... # type: int

    @typing.overload
    def __init__(self, input: QgsRasterInterface) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterIterator') -> None: ...

    def maximumTileHeight(self) -> int: ...
    def setMaximumTileHeight(self, h: int) -> None: ...
    def maximumTileWidth(self) -> int: ...
    def setMaximumTileWidth(self, w: int) -> None: ...
    def input(self) -> QgsRasterInterface: ...
    def stopRasterRead(self, bandNumber: int) -> None: ...
    def readNextRasterPart(self, bandNumber: int) -> typing.Tuple[bool, int, int, QgsRasterBlock, int, int]: ...
    def next(self, bandNumber: int) -> typing.Tuple[bool, int, int, int, int, QgsRectangle]: ...
    def startRasterRead(self, bandNumber: int, nCols: int, nRows: int, extent: QgsRectangle, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> None: ...
    @staticmethod
    def subRegion(rasterExtent: QgsRectangle, rasterWidth: int, rasterHeight: int, subRegion: QgsRectangle) -> typing.Tuple[QgsRectangle, int, int, int, int]: ...


class QgsRasterLayer(QgsMapLayer, QgsAbstractProfileSource):

    class LayerType(int):
        GrayOrUndefined = ... # type: QgsRasterLayer.LayerType
        Palette = ... # type: QgsRasterLayer.LayerType
        Multiband = ... # type: QgsRasterLayer.LayerType
        ColorLayer = ... # type: QgsRasterLayer.LayerType

    class ColorShadingAlgorithm(int):
        UndefinedShader = ... # type: QgsRasterLayer.ColorShadingAlgorithm
        PseudoColorShader = ... # type: QgsRasterLayer.ColorShadingAlgorithm
        FreakOutShader = ... # type: QgsRasterLayer.ColorShadingAlgorithm
        ColorRampShader = ... # type: QgsRasterLayer.ColorShadingAlgorithm
        UserDefinedShader = ... # type: QgsRasterLayer.ColorShadingAlgorithm

    class LayerOptions(PyQt5.sip.wrapper):

        loadDefaultStyle = ... # type: bool
        skipCrsValidation = ... # type: bool
        transformContext = ... # type: QgsCoordinateTransformContext

        @typing.overload
        def __init__(self, loadDefaultStyle: bool = ..., transformContext: QgsCoordinateTransformContext = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterLayer.LayerOptions') -> None: ...

    MULTIPLE_BAND_MULTI_BYTE_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    MULTIPLE_BAND_MULTI_BYTE_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'
    MULTIPLE_BAND_SINGLE_BYTE_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    MULTIPLE_BAND_SINGLE_BYTE_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'
    SAMPLE_SIZE = ... # type: float
    SINGLE_BAND_ENHANCEMENT_ALGORITHM = ... # type: QgsContrastEnhancement.ContrastEnhancementAlgorithm
    SINGLE_BAND_MIN_MAX_LIMITS = ... # type: 'QgsRasterMinMaxOrigin.Limits'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, uri: str, baseName: str = ..., providerType: str = ..., options: 'QgsRasterLayer.LayerOptions' = ...) -> None: ...

    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def writeXml(self, layer_node: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def writeStyle(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeSymbology(self, a0: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readXml(self, layer_node: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def readStyle(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    subsetStringChanged: typing.ClassVar[QtCore.pyqtsignal]
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def showStatusMessage(self, message: str) -> None: ...
    def elevationProperties(self) -> QgsMapLayerElevationProperties: ...
    def temporalProperties(self) -> QgsMapLayerTemporalProperties: ...
    def ignoreExtents(self) -> bool: ...
    def writeSld(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, props: typing.Dict[str, typing.Any] = ...) -> bool: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def timestamp(self) -> QtCore.QDateTime: ...
    def setSubLayerVisibility(self, name: str, vis: bool) -> None: ...
    def setLayerOrder(self, layers: typing.Iterable[str]) -> None: ...
    def previewAsImage(self, size: QtCore.QSize, bgColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., format: QtGui.QImage.Format = ...) -> QtGui.QImage: ...
    def subLayers(self) -> typing.List[str]: ...
    def setDefaultContrastEnhancement(self) -> None: ...
    def setSubsetString(self, subset: str) -> bool: ...
    def subsetString(self) -> str: ...
    def setContrastEnhancement(self, algorithm: QgsContrastEnhancement.ContrastEnhancementAlgorithm, limits: 'QgsRasterMinMaxOrigin.Limits' = ..., extent: QgsRectangle = ..., sampleSize: int = ..., generateLookupTableFlag: bool = ...) -> None: ...
    def opacity(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def rasterUnitsPerPixelY(self) -> float: ...
    def rasterUnitsPerPixelX(self) -> float: ...
    def providerType(self) -> str: ...
    def paletteAsPixmap(self, bandNumber: int = ...) -> QtGui.QPixmap: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def htmlMetadata(self) -> str: ...
    def isSpatial(self) -> bool: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def draw(self, theQPainter: QtGui.QPainter, myRasterViewPort: 'QgsRasterViewPort', qgsMapToPixel: typing.Optional[QgsMapToPixel] = ...) -> None: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def reload(self) -> None: ...
    def constDataProvider(self) -> QgsRasterDataProvider: ...
    def dataProvider(self) -> QgsRasterDataProvider: ...
    def bandName(self, bandNoInt: int) -> str: ...
    def bandCount(self) -> int: ...
    def height(self) -> int: ...
    def width(self) -> int: ...
    def pipe(self) -> 'QgsRasterPipe': ...
    def resamplingStage(self) -> Qgis.RasterResamplingStage: ...
    def setResamplingStage(self, stage: Qgis.RasterResamplingStage) -> None: ...
    def hueSaturationFilter(self) -> QgsHueSaturationFilter: ...
    def brightnessFilter(self) -> QgsBrightnessContrastFilter: ...
    def resampleFilter(self) -> 'QgsRasterResampleFilter': ...
    def renderer(self) -> QgsRasterRenderer: ...
    def setRenderer(self, renderer: QgsRasterRenderer) -> None: ...
    def rasterType(self) -> 'QgsRasterLayer.LayerType': ...
    @typing.overload
    def setDataProvider(self, provider: str) -> None: ...
    @typing.overload
    def setDataProvider(self, provider: str, options: QgsDataProvider.ProviderOptions, flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...
    @staticmethod
    def lastModified(name: str) -> QtCore.QDateTime: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: str, retError: str) -> bool: ...
    @typing.overload
    @staticmethod
    def isValidRasterFileName(fileNameQString: str) -> bool: ...
    def createProfileGenerator(self, request: QgsProfileRequest) -> QgsAbstractProfileGenerator: ...
    def clone(self) -> 'QgsRasterLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsRasterLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def profileFillSymbol(self) -> 'QgsFillSymbol': ...
    def setProfileLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def profileLineSymbol(self) -> 'QgsLineSymbol': ...
    def setBandNumber(self, band: int) -> None: ...
    def bandNumber(self) -> int: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def isEnabled(self) -> bool: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsRasterLayerElevationProperties': ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsRasterLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def fixedTemporalRange(self) -> QgsDateTimeRange: ...
    def setFixedTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setIntervalHandlingMethod(self, method: Qgis.TemporalIntervalMatchMethod) -> None: ...
    def intervalHandlingMethod(self) -> Qgis.TemporalIntervalMatchMethod: ...
    def flags(self) -> QgsTemporalProperty.Flags: ...
    def setMode(self, mode: Qgis.RasterTemporalMode) -> None: ...
    def mode(self) -> Qgis.RasterTemporalMode: ...
    def allTemporalRanges(self, layer: QgsMapLayer) -> typing.List[QgsDateTimeRange]: ...
    def isVisibleInTemporalRange(self, range: QgsDateTimeRange) -> bool: ...


class QgsRasterMinMaxOrigin(PyQt5.sip.wrapper):

    class StatAccuracy(int):
        Exact = ... # type: QgsRasterMinMaxOrigin.StatAccuracy
        Estimated = ... # type: QgsRasterMinMaxOrigin.StatAccuracy

    class Extent(int):
        WholeRaster = ... # type: QgsRasterMinMaxOrigin.Extent
        CurrentCanvas = ... # type: QgsRasterMinMaxOrigin.Extent
        UpdatedCanvas = ... # type: QgsRasterMinMaxOrigin.Extent

    class Limits(int):
        None_ = ... # type: QgsRasterMinMaxOrigin.Limits
        MinMax = ... # type: QgsRasterMinMaxOrigin.Limits
        StdDev = ... # type: QgsRasterMinMaxOrigin.Limits
        CumulativeCut = ... # type: QgsRasterMinMaxOrigin.Limits

    CUMULATIVE_CUT_LOWER = ... # type: float
    CUMULATIVE_CUT_UPPER = ... # type: float
    DEFAULT_STDDEV_FACTOR = ... # type: float

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterMinMaxOrigin') -> None: ...

    def __ne__(self, other: object): ...
    @staticmethod
    def statAccuracyFromString(accuracy: str) -> 'QgsRasterMinMaxOrigin.StatAccuracy': ...
    @staticmethod
    def statAccuracyString(accuracy: 'QgsRasterMinMaxOrigin.StatAccuracy') -> str: ...
    @staticmethod
    def extentFromString(extent: str) -> 'QgsRasterMinMaxOrigin.Extent': ...
    @staticmethod
    def extentString(extent: 'QgsRasterMinMaxOrigin.Extent') -> str: ...
    @staticmethod
    def limitsFromString(limits: str) -> 'QgsRasterMinMaxOrigin.Limits': ...
    @staticmethod
    def limitsString(limits: 'QgsRasterMinMaxOrigin.Limits') -> str: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def setStdDevFactor(self, val: float) -> None: ...
    def setCumulativeCutUpper(self, val: float) -> None: ...
    def setCumulativeCutLower(self, val: float) -> None: ...
    def setStatAccuracy(self, accuracy: 'QgsRasterMinMaxOrigin.StatAccuracy') -> None: ...
    def setExtent(self, extent: 'QgsRasterMinMaxOrigin.Extent') -> None: ...
    def setLimits(self, limits: 'QgsRasterMinMaxOrigin.Limits') -> None: ...
    def stdDevFactor(self) -> float: ...
    def cumulativeCutUpper(self) -> float: ...
    def cumulativeCutLower(self) -> float: ...
    def statAccuracy(self) -> 'QgsRasterMinMaxOrigin.StatAccuracy': ...
    def extent(self) -> 'QgsRasterMinMaxOrigin.Extent': ...
    def limits(self) -> 'QgsRasterMinMaxOrigin.Limits': ...
    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] = ...) -> QgsRasterBlock: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterNuller': ...


class QgsRasterPipe(PyQt5.sip.wrapper):

    class Property(int):
        RendererOpacity = ... # type: QgsRasterPipe.Property

    def __init__(self) -> None: ...

    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    def evaluateDataDefinedProperties(self, context: QgsExpressionContext) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def resamplingStage(self) -> Qgis.RasterResamplingStage: ...
    def setResamplingStage(self, stage: Qgis.RasterResamplingStage) -> None: ...
    def nuller(self) -> QgsRasterNuller: ...
    def projector(self) -> 'QgsRasterProjector': ...
    def hueSaturationFilter(self) -> QgsHueSaturationFilter: ...
    def brightnessFilter(self) -> QgsBrightnessContrastFilter: ...
    def resampleFilter(self) -> 'QgsRasterResampleFilter': ...
    def renderer(self) -> QgsRasterRenderer: ...
    def provider(self) -> QgsRasterDataProvider: ...
    def canSetOn(self, idx: int, on: bool) -> bool: ...
    def setOn(self, idx: int, on: bool) -> bool: ...
    def last(self) -> QgsRasterInterface: ...
    def at(self, idx: int) -> QgsRasterInterface: ...
    def size(self) -> int: ...
    @typing.overload
    def remove(self, idx: int) -> bool: ...
    @typing.overload
    def remove(self, interface: QgsRasterInterface) -> bool: ...
    def set(self, interface: QgsRasterInterface) -> bool: ...
    def replace(self, idx: int, interface: QgsRasterInterface) -> bool: ...
    def insert(self, idx: int, interface: QgsRasterInterface) -> bool: ...
    def moveToThread(self, thread: QtCore.QThread) -> None: ...


class QgsRasterProjector(QgsRasterInterface):

    class Precision(int):
        Approximate = ... # type: QgsRasterProjector.Precision
        Exact = ... # type: QgsRasterProjector.Precision

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self) -> None: ...

    @staticmethod
    def extentSize(ct: QgsCoordinateTransform, srcExtent: QgsRectangle, srcXSize: int, srcYSize: int) -> typing.Tuple[bool, QgsRectangle, int, int]: ...
    def destExtentSize(self, srcExtent: QgsRectangle, srcXSize: int, srcYSize: int) -> typing.Tuple[bool, QgsRectangle, int, int]: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def precisionLabel(precision: 'QgsRasterProjector.Precision') -> str: ...
    def setPrecision(self, precision: 'QgsRasterProjector.Precision') -> None: ...
    def precision(self) -> 'QgsRasterProjector.Precision': ...
    def destinationCrs(self) -> QgsCoordinateReferenceSystem: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    @typing.overload
    def setCrs(self, srcCRS: QgsCoordinateReferenceSystem, destCRS: QgsCoordinateReferenceSystem, srcDatumTransform: int = ..., destDatumTransform: int = ...) -> None: ...
    @typing.overload
    def setCrs(self, srcCRS: QgsCoordinateReferenceSystem, destCRS: QgsCoordinateReferenceSystem, transformContext: QgsCoordinateTransformContext) -> None: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterProjector': ...


class QgsRasterPyramid(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterPyramid') -> None: ...

    def setBuild(self, build: bool) -> None: ...
    def getBuild(self) -> bool: ...
    def setExists(self, exists: bool) -> None: ...
    def getExists(self) -> bool: ...
    def getYDim(self) -> int: ...
    def setYDim(self, dimension: int) -> None: ...
    def getXDim(self) -> int: ...
    def setXDim(self, dimension: int) -> None: ...
    def setLevel(self, level: int) -> None: ...
    def getLevel(self) -> int: ...
    @property
    def build(self) -> bool: ...
    @build.setter
    def build(self, build: bool) -> None: ...
    @property
    def exists(self) -> bool: ...
    @exists.setter
    def exists(self, exists: bool) -> None: ...
    @property
    def yDim(self) -> int: ...
    @yDim.setter
    def yDim(self, dimension: int) -> None: ...
    @property
    def xDim(self) -> int: ...
    @xDim.setter
    def xDim(self, dimension: int) -> None: ...
    @property
    def level(self) -> int: ...
    @level.setter
    def level(self, level: int) -> None: ...


class QgsRasterRange(PyQt5.sip.wrapper):

    class BoundsType(int):
        IncludeMinAndMax = ... # type: QgsRasterRange.BoundsType
        IncludeMax = ... # type: QgsRasterRange.BoundsType
        IncludeMin = ... # type: QgsRasterRange.BoundsType
        Exclusive = ... # type: QgsRasterRange.BoundsType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, min: float, max: float, bounds: 'QgsRasterRange.BoundsType' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterRange') -> None: ...

    def __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 QgsRasterRendererUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterRendererUtils') -> None: ...

    @staticmethod
    def saveColorMapFile(path: str, items: typing.Iterable[QgsColorRampShader.ColorRampItem], type: QgsColorRampShader.Type) -> bool: ...
    @staticmethod
    def parseColorMapFile(path: str) -> typing.Tuple[bool, typing.List[QgsColorRampShader.ColorRampItem], QgsColorRampShader.Type, typing.List[str]]: ...


class QgsRasterResampleFilter(QgsRasterInterface):

    def __init__(self, input: typing.Optional[QgsRasterInterface] = ...) -> None: ...

    def readXml(self, filterElem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def maxOversampling(self) -> float: ...
    def setMaxOversampling(self, os: float) -> None: ...
    def zoomedOutResampler(self) -> QgsRasterResampler: ...
    def setZoomedOutResampler(self, r: QgsRasterResampler) -> None: ...
    def zoomedInResampler(self) -> QgsRasterResampler: ...
    def setZoomedInResampler(self, r: QgsRasterResampler) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    def dataType(self, bandNo: int) -> Qgis.DataType: ...
    def bandCount(self) -> int: ...
    def clone(self) -> 'QgsRasterResampleFilter': ...


class QgsRasterShader(PyQt5.sip.wrapper):

    def __init__(self, minimumValue: float = ..., maximumValue: float = ...) -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parent: QtXml.QDomElement, context: QgsReadWriteContext = ...) -> None: ...
    def setMinimumValue(self, value: float) -> None: ...
    def setMaximumValue(self, value: float) -> None: ...
    def setRasterShaderFunction(self, function: QgsRasterShaderFunction) -> None: ...
    @typing.overload
    def shade(self, value: float) -> typing.Tuple[bool, int, int, int, int]: ...
    @typing.overload
    def shade(self, redValue: float, greenValue: float, blueValue: float, alphaValue: float) -> typing.Tuple[bool, int, int, int, int]: ...
    def rasterShaderFunction(self) -> QgsRasterShaderFunction: ...
    def minimumValue(self) -> float: ...
    def maximumValue(self) -> float: ...


class QgsRasterTransparency(PyQt5.sip.wrapper):

    class TransparentThreeValuePixel(PyQt5.sip.wrapper):

        blue = ... # type: float
        green = ... # type: float
        percentTransparent = ... # type: float
        red = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentThreeValuePixel') -> None: ...

    class TransparentSingleValuePixel(PyQt5.sip.wrapper):

        max = ... # type: float
        min = ... # type: float
        percentTransparent = ... # type: float

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRasterTransparency.TransparentSingleValuePixel') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterTransparency') -> None: ...

    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def isEmpty(self) -> bool: ...
    @typing.overload
    def alphaValue(self, value: float, globalTransparency: int = ...) -> int: ...
    @typing.overload
    def alphaValue(self, redValue: float, greenValue: float, blueValue: float, globalTransparency: int = ...) -> int: ...
    def setTransparentThreeValuePixelList(self, newList: typing.Iterable['QgsRasterTransparency.TransparentThreeValuePixel']) -> None: ...
    def setTransparentSingleValuePixelList(self, newList: typing.Iterable['QgsRasterTransparency.TransparentSingleValuePixel']) -> None: ...
    @typing.overload
    def initializeTransparentPixelList(self, value: float) -> None: ...
    @typing.overload
    def initializeTransparentPixelList(self, redValue: float, greenValue: float, blueValue: float) -> None: ...
    def transparentThreeValuePixelList(self) -> typing.List['QgsRasterTransparency.TransparentThreeValuePixel']: ...
    def transparentSingleValuePixelList(self) -> typing.List['QgsRasterTransparency.TransparentSingleValuePixel']: ...


class QgsRasterViewPort(PyQt5.sip.wrapper):

    mBottomRightPoint = ... # type: QgsPointXY
    mDestCRS = ... # type: QgsCoordinateReferenceSystem
    mDrawnExtent = ... # type: QgsRectangle
    mHeight = ... # type: int
    mSrcCRS = ... # type: QgsCoordinateReferenceSystem
    mTopLeftPoint = ... # type: QgsPointXY
    mTransformContext = ... # type: QgsCoordinateTransformContext
    mWidth = ... # type: int

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRasterViewPort') -> None: ...


class QgsSingleBandColorDataRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int) -> None: ...

    def usesBands(self) -> typing.List[int]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    def setInput(self, input: QgsRasterInterface) -> bool: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandColorDataRenderer': ...


class QgsSingleBandGrayRenderer(QgsRasterRenderer):

    class Gradient(int):
        BlackToWhite = ... # type: QgsSingleBandGrayRenderer.Gradient
        WhiteToBlack = ... # type: QgsSingleBandGrayRenderer.Gradient

    def __init__(self, input: QgsRasterInterface, grayBand: int) -> None: ...

    def setLegendSettings(self, settings: QgsColorRampLegendNodeSettings) -> None: ...
    def legendSettings(self) -> QgsColorRampLegendNodeSettings: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def gradient(self) -> 'QgsSingleBandGrayRenderer.Gradient': ...
    def setGradient(self, gradient: 'QgsSingleBandGrayRenderer.Gradient') -> None: ...
    def setContrastEnhancement(self, ce: QgsContrastEnhancement) -> None: ...
    def contrastEnhancement(self) -> QgsContrastEnhancement: ...
    def setGrayBand(self, band: int) -> None: ...
    def grayBand(self) -> int: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandGrayRenderer': ...


class QgsSingleBandPseudoColorRenderer(QgsRasterRenderer):

    def __init__(self, input: QgsRasterInterface, band: int = ..., shader: typing.Optional[QgsRasterShader] = ...) -> None: ...

    def setClassificationMax(self, max: float) -> None: ...
    def setClassificationMin(self, min: float) -> None: ...
    def classificationMax(self) -> float: ...
    def classificationMin(self) -> float: ...
    def setBand(self, bandNo: int) -> None: ...
    def band(self) -> int: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def usesBands(self) -> typing.List[int]: ...
    def createLegendNodes(self, nodeLayer: QgsLayerTreeLayer) -> typing.List[QgsLayerTreeModelLegendNode]: ...
    def legendSymbologyItems(self) -> typing.List[typing.Tuple[str, QtGui.QColor]]: ...
    def writeXml(self, doc: QtXml.QDomDocument, parentElem: QtXml.QDomElement) -> None: ...
    def createShader(self, colorRamp: typing.Optional[QgsColorRamp] = ..., colorRampType: QgsColorRampShader.Type = ..., classificationMode: QgsColorRampShader.ClassificationMode = ..., classes: int = ..., clip: bool = ..., extent: QgsRectangle = ...) -> None: ...
    def constShader(self) -> QgsRasterShader: ...
    def shader(self) -> QgsRasterShader: ...
    def setShader(self, shader: QgsRasterShader) -> None: ...
    def block(self, bandNo: int, extent: QgsRectangle, width: int, height: int, feedback: typing.Optional[QgsRasterBlockFeedback] = ...) -> QgsRasterBlock: ...
    @staticmethod
    def create(elem: QtXml.QDomElement, input: QgsRasterInterface) -> QgsRasterRenderer: ...
    def flags(self) -> Qgis.RasterRendererFlags: ...
    def clone(self) -> 'QgsSingleBandPseudoColorRenderer': ...


class QgsScaleBarRenderer(PyQt5.sip.wrapper):

    class Flag(int):
        FlagUsesLineSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesFillSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesAlternateFillSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagRespectsUnits = ... # type: QgsScaleBarRenderer.Flag
        FlagRespectsMapUnitsPerScaleBarUnit = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesUnitLabel = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSegments = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelBarSpace = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelVerticalPlacement = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesLabelHorizontalPlacement = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesAlignment = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisions = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesDivisionSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisionSymbol = ... # type: QgsScaleBarRenderer.Flag
        FlagUsesSubdivisionsHeight = ... # type: QgsScaleBarRenderer.Flag

    class Flags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsScaleBarRenderer.Flags', 'QgsScaleBarRenderer.Flag']) -> None: ...

        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) -> 'QgsScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> 'QgsScaleBarRenderer.Flags': ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...
    def name(self) -> str: ...


class QgsDoubleBoxScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsDoubleBoxScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsDoubleBoxScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsHollowScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsHollowScaleBarRenderer') -> None: ...

    def applyDefaultSettings(self, settings: 'QgsScaleBarSettings') -> bool: ...
    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsHollowScaleBarRenderer': ...
    def sortKey(self) -> int: ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsNumericScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsNumericScaleBarRenderer') -> None: ...

    @typing.overload
    def calculateBoxSize(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> QtCore.QSizeF: ...
    @typing.overload
    def calculateBoxSize(self, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> QtCore.QSizeF: ...
    def draw(self, context: QgsRenderContext, settings: 'QgsScaleBarSettings', scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsNumericScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsScaleBarRendererRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsScaleBarRendererRegistry') -> None: ...

    def sortKey(self, id: str) -> int: ...
    def visibleName(self, id: str) -> str: ...
    def renderer(self, id: str) -> QgsScaleBarRenderer: ...
    def removeRenderer(self, id: str) -> None: ...
    def addRenderer(self, renderer: QgsScaleBarRenderer) -> None: ...
    def sortedRendererList(self) -> typing.List[str]: ...
    def renderers(self) -> typing.List[str]: ...


class QgsScaleBarSettings(PyQt5.sip.wrapper):

    class LabelHorizontalPlacement(int):
        LabelCenteredEdge = ... # type: QgsScaleBarSettings.LabelHorizontalPlacement
        LabelCenteredSegment = ... # type: QgsScaleBarSettings.LabelHorizontalPlacement

    class LabelVerticalPlacement(int):
        LabelAboveSegment = ... # type: QgsScaleBarSettings.LabelVerticalPlacement
        LabelBelowSegment = ... # type: QgsScaleBarSettings.LabelVerticalPlacement

    class SegmentSizeMode(int):
        SegmentSizeFixed = ... # type: QgsScaleBarSettings.SegmentSizeMode
        SegmentSizeFitWidth = ... # type: QgsScaleBarSettings.SegmentSizeMode

    class Alignment(int):
        AlignLeft = ... # type: QgsScaleBarSettings.Alignment
        AlignMiddle = ... # type: QgsScaleBarSettings.Alignment
        AlignRight = ... # type: QgsScaleBarSettings.Alignment

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsScaleBarSettings') -> None: ...

    def setNumericFormat(self, format: QgsNumericFormat) -> None: ...
    def numericFormat(self) -> QgsNumericFormat: ...
    def setLineCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def lineCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setLineJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def lineJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setAlignment(self, alignment: 'QgsScaleBarSettings.Alignment') -> None: ...
    def alignment(self) -> 'QgsScaleBarSettings.Alignment': ...
    def setBoxContentSpace(self, space: float) -> None: ...
    def boxContentSpace(self) -> float: ...
    def setLabelHorizontalPlacement(self, placement: 'QgsScaleBarSettings.LabelHorizontalPlacement') -> None: ...
    def labelHorizontalPlacement(self) -> 'QgsScaleBarSettings.LabelHorizontalPlacement': ...
    def setLabelVerticalPlacement(self, placement: 'QgsScaleBarSettings.LabelVerticalPlacement') -> None: ...
    def labelVerticalPlacement(self) -> 'QgsScaleBarSettings.LabelVerticalPlacement': ...
    def setLabelBarSpace(self, space: float) -> None: ...
    def labelBarSpace(self) -> float: ...
    def setHeight(self, height: float) -> None: ...
    def height(self) -> float: ...
    def setBrush2(self, brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def brush2(self) -> QtGui.QBrush: ...
    def setBrush(self, brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient]) -> None: ...
    def brush(self) -> QtGui.QBrush: ...
    def setAlternateFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def alternateFillSymbol(self) -> 'QgsFillSymbol': ...
    def setFillSymbol(self, symbol: 'QgsFillSymbol') -> None: ...
    def fillSymbol(self) -> 'QgsFillSymbol': ...
    def setSubdivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def subdivisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setDivisionLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def divisionLineSymbol(self) -> 'QgsLineSymbol': ...
    def setLineSymbol(self, symbol: 'QgsLineSymbol') -> None: ...
    def lineSymbol(self) -> 'QgsLineSymbol': ...
    def setPen(self, pen: typing.Union[QtGui.QPen, QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: str) -> None: ...
    def unitLabel(self) -> str: ...
    def setMapUnitsPerScaleBarUnit(self, units: float) -> None: ...
    def mapUnitsPerScaleBarUnit(self) -> float: ...
    def setUnits(self, units: QgsUnitTypes.DistanceUnit) -> None: ...
    def units(self) -> QgsUnitTypes.DistanceUnit: ...
    def setMaximumBarWidth(self, width: float) -> None: ...
    def maximumBarWidth(self) -> float: ...
    def setMinimumBarWidth(self, width: float) -> None: ...
    def minimumBarWidth(self) -> float: ...
    def setSegmentSizeMode(self, mode: 'QgsScaleBarSettings.SegmentSizeMode') -> None: ...
    def segmentSizeMode(self) -> 'QgsScaleBarSettings.SegmentSizeMode': ...
    def setUnitsPerSegment(self, units: float) -> None: ...
    def unitsPerSegment(self) -> float: ...
    def setSubdivisionsHeight(self, height: float) -> None: ...
    def subdivisionsHeight(self) -> float: ...
    def setNumberOfSubdivisions(self, subdivisions: int) -> None: ...
    def numberOfSubdivisions(self) -> int: ...
    def setNumberOfSegmentsLeft(self, segments: int) -> None: ...
    def numberOfSegmentsLeft(self) -> int: ...
    def setNumberOfSegments(self, segments: int) -> None: ...
    def numberOfSegments(self) -> int: ...


class QgsSingleBoxScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSingleBoxScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsSingleBoxScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsSteppedLineScaleBarRenderer(QgsScaleBarRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSteppedLineScaleBarRenderer') -> None: ...

    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsSteppedLineScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsTicksScaleBarRenderer(QgsScaleBarRenderer):

    class TickPosition(int):
        TicksUp = ... # type: QgsTicksScaleBarRenderer.TickPosition
        TicksDown = ... # type: QgsTicksScaleBarRenderer.TickPosition
        TicksMiddle = ... # type: QgsTicksScaleBarRenderer.TickPosition

    @typing.overload
    def __init__(self, position: 'QgsTicksScaleBarRenderer.TickPosition' = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTicksScaleBarRenderer') -> None: ...

    def tickPosition(self) -> 'QgsTicksScaleBarRenderer.TickPosition': ...
    def setTickPosition(self, position: 'QgsTicksScaleBarRenderer.TickPosition') -> None: ...
    def draw(self, context: QgsRenderContext, settings: QgsScaleBarSettings, scaleContext: QgsScaleBarRenderer.ScaleBarContext) -> None: ...
    def clone(self) -> 'QgsTicksScaleBarRenderer': ...
    def flags(self) -> QgsScaleBarRenderer.Flags: ...
    def sortKey(self) -> int: ...
    def visibleName(self) -> str: ...
    def id(self) -> str: ...


class QgsFeatureRenderer(PyQt5.sip.wrapper):

    class Capability(int):
        SymbolLevels = ... # type: QgsFeatureRenderer.Capability
        MoreSymbolsPerFeature = ... # type: QgsFeatureRenderer.Capability
        Filter = ... # type: QgsFeatureRenderer.Capability
        ScaleDependent = ... # type: QgsFeatureRenderer.Capability

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsFeatureRenderer.Capabilities', 'QgsFeatureRenderer.Capability']) -> None: ...

        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: str) -> None: ...

    @staticmethod
    def convertSymbolRotation(symbol: 'QgsSymbol', field: str) -> None: ...
    @staticmethod
    def convertSymbolSizeScale(symbol: 'QgsSymbol', method: Qgis.ScaleMethod, field: str) -> None: ...
    def saveRendererData(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def _getPoint(context: QgsRenderContext, point: QgsPoint) -> QtCore.QPointF: ...
    def renderVertexMarkerPolygon(self, pts: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: QgsRenderContext) -> None: ...
    def renderVertexMarkerPolyline(self, pts: QtGui.QPolygonF, context: QgsRenderContext) -> None: ...
    def renderVertexMarker(self, pt: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsRenderContext) -> None: ...
    def renderFeatureWithSymbol(self, feature: QgsFeature, symbol: 'QgsSymbol', context: QgsRenderContext, layer: int, selected: bool, drawVertexMarker: bool) -> None: ...
    def copyRendererData(self, destRenderer: 'QgsFeatureRenderer') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def embeddedRenderer(self) -> 'QgsFeatureRenderer': ...
    def setEmbeddedRenderer(self, subRenderer: 'QgsFeatureRenderer') -> None: ...
    def setOrderByEnabled(self, enabled: bool) -> None: ...
    def orderByEnabled(self) -> bool: ...
    def setOrderBy(self, orderBy: QgsFeatureRequest.OrderBy) -> None: ...
    def orderBy(self) -> QgsFeatureRequest.OrderBy: ...
    def setReferenceScale(self, scale: float) -> None: ...
    def referenceScale(self) -> float: ...
    def setForceRasterRender(self, forceRaster: bool) -> None: ...
    def forceRasterRender(self) -> bool: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def modifyRequestExtent(self, extent: QgsRectangle, context: QgsRenderContext) -> None: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def setVertexMarkerAppearance(self, type: Qgis.VertexMarkerType, size: float) -> None: ...
    def legendClassificationAttribute(self) -> str: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def setLegendSymbolItem(self, key: str, symbol: 'QgsSymbol') -> None: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    @staticmethod
    def loadSld(node: QtXml.QDomNode, geomType: QgsWkbTypes.GeometryType, errorMessage: str) -> 'QgsFeatureRenderer': ...
    def writeSld(self, doc: QtXml.QDomDocument, styleName: str, props: typing.Dict[str, typing.Any] = ...) -> QtXml.QDomElement: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def load(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> 'QgsFeatureRenderer': ...
    def setUsingSymbolLevels(self, usingSymbolLevels: bool) -> None: ...
    def usingSymbolLevels(self) -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def capabilities(self) -> 'QgsFeatureRenderer.Capabilities': ...
    def dump(self) -> str: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def clone(self) -> 'QgsFeatureRenderer': ...
    def filterNeedsGeometry(self) -> bool: ...
    def usesEmbeddedSymbols(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def type(self) -> str: ...
    @staticmethod
    def defaultRenderer(geomType: QgsWkbTypes.GeometryType) -> 'QgsFeatureRenderer': ...


class Qgs25DRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    def setShadowEnabled(self, value: bool) -> None: ...
    def shadowEnabled(self) -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'Qgs25DRenderer': ...
    def setShadowSpread(self, shadowSpread: float) -> None: ...
    def shadowSpread(self) -> float: ...
    def setShadowColor(self, shadowColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def clone(self) -> QgsFeatureRenderer: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsSymbolLayer(PyQt5.sip.wrapper):

    class Property(int):
        PropertySize = ... # type: QgsSymbolLayer.Property
        PropertyAngle = ... # type: QgsSymbolLayer.Property
        PropertyName = ... # type: QgsSymbolLayer.Property
        PropertyFillColor = ... # type: QgsSymbolLayer.Property
        PropertyStrokeColor = ... # type: QgsSymbolLayer.Property
        PropertyStrokeWidth = ... # type: QgsSymbolLayer.Property
        PropertyStrokeStyle = ... # type: QgsSymbolLayer.Property
        PropertyOffset = ... # type: QgsSymbolLayer.Property
        PropertyCharacter = ... # type: QgsSymbolLayer.Property
        PropertyWidth = ... # type: QgsSymbolLayer.Property
        PropertyHeight = ... # type: QgsSymbolLayer.Property
        PropertyPreserveAspectRatio = ... # type: QgsSymbolLayer.Property
        PropertyFillStyle = ... # type: QgsSymbolLayer.Property
        PropertyJoinStyle = ... # type: QgsSymbolLayer.Property
        PropertySecondaryColor = ... # type: QgsSymbolLayer.Property
        PropertyLineAngle = ... # type: QgsSymbolLayer.Property
        PropertyLineDistance = ... # type: QgsSymbolLayer.Property
        PropertyGradientType = ... # type: QgsSymbolLayer.Property
        PropertyCoordinateMode = ... # type: QgsSymbolLayer.Property
        PropertyGradientSpread = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1X = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1Y = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2X = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2Y = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference1IsCentroid = ... # type: QgsSymbolLayer.Property
        PropertyGradientReference2IsCentroid = ... # type: QgsSymbolLayer.Property
        PropertyBlurRadius = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstUseWholeShape = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstMaxDistance = ... # type: QgsSymbolLayer.Property
        PropertyShapeburstIgnoreRings = ... # type: QgsSymbolLayer.Property
        PropertyFile = ... # type: QgsSymbolLayer.Property
        PropertyDistanceX = ... # type: QgsSymbolLayer.Property
        PropertyDistanceY = ... # type: QgsSymbolLayer.Property
        PropertyDisplacementX = ... # type: QgsSymbolLayer.Property
        PropertyDisplacementY = ... # type: QgsSymbolLayer.Property
        PropertyOpacity = ... # type: QgsSymbolLayer.Property
        PropertyCustomDash = ... # type: QgsSymbolLayer.Property
        PropertyCapStyle = ... # type: QgsSymbolLayer.Property
        PropertyPlacement = ... # type: QgsSymbolLayer.Property
        PropertyInterval = ... # type: QgsSymbolLayer.Property
        PropertyOffsetAlongLine = ... # type: QgsSymbolLayer.Property
        PropertyAverageAngleLength = ... # type: QgsSymbolLayer.Property
        PropertyHorizontalAnchor = ... # type: QgsSymbolLayer.Property
        PropertyVerticalAnchor = ... # type: QgsSymbolLayer.Property
        PropertyLayerEnabled = ... # type: QgsSymbolLayer.Property
        PropertyArrowWidth = ... # type: QgsSymbolLayer.Property
        PropertyArrowStartWidth = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadLength = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadThickness = ... # type: QgsSymbolLayer.Property
        PropertyArrowHeadType = ... # type: QgsSymbolLayer.Property
        PropertyArrowType = ... # type: QgsSymbolLayer.Property
        PropertyOffsetX = ... # type: QgsSymbolLayer.Property
        PropertyOffsetY = ... # type: QgsSymbolLayer.Property
        PropertyPointCount = ... # type: QgsSymbolLayer.Property
        PropertyRandomSeed = ... # type: QgsSymbolLayer.Property
        PropertyClipPoints = ... # type: QgsSymbolLayer.Property
        PropertyDensityArea = ... # type: QgsSymbolLayer.Property
        PropertyFontFamily = ... # type: QgsSymbolLayer.Property
        PropertyFontStyle = ... # type: QgsSymbolLayer.Property
        PropertyDashPatternOffset = ... # type: QgsSymbolLayer.Property
        PropertyTrimStart = ... # type: QgsSymbolLayer.Property
        PropertyTrimEnd = ... # type: QgsSymbolLayer.Property
        PropertyLineStartWidthValue = ... # type: QgsSymbolLayer.Property
        PropertyLineEndWidthValue = ... # type: QgsSymbolLayer.Property
        PropertyLineStartColorValue = ... # type: QgsSymbolLayer.Property
        PropertyLineEndColorValue = ... # type: QgsSymbolLayer.Property
        PropertyMarkerClipping = ... # type: QgsSymbolLayer.Property
        PropertyRandomOffsetX = ... # type: QgsSymbolLayer.Property
        PropertyRandomOffsetY = ... # type: QgsSymbolLayer.Property
        PropertyLineClipping = ... # type: QgsSymbolLayer.Property

    def __init__(self, type: Qgis.SymbolType, locked: bool = ...) -> None: ...

    def copyPaintEffect(self, destLayer: 'QgsSymbolLayer') -> None: ...
    def copyDataDefinedProperties(self, destLayer: 'QgsSymbolLayer') -> None: ...
    def restoreOldDataDefinedProperties(self, stringMap: typing.Dict[str, typing.Any]) -> None: ...
    def prepareMasks(self, context: 'QgsSymbolRenderContext') -> None: ...
    def masks(self) -> typing.List['QgsSymbolLayerReference']: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def prepareExpressions(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def dxfBrushStyle(self) -> QtCore.Qt.BrushStyle: ...
    def dxfBrushColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfCustomDashPattern(self) -> typing.Tuple[typing.List[float], QgsUnitTypes.RenderUnit]: ...
    def dxfAngle(self, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def dxfOffset(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> 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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def isLocked(self) -> bool: ...
    def setLocked(self, locked: bool) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def isCompatibleWithSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def type(self) -> Qgis.SymbolType: ...
    def setSubSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def subSymbol(self) -> 'QgsSymbol': ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSymbolLayer': ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def fillColor(self) -> QtGui.QColor: ...
    def setFillColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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 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) -> QgsUnitTypes.RenderUnit: ...
    def setWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setOffset(self, offset: float) -> None: ...
    def offset(self) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def headThicknessUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def headLengthUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def arrowStartWidthUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def arrowWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setArrowWidth(self, width: float) -> None: ...
    def arrowWidth(self) -> float: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: 'QgsSymbol') -> bool: ...
    def subSymbol(self) -> 'QgsSymbol': ...
    def clone(self) -> 'QgsArrowSymbolLayer': ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRendererCategory(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, value: typing.Any, symbol: 'QgsSymbol', label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, cat: 'QgsRendererCategory') -> None: ...

    def swap(self, other: 'QgsRendererCategory') -> None: ...
    def __repr__(self) -> typing.Any: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def dump(self) -> str: ...
    def setRenderState(self, render: bool) -> None: ...
    def renderState(self) -> bool: ...
    def setLabel(self, label: str) -> None: ...
    def setSymbol(self, s: 'QgsSymbol') -> None: ...
    def setValue(self, value: typing.Any) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> 'QgsSymbol': ...
    def value(self) -> typing.Any: ...


class QgsCategorizedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, attrName: str = ..., categories: typing.Iterable[QgsRendererCategory] = ...) -> None: ...

    def symbolForValue2(self, value: typing.Any) -> typing.Tuple['QgsSymbol', bool]: ...
    def symbolForValue(self, value: typing.Any) -> 'QgsSymbol': ...
    def skipRender(self) -> 'QgsSymbol': ...
    def rebuildHash(self) -> None: ...
    @staticmethod
    def displayString(value: typing.Any, precision: int = ...) -> str: ...
    @staticmethod
    def createCategories(values: typing.Iterable[typing.Any], symbol: 'QgsSymbol', layer: typing.Optional[QgsVectorLayer] = ..., fieldName: str = ...) -> typing.List[QgsRendererCategory]: ...
    def matchToSymbols(self, style: 'QgsStyle', type: Qgis.SymbolType, caseSensitive: bool = ..., useTolerantMatch: bool = ...) -> typing.Tuple[int, typing.List[typing.Any], typing.List[str]]: ...
    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsCategorizedSymbolRenderer': ...
    def legendClassificationAttribute(self) -> str: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def setLegendSymbolItem(self, key: str, symbol: 'QgsSymbol') -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def updateColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceSymbol(self, sym: 'QgsSymbol') -> None: ...
    def sourceSymbol(self) -> 'QgsSymbol': ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def setClassAttribute(self, attr: str) -> None: ...
    def classAttribute(self) -> str: ...
    def sortByLabel(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def sortByValue(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def moveCategory(self, from_: int, to: int) -> None: ...
    def deleteAllCategories(self) -> None: ...
    def deleteCategory(self, catIndex: int) -> bool: ...
    def addCategory(self, category: QgsRendererCategory) -> None: ...
    def updateCategoryRenderState(self, catIndex: int, render: bool) -> bool: ...
    def updateCategoryLabel(self, catIndex: int, label: str) -> bool: ...
    def updateCategorySymbol(self, catIndex: int, symbol: 'QgsSymbol') -> bool: ...
    def updateCategoryValue(self, catIndex: int, value: typing.Any) -> bool: ...
    def categoryIndexForLabel(self, val: str) -> int: ...
    def categoryIndexForValue(self, val: typing.Any) -> int: ...
    def categories(self) -> typing.List[QgsRendererCategory]: ...
    def updateSymbols(self, sym: 'QgsSymbol') -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsCategorizedSymbolRenderer': ...
    def dump(self) -> str: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...


class QgsColorBrewerPalette(PyQt5.sip.wrapper):

    BREWER_STRING = ... # type: str

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsColorBrewerPalette') -> None: ...

    @staticmethod
    def listSchemeVariants(schemeName: str) -> typing.List[int]: ...
    @staticmethod
    def listSchemes() -> typing.List[str]: ...
    @staticmethod
    def listSchemeColors(schemeName: str, colors: int) -> typing.List[QtGui.QColor]: ...


class QgsCombinedStyleModel(QtCore.QConcatenateTablesProxyModel):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def styles(self) -> typing.List['QgsStyle']: ...
    def removeStyle(self, style: 'QgsStyle') -> None: ...
    def addDefaultStyle(self) -> None: ...
    def addStyle(self, style: 'QgsStyle') -> None: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...


class QgsCptCityArchive(PyQt5.sip.wrapper):

    def __init__(self, archiveName: str = ..., baseDir: str = ...) -> None: ...

    def selectionItems(self) -> typing.List['QgsCptCityDataItem']: ...
    def rootItems(self) -> typing.List['QgsCptCityDataItem']: ...
    @staticmethod
    def archiveRegistry() -> typing.Any: ...
    @staticmethod
    def defaultArchive() -> 'QgsCptCityArchive': ...
    @staticmethod
    def clearArchives() -> None: ...
    @staticmethod
    def initDefaultArchive() -> None: ...
    @staticmethod
    def initArchive(archiveName: str, archiveBaseDir: str) -> None: ...
    @staticmethod
    def initArchives(loadAll: bool = ...) -> None: ...
    def archiveName(self) -> str: ...
    def isEmpty(self) -> bool: ...
    @staticmethod
    def description(fileName: str) -> typing.Dict[str, str]: ...
    @staticmethod
    def copyingInfo(fileName: str) -> typing.Dict[str, str]: ...
    @staticmethod
    def findFileName(target: str, startDir: str, baseDir: str) -> str: ...
    def descFileName(self, dirName: str) -> str: ...
    def copyingFileName(self, dirName: str) -> str: ...
    def setBaseDir(self, dirName: str) -> None: ...
    @staticmethod
    def defaultBaseDir() -> str: ...
    @typing.overload
    def baseDir(self) -> str: ...
    @typing.overload
    @staticmethod
    def baseDir(archiveName: str) -> str: ...


class QgsCptCityDataItem(QtCore.QObject):

    class Type(int):
        ColorRamp = ... # type: QgsCptCityDataItem.Type
        Collection = ... # type: QgsCptCityDataItem.Type
        Directory = ... # type: QgsCptCityDataItem.Type
        Selection = ... # type: QgsCptCityDataItem.Type
        AllRamps = ... # type: QgsCptCityDataItem.Type

    def __init__(self, type: 'QgsCptCityDataItem.Type', parent: 'QgsCptCityDataItem', name: str, path: str) -> None: ...

    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: str) -> None: ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def shortInfo(self) -> str: ...
    def info(self) -> str: ...
    def path(self) -> str: ...
    def name(self) -> str: ...
    @typing.overload
    def icon(self) -> QtGui.QIcon: ...
    @typing.overload
    def icon(self, size: QtCore.QSize) -> QtGui.QIcon: ...
    def children(self) -> typing.List['QgsCptCityDataItem']: ...
    def setParent(self, parent: 'QgsCptCityDataItem') -> None: ...
    def parent(self) -> 'QgsCptCityDataItem': ...
    def type(self) -> 'QgsCptCityDataItem.Type': ...
    @staticmethod
    def findItem(items: typing.Iterable['QgsCptCityDataItem'], item: 'QgsCptCityDataItem') -> int: ...
    def handleDrop(self, a0: QtCore.QMimeData, a1: QtCore.Qt.DropAction) -> bool: ...
    def acceptDrop(self) -> bool: ...
    def paramWidget(self) -> QtWidgets.QWidget: ...
    def equal(self, other: 'QgsCptCityDataItem') -> bool: ...
    def removeChildItem(self, child: 'QgsCptCityDataItem') -> 'QgsCptCityDataItem': ...
    def deleteChildItem(self, child: 'QgsCptCityDataItem') -> None: ...
    def addChildItem(self, child: 'QgsCptCityDataItem', refresh: bool = ...) -> None: ...
    def isPopulated(self) -> bool: ...
    def populate(self) -> None: ...
    def createChildren(self) -> typing.List['QgsCptCityDataItem']: ...
    def refresh(self) -> None: ...
    def leafCount(self) -> int: ...
    def rowCount(self) -> int: ...
    def hasChildren(self) -> bool: ...


class QgsCptCityColorRampItem(QgsCptCityDataItem):

    @typing.overload
    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str, variantName: str = ..., initialize: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str, variantList: typing.Iterable[str], initialize: bool = ...) -> None: ...

    def init(self) -> None: ...
    @typing.overload
    def icon(self) -> QtGui.QIcon: ...
    @typing.overload
    def icon(self, size: QtCore.QSize) -> QtGui.QIcon: ...
    def ramp(self) -> QgsCptCityColorRamp: ...
    def leafCount(self) -> int: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...


class QgsCptCityCollectionItem(QgsCptCityDataItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def childrenRamps(self, recursive: bool) -> typing.List[QgsCptCityDataItem]: ...
    def addChild(self, item: QgsCptCityDataItem) -> None: ...
    def setPopulated(self) -> None: ...


class QgsCptCityDirectoryItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def dirEntries(self) -> typing.List[str]: ...
    def rampsMap(self) -> typing.Dict[str, typing.List[str]]: ...
    @staticmethod
    def dataItem(parent: QgsCptCityDataItem, name: str, path: str) -> QgsCptCityDataItem: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCitySelectionItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, path: str) -> None: ...

    def parseXml(self) -> None: ...
    def selectionsList(self) -> typing.List[str]: ...
    def equal(self, other: QgsCptCityDataItem) -> bool: ...
    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCityAllRampsItem(QgsCptCityCollectionItem):

    def __init__(self, parent: QgsCptCityDataItem, name: str, items: typing.Iterable[QgsCptCityDataItem]) -> None: ...

    def createChildren(self) -> typing.List[QgsCptCityDataItem]: ...


class QgsCptCityBrowserModel(QtCore.QAbstractItemModel):

    class ViewType(int):
        Authors = ... # type: QgsCptCityBrowserModel.ViewType
        Selections = ... # type: QgsCptCityBrowserModel.ViewType
        List = ... # type: QgsCptCityBrowserModel.ViewType

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., archive: typing.Optional[QgsCptCityArchive] = ..., Type: 'QgsCptCityBrowserModel.ViewType' = ...) -> None: ...

    def removeRootItems(self) -> None: ...
    def addRootItems(self) -> None: ...
    def endRemoveItems(self) -> None: ...
    def beginRemoveItems(self, parent: QgsCptCityDataItem, first: int, last: int) -> None: ...
    def endInsertItems(self) -> None: ...
    def beginInsertItems(self, parent: QgsCptCityDataItem, first: int, last: int) -> None: ...
    def fetchMore(self, parent: QtCore.QModelIndex) -> None: ...
    def canFetchMore(self, parent: QtCore.QModelIndex) -> bool: ...
    def connectItem(self, item: QgsCptCityDataItem) -> None: ...
    def findPath(self, path: str) -> QtCore.QModelIndex: ...
    @typing.overload
    def refresh(self, path: str) -> None: ...
    @typing.overload
    def refresh(self, index: QtCore.QModelIndex = ...) -> None: ...
    def reload(self) -> None: ...
    def hasChildren(self, parent: QtCore.QModelIndex = ...) -> bool: ...
    def dataItem(self, idx: QtCore.QModelIndex) -> QgsCptCityDataItem: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def findItem(self, item: QgsCptCityDataItem, parent: typing.Optional[QgsCptCityDataItem] = ...) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def data(self, index: QtCore.QModelIndex, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...


class QgsMarkerSymbolLayer(QgsSymbolLayer):

    class VerticalAnchorPoint(int):
        Top = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint
        VCenter = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint
        Bottom = ... # type: QgsMarkerSymbolLayer.VerticalAnchorPoint

    class HorizontalAnchorPoint(int):
        Left = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint
        HCenter = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint
        Right = ... # type: QgsMarkerSymbolLayer.HorizontalAnchorPoint

    def __init__(self, locked: bool = ...) -> None: ...

    @staticmethod
    def _rotatedOffset(offset: typing.Union[QtCore.QPointF, QtCore.QPoint], angle: float) -> QtCore.QPointF: ...
    def markerOffset2(self, context: 'QgsSymbolRenderContext', width: float, height: float, widthUnit: QgsUnitTypes.RenderUnit, heightUnit: QgsUnitTypes.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 mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setSizeUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def symbolHeightMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSymbolHeightMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def symbolHeightUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSymbolHeightUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def symbolWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSymbolWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def symbolWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSymbolWidthUnit(self, unit: QgsUnitTypes.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: str) -> typing.Tuple['QgsEllipseSymbolLayer.Shape', bool]: ...
    def setShape(self, shape: 'QgsEllipseSymbolLayer.Shape') -> None: ...
    def shape(self) -> 'QgsEllipseSymbolLayer.Shape': ...
    def symbolName(self) -> str: ...
    def setSymbolName(self, name: str) -> None: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> bool: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsEllipseSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...
    @staticmethod
    def shapeIsFilled(shape: 'QgsEllipseSymbolLayer.Shape') -> bool: ...
    @staticmethod
    def availableShapes() -> typing.List['QgsEllipseSymbolLayer.Shape']: ...


class QgsEmbeddedSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, defaultSymbol: 'QgsSymbol') -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsEmbeddedSymbolRenderer': ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def setDefaultSymbol(self, symbol: 'QgsSymbol') -> None: ...
    def defaultSymbol(self) -> 'QgsSymbol': ...
    def symbols(self, context: QgsRenderContext) -> typing.List['QgsSymbol']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def clone(self) -> 'QgsEmbeddedSymbolRenderer': ...
    def usesEmbeddedSymbols(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> 'QgsSymbol': ...


class QgsFeatureRendererGenerator(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFeatureRendererGenerator') -> None: ...

    def createRenderer(self) -> QgsFeatureRenderer: ...
    def level(self) -> float: ...
    def id(self) -> str: ...


class QgsSymbol(PyQt5.sip.wrapper):

    class Property(int):
        PropertyOpacity = ... # type: QgsSymbol.Property

    def __init__(self, type: Qgis.SymbolType, layers: typing.Iterable[QgsSymbolLayer]) -> None: ...

    def renderVertexMarker(self, pt: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsRenderContext, currentVertexMarkerType: Qgis.VertexMarkerType, currentVertexMarkerSize: float) -> None: ...
    def renderUsingLayer(self, layer: QgsSymbolLayer, context: 'QgsSymbolRenderContext', geometryType: QgsWkbTypes.GeometryType = ..., points: typing.Optional[QtGui.QPolygonF] = ..., rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]] = ...) -> None: ...
    def cloneLayers(self) -> typing.List[QgsSymbolLayer]: ...
    @staticmethod
    def _getPolygon(pts: QtGui.QPolygonF, holes: typing.Iterable[QtGui.QPolygonF], context: QgsRenderContext, polygon: QgsPolygon, clipToExtent: bool = ..., correctRingOrientation: bool = ...) -> None: ...
    @staticmethod
    def _getPolygonRing(context: QgsRenderContext, curve: QgsCurve, clipToExtent: bool, isExteriorRing: bool = ..., correctRingOrientation: bool = ...) -> QtGui.QPolygonF: ...
    @staticmethod
    def _getLineString(context: QgsRenderContext, curve: QgsCurve, clipToExtent: bool = ...) -> QtGui.QPolygonF: ...
    @staticmethod
    def _getPoint(context: QgsRenderContext, point: QgsPoint) -> QtCore.QPointF: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ...) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ...) -> None: ...
    def symbolRenderContext(self) -> 'QgsSymbolRenderContext': ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ..., currentVertexMarkerType: Qgis.VertexMarkerType = ..., currentVertexMarkerSize: float = ...) -> None: ...
    def layer(self) -> QgsVectorLayer: ...
    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def setDataDefinedProperty(self, key: 'QgsSymbol.Property', property: QgsProperty) -> None: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setAnimationSettings(self, settings: 'QgsSymbolAnimationSettings') -> None: ...
    def animationSettings(self) -> 'QgsSymbolAnimationSettings': ...
    def forceRHR(self) -> bool: ...
    def setForceRHR(self, force: bool) -> None: ...
    def clipFeaturesToExtent(self) -> bool: ...
    def setClipFeaturesToExtent(self, clipFeaturesToExtent: bool) -> None: ...
    def flags(self) -> Qgis.SymbolFlags: ...
    def setFlags(self, flags: typing.Union[Qgis.SymbolFlags, Qgis.SymbolFlag]) -> None: ...
    def renderHints(self) -> Qgis.SymbolRenderHints: ...
    def setRenderHints(self, hints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint]) -> None: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSymbol': ...
    def dump(self) -> str: ...
    def bigSymbolPreviewImage(self, expressionContext: typing.Optional[QgsExpressionContext] = ..., flags: int = ...) -> QtGui.QImage: ...
    def bigSymbolPreviewImageV2(self, expressionContext: typing.Optional[QgsExpressionContext] = ..., flags: typing.Union[Qgis.SymbolPreviewFlags, Qgis.SymbolPreviewFlag] = ...) -> QtGui.QImage: ...
    def asImage(self, size: QtCore.QSize, customContext: typing.Optional[QgsRenderContext] = ...) -> QtGui.QImage: ...
    def exportImage(self, path: str, format: str, size: QtCore.QSize) -> None: ...
    def drawPreviewIcon(self, painter: QtGui.QPainter, size: QtCore.QSize, customContext: typing.Optional[QgsRenderContext] = ..., selected: bool = ..., expressionContext: typing.Optional[QgsExpressionContext] = ..., patchShape: typing.Optional[QgsLegendPatchShape] = ...) -> 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: QgsSymbolLayer) -> bool: ...
    def takeSymbolLayer(self, index: int) -> QgsSymbolLayer: ...
    def deleteSymbolLayer(self, index: int) -> bool: ...
    def appendSymbolLayer(self, layer: QgsSymbolLayer) -> bool: ...
    def insertSymbolLayer(self, index: int, layer: QgsSymbolLayer) -> bool: ...
    def __delitem__(self, index: int) -> None: ...
    def __getitem__(self, index: int) -> QgsSymbolLayer: ...
    def __bool__(self) -> int: ...
    def __len__(self) -> int: ...
    def symbolLayerCount(self) -> int: ...
    def symbolLayer(self, layer: int) -> QgsSymbolLayer: ...
    def symbolLayers(self) -> typing.List[QgsSymbolLayer]: ...
    def type(self) -> Qgis.SymbolType: ...
    @staticmethod
    def defaultSymbol(geomType: QgsWkbTypes.GeometryType) -> 'QgsSymbol': ...
    @staticmethod
    def propertyDefinitions() -> typing.Dict[int, QgsPropertyDefinition]: ...
    @staticmethod
    def symbolTypeForGeometryType(type: QgsWkbTypes.GeometryType) -> Qgis.SymbolType: ...
    @staticmethod
    def symbolTypeToString(type: Qgis.SymbolType) -> str: ...


class QgsFillSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsFillSymbol': ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setAngle(self, angle: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsFillSymbol': ...


class QgsFillSymbolLayer(QgsSymbolLayer):

    def __init__(self, locked: bool = ...) -> None: ...

    def _renderPolygon(self, p: QtGui.QPainter, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def angle(self) -> float: ...
    def setAngle(self, angle: float) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...


class QgsSimpleFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., style: QtCore.Qt.BrushStyle = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeStyle: QtCore.Qt.PenStyle = ..., strokeWidth: float = ..., penJoinStyle: QtCore.Qt.PenJoinStyle = ...) -> None: ...

    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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: QgsUnitTypes.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) -> 'QgsSimpleFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsGradientFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.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: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def setGradientColorType(self, gradientColorType: Qgis.GradientColorSource) -> None: ...
    def gradientColorType(self) -> Qgis.GradientColorSource: ...
    def setGradientType(self, gradientType: Qgis.GradientType) -> None: ...
    def gradientType(self) -> Qgis.GradientType: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsGradientFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsShapeburstFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.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) -> QgsColorRamp: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorType(self) -> Qgis.GradientColorSource: ...
    def setColorType(self, colorType: Qgis.GradientColorSource) -> None: ...
    def distanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setDistanceUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def maxDistance(self) -> float: ...
    def setMaxDistance(self, maxDistance: float) -> None: ...
    def useWholeShape(self) -> bool: ...
    def setUseWholeShape(self, useWholeShape: bool) -> None: ...
    def blurRadius(self) -> int: ...
    def setBlurRadius(self, blurRadius: int) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsShapeburstFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsImageFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyBrushTransformFromContext(self, context: typing.Optional['QgsSymbolRenderContext'] = ...) -> bool: ...
    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def dxfPenStyle(self) -> QtCore.Qt.PenStyle: ...
    def dxfWidth(self, e: QgsDxfExport, context: 'QgsSymbolRenderContext') -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...


class QgsRasterFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self, imageFilePath: str = ...) -> None: ...

    def applyBrushTransformFromContext(self, context: typing.Optional['QgsSymbolRenderContext'] = ...) -> bool: ...
    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def widthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def widthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def width(self) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def offsetMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.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: str) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def clone(self) -> 'QgsRasterFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsSVGFillSymbolLayer(QgsImageFillSymbolLayer):

    @typing.overload
    def __init__(self, svgFilePath: str, width: float = ..., rotation: float = ...) -> None: ...
    @typing.overload
    def __init__(self, svgData: typing.Union[QtCore.QByteArray, bytes, bytearray], width: float = ..., rotation: float = ...) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setParameters(self, parameters: typing.Dict[str, QgsProperty]) -> None: ...
    def parameters(self) -> typing.Dict[str, QgsProperty]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def svgStrokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSvgStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def svgStrokeWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSvgStrokeWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def patternWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setPatternWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def patternWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setPatternWidthUnit(self, unit: QgsUnitTypes.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: str) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dxfColor(self, context: 'QgsSymbolRenderContext') -> QtGui.QColor: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def usesMapUnits(self) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSVGFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsLinePatternFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def lineWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setLineWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def lineWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setLineWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def distanceMapUnitScale(self) -> QgsMapUnitScale: ...
    def setDistanceMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def distanceUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setDistanceUnit(self, unit: QgsUnitTypes.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 toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsLinePatternFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsPointPatternFillSymbolLayer(QgsImageFillSymbolLayer):

    def __init__(self) -> None: ...

    def applyDataDefinedSettings(self, context: 'QgsSymbolRenderContext') -> None: ...
    def setAngle(self, angle: float) -> None: ...
    def angle(self) -> float: ...
    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) -> QgsUnitTypes.RenderUnit: ...
    def setRandomDeviationYUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def randomDeviationXUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setRandomDeviationXUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetYUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetXMapUnitScale(self) -> QgsMapUnitScale: ...
    def setOffsetXMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def offsetXUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOffsetXUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDisplacementYUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDisplacementXUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDistanceYUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDistanceXUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsPointPatternFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRandomMarkerFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self, pointCount: int = ..., method: Qgis.PointCountMethod = ..., densityArea: float = ..., seed: int = ...) -> None: ...

    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def densityAreaUnitScale(self) -> QgsMapUnitScale: ...
    def setDensityAreaUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def densityAreaUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setDensityAreaUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def clone(self) -> 'QgsRandomMarkerFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsCentroidFillSymbolLayer(QgsFillSymbolLayer):

    def __init__(self) -> None: ...

    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def setClipOnCurrentPartOnly(self, clipOnCurrentPartOnly: bool) -> None: ...
    def clipOnCurrentPartOnly(self) -> bool: ...
    def setClipPoints(self, clipPoints: bool) -> None: ...
    def clipPoints(self) -> bool: ...
    def pointOnAllParts(self) -> bool: ...
    def setPointOnAllParts(self, pointOnAllParts: bool) -> None: ...
    def pointOnSurface(self) -> bool: ...
    def setPointOnSurface(self, pointOnSurface: bool) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsCentroidFillSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygon(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsGeometryGeneratorSymbolLayer(QgsSymbolLayer):

    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def render(self, context: 'QgsSymbolRenderContext', geometryType: QgsWkbTypes.GeometryType = ..., points: typing.Optional[QtGui.QPolygonF] = ..., rings: typing.Optional[typing.Iterable[QtGui.QPolygonF]] = ...) -> None: ...
    def isCompatibleWithSymbol(self, symbol: QgsSymbol) -> bool: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setUnits(self, units: QgsUnitTypes.RenderUnit) -> None: ...
    def units(self) -> QgsUnitTypes.RenderUnit: ...
    def geometryExpression(self) -> str: ...
    def setGeometryExpression(self, exp: str) -> None: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> QgsSymbolLayer: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def setSymbolType(self, symbolType: Qgis.SymbolType) -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsGraduatedSymbolRenderer(QgsFeatureRenderer):

    class Mode(int):
        EqualInterval = ... # type: QgsGraduatedSymbolRenderer.Mode
        Quantile = ... # type: QgsGraduatedSymbolRenderer.Mode
        Jenks = ... # type: QgsGraduatedSymbolRenderer.Mode
        StdDev = ... # type: QgsGraduatedSymbolRenderer.Mode
        Pretty = ... # type: QgsGraduatedSymbolRenderer.Mode
        Custom = ... # type: QgsGraduatedSymbolRenderer.Mode

    def __init__(self, attrName: str = ..., ranges: typing.Iterable['QgsRendererRange'] = ...) -> None: ...

    def legendKeyForValue(self, value: float) -> str: ...
    def symbolForValue(self, value: float) -> QgsSymbol: ...
    def rangeForValue(self, value: float) -> 'QgsRendererRange': ...
    def updateRangeLabels(self) -> None: ...
    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsGraduatedSymbolRenderer': ...
    def legendClassificationAttribute(self) -> str: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setGraduatedMethod(self, method: Qgis.GraduatedMethod) -> None: ...
    def graduatedMethod(self) -> Qgis.GraduatedMethod: ...
    def maxSymbolSize(self) -> float: ...
    def minSymbolSize(self) -> float: ...
    def setSymbolSizes(self, minSize: float, maxSize: float) -> None: ...
    def updateSymbols(self, sym: QgsSymbol) -> None: ...
    def updateColorRamp(self, ramp: typing.Optional[QgsColorRamp] = ...) -> None: ...
    def setSourceColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def sourceColorRamp(self) -> QgsColorRamp: ...
    def setSourceSymbol(self, sym: QgsSymbol) -> None: ...
    def sourceSymbol(self) -> QgsSymbol: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    @staticmethod
    def createRenderer(vlayer: QgsVectorLayer, attrName: str, classes: int, mode: 'QgsGraduatedSymbolRenderer.Mode', symbol: QgsSymbol, ramp: QgsColorRamp, legendFormat: 'QgsRendererRangeLabelFormat' = ..., useSymmetricMode: bool = ..., symmetryPoint: float = ..., listForCboPrettyBreaks: typing.Iterable[str] = ..., astride: bool = ...) -> 'QgsGraduatedSymbolRenderer': ...
    def calculateLabelPrecision(self, updateRanges: bool = ...) -> None: ...
    def setLabelFormat(self, labelFormat: 'QgsRendererRangeLabelFormat', updateRanges: bool = ...) -> None: ...
    def labelFormat(self) -> 'QgsRendererRangeLabelFormat': ...
    @typing.overload
    def updateClasses(self, vlayer: QgsVectorLayer, mode: 'QgsGraduatedSymbolRenderer.Mode', nclasses: int, useSymmetricMode: bool = ..., symmetryPoint: float = ..., astride: bool = ...) -> None: ...
    @typing.overload
    def updateClasses(self, vl: QgsVectorLayer, nclasses: int) -> None: ...
    @staticmethod
    def calcEqualIntervalBreaks(minimum: float, maximum: float, classes: int, useSymmetricMode: bool, symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    @staticmethod
    def makeBreaksSymmetric(breaks: typing.Iterable[float], symmetryPoint: float, astride: bool) -> typing.List[float]: ...
    def setAstride(self, astride: bool) -> None: ...
    def astride(self) -> bool: ...
    def setSymmetryPoint(self, symmetryPoint: float) -> None: ...
    def symmetryPoint(self) -> float: ...
    def setUseSymmetricMode(self, useSymmetricMode: bool) -> None: ...
    def useSymmetricMode(self) -> bool: ...
    def setMode(self, mode: 'QgsGraduatedSymbolRenderer.Mode') -> None: ...
    def mode(self) -> 'QgsGraduatedSymbolRenderer.Mode': ...
    def setClassificationMethod(self, method: QgsClassificationMethod) -> None: ...
    def classificationMethod(self) -> QgsClassificationMethod: ...
    def sortByLabel(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def sortByValue(self, order: QtCore.Qt.SortOrder = ...) -> None: ...
    def rangesHaveGaps(self) -> bool: ...
    def rangesOverlap(self) -> bool: ...
    def moveClass(self, from_: int, to: int) -> None: ...
    def deleteAllClasses(self) -> None: ...
    def deleteClass(self, idx: int) -> None: ...
    def addBreak(self, breakValue: float, updateSymbols: bool = ...) -> None: ...
    def addClassLowerUpper(self, lower: float, upper: float) -> None: ...
    def addClassRange(self, range: 'QgsRendererRange') -> None: ...
    def addClass(self, symbol: QgsSymbol) -> None: ...
    def updateRangeRenderState(self, rangeIndex: int, render: bool) -> bool: ...
    def updateRangeLowerValue(self, rangeIndex: int, value: float) -> bool: ...
    def updateRangeUpperValue(self, rangeIndex: int, value: float) -> bool: ...
    def updateRangeLabel(self, rangeIndex: int, label: str) -> bool: ...
    def updateRangeSymbol(self, rangeIndex: int, symbol: QgsSymbol) -> bool: ...
    def ranges(self) -> typing.List['QgsRendererRange']: ...
    def setClassAttribute(self, attr: str) -> None: ...
    def classAttribute(self) -> str: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsGraduatedSymbolRenderer': ...
    def dump(self) -> str: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsHeatmapRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    def setWeightExpression(self, expression: str) -> None: ...
    def weightExpression(self) -> str: ...
    def setRenderQuality(self, quality: int) -> None: ...
    def renderQuality(self) -> float: ...
    def setMaximumValue(self, value: float) -> None: ...
    def maximumValue(self) -> float: ...
    def setRadiusMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def radiusMapUnitScale(self) -> QgsMapUnitScale: ...
    def setRadiusUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def radiusUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setRadius(self, radius: float) -> None: ...
    def radius(self) -> float: ...
    def setColorRamp(self, ramp: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def modifyRequestExtent(self, extent: QgsRectangle, context: QgsRenderContext) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsHeatmapRenderer': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsHeatmapRenderer': ...


class QgsInterpolatedLineColor(PyQt5.sip.wrapper):

    class ColoringMethod(int):
        SingleColor = ... # type: QgsInterpolatedLineColor.ColoringMethod
        ColorRamp = ... # type: QgsInterpolatedLineColor.ColoringMethod

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, colorRampShader: QgsColorRampShader) -> None: ...
    @typing.overload
    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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) -> QgsUnitTypes.RenderUnit: ...
    def setWidthUnit(self, strokeWidthUnit: QgsUnitTypes.RenderUnit) -> None: ...
    def interpolatedLineWidth(self) -> QgsInterpolatedLineWidth: ...
    def setInterpolatedWidth(self, strokeWidth: QgsInterpolatedLineWidth) -> None: ...


class QgsInterpolatedLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self) -> None: ...

    def interpolatedColor(self) -> QgsInterpolatedLineColor: ...
    def setInterpolatedColor(self, interpolatedLineColor: QgsInterpolatedLineColor) -> None: ...
    def endValueExpressionForColor(self) -> str: ...
    def startValueExpressionForColor(self) -> str: ...
    def setExpressionsStringForColor(self, start: str, end: str) -> None: ...
    def interpolatedWidth(self) -> QgsInterpolatedLineWidth: ...
    def setInterpolatedWidth(self, interpolatedLineWidth: QgsInterpolatedLineWidth) -> None: ...
    def widthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setWidthUnit(self, strokeWidthUnit: QgsUnitTypes.RenderUnit) -> None: ...
    def endValueExpressionForWidth(self) -> str: ...
    def startValueExpressionForWidth(self) -> str: ...
    def setExpressionsStringForWidth(self, start: str, end: str) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def isCompatibleWithSymbol(self, symbol: QgsSymbol) -> bool: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def drawPreviewIcon(self, context: 'QgsSymbolRenderContext', size: QtCore.QSize) -> None: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsInterpolatedLineSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def flags(self) -> Qgis.SymbolLayerFlags: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsMergedFeatureRenderer(QgsFeatureRenderer):

    class GeometryOperation(int):
        Merge = ... # type: QgsMergedFeatureRenderer.GeometryOperation
        InvertOnly = ... # type: QgsMergedFeatureRenderer.GeometryOperation
        MergeAndInvert = ... # type: QgsMergedFeatureRenderer.GeometryOperation

    @typing.overload
    def __init__(self, embeddedRenderer: QgsFeatureRenderer) -> None: ...
    @typing.overload
    def __init__(self, type: str, embeddedRenderer: QgsFeatureRenderer) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsMergedFeatureRenderer': ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def embeddedRenderer(self) -> QgsFeatureRenderer: ...
    def setEmbeddedRenderer(self, subRenderer: QgsFeatureRenderer) -> None: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def legendSymbolItems(self) -> typing.List['QgsLegendSymbolItem']: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dump(self) -> str: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsMergedFeatureRenderer': ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsInvertedPolygonRenderer(QgsMergedFeatureRenderer):

    def __init__(self, embeddedRenderer: typing.Optional[QgsFeatureRenderer] = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsInvertedPolygonRenderer': ...
    def setPreprocessingEnabled(self, enabled: bool) -> None: ...
    def preprocessingEnabled(self) -> bool: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def dump(self) -> str: ...
    def clone(self) -> 'QgsInvertedPolygonRenderer': ...


class QgsLegendSymbolItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, symbol: QgsSymbol, label: str, ruleKey: str, checkable: bool = ..., scaleMinDenom: int = ..., scaleMaxDenom: int = ..., level: int = ..., parentRuleKey: str = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsLegendSymbolItem') -> None: ...

    def dataDefinedSizeLegendSettings(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegendSettings(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def parentRuleKey(self) -> str: ...
    def level(self) -> int: ...
    def scaleMaxDenom(self) -> int: ...
    def scaleMinDenom(self) -> int: ...
    def isScaleOK(self, scale: float) -> bool: ...
    def legacyRuleKey(self) -> QgsSymbol: ...
    def isCheckable(self) -> bool: ...
    def ruleKey(self) -> str: ...
    def label(self) -> str: ...
    def symbol(self) -> QgsSymbol: ...


class QgsLineSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsLineSymbol': ...
    def renderPolyline(self, points: QtGui.QPolygonF, f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def dataDefinedWidth(self) -> QgsProperty: ...
    def setDataDefinedWidth(self, property: QgsProperty) -> None: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setWidth(self, width: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsLineSymbol': ...


class QgsSimpleLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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) -> QgsUnitTypes.RenderUnit: ...
    def setTrimDistanceEndUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setTrimDistanceStartUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDashPatternOffsetUnit(self, unit: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setCustomDashPatternUnit(self, unit: QgsUnitTypes.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], QgsUnitTypes.RenderUnit]: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def ogrFeatureStyle(self, mmScaleFactor: float, mapUnitScaleFactor: float) -> str: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSimpleLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsTemplatedLineSymbolLayerBase(QgsLineSymbolLayer):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    @staticmethod
    def setCommonProperties(destLayer: 'QgsTemplatedLineSymbolLayerBase', properties: typing.Dict[str, typing.Any]) -> None: ...
    def copyTemplateSymbolProperties(self, destLayer: 'QgsTemplatedLineSymbolLayerBase') -> None: ...
    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setSymbolAngle(self, angle: float) -> None: ...
    def symbolAngle(self) -> float: ...
    def setSymbolLineAngle(self, angle: float) -> None: ...
    def stopFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def startFeatureRender(self, feature: QgsFeature, context: QgsRenderContext) -> None: ...
    def canCauseArtifactsBetweenAdjacentTiles(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def renderPolygonStroke(self, points: QtGui.QPolygonF, rings: typing.Iterable[QtGui.QPolygonF], context: 'QgsSymbolRenderContext') -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def averageAngleMapUnitScale(self) -> QgsMapUnitScale: ...
    def setAverageAngleMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def averageAngleUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setAverageAngleUnit(self, unit: QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetAlongLineUnit(self) -> QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setIntervalUnit(self, unit: QgsUnitTypes.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: 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: QgsUnitTypes.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsMarkerLineSymbolLayer': ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsHashedLineSymbolLayer(QgsTemplatedLineSymbolLayerBase):

    def __init__(self, rotateSymbol: bool = ..., interval: float = ...) -> None: ...

    def renderSymbol(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def setSymbolAngle(self, angle: float) -> None: ...
    def symbolAngle(self) -> float: ...
    def setSymbolLineAngle(self, angle: float) -> None: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def hashLengthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setHashLengthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def hashLengthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setHashLengthUnit(self, unit: QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    @typing.overload
    def width(self) -> float: ...
    @typing.overload
    def width(self, context: QgsRenderContext) -> float: ...
    def setWidth(self, width: float) -> None: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def clone(self) -> 'QgsHashedLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsAbstractBrushedLineSymbolLayer(QgsLineSymbolLayer):

    def __init__(self) -> None: ...

    def renderPolylineUsingBrush(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext', brush: typing.Union[QtGui.QBrush, QtGui.QColor, QtCore.Qt.GlobalColor, QtGui.QGradient], patternThickness: float, patternLength: float) -> None: ...
    def setPenCapStyle(self, style: QtCore.Qt.PenCapStyle) -> None: ...
    def penCapStyle(self) -> QtCore.Qt.PenCapStyle: ...
    def setPenJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def penJoinStyle(self) -> QtCore.Qt.PenJoinStyle: ...


class QgsRasterLineSymbolLayer(QgsAbstractBrushedLineSymbolLayer):

    def __init__(self, path: str = ...) -> None: ...

    def color(self) -> QtGui.QColor: ...
    def estimateMaxBleed(self, context: QgsRenderContext) -> float: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def clone(self) -> 'QgsRasterLineSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsLineburstSymbolLayer(QgsAbstractBrushedLineSymbolLayer):

    def __init__(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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: QgsColorRamp) -> None: ...
    def colorRamp(self) -> QgsColorRamp: ...
    def setGradientColorType(self, gradientColorType: Qgis.GradientColorSource) -> None: ...
    def gradientColorType(self) -> Qgis.GradientColorSource: ...
    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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def clone(self) -> 'QgsLineburstSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPolyline(self, points: QtGui.QPolygonF, context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsMapInfoSymbolConversionContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapInfoSymbolConversionContext') -> None: ...

    def clearWarnings(self) -> None: ...
    def warnings(self) -> typing.List[str]: ...
    def pushWarning(self, warning: str) -> None: ...


class QgsMapInfoSymbolConverter(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapInfoSymbolConverter') -> None: ...

    @staticmethod
    def convertMarkerSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], size: float, sizeUnit: QgsUnitTypes.RenderUnit) -> 'QgsMarkerSymbol': ...
    @staticmethod
    def convertFillSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], backColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ...) -> QgsFillSymbol: ...
    @staticmethod
    def convertLineSymbol(identifier: int, context: QgsMapInfoSymbolConversionContext, foreColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], size: float, sizeUnit: QgsUnitTypes.RenderUnit, interleaved: bool = ...) -> QgsLineSymbol: ...


class QgsMarkerSymbol(QgsSymbol):

    def __init__(self, layers: typing.Iterable[QgsSymbolLayer] = ...) -> None: ...

    def clone(self) -> 'QgsMarkerSymbol': ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsRenderContext, feature: QgsFeature = ...) -> QtCore.QRectF: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], f: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ...) -> None: ...
    def scaleMethod(self) -> Qgis.ScaleMethod: ...
    def setScaleMethod(self, scaleMethod: Qgis.ScaleMethod) -> None: ...
    def dataDefinedSize(self) -> QgsProperty: ...
    def setDataDefinedSize(self, property: QgsProperty) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSizeUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    @typing.overload
    def size(self) -> float: ...
    @typing.overload
    def size(self, context: QgsRenderContext) -> float: ...
    def setSize(self, size: float) -> None: ...
    def setLineAngle(self, lineAngle: float) -> None: ...
    def dataDefinedAngle(self) -> QgsProperty: ...
    def setDataDefinedAngle(self, property: QgsProperty) -> None: ...
    def angle(self) -> float: ...
    def setAngle(self, symbolAngle: float) -> None: ...
    @staticmethod
    def createSimple(properties: typing.Dict[str, typing.Any]) -> 'QgsMarkerSymbol': ...


class QgsSimpleMarkerSymbolLayerBase(QgsMarkerSymbolLayer):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def calculateOffsetAndRotation(self, context: 'QgsSymbolRenderContext', scaledSize: float, offset: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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: str) -> typing.Tuple[Qgis.MarkerShape, bool]: ...
    def setShape(self, shape: Qgis.MarkerShape) -> None: ...
    def shape(self) -> Qgis.MarkerShape: ...
    @staticmethod
    def shapeIsFilled(shape: Qgis.MarkerShape) -> bool: ...
    @staticmethod
    def availableShapes() -> typing.List[Qgis.MarkerShape]: ...


class QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ..., color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., penJoinStyle: QtCore.Qt.PenJoinStyle = ...) -> None: ...

    def prepareCache(self, context: 'QgsSymbolRenderContext') -> bool: ...
    def drawMarker(self, p: QtGui.QPainter, context: 'QgsSymbolRenderContext') -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setStrokeWidthUnit(self, u: QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: 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) -> '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 layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFilledMarkerSymbolLayer(QgsSimpleMarkerSymbolLayerBase):

    def __init__(self, shape: Qgis.MarkerShape = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def setOutputUnit(self, unit: QgsUnitTypes.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: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def clone(self) -> 'QgsFilledMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsSvgMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: str, size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def calculateAspectRatio(self, context: 'QgsSymbolRenderContext', scaledSize: float) -> typing.Tuple[float, bool]: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def prepareExpressions(self, context: 'QgsSymbolRenderContext') -> None: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def writeDxf(self, e: QgsDxfExport, mmMapUnitScaleFactor: float, layerName: str, context: 'QgsSymbolRenderContext', shift: typing.Union[QtCore.QPointF, QtCore.QPoint] = ...) -> bool: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setStrokeWidthUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def setParameters(self, parameters: typing.Dict[str, QgsProperty]) -> None: ...
    def parameters(self) -> typing.Dict[str, QgsProperty]: ...
    def setStrokeWidth(self, w: float) -> None: ...
    def strokeWidth(self) -> float: ...
    def setStrokeColor(self, c: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: str) -> None: ...
    def path(self) -> str: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsSvgMarkerSymbolLayer': ...
    def usesMapUnits(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsRasterMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, path: str = ..., size: float = ..., angle: float = ..., scaleMethod: Qgis.ScaleMethod = ...) -> None: ...

    def copyCommonProperties(self, other: 'QgsRasterMarkerSymbolLayer') -> None: ...
    def setCommonProperties(self, properties: typing.Dict[str, typing.Any]) -> None: ...
    def bounds(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> QtCore.QRectF: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def setFixedAspectRatio(self, ratio: float) -> None: ...
    def fixedAspectRatio(self) -> float: ...
    def setPreservedAspectRatio(self, par: bool) -> bool: ...
    def preservedAspectRatio(self) -> bool: ...
    def updateDefaultAspectRatio(self) -> float: ...
    def defaultAspectRatio(self) -> float: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setPath(self, path: str) -> None: ...
    def path(self) -> str: ...
    def calculateAspectRatio(self, context: 'QgsSymbolRenderContext', scaledSize: float) -> typing.Tuple[float, bool]: ...
    def color(self) -> QtGui.QColor: ...
    def usesMapUnits(self) -> bool: ...
    def clone(self) -> 'QgsRasterMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolvePaths(properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFontMarkerSymbolLayer(QgsMarkerSymbolLayer):

    def __init__(self, fontFamily: str = ..., chr: str = ..., pointSize: float = ..., color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., 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: QgsUnitTypes.RenderUnit) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.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: str) -> None: ...
    def character(self) -> str: ...
    def setFontStyle(self, style: str) -> None: ...
    def fontStyle(self) -> str: ...
    def setFontFamily(self, family: str) -> None: ...
    def fontFamily(self) -> str: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def writeSldMarker(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def clone(self) -> 'QgsFontMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: 'QgsSymbolRenderContext') -> None: ...
    def stopRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def layerType(self) -> str: ...
    @staticmethod
    def resolveFonts(properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsAnimatedMarkerSymbolLayer(QgsRasterMarkerSymbolLayer):

    def __init__(self, path: str = ..., size: float = ..., angle: float = ...) -> None: ...

    def startRender(self, context: 'QgsSymbolRenderContext') -> None: ...
    def frameRate(self) -> float: ...
    def setFrameRate(self, rate: float) -> None: ...
    def clone(self) -> 'QgsAnimatedMarkerSymbolLayer': ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def layerType(self) -> str: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsNullSymbolRenderer(QgsFeatureRenderer):

    def __init__(self) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsNullSymbolRenderer': ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def clone(self) -> QgsFeatureRenderer: ...
    def dump(self) -> str: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsPointDistanceRenderer(QgsFeatureRenderer):

    class GroupedFeature(PyQt5.sip.wrapper):

        feature = ... # type: QgsFeature
        isSelected = ... # type: bool
        label = ... # type: str

        @typing.overload
        def __init__(self, feature: QgsFeature, symbol: QgsMarkerSymbol, isSelected: bool, label: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsPointDistanceRenderer.GroupedFeature') -> None: ...

        def symbol(self) -> QgsMarkerSymbol: ...

    def __init__(self, rendererName: str, labelAttributeName: str = ...) -> None: ...

    def drawLabels(self, centerPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], 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) -> QgsUnitTypes.RenderUnit: ...
    def setToleranceUnit(self, unit: QgsUnitTypes.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: str) -> None: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def checkLegendSymbolItem(self, key: str, state: bool) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def embeddedRenderer(self) -> QgsFeatureRenderer: ...
    def setEmbeddedRenderer(self, r: QgsFeatureRenderer) -> None: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...


class QgsPointClusterRenderer(QgsPointDistanceRenderer):

    def __init__(self) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsPointClusterRenderer': ...
    def setClusterSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def clusterSymbol(self) -> QgsMarkerSymbol: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsPointClusterRenderer': ...


class QgsPointDisplacementRenderer(QgsPointDistanceRenderer):

    class Placement(int):
        Ring = ... # type: QgsPointDisplacementRenderer.Placement
        ConcentricRings = ... # type: QgsPointDisplacementRenderer.Placement
        Grid = ... # type: QgsPointDisplacementRenderer.Placement

    def __init__(self, labelAttributeName: str = ...) -> None: ...

    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsPointDisplacementRenderer': ...
    def setCenterSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def centerSymbol(self) -> QgsMarkerSymbol: ...
    def setPlacement(self, placement: 'QgsPointDisplacementRenderer.Placement') -> None: ...
    def placement(self) -> 'QgsPointDisplacementRenderer.Placement': ...
    def labelDistanceFactor(self) -> float: ...
    def setLabelDistanceFactor(self, factor: float) -> None: ...
    def circleRadiusAddition(self) -> float: ...
    def setCircleRadiusAddition(self, distance: float) -> None: ...
    def circleColor(self) -> QtGui.QColor: ...
    def setCircleColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def circleWidth(self) -> float: ...
    def setCircleWidth(self, width: float) -> None: ...
    @staticmethod
    def create(symbologyElem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def clone(self) -> 'QgsPointDisplacementRenderer': ...


class QgsSymbolLevelItem(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, symbol: QgsSymbol, layer: int) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLevelItem') -> None: ...

    def layer(self) -> int: ...
    def symbol(self) -> QgsSymbol: ...


class QgsRendererRange(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, range: QgsClassificationRange, symbol: QgsSymbol, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, lowerValue: float, upperValue: float, symbol: QgsSymbol, label: str, render: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, range: 'QgsRendererRange') -> None: ...

    def __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: str) -> None: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def label(self) -> str: ...
    def symbol(self) -> QgsSymbol: ...
    def upperValue(self) -> float: ...
    def lowerValue(self) -> float: ...
    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: str, precision: int = ..., trimTrailingZeroes: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRendererRangeLabelFormat') -> None: ...

    def saveToDomElement(self, element: QtXml.QDomElement) -> None: ...
    def setFromDomElement(self, element: QtXml.QDomElement) -> None: ...
    def formatNumber(self, value: float) -> str: ...
    def labelForRange(self, range: QgsRendererRange) -> str: ...
    def labelForLowerUpper(self, lower: float, upper: float) -> str: ...
    def setTrimTrailingZeroes(self, trimTrailingZeroes: bool) -> None: ...
    def trimTrailingZeroes(self) -> bool: ...
    def setPrecision(self, precision: int) -> None: ...
    def precision(self) -> int: ...
    def setFormat(self, format: str) -> None: ...
    def format(self) -> str: ...
    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: str, visibleName: str, icon: QtGui.QIcon = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsRendererAbstractMetadata') -> None: ...

    def createRendererFromSld(self, elem: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType) -> QgsFeatureRenderer: ...
    def createRendererWidget(self, layer: QgsVectorLayer, style: 'QgsStyle', oldRenderer: QgsFeatureRenderer) -> QgsRendererWidget: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def compatibleLayerTypes(self) -> 'QgsRendererAbstractMetadata.LayerTypes': ...
    def setIcon(self, icon: QtGui.QIcon) -> None: ...
    def icon(self) -> QtGui.QIcon: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsRendererMetadata(QgsRendererAbstractMetadata):

    def __init__(self, a0: 'QgsRendererMetadata') -> None: ...

    def compatibleLayerTypes(self) -> QgsRendererAbstractMetadata.LayerTypes: ...
    def createRendererFromSld(self, elem: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType) -> QgsFeatureRenderer: ...
    def createRendererWidget(self, layer: QgsVectorLayer, style: 'QgsStyle', renderer: QgsFeatureRenderer) -> QgsRendererWidget: ...
    def createRenderer(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsRendererRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @typing.overload
    def renderersList(self, layerTypes: typing.Union[QgsRendererAbstractMetadata.LayerTypes, QgsRendererAbstractMetadata.LayerType] = ...) -> typing.List[str]: ...
    @typing.overload
    def renderersList(self, layer: QgsVectorLayer) -> typing.List[str]: ...
    def rendererMetadata(self, rendererName: str) -> QgsRendererAbstractMetadata: ...
    def removeRenderer(self, rendererName: str) -> bool: ...
    def addRenderer(self, metadata: QgsRendererAbstractMetadata) -> bool: ...


class QgsRuleBasedRenderer(QgsFeatureRenderer):

    class FeatureFlags(int):
        FeatIsSelected = ... # type: QgsRuleBasedRenderer.FeatureFlags
        FeatDrawMarkers = ... # type: QgsRuleBasedRenderer.FeatureFlags

    class FeatureToRender(PyQt5.sip.wrapper):

        feat = ... # type: QgsFeature
        flags = ... # type: int

        @typing.overload
        def __init__(self, _f: QgsFeature, _flags: int) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRuleBasedRenderer.FeatureToRender') -> None: ...

    class RenderJob(PyQt5.sip.wrapper):

        ftr = ... # type: 'QgsRuleBasedRenderer.FeatureToRender'
        symbol = ... # type: QgsSymbol

        @typing.overload
        def __init__(self, _ftr: 'QgsRuleBasedRenderer.FeatureToRender', _s: QgsSymbol) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsRuleBasedRenderer.RenderJob') -> None: ...

    class RenderLevel(PyQt5.sip.wrapper):

        jobs = ... # type: typing.Iterable['QgsRuleBasedRenderer.RenderJob']
        zIndex = ... # type: int

        @typing.overload
        def __init__(self, z: int) -> None: ...
        @typing.overload
        def __init__(self, other: 'QgsRuleBasedRenderer.RenderLevel') -> None: ...

    class Rule(PyQt5.sip.wrapper):

        class RenderResult(int):
            Filtered = ... # type: QgsRuleBasedRenderer.Rule.RenderResult
            Inactive = ... # type: QgsRuleBasedRenderer.Rule.RenderResult
            Rendered = ... # type: QgsRuleBasedRenderer.Rule.RenderResult

        def __init__(self, symbol: QgsSymbol, maximumScale: int = ..., minimumScale: int = ..., filterExp: str = ..., label: str = ..., description: str = ..., elseRule: bool = ...) -> None: ...

        def initFilter(self) -> None: ...
        def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
        def isElse(self) -> bool: ...
        def setIsElse(self, iselse: bool) -> None: ...
        def findRuleByKey(self, key: str) -> 'QgsRuleBasedRenderer.Rule': ...
        def takeChildAt(self, i: int) -> 'QgsRuleBasedRenderer.Rule': ...
        def takeChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> 'QgsRuleBasedRenderer.Rule': ...
        def removeChildAt(self, i: int) -> None: ...
        def removeChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def insertChild(self, i: int, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def appendChild(self, rule: 'QgsRuleBasedRenderer.Rule') -> None: ...
        def parent(self) -> 'QgsRuleBasedRenderer.Rule': ...
        def descendants(self) -> typing.List['QgsRuleBasedRenderer.Rule']: ...
        def children(self) -> typing.List['QgsRuleBasedRenderer.Rule']: ...
        @staticmethod
        def create(ruleElem: QtXml.QDomElement, symbolMap: typing.Any) -> '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 startRender(self, context: QgsRenderContext, fields: QgsFields, filter: str) -> bool: ...
        def save(self, doc: QtXml.QDomDocument, symbolMap: typing.Any) -> QtXml.QDomElement: ...
        @staticmethod
        def createFromSld(element: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType) -> 'QgsRuleBasedRenderer.Rule': ...
        def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
        def clone(self) -> 'QgsRuleBasedRenderer.Rule': ...
        def setActive(self, state: bool) -> None: ...
        def setDescription(self, description: str) -> None: ...
        def setFilterExpression(self, filterExp: str) -> None: ...
        def setMaximumScale(self, scale: float) -> None: ...
        def setMinimumScale(self, scale: float) -> None: ...
        def setLabel(self, label: str) -> None: ...
        def setSymbol(self, sym: QgsSymbol) -> None: ...
        def setRuleKey(self, key: str) -> None: ...
        def ruleKey(self) -> str: ...
        def active(self) -> bool: ...
        def description(self) -> str: ...
        def filterExpression(self) -> str: ...
        def filter(self) -> QgsExpression: ...
        def minimumScale(self) -> float: ...
        def maximumScale(self) -> float: ...
        def dependsOnScale(self) -> bool: ...
        def label(self) -> str: ...
        def symbol(self) -> QgsSymbol: ...
        def isScaleOK(self, scale: float) -> bool: ...
        def isFilterOK(self, f: QgsFeature, context: typing.Optional[QgsRenderContext] = ...) -> bool: ...
        def legendSymbolItems(self, currentLevel: int = ...) -> typing.List[QgsLegendSymbolItem]: ...
        def symbols(self, context: QgsRenderContext = ...) -> typing.List[QgsSymbol]: ...
        def needsGeometry(self) -> bool: ...
        def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
        def dump(self, indent: int = ...) -> str: ...

    @typing.overload
    def __init__(self, root: 'QgsRuleBasedRenderer.Rule') -> None: ...
    @typing.overload
    def __init__(self, defaultSymbol: QgsSymbol) -> None: ...

    @staticmethod
    def convertToDataDefinedSymbology(symbol: QgsSymbol, sizeScaleField: str, rotationField: str = ...) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer, layer: typing.Optional[QgsVectorLayer] = ...) -> 'QgsRuleBasedRenderer': ...
    @staticmethod
    def refineRuleScales(initialRule: 'QgsRuleBasedRenderer.Rule', scales: typing.Iterable[int]) -> None: ...
    @staticmethod
    def refineRuleRanges(initialRule: 'QgsRuleBasedRenderer.Rule', r: QgsGraduatedSymbolRenderer) -> None: ...
    @staticmethod
    def refineRuleCategories(initialRule: 'QgsRuleBasedRenderer.Rule', r: QgsCategorizedSymbolRenderer) -> None: ...
    def rootRule(self) -> 'QgsRuleBasedRenderer.Rule': ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def originalSymbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def symbolsForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def willRenderFeature(self, feature: QgsFeature, context: QgsRenderContext) -> bool: ...
    def dump(self) -> str: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def checkLegendSymbolItem(self, key: str, state: bool = ...) -> None: ...
    def legendSymbolItemChecked(self, key: str) -> bool: ...
    def legendSymbolItemsCheckable(self) -> bool: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType) -> QgsFeatureRenderer: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsRuleBasedRenderer': ...
    def filterNeedsGeometry(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def filter(self, fields: QgsFields = ...) -> str: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def renderFeature(self, feature: QgsFeature, context: QgsRenderContext, layer: int = ..., selected: bool = ..., drawVertexMarker: bool = ...) -> bool: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...


class QgsSingleSymbolRenderer(QgsFeatureRenderer):

    def __init__(self, symbol: QgsSymbol) -> None: ...

    def dataDefinedSizeLegend(self) -> QgsDataDefinedSizeLegend: ...
    def setDataDefinedSizeLegend(self, settings: QgsDataDefinedSizeLegend) -> None: ...
    @staticmethod
    def convertFromRenderer(renderer: QgsFeatureRenderer) -> 'QgsSingleSymbolRenderer': ...
    def setLegendSymbolItem(self, key: str, symbol: QgsSymbol) -> None: ...
    def legendKeyToExpression(self, key: str, layer: QgsVectorLayer) -> typing.Tuple[str, bool]: ...
    def legendKeysForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> typing.Set[str]: ...
    def legendSymbolItems(self) -> typing.List[QgsLegendSymbolItem]: ...
    def save(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def create(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsFeatureRenderer: ...
    def symbols(self, context: QgsRenderContext) -> typing.List[QgsSymbol]: ...
    def capabilities(self) -> QgsFeatureRenderer.Capabilities: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType) -> QgsFeatureRenderer: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any] = ...) -> None: ...
    def clone(self) -> 'QgsSingleSymbolRenderer': ...
    def dump(self) -> str: ...
    def setSymbol(self, s: QgsSymbol) -> None: ...
    def symbol(self) -> QgsSymbol: ...
    def accept(self, visitor: 'QgsStyleEntityVisitorInterface') -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def startRender(self, context: QgsRenderContext, fields: QgsFields) -> None: ...
    def originalSymbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...
    def symbolForFeature(self, feature: QgsFeature, context: QgsRenderContext) -> QgsSymbol: ...


class QgsStyle(QtCore.QObject):

    class TextFormatContext(int):
        Labeling = ... # type: QgsStyle.TextFormatContext

    class StyleEntity(int):
        SymbolEntity = ... # type: QgsStyle.StyleEntity
        TagEntity = ... # type: QgsStyle.StyleEntity
        ColorrampEntity = ... # type: QgsStyle.StyleEntity
        SmartgroupEntity = ... # type: QgsStyle.StyleEntity
        TextFormatEntity = ... # type: QgsStyle.StyleEntity
        LabelSettingsEntity = ... # type: QgsStyle.StyleEntity
        LegendPatchShapeEntity = ... # type: QgsStyle.StyleEntity
        Symbol3DEntity = ... # type: QgsStyle.StyleEntity

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    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]
    @staticmethod
    def isXmlStyleFile(path: str) -> bool: ...
    def importXml(self, filename: str) -> bool: ...
    def exportXml(self, filename: str) -> bool: ...
    def symbolsOfSmartgroup(self, type: 'QgsStyle.StyleEntity', id: int) -> typing.List[str]: ...
    def smartgroupOperator(self, id: int) -> str: ...
    def smartgroup(self, id: int) -> typing.Dict[str, typing.List[str]]: ...
    def smartgroupNames(self) -> typing.List[str]: ...
    def smartgroupsListMap(self) -> typing.Dict[int, str]: ...
    def tag(self, id: int) -> str: ...
    def symbolHasTag(self, type: 'QgsStyle.StyleEntity', symbol: str, tag: str) -> bool: ...
    def isFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def tagsOfSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str) -> typing.List[str]: ...
    def findSymbols(self, type: 'QgsStyle.StyleEntity', qword: str) -> typing.List[str]: ...
    def setFileName(self, filename: str) -> None: ...
    def fileName(self) -> str: ...
    def errorString(self) -> str: ...
    def save(self, filename: str = ...) -> bool: ...
    def load(self, filename: str) -> bool: ...
    def createTables(self) -> None: ...
    def createMemoryDatabase(self) -> bool: ...
    def createDatabase(self, filename: str) -> bool: ...
    def symbol3DNames(self) -> typing.List[str]: ...
    def renameSymbol3D(self, oldName: str, newName: str) -> bool: ...
    def saveSymbol3D(self, name: str, symbol: QgsAbstract3DSymbol, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    @staticmethod
    def defaultTextFormatForProject(project: QgsProject, context: 'QgsStyle.TextFormatContext' = ...) -> 'QgsTextFormat': ...
    def defaultTextFormat(self, context: 'QgsStyle.TextFormatContext' = ...) -> 'QgsTextFormat': ...
    def defaultPatchAsQPolygonF(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> typing.Any: ...
    def defaultPatch(self, type: Qgis.SymbolType, size: QtCore.QSizeF) -> QgsLegendPatchShape: ...
    def previewSymbolForPatchShape(self, shape: QgsLegendPatchShape) -> QgsSymbol: ...
    def legendPatchShapeNames(self) -> typing.List[str]: ...
    def renameLegendPatchShape(self, oldName: str, newName: str) -> bool: ...
    def saveLegendPatchShape(self, name: str, shape: QgsLegendPatchShape, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameLabelSettings(self, oldName: str, newName: str) -> bool: ...
    def removeLabelSettings(self, name: str) -> bool: ...
    def saveLabelSettings(self, name: str, settings: QgsPalLayerSettings, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameTextFormat(self, oldName: str, newName: str) -> bool: ...
    def removeTextFormat(self, name: str) -> bool: ...
    def saveTextFormat(self, name: str, format: 'QgsTextFormat', favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def renameColorRamp(self, oldName: str, newName: str) -> bool: ...
    def removeColorRamp(self, name: str) -> bool: ...
    def saveColorRamp(self, name: str, ramp: QgsColorRamp, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def saveSymbol(self, name: str, symbol: QgsSymbol, favorite: bool, tags: typing.Iterable[str]) -> bool: ...
    def removeEntityByName(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def remove(self, type: 'QgsStyle.StyleEntity', id: int) -> bool: ...
    def rename(self, type: 'QgsStyle.StyleEntity', id: int, newName: str) -> bool: ...
    def removeFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def addFavorite(self, type: 'QgsStyle.StyleEntity', name: str) -> bool: ...
    def symbolsWithTag(self, type: 'QgsStyle.StyleEntity', tagid: int) -> typing.List[str]: ...
    def symbolsOfFavorite(self, type: 'QgsStyle.StyleEntity') -> typing.List[str]: ...
    def allNames(self, type: 'QgsStyle.StyleEntity') -> typing.List[str]: ...
    def smartgroupId(self, smartgroup: str) -> int: ...
    def tagId(self, tag: str) -> int: ...
    def entityId(self, type: 'QgsStyle.StyleEntity', name: str) -> int: ...
    def symbolId(self, name: str) -> int: ...
    def symbolNames(self) -> typing.List[str]: ...
    def symbolCount(self) -> int: ...
    def symbolRef(self, name: str) -> QgsSymbol: ...
    def symbol(self, name: str) -> QgsSymbol: ...
    def renameSymbol(self, oldName: str, newName: str) -> bool: ...
    def renameEntity(self, type: 'QgsStyle.StyleEntity', oldName: str, newName: str) -> bool: ...
    def removeSymbol(self, name: str) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str, tags: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def detagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str) -> bool: ...
    def tagSymbol(self, type: 'QgsStyle.StyleEntity', symbol: str, tags: typing.Iterable[str]) -> bool: ...
    @staticmethod
    def defaultStyle() -> 'QgsStyle': ...
    def labelSettingsId(self, name: str) -> int: ...
    def labelSettingsNames(self) -> typing.List[str]: ...
    def labelSettingsCount(self) -> int: ...
    def labelSettingsLayerType(self, name: str) -> QgsWkbTypes.GeometryType: ...
    def symbol3DCompatibleGeometryTypes(self, name: str) -> typing.Any: ...
    def symbol3DCount(self) -> int: ...
    def symbol3D(self, name: str) -> QgsAbstract3DSymbol: ...
    def legendPatchShapeSymbolType(self, name: str) -> Qgis.SymbolType: ...
    def legendPatchShapesCount(self) -> int: ...
    def legendPatchShape(self, name: str) -> QgsLegendPatchShape: ...
    def labelSettings(self, name: str) -> QgsPalLayerSettings: ...
    def textFormatId(self, name: str) -> int: ...
    def textFormatNames(self) -> typing.List[str]: ...
    def textFormatCount(self) -> int: ...
    def textFormat(self, name: str) -> 'QgsTextFormat': ...
    def colorrampId(self, name: str) -> int: ...
    def colorRampRef(self, name: str) -> QgsColorRamp: ...
    def colorRampNames(self) -> typing.List[str]: ...
    def colorRampCount(self) -> int: ...
    def colorRamp(self, name: str) -> QgsColorRamp: ...
    def clear(self) -> None: ...
    def tags(self) -> typing.List[str]: ...
    def addSmartgroup(self, name: str, op: str, matchTag: typing.Iterable[str], noMatchTag: typing.Iterable[str], matchName: typing.Iterable[str], noMatchName: typing.Iterable[str]) -> int: ...
    def addTag(self, tagName: str) -> int: ...
    def addSymbol3D(self, name: str, symbol: QgsAbstract3DSymbol, update: bool = ...) -> bool: ...
    def addLegendPatchShape(self, name: str, shape: QgsLegendPatchShape, update: bool = ...) -> bool: ...
    def addLabelSettings(self, name: str, settings: QgsPalLayerSettings, update: bool = ...) -> bool: ...
    def addTextFormat(self, name: str, format: 'QgsTextFormat', update: bool = ...) -> bool: ...
    def addColorRamp(self, name: str, colorRamp: QgsColorRamp, update: bool = ...) -> bool: ...
    def addSymbol(self, name: str, symbol: QgsSymbol, update: bool = ...) -> bool: ...
    def addEntity(self, name: str, entity: 'QgsStyleEntityInterface', update: bool = ...) -> bool: ...
    def setReadOnly(self, readOnly: bool) -> None: ...
    def isReadOnly(self) -> bool: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...


class QgsStyleEntityInterface(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleEntityInterface') -> None: ...

    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleSymbolEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, symbol: QgsSymbol) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbolEntity') -> None: ...

    def symbol(self) -> QgsSymbol: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleColorRampEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, ramp: QgsColorRamp) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleColorRampEntity') -> None: ...

    def ramp(self) -> QgsColorRamp: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleTextFormatEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, format: 'QgsTextFormat') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleTextFormatEntity') -> None: ...

    def format(self) -> 'QgsTextFormat': ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleLabelSettingsEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, settings: QgsPalLayerSettings) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleLabelSettingsEntity') -> None: ...

    def settings(self) -> QgsPalLayerSettings: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleLegendPatchShapeEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, shape: QgsLegendPatchShape) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleLegendPatchShapeEntity') -> None: ...

    def shape(self) -> QgsLegendPatchShape: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleSymbol3DEntity(QgsStyleEntityInterface):

    @typing.overload
    def __init__(self, symbol: QgsAbstract3DSymbol) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleSymbol3DEntity') -> None: ...

    def symbol(self) -> QgsAbstract3DSymbol: ...
    def type(self) -> QgsStyle.StyleEntity: ...


class QgsStyleEntityVisitorInterface(PyQt5.sip.wrapper):

    class NodeType(int):
        Project = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Layer = ... # type: QgsStyleEntityVisitorInterface.NodeType
        SymbolRule = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Layouts = ... # type: QgsStyleEntityVisitorInterface.NodeType
        PrintLayout = ... # type: QgsStyleEntityVisitorInterface.NodeType
        LayoutItem = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Report = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportHeader = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportFooter = ... # type: QgsStyleEntityVisitorInterface.NodeType
        ReportSection = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Annotations = ... # type: QgsStyleEntityVisitorInterface.NodeType
        Annotation = ... # type: QgsStyleEntityVisitorInterface.NodeType

    class StyleLeaf(PyQt5.sip.wrapper):

        description = ... # type: str
        entity = ... # type: QgsStyleEntityInterface
        identifier = ... # type: str

        @typing.overload
        def __init__(self, entity: QgsStyleEntityInterface, identifier: str = ..., description: str = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStyleEntityVisitorInterface.StyleLeaf') -> None: ...

    class Node(PyQt5.sip.wrapper):

        description = ... # type: str
        identifier = ... # type: str
        type = ... # type: 'QgsStyleEntityVisitorInterface.NodeType'

        @typing.overload
        def __init__(self, type: 'QgsStyleEntityVisitorInterface.NodeType', identifier: str, description: str) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsStyleEntityVisitorInterface.Node') -> None: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsStyleEntityVisitorInterface') -> None: ...

    def visitExit(self, node: 'QgsStyleEntityVisitorInterface.Node') -> bool: ...
    def visitEnter(self, node: 'QgsStyleEntityVisitorInterface.Node') -> bool: ...
    def visit(self, entity: 'QgsStyleEntityVisitorInterface.StyleLeaf') -> bool: ...


class QgsStyleModel(QtCore.QAbstractItemModel):

    class Role(int):
        TypeRole = ... # type: QgsStyleModel.Role
        TagRole = ... # type: QgsStyleModel.Role
        EntityName = ... # type: QgsStyleModel.Role
        SymbolTypeRole = ... # type: QgsStyleModel.Role
        IsFavoriteRole = ... # type: QgsStyleModel.Role
        LayerTypeRole = ... # type: QgsStyleModel.Role
        CompatibleGeometryTypesRole = ... # type: QgsStyleModel.Role
        StyleName = ... # type: QgsStyleModel.Role
        StyleFileName = ... # type: QgsStyleModel.Role
        IsTitleRole = ... # type: QgsStyleModel.Role

    class Column(int):
        Name = ... # type: QgsStyleModel.Column
        Tags = ... # type: QgsStyleModel.Column

    def __init__(self, style: QgsStyle, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def columnCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def rowCount(self, parent: QtCore.QModelIndex = ...) -> int: ...
    def parent(self, index: QtCore.QModelIndex) -> QtCore.QModelIndex: ...
    def index(self, row: int, column: int, parent: QtCore.QModelIndex = ...) -> QtCore.QModelIndex: ...
    def headerData(self, section: int, orientation: QtCore.Qt.Orientation, role: int = ...) -> typing.Any: ...
    def flags(self, index: QtCore.QModelIndex) -> QtCore.Qt.ItemFlags: ...
    def setData(self, index: QtCore.QModelIndex, value: typing.Any, role: int = ...) -> bool: ...
    def data(self, index: QtCore.QModelIndex, role: int) -> typing.Any: ...
    def style(self) -> QgsStyle: ...


class QgsStyleProxyModel(QtCore.QSortFilterProxyModel):

    @typing.overload
    def __init__(self, style: QgsStyle, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: QgsStyleModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, model: QgsCombinedStyleModel, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def setFilterString(self, filter: str) -> None: ...
    def addDesiredIconSize(self, size: QtCore.QSize) -> None: ...
    def setFavoritesOnly(self, favoritesOnly: bool) -> None: ...
    def favoritesOnly(self) -> bool: ...
    def lessThan(self, left: QtCore.QModelIndex, right: QtCore.QModelIndex) -> bool: ...
    def filterAcceptsRow(self, source_row: int, source_parent: QtCore.QModelIndex) -> bool: ...
    def smartGroupId(self) -> int: ...
    def setSmartGroupId(self, id: int) -> None: ...
    def tagString(self) -> str: ...
    def setTagString(self, tag: str) -> None: ...
    def tagId(self) -> int: ...
    def setTagId(self, id: int) -> None: ...
    def setLayerType(self, type: QgsWkbTypes.GeometryType) -> None: ...
    def layerType(self) -> QgsWkbTypes.GeometryType: ...
    def setSymbolTypeFilterEnabled(self, enabled: bool) -> None: ...
    def symbolTypeFilterEnabled(self) -> bool: ...
    def setSymbolType(self, type: Qgis.SymbolType) -> None: ...
    def symbolType(self) -> Qgis.SymbolType: ...
    def setEntityFilterEnabled(self, enabled: bool) -> None: ...
    def entityFilterEnabled(self) -> bool: ...
    def setEntityFilter(self, filter: QgsStyle.StyleEntity) -> None: ...
    def entityFilter(self) -> QgsStyle.StyleEntity: ...
    def filterString(self) -> str: ...


class QgsSvgCache(QgsAbstractContentCacheBase):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def checkReply(self, reply: QtNetwork.QNetworkReply, path: str) -> bool: ...
    remoteSvgFetched: typing.ClassVar[QtCore.pyqtsignal]
    statusChanged: typing.ClassVar[QtCore.pyqtsignal]
    def svgContent(self, path: 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[str, str] = ...) -> QtCore.QByteArray: ...
    def getImageData(self, path: str, blocking: bool = ...) -> QtCore.QByteArray: ...
    def containsParamsV3(self, path: str, defaultFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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: 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: 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[str, str] = ...) -> QtCore.QSizeF: ...
    def svgAsPicture(self, path: 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[str, str] = ...) -> QtGui.QPicture: ...
    def svgAsImage(self, path: 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[str, str] = ...) -> typing.Tuple[QtGui.QImage, bool]: ...


class QgsSymbolAnimationSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolAnimationSettings') -> None: ...

    def frameRate(self) -> float: ...
    def setFrameRate(self, rate: float) -> None: ...
    def isAnimated(self) -> bool: ...
    def setIsAnimated(self, animated: bool) -> None: ...


class QgsSymbolLayerId(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, key: str, index: int) -> None: ...
    @typing.overload
    def __init__(self, key: str, indexPath: typing.Iterable[int]) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsSymbolLayerId') -> None: ...

    def __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: str, symbolLayer: QgsSymbolLayerId) -> 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 symbolLayerId(self) -> QgsSymbolLayerId: ...
    def layerId(self) -> str: ...


class QgsSymbolLayerAbstractMetadata(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, visibleName: str, type: Qgis.SymbolType) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerAbstractMetadata') -> None: ...

    def resolveFonts(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, a0: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayerWidget(self, a0: QgsVectorLayer) -> QgsSymbolLayerWidget: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...
    def type(self) -> Qgis.SymbolType: ...
    def visibleName(self) -> str: ...
    def name(self) -> str: ...


class QgsSymbolLayerMetadata(QgsSymbolLayerAbstractMetadata):

    def __init__(self, a0: 'QgsSymbolLayerMetadata') -> None: ...

    def resolveFonts(self, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, elem: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayerWidget(self, vl: QgsVectorLayer) -> QgsSymbolLayerWidget: ...
    def createSymbolLayer(self, map: typing.Dict[str, typing.Any]) -> QgsSymbolLayer: ...


class QgsSymbolLayerRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    @staticmethod
    def defaultSymbolLayer(type: Qgis.SymbolType) -> QgsSymbolLayer: ...
    def symbolLayersForType(self, type: Qgis.SymbolType) -> typing.List[str]: ...
    def resolveFonts(self, name: str, properties: typing.Dict[str, typing.Any], context: QgsReadWriteContext) -> None: ...
    def resolvePaths(self, name: str, properties: typing.Dict[str, typing.Any], pathResolver: QgsPathResolver, saving: bool) -> None: ...
    def createSymbolLayerFromSld(self, name: str, element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    def createSymbolLayer(self, name: str, properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...
    def removeSymbolLayerType(self, metadata: QgsSymbolLayerAbstractMetadata) -> bool: ...
    def addSymbolLayerType(self, metadata: QgsSymbolLayerAbstractMetadata) -> bool: ...
    def symbolLayerMetadata(self, name: str) -> QgsSymbolLayerAbstractMetadata: ...


class QgsSymbolLayerUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSymbolLayerUtils') -> None: ...

    @staticmethod
    def evaluatePropertiesMap(propertiesMap: typing.Dict[str, QgsProperty], context: QgsExpressionContext) -> typing.Dict[str, str]: ...
    @staticmethod
    def restrictedSizeSymbol(s: QgsSymbol, minSize: float, maxSize: float, context: QgsRenderContext) -> typing.Tuple[QgsSymbol, float, float, bool]: ...
    @staticmethod
    def rendererFrameRate(renderer: QgsFeatureRenderer) -> float: ...
    @staticmethod
    def toSymbolLayerPointers(renderer: QgsFeatureRenderer, symbolLayerIds: typing.Iterable[QgsSymbolLayerId]) -> typing.Set[QgsSymbolLayer]: ...
    @staticmethod
    def getSvgParametricPath(basePath: str, fillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], strokeWidth: float) -> str: ...
    @staticmethod
    def parametricSvgToSld(doc: QtXml.QDomDocument, graphicElem: QtXml.QDomElement, path: 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: QgsUnitTypes.RenderUnit, props: typing.Dict[str, typing.Any]) -> typing.List[float]: ...
    @staticmethod
    def rescalePointUom(point: typing.Union[QtCore.QPointF, QtCore.QPoint], unit: QgsUnitTypes.RenderUnit, props: typing.Dict[str, typing.Any]) -> QtCore.QPointF: ...
    @staticmethod
    def rescaleUom(size: float, unit: QgsUnitTypes.RenderUnit, props: typing.Dict[str, typing.Any]) -> float: ...
    @staticmethod
    def prettyBreaks(minimum: float, maximum: float, classes: int) -> typing.List[float]: ...
    @staticmethod
    def fieldOrExpressionFromExpression(expression: QgsExpression) -> str: ...
    @staticmethod
    def fieldOrExpressionToExpression(fieldOrExpression: str) -> QgsExpression: ...
    @staticmethod
    def appendPolyline(target: QtGui.QPolygonF, line: QtGui.QPolygonF) -> None: ...
    @staticmethod
    def isSharpCorner(p1: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: str, pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def svgSymbolNameToPath(name: str, pathResolver: QgsPathResolver) -> str: ...
    @staticmethod
    def listSvgFilesAt(directory: str) -> typing.List[str]: ...
    @staticmethod
    def listSvgFiles() -> typing.List[str]: ...
    @staticmethod
    def pointOnLineWithDistance(startPoint: typing.Union[QtCore.QPointF, QtCore.QPoint], 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: QgsFillSymbolLayer, outline: 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: QtGui.QImage, opacity: float) -> None: ...
    @staticmethod
    def parseColorWithAlpha(colorStr: str, strictEval: bool = ...) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def parseColor(colorStr: str, strictEval: bool = ...) -> QtGui.QColor: ...
    @staticmethod
    def importColorsFromGpl(file: QtCore.QFile, name: str) -> typing.Tuple[typing.List[typing.Tuple[QtGui.QColor, str]], bool]: ...
    @staticmethod
    def saveColorsToGpl(file: QtCore.QFile, paletteName: str, colors: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]]) -> bool: ...
    @staticmethod
    def colorListToMimeData(colorList: typing.Iterable[typing.Tuple[typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], str]], allFormats: bool = ...) -> QtCore.QMimeData: ...
    @staticmethod
    def colorListFromMimeData(data: QtCore.QMimeData) -> typing.List[typing.Tuple[QtGui.QColor, str]]: ...
    @staticmethod
    def colorFromMimeData(data: QtCore.QMimeData) -> typing.Tuple[QtGui.QColor, bool]: ...
    @staticmethod
    def colorToMimeData(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> QtCore.QMimeData: ...
    @staticmethod
    def parseColorList(colorStr: str) -> typing.List[QtGui.QColor]: ...
    @staticmethod
    def colorToName(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...
    @staticmethod
    def colorRampToVariant(name: str, ramp: QgsColorRamp) -> typing.Any: ...
    @staticmethod
    def saveColorRamp(name: str, ramp: QgsColorRamp, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(element: QtXml.QDomElement) -> QgsColorRamp: ...
    @typing.overload
    @staticmethod
    def loadColorRamp(value: typing.Any) -> QgsColorRamp: ...
    @staticmethod
    def symbolFromMimeData(data: QtCore.QMimeData) -> QgsSymbol: ...
    @staticmethod
    def symbolToMimeData(symbol: QgsSymbol) -> QtCore.QMimeData: ...
    @staticmethod
    def clearSymbolMap(symbols: typing.Any) -> None: ...
    @staticmethod
    def saveSymbols(symbols: typing.Any, tagName: str, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def loadSymbols(element: QtXml.QDomElement, context: QgsReadWriteContext) -> typing.Any: ...
    @staticmethod
    def saveProperties(props: typing.Dict[str, typing.Any], doc: QtXml.QDomDocument, element: QtXml.QDomElement) -> None: ...
    @staticmethod
    def parseProperties(element: QtXml.QDomElement) -> typing.Dict[str, typing.Any]: ...
    @staticmethod
    def getVendorOptionList(element: QtXml.QDomElement) -> typing.Dict[str, str]: ...
    @staticmethod
    def createVendorOptionElement(doc: QtXml.QDomDocument, name: str, value: str) -> QtXml.QDomElement: ...
    @staticmethod
    def getSvgParameterList(element: QtXml.QDomElement) -> typing.Dict[str, str]: ...
    @staticmethod
    def createSvgParameterElement(doc: QtXml.QDomDocument, name: str, value: str) -> QtXml.QDomElement: ...
    @staticmethod
    def functionFromSldElement(element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def createFunctionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def createExpressionElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, function: str) -> bool: ...
    @staticmethod
    def geometryFromSldElement(element: QtXml.QDomElement, geomFunc: str) -> bool: ...
    @staticmethod
    def createGeometryElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, geomFunc: str) -> None: ...
    @staticmethod
    def onlineResourceFromSldElement(element: QtXml.QDomElement, path: str, format: str) -> bool: ...
    @staticmethod
    def createOnlineResourceElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, format: str) -> None: ...
    @staticmethod
    def createAnchorPointElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, anchor: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> 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: str) -> bool: ...
    @staticmethod
    def createOpacityElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, alphaFunc: str) -> None: ...
    @staticmethod
    def rotationFromSldElement(element: QtXml.QDomElement, rotationFunc: str) -> bool: ...
    @staticmethod
    def createRotationElement(doc: QtXml.QDomDocument, element: QtXml.QDomElement, rotationFunc: str) -> None: ...
    @staticmethod
    def ogrFeatureStyleBrush(fillColr: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: str, font: QtGui.QFont, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., size: float = ...) -> None: ...
    @staticmethod
    def externalMarkerFromSld(element: QtXml.QDomElement, path: str, format: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[bool, int, float]: ...
    @staticmethod
    def externalMarkerToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, format: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., size: float = ...) -> int: ...
    @staticmethod
    def wellKnownMarkerFromSld2(element: QtXml.QDomElement, name: 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: 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: str, mime: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[bool, float]: ...
    @staticmethod
    def externalGraphicToSld(doc: QtXml.QDomDocument, element: QtXml.QDomElement, path: str, mime: str, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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, QtCore.Qt.PenJoinStyle, QtCore.Qt.PenCapStyle, 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 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 hasExternalGraphic(element: QtXml.QDomElement) -> bool: ...
    @staticmethod
    def convertPolygonSymbolizerToPointMarker(element: QtXml.QDomElement, layerList: typing.Iterable[QgsSymbolLayer]) -> bool: ...
    @staticmethod
    def createMarkerLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createLineLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createFillLayerFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def createSymbolLayerListFromSld(element: QtXml.QDomElement, geomType: QgsWkbTypes.GeometryType, layers: typing.Iterable[QgsSymbolLayer]) -> bool: ...
    @staticmethod
    def symbolProperties(symbol: QgsSymbol) -> str: ...
    @staticmethod
    def saveSymbol(symbolName: str, symbol: QgsSymbol, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    @staticmethod
    def loadSymbolLayer(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsSymbolLayer: ...
    @staticmethod
    def loadSymbol(element: QtXml.QDomElement, context: QgsReadWriteContext) -> QgsSymbol: ...
    @staticmethod
    def estimateMaxSymbolBleed(symbol: QgsSymbol, context: QgsRenderContext) -> float: ...
    @staticmethod
    def drawVertexMarker(x: float, y: float, p: QtGui.QPainter, type: Qgis.VertexMarkerType, markerSize: int) -> None: ...
    @staticmethod
    def drawStippledBackground(painter: QtGui.QPainter, rect: QtCore.QRect) -> None: ...
    @staticmethod
    def colorRampPreviewPixmap(ramp: QgsColorRamp, size: QtCore.QSize, padding: int = ..., direction: QtCore.Qt.Orientation = ..., flipDirection: bool = ..., drawTransparentBackground: bool = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def colorRampPreviewIcon(ramp: QgsColorRamp, size: QtCore.QSize, padding: int = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewIcon(layer: QgsSymbolLayer, u: QgsUnitTypes.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ..., mapLayer: typing.Optional[QgsMapLayer] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def symbolLayerPreviewPicture(layer: QgsSymbolLayer, units: QgsUnitTypes.RenderUnit, size: QtCore.QSize, scale: QgsMapUnitScale = ..., parentSymbolType: Qgis.SymbolType = ...) -> QtGui.QPicture: ...
    @staticmethod
    def symbolPreviewPixmap(symbol: QgsSymbol, size: QtCore.QSize, padding: int = ..., customContext: typing.Optional[QgsRenderContext] = ..., selected: bool = ..., expressionContext: typing.Optional[QgsExpressionContext] = ..., shape: typing.Optional[QgsLegendPatchShape] = ...) -> QtGui.QPixmap: ...
    @staticmethod
    def symbolPreviewIcon(symbol: QgsSymbol, size: QtCore.QSize, padding: int = ..., shape: typing.Optional[QgsLegendPatchShape] = ...) -> QtGui.QIcon: ...
    @staticmethod
    def decodeBlendMode(s: str) -> QtGui.QPainter.CompositionMode: ...
    @staticmethod
    def decodeScaleMethod(str: str) -> Qgis.ScaleMethod: ...
    @staticmethod
    def encodeScaleMethod(scaleMethod: Qgis.ScaleMethod) -> str: ...
    @staticmethod
    def sizeInPixelsFromSldUom(uom: str, size: float) -> float: ...
    @staticmethod
    def decodeSldUom(str: str) -> typing.Tuple[QgsUnitTypes.RenderUnit, float]: ...
    @staticmethod
    def encodeSldUom(unit: QgsUnitTypes.RenderUnit) -> typing.Tuple[str, float]: ...
    @staticmethod
    def decodeSldRealVector(s: str) -> typing.List[float]: ...
    @staticmethod
    def encodeSldRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeRealVector(s: str) -> typing.List[float]: ...
    @staticmethod
    def encodeRealVector(v: typing.Iterable[float]) -> str: ...
    @staticmethod
    def decodeMapUnitScale(str: str) -> QgsMapUnitScale: ...
    @staticmethod
    def encodeMapUnitScale(mapUnitScale: QgsMapUnitScale) -> str: ...
    @staticmethod
    def toSize(value: typing.Any) -> typing.Tuple[QtCore.QSizeF, bool]: ...
    @staticmethod
    def decodeSize(string: str) -> QtCore.QSizeF: ...
    @staticmethod
    def encodeSize(size: QtCore.QSizeF) -> str: ...
    @staticmethod
    def toPoint(value: typing.Any) -> typing.Tuple[QtCore.QPointF, bool]: ...
    @staticmethod
    def decodePoint(string: str) -> QtCore.QPointF: ...
    @staticmethod
    def encodePoint(point: typing.Union[QtCore.QPointF, QtCore.QPoint]) -> str: ...
    @staticmethod
    def encodeLineClipMode(mode: Qgis.LineClipMode) -> str: ...
    @staticmethod
    def decodeLineClipMode(string: str) -> typing.Tuple[Qgis.LineClipMode, bool]: ...
    @staticmethod
    def encodeMarkerClipMode(mode: Qgis.MarkerClipMode) -> str: ...
    @staticmethod
    def decodeMarkerClipMode(string: str) -> typing.Tuple[Qgis.MarkerClipMode, bool]: ...
    @staticmethod
    def decodeArrowType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.ArrowType, bool]: ...
    @staticmethod
    def decodeArrowHeadType(value: typing.Any) -> typing.Tuple[QgsArrowSymbolLayer.HeadType, bool]: ...
    @staticmethod
    def encodeCoordinateReference(coordinateReference: Qgis.SymbolCoordinateReference) -> str: ...
    @staticmethod
    def decodeCoordinateReference(string: str) -> typing.Tuple[Qgis.SymbolCoordinateReference, bool]: ...
    @staticmethod
    def decodeSldBrushStyle(str: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeSldBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeBrushStyle(str: str) -> QtCore.Qt.BrushStyle: ...
    @staticmethod
    def encodeBrushStyle(style: QtCore.Qt.BrushStyle) -> str: ...
    @staticmethod
    def decodeSldLineCapStyle(str: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodeSldLineCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodeSldLineJoinStyle(str: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodeSldLineJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenCapStyle(str: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def encodePenCapStyle(style: QtCore.Qt.PenCapStyle) -> str: ...
    @staticmethod
    def decodePenJoinStyle(str: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def encodePenJoinStyle(style: QtCore.Qt.PenJoinStyle) -> str: ...
    @staticmethod
    def decodePenStyle(str: str) -> QtCore.Qt.PenStyle: ...
    @staticmethod
    def encodePenStyle(style: QtCore.Qt.PenStyle) -> str: ...
    @staticmethod
    def decodeSldFontWeight(str: str) -> int: ...
    @staticmethod
    def encodeSldFontWeight(weight: int) -> str: ...
    @staticmethod
    def decodeSldFontStyle(str: str) -> QtGui.QFont.Style: ...
    @staticmethod
    def encodeSldFontStyle(style: QtGui.QFont.Style) -> str: ...
    @staticmethod
    def decodeSldAlpha(str: str) -> int: ...
    @staticmethod
    def encodeSldAlpha(alpha: int) -> str: ...
    @staticmethod
    def decodeColor(str: str) -> QtGui.QColor: ...
    @staticmethod
    def encodeColor(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> str: ...


class QgsSymbolRenderContext(PyQt5.sip.wrapper):

    def __init__(self, c: QgsRenderContext, u: QgsUnitTypes.RenderUnit, opacity: float = ..., selected: bool = ..., renderHints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint] = ..., f: typing.Optional[QgsFeature] = ..., fields: QgsFields = ..., mapUnitScale: QgsMapUnitScale = ...) -> None: ...

    def setPatchShape(self, shape: QgsLegendPatchShape) -> None: ...
    def patchShape(self) -> QgsLegendPatchShape: ...
    def setExpressionContextScope(self, contextScope: QgsExpressionContextScope) -> None: ...
    def expressionContextScope(self) -> QgsExpressionContextScope: ...
    def outputPixelSize(self, size: float) -> float: ...
    def outputLineWidth(self, width: float) -> float: ...
    def setGeometryPartNum(self, num: int) -> None: ...
    def geometryPartNum(self) -> int: ...
    def setGeometryPartCount(self, count: int) -> None: ...
    def geometryPartCount(self) -> int: ...
    def fields(self) -> QgsFields: ...
    def originalGeometryType(self) -> QgsWkbTypes.GeometryType: ...
    def setOriginalGeometryType(self, type: QgsWkbTypes.GeometryType) -> None: ...
    def feature(self) -> QgsFeature: ...
    def setFeature(self, f: QgsFeature) -> None: ...
    def setRenderHints(self, hints: typing.Union[Qgis.SymbolRenderHints, Qgis.SymbolRenderHint]) -> None: ...
    def renderHints(self) -> Qgis.SymbolRenderHints: ...
    def setSelected(self, selected: bool) -> None: ...
    def selected(self) -> bool: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setOutputUnit(self, u: QgsUnitTypes.RenderUnit) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.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) -> QgsUnitTypes.RenderUnit: ...
    def setDistanceUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def mapUnitScale(self) -> QgsMapUnitScale: ...
    def setMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def outputUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setOutputUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def angleUnits(self) -> 'QgsVectorFieldSymbolLayer.AngleUnits': ...
    def setAngleUnits(self, units: 'QgsVectorFieldSymbolLayer.AngleUnits') -> None: ...
    def angleOrientation(self) -> 'QgsVectorFieldSymbolLayer.AngleOrientation': ...
    def setAngleOrientation(self, orientation: 'QgsVectorFieldSymbolLayer.AngleOrientation') -> None: ...
    def vectorFieldType(self) -> 'QgsVectorFieldSymbolLayer.VectorFieldType': ...
    def setVectorFieldType(self, type: 'QgsVectorFieldSymbolLayer.VectorFieldType') -> None: ...
    def scale(self) -> float: ...
    def setScale(self, s: float) -> None: ...
    def yAttribute(self) -> str: ...
    def setYAttribute(self, attribute: str) -> None: ...
    def xAttribute(self) -> str: ...
    def setXAttribute(self, attribute: str) -> None: ...
    def hasDataDefinedProperties(self) -> bool: ...
    def usedAttributes(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def drawPreviewIcon(self, context: QgsSymbolRenderContext, size: QtCore.QSize) -> None: ...
    def toSld(self, doc: QtXml.QDomDocument, element: QtXml.QDomElement, props: typing.Dict[str, typing.Any]) -> None: ...
    def usesMapUnits(self) -> bool: ...
    def properties(self) -> typing.Dict[str, typing.Any]: ...
    def clone(self) -> 'QgsVectorFieldSymbolLayer': ...
    def stopRender(self, context: QgsSymbolRenderContext) -> None: ...
    def startRender(self, context: QgsSymbolRenderContext) -> None: ...
    def renderPoint(self, point: typing.Union[QtCore.QPointF, QtCore.QPoint], context: QgsSymbolRenderContext) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def subSymbol(self) -> QgsSymbol: ...
    def setSubSymbol(self, symbol: QgsSymbol) -> bool: ...
    def layerType(self) -> str: ...
    @staticmethod
    def createFromSld(element: QtXml.QDomElement) -> QgsSymbolLayer: ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


class QgsFontManager(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    fontDownloadErrorOccurred: typing.ClassVar[QtCore.pyqtsignal]
    fontDownloaded: typing.ClassVar[QtCore.pyqtsignal]
    def removeUserFont(self, path: str) -> bool: ...
    def userFontToFamilyMap(self) -> typing.Dict[str, typing.List[str]]: ...
    def addUserFontDirectory(self, directory: str) -> None: ...
    def installFontsFromData(self, data: typing.Union[QtCore.QByteArray, bytes, bytearray], filename: str = ...) -> typing.Tuple[bool, str, typing.List[str], str]: ...
    def downloadAndInstallFont(self, url: QtCore.QUrl, identifier: str = ...) -> None: ...
    def urlForFontDownload(self, family: str) -> typing.Tuple[str, str]: ...
    def enableFontDownloadsForSession(self) -> None: ...
    def tryToDownloadFontFamily(self, family: str) -> typing.Tuple[bool, str]: ...
    def processFontFamilyName(self, name: str) -> str: ...
    def setFontFamilyReplacements(self, replacements: typing.Dict[str, str]) -> None: ...
    def addFontFamilyReplacement(self, original: str, replacement: str) -> None: ...
    def fontFamilyReplacements(self) -> typing.Dict[str, str]: ...


class QgsTextBackgroundSettings(PyQt5.sip.wrapper):

    class RotationType(int):
        RotationSync = ... # type: QgsTextBackgroundSettings.RotationType
        RotationOffset = ... # type: QgsTextBackgroundSettings.RotationType
        RotationFixed = ... # type: QgsTextBackgroundSettings.RotationType

    class SizeType(int):
        SizeBuffer = ... # type: QgsTextBackgroundSettings.SizeType
        SizeFixed = ... # type: QgsTextBackgroundSettings.SizeType
        SizePercent = ... # type: QgsTextBackgroundSettings.SizeType

    class ShapeType(int):
        ShapeRectangle = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeSquare = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeEllipse = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeCircle = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeSVG = ... # type: QgsTextBackgroundSettings.ShapeType
        ShapeMarkerSymbol = ... # type: QgsTextBackgroundSettings.ShapeType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextBackgroundSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setStrokeWidthMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def strokeWidthMapUnitScale(self) -> QgsMapUnitScale: ...
    def setStrokeWidthUnit(self, units: QgsUnitTypes.RenderUnit) -> None: ...
    def strokeWidthUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def radiiUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def sizeUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSize(self, size: QtCore.QSizeF) -> None: ...
    def size(self) -> QtCore.QSizeF: ...
    def setSizeType(self, type: 'QgsTextBackgroundSettings.SizeType') -> None: ...
    def sizeType(self) -> 'QgsTextBackgroundSettings.SizeType': ...
    def setFillSymbol(self, symbol: QgsFillSymbol) -> None: ...
    def fillSymbol(self) -> QgsFillSymbol: ...
    def setMarkerSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def markerSymbol(self) -> QgsMarkerSymbol: ...
    def setSvgFile(self, file: str) -> None: ...
    def svgFile(self) -> str: ...
    def setType(self, type: 'QgsTextBackgroundSettings.ShapeType') -> None: ...
    def type(self) -> 'QgsTextBackgroundSettings.ShapeType': ...
    def setEnabled(self, enabled: bool) -> None: ...
    def enabled(self) -> bool: ...
    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: ...


class QgsTextBufferSettings(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextBufferSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setFillBufferInterior(self, fill: bool) -> None: ...
    def fillBufferInterior(self) -> bool: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def color(self) -> QtGui.QColor: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def sizeUnit(self) -> QgsUnitTypes.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 setOverline(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def overline(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setUnderline(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def underline(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setStrikeOut(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def strikeOut(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setItalic(self, enabled: 'QgsTextCharacterFormat.BooleanValue') -> None: ...
    def italic(self) -> 'QgsTextCharacterFormat.BooleanValue': ...
    def setFontWeight(self, fontWeight: int) -> None: ...
    def fontWeight(self) -> int: ...
    def setFamily(self, family: str) -> None: ...
    def family(self) -> str: ...
    def setFontPointSize(self, size: float) -> None: ...
    def fontPointSize(self) -> float: ...
    def setTextColor(self, textColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def textColor(self) -> QtGui.QColor: ...


class QgsTextDocument(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, block: QgsTextBlock) -> None: ...
    @typing.overload
    def __init__(self, fragment: 'QgsTextFragment') -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextDocument') -> None: ...

    def applyCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def splitLines(self, wrapCharacter: str, autoWrapLength: int = ..., useMaxLineLengthWhenAutoWrapping: bool = ...) -> None: ...
    def toPlainText(self) -> typing.List[str]: ...
    def __len__(self) -> int: ...
    def size(self) -> int: ...
    def __getitem__(self, index: int) -> QgsTextBlock: ...
    def at(self, index: int) -> QgsTextBlock: ...
    def reserve(self, count: int) -> None: ...
    def append(self, block: QgsTextBlock) -> None: ...
    @staticmethod
    def fromHtml(lines: typing.Iterable[str]) -> 'QgsTextDocument': ...
    @staticmethod
    def fromPlainText(lines: typing.Iterable[str]) -> 'QgsTextDocument': ...


class QgsTextDocumentMetrics(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextDocumentMetrics') -> None: ...

    def ascentOffset(self) -> float: ...
    def fragmentFont(self, blockIndex: int, fragmentIndex: int) -> QtGui.QFont: ...
    def blockMaximumDescent(self, blockIndex: int) -> float: ...
    def blockMaximumCharacterWidth(self, blockIndex: int) -> float: ...
    def verticalOrientationXOffset(self, blockIndex: int) -> float: ...
    def baselineOffset(self, blockIndex: int, mode: Qgis.TextLayoutMode) -> float: ...
    def blockHeight(self, blockIndex: int) -> float: ...
    def blockWidth(self, blockIndex: int) -> float: ...
    def documentSize(self, mode: Qgis.TextLayoutMode, orientation: Qgis.TextOrientation) -> QtCore.QSizeF: ...
    @staticmethod
    def calculateMetrics(document: QgsTextDocument, format: 'QgsTextFormat', context: QgsRenderContext, scaleFactor: float = ...) -> 'QgsTextDocumentMetrics': ...


class QgsTextFormat(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextFormat') -> None: ...

    @staticmethod
    def textFormatPreviewPixmap(format: 'QgsTextFormat', size: QtCore.QSize, previewText: str = ..., padding: int = ...) -> QtGui.QPixmap: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext) -> None: ...
    def setDataDefinedProperties(self, collection: QgsPropertyCollection) -> None: ...
    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def resolvedFontFamily(self) -> str: ...
    def fontFound(self) -> bool: ...
    def containsAdvancedEffects(self) -> bool: ...
    @staticmethod
    def fromMimeData(data: QtCore.QMimeData) -> typing.Tuple['QgsTextFormat', bool]: ...
    def toQFont(self) -> QtGui.QFont: ...
    @staticmethod
    def fromQFont(font: QtGui.QFont) -> 'QgsTextFormat': ...
    def toMimeData(self) -> QtCore.QMimeData: ...
    def writeXml(self, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setPreviewBackgroundColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> None: ...
    def previewBackgroundColor(self) -> QtGui.QColor: ...
    def setAllowHtmlFormatting(self, allow: bool) -> None: ...
    def allowHtmlFormatting(self) -> bool: ...
    def setCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def capitalization(self) -> Qgis.Capitalization: ...
    def setOrientation(self, orientation: Qgis.TextOrientation) -> None: ...
    def orientation(self) -> Qgis.TextOrientation: ...
    def setLineHeightUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def lineHeightUnit(self) -> QgsUnitTypes.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 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: QgsUnitTypes.RenderUnit) -> None: ...
    def sizeUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def setSize(self, size: float) -> None: ...
    def size(self) -> float: ...
    def setFamilies(self, families: typing.Iterable[str]) -> None: ...
    def families(self) -> typing.List[str]: ...
    def setForcedItalic(self, forced: bool) -> None: ...
    def forcedItalic(self) -> bool: ...
    def setForcedBold(self, forced: bool) -> None: ...
    def forcedBold(self) -> bool: ...
    def setNamedStyle(self, style: str) -> None: ...
    def namedStyle(self) -> str: ...
    def setFont(self, font: QtGui.QFont) -> None: ...
    def scaledFont(self, context: QgsRenderContext, scaleFactor: float = ...) -> QtGui.QFont: ...
    def font(self) -> QtGui.QFont: ...
    def setMask(self, maskSettings: 'QgsTextMaskSettings') -> None: ...
    def mask(self) -> 'QgsTextMaskSettings': ...
    def setShadow(self, shadowSettings: 'QgsTextShadowSettings') -> None: ...
    def shadow(self) -> 'QgsTextShadowSettings': ...
    def setBackground(self, backgroundSettings: QgsTextBackgroundSettings) -> None: ...
    def background(self) -> QgsTextBackgroundSettings: ...
    def setBuffer(self, bufferSettings: QgsTextBufferSettings) -> None: ...
    def buffer(self) -> QgsTextBufferSettings: ...
    def setValid(self) -> None: ...
    def isValid(self) -> bool: ...
    def __ne__(self, other: object): ...
    def __eq__(self, other: object): ...


class QgsTextFragment(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, text: str = ..., format: QgsTextCharacterFormat = ...) -> None: ...
    @typing.overload
    def __init__(self, fragment: QtGui.QTextFragment) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextFragment') -> None: ...

    def applyCapitalization(self, capitalization: Qgis.Capitalization) -> None: ...
    def horizontalAdvance(self, font: QtGui.QFont, context: QgsRenderContext, fontHasBeenUpdatedForFragment: bool = ..., scaleFactor: float = ...) -> float: ...
    def setCharacterFormat(self, format: QgsTextCharacterFormat) -> None: ...
    def characterFormat(self) -> QgsTextCharacterFormat: ...
    def setText(self, text: str) -> None: ...
    def text(self) -> str: ...


class QgsTextMaskSettings(PyQt5.sip.wrapper):

    class MaskType(int):
        MaskBuffer = ... # type: QgsTextMaskSettings.MaskType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextMaskSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def setMaskedSymbolLayers(self, maskedLayers: typing.Iterable[QgsSymbolLayerReference]) -> None: ...
    def maskedSymbolLayers(self) -> typing.List[QgsSymbolLayerReference]: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def setPaintEffect(self, effect: QgsPaintEffect) -> None: ...
    def paintEffect(self) -> QgsPaintEffect: ...
    def setOpacity(self, opacity: float) -> None: ...
    def opacity(self) -> float: ...
    def setJoinStyle(self, style: QtCore.Qt.PenJoinStyle) -> None: ...
    def joinStyle(self) -> QtCore.Qt.PenJoinStyle: ...
    def setSizeMapUnitScale(self, scale: QgsMapUnitScale) -> None: ...
    def sizeMapUnitScale(self) -> QgsMapUnitScale: ...
    def setSizeUnit(self, unit: QgsUnitTypes.RenderUnit) -> None: ...
    def sizeUnit(self) -> QgsUnitTypes.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

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextRenderer') -> None: ...

    @staticmethod
    def wrappedText(context: QgsRenderContext, text: str, width: float, format: QgsTextFormat) -> typing.List[str]: ...
    @staticmethod
    def textRequiresWrapping(context: QgsRenderContext, text: str, width: float, format: QgsTextFormat) -> bool: ...
    @typing.overload
    @staticmethod
    def textHeight(context: QgsRenderContext, format: QgsTextFormat, textLines: typing.Iterable[str], mode: Qgis.TextLayoutMode = ..., fontMetrics: typing.Optional[QtGui.QFontMetricsF] = ..., flags: typing.Union[Qgis.TextRendererFlags, Qgis.TextRendererFlag] = ..., maxLineWidth: float = ...) -> float: ...
    @typing.overload
    @staticmethod
    def textHeight(context: QgsRenderContext, format: QgsTextFormat, character: str, includeEffects: bool = ...) -> float: ...
    @staticmethod
    def textWidth(context: QgsRenderContext, format: QgsTextFormat, textLines: typing.Iterable[str], fontMetrics: typing.Optional[QtGui.QFontMetricsF] = ...) -> float: ...
    @staticmethod
    def fontMetrics(context: QgsRenderContext, format: QgsTextFormat, scaleFactor: float = ...) -> QtGui.QFontMetricsF: ...
    @typing.overload
    @staticmethod
    def drawPart(rect: QtCore.QRectF, rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, part: Qgis.TextComponent, drawAsOutlines: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawPart(origin: typing.Union[QtCore.QPointF, QtCore.QPoint], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, part: Qgis.TextComponent, drawAsOutlines: bool = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(rect: QtCore.QRectF, rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, drawAsOutlines: bool = ..., vAlignment: Qgis.TextVerticalAlignment = ..., flags: typing.Union[Qgis.TextRendererFlags, Qgis.TextRendererFlag] = ...) -> None: ...
    @typing.overload
    @staticmethod
    def drawText(point: typing.Union[QtCore.QPointF, QtCore.QPoint], rotation: float, alignment: Qgis.TextHorizontalAlignment, textLines: typing.Iterable[str], context: QgsRenderContext, format: QgsTextFormat, drawAsOutlines: bool = ...) -> None: ...
    @staticmethod
    def sizeToPixel(size: float, c: QgsRenderContext, unit: QgsUnitTypes.RenderUnit, mapUnitScale: QgsMapUnitScale = ...) -> int: ...
    @staticmethod
    def convertQtVAlignment(alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> Qgis.TextVerticalAlignment: ...
    @staticmethod
    def convertQtHAlignment(alignment: typing.Union[QtCore.Qt.Alignment, QtCore.Qt.AlignmentFlag]) -> Qgis.TextHorizontalAlignment: ...


class QgsTextRendererUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsTextRendererUtils') -> None: ...

    @staticmethod
    def decodeTextOrientation(name: str) -> typing.Tuple[Qgis.TextOrientation, bool]: ...
    @staticmethod
    def encodeTextOrientation(orientation: Qgis.TextOrientation) -> str: ...
    @staticmethod
    def decodeShadowPlacementType(string: str) -> 'QgsTextShadowSettings.ShadowPlacement': ...
    @staticmethod
    def decodeBackgroundRotationType(string: str) -> QgsTextBackgroundSettings.RotationType: ...
    @staticmethod
    def decodeBackgroundSizeType(string: str) -> QgsTextBackgroundSettings.SizeType: ...
    @staticmethod
    def decodeShapeType(string: str) -> QgsTextBackgroundSettings.ShapeType: ...


class QgsTextShadowSettings(PyQt5.sip.wrapper):

    class ShadowPlacement(int):
        ShadowLowest = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowText = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowBuffer = ... # type: QgsTextShadowSettings.ShadowPlacement
        ShadowShape = ... # type: QgsTextShadowSettings.ShadowPlacement

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsTextShadowSettings') -> None: ...

    def referencedFields(self, context: QgsRenderContext) -> typing.Set[str]: ...
    def updateDataDefinedProperties(self, context: QgsRenderContext, properties: QgsPropertyCollection) -> None: ...
    def writeXml(self, doc: QtXml.QDomDocument) -> QtXml.QDomElement: ...
    def readXml(self, elem: QtXml.QDomElement) -> None: ...
    def readFromLayer(self, layer: QgsVectorLayer) -> None: ...
    def setBlendMode(self, mode: QtGui.QPainter.CompositionMode) -> None: ...
    def blendMode(self) -> QtGui.QPainter.CompositionMode: ...
    def setColor(self, color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> 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: QgsUnitTypes.RenderUnit) -> None: ...
    def blurRadiusUnit(self) -> QgsUnitTypes.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: QgsUnitTypes.RenderUnit) -> None: ...
    def offsetUnit(self) -> QgsUnitTypes.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 QgsSettings(QtCore.QObject):

    class Section(int):
        NoSection = ... # type: QgsSettings.Section
        Core = ... # type: QgsSettings.Section
        Gui = ... # type: QgsSettings.Section
        Server = ... # type: QgsSettings.Section
        Plugins = ... # type: QgsSettings.Section
        Auth = ... # type: QgsSettings.Section
        App = ... # type: QgsSettings.Section
        Providers = ... # type: QgsSettings.Section
        Expressions = ... # type: QgsSettings.Section
        Misc = ... # type: QgsSettings.Section
        Gps = ... # type: QgsSettings.Section

    @typing.overload
    def __init__(self, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, scope: QtCore.QSettings.Scope, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, format: QtCore.QSettings.Format, scope: QtCore.QSettings.Scope, organization: str, application: str = ..., parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, fileName: str, format: QtCore.QSettings.Format, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...
    @typing.overload
    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def clear(self) -> None: ...
    def prefixedKey(self, key: str, section: 'QgsSettings.Section') -> str: ...
    def remove(self, key: str, section: 'QgsSettings.Section' = ...) -> None: ...
    def sync(self) -> None: ...
    def fileName(self) -> str: ...
    def contains(self, key: str, section: 'QgsSettings.Section' = ...) -> bool: ...
    def value(self, key: str, defaultValue: typing.Any = ..., type: typing.Any = ..., section: 'QgsSettings.Section' = ...) -> typing.Any: ...
    def setValue(self, key: str, value: typing.Any, section: 'QgsSettings.Section' = ...) -> None: ...
    def setArrayIndex(self, i: int) -> None: ...
    def endArray(self) -> None: ...
    def beginWriteArray(self, prefix: str, size: int = ...) -> None: ...
    def beginReadArray(self, prefix: str) -> int: ...
    @staticmethod
    def setGlobalSettingsPath(path: str) -> bool: ...
    @staticmethod
    def globalSettingsPath() -> str: ...
    def globalChildGroups(self) -> typing.List[str]: ...
    def childGroups(self) -> typing.List[str]: ...
    def childKeys(self) -> typing.List[str]: ...
    def allKeys(self) -> typing.List[str]: ...
    def group(self) -> str: ...
    def endGroup(self) -> None: ...
    def beginGroup(self, prefix: str, section: 'QgsSettings.Section' = ...) -> None: ...


class QgsSettingsEntryGroup(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, settings: typing.Iterable['QgsSettingsEntryBase']) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryGroup') -> None: ...

    @typing.overload
    def removeAllChildrenSettings(self, dynamicKeyPart: str = ...) -> None: ...
    @typing.overload
    def removeAllChildrenSettings(self, dynamicKeyPartList: typing.Iterable[str]) -> None: ...
    def removeAllSettingsAtBaseKey(self, dynamicKeyPartList: typing.Iterable[str] = ...) -> None: ...
    def settings(self) -> typing.List['QgsSettingsEntryBase']: ...
    def baseKey(self, dynamicKeyPartList: typing.Iterable[str] = ...) -> str: ...
    def isValid(self) -> bool: ...


class QgsSettingsEntryBase(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBase') -> None: ...

    def setVariantValuePrivate(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str] = ...) -> bool: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPart: str) -> typing.Any: ...
    @typing.overload
    def formerValueAsVariant(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    def description(self) -> str: ...
    def settingsType(self) -> Qgis.SettingsType: ...
    def defaultValueAsVariant(self) -> typing.Any: ...
    @typing.overload
    def valueAsVariantWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariantWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def valueAsVariant(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setVariantValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def section(self) -> QgsSettings.Section: ...
    @typing.overload
    def remove(self, dynamicKeyPart: str = ...) -> None: ...
    @typing.overload
    def remove(self, dynamicKeyPartList: typing.Iterable[str]) -> None: ...
    @typing.overload
    def exists(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def exists(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def options(self) -> Qgis.SettingsOptions: ...
    def hasDynamicKey(self) -> bool: ...
    def definitionKey(self) -> str: ...
    def keyIsValid(self, key: str) -> bool: ...
    @typing.overload
    def key(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def key(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    @staticmethod
    def dynamicKeyPartToList(dynamicKeyPart: str) -> typing.List[str]: ...


class QgsSettingsEntryByReferenceQVariantBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByReferenceQVariantBase') -> None: ...

    def checkValue(self, value: typing.Any) -> bool: ...
    def convertToVariant(self, value: typing.Any) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> typing.Any: ...
    def setValuePrivate(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    def defaultValue(self) -> typing.Any: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Any, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Any) -> typing.Any: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryVariant(QgsSettingsEntryByReferenceQVariantBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Any = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryVariant') -> None: ...

    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByReferenceQStringBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: str, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByReferenceQStringBase') -> None: ...

    def checkValue(self, value: str) -> bool: ...
    def convertToVariant(self, value: str) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> str: ...
    def setValuePrivate(self, value: str, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    def defaultValue(self) -> str: ...
    @typing.overload
    def setValue(self, value: str, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: str, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: str, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: str, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: str) -> str: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: str) -> str: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryString(QgsSettingsEntryByReferenceQStringBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: str = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minLength: int = ..., maxLength: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryString') -> None: ...

    def maxLength(self) -> int: ...
    def setMaxLength(self, maxLength: int) -> None: ...
    def minLength(self) -> int: ...
    def setMinLength(self, minLength: int) -> None: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByReferenceQStringListBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Iterable[str], description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByReferenceQStringListBase') -> None: ...

    def checkValue(self, value: typing.Iterable[str]) -> bool: ...
    def convertToVariant(self, value: typing.Iterable[str]) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> typing.List[str]: ...
    def setValuePrivate(self, value: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    def defaultValue(self) -> typing.List[str]: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[str], dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[str], dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Iterable[str], dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: typing.Iterable[str]) -> typing.List[str]: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Iterable[str]) -> typing.List[str]: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryStringList(QgsSettingsEntryByReferenceQStringListBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Iterable[str] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryStringList') -> None: ...

    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByValueboolBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByValueboolBase') -> None: ...

    def checkValue(self, value: bool) -> bool: ...
    def convertToVariant(self, value: bool) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> bool: ...
    def setValuePrivate(self, value: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    def defaultValue(self) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: bool, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: bool) -> bool: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: bool) -> bool: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryBool(QgsSettingsEntryByValueboolBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: bool = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryBool') -> None: ...

    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByValueqlonglongBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByValueqlonglongBase') -> None: ...

    def checkValue(self, value: int) -> bool: ...
    def convertToVariant(self, value: int) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> int: ...
    def setValuePrivate(self, value: int, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    def defaultValue(self) -> int: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: int, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: int, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: int) -> int: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: int) -> int: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryInteger(QgsSettingsEntryByValueqlonglongBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: int = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: int = ..., maxValue: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryInteger') -> None: ...

    def maxValue(self) -> int: ...
    def setMaxValue(self, maxValue: int) -> None: ...
    def minValue(self) -> int: ...
    def setMinValue(self, minValue: int) -> None: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByValuedoubleBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Any, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByValuedoubleBase') -> None: ...

    def checkValue(self, value: float) -> bool: ...
    def convertToVariant(self, value: float) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> float: ...
    def setValuePrivate(self, value: float, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    def defaultValue(self) -> float: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: float, dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: float, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: float) -> float: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: float) -> float: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryDouble(QgsSettingsEntryByValuedoubleBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: float, description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ..., minValue: float = ..., maxValue: float = ..., displayDecimals: int = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryDouble') -> None: ...

    def displayHintDecimals(self) -> int: ...
    def setDisplayHintDecimals(self, displayHintDecimals: int) -> None: ...
    def maxValue(self) -> float: ...
    def setMaxValue(self, maxValue: float) -> None: ...
    def minValue(self) -> float: ...
    def setMinValue(self, minValue: float) -> None: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryByReferenceQColorBase(QgsSettingsEntryBase):

    @typing.overload
    def __init__(self, key: str, section: str, defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryByReferenceQColorBase') -> None: ...

    def checkValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> bool: ...
    def convertToVariant(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Any: ...
    def convertFromVariant(self, value: typing.Any) -> QtGui.QColor: ...
    def setValuePrivate(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def formerValue(self, dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def formerValue(self, dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    def defaultValue(self) -> QtGui.QColor: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPart: str = ...) -> bool: ...
    @typing.overload
    def setValue(self, value: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[str]) -> bool: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def valueWithDefaultOverride(self, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPart: str = ...) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str]) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPart: str, useDefaultValueOverride: bool, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> QtGui.QColor: ...
    @typing.overload
    def value(self, dynamicKeyPartList: typing.Iterable[str], useDefaultValueOverride: bool, defaultValueOverride: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> QtGui.QColor: ...
    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsEntryColor(QgsSettingsEntryByReferenceQColorBase):

    @typing.overload
    def __init__(self, key: str, pluginName: str, defaultValue: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor] = ..., description: str = ..., options: typing.Union[Qgis.SettingsOptions, Qgis.SettingsOption] = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsEntryColor') -> None: ...

    def settingsType(self) -> Qgis.SettingsType: ...


class QgsSettingsRegistry(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsRegistry') -> None: ...

    def addSettingsEntryGroup(self, settingsGroup: QgsSettingsEntryGroup) -> None: ...
    def addSettingsEntry(self, settingsEntry: QgsSettingsEntryBase) -> bool: ...
    def subRegistries(self) -> typing.List['QgsSettingsRegistry']: ...
    def removeSubRegistry(self, settingsRegistry: 'QgsSettingsRegistry') -> None: ...
    def addSubRegistry(self, settingsRegistry: 'QgsSettingsRegistry') -> None: ...
    def settingsEntry(self, key: str, searchChildRegistries: bool = ...) -> QgsSettingsEntryBase: ...
    def settingEntries(self) -> typing.List[QgsSettingsEntryBase]: ...


class QgsSettingsRegistryCore(QgsSettingsRegistry):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsSettingsRegistryCore') -> None: ...


class QgsValidityCheckResult(PyQt5.sip.wrapper):

    class Type(int):
        Warning = ... # type: QgsValidityCheckResult.Type
        Critical = ... # type: QgsValidityCheckResult.Type

    checkId = ... # type: str
    detailedDescription = ... # type: str
    title = ... # type: str
    type = ... # type: 'QgsValidityCheckResult.Type'

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValidityCheckResult') -> None: ...


class QgsAbstractValidityCheck(PyQt5.sip.wrapper):

    class Type(int):
        TypeLayoutCheck = ... # type: QgsAbstractValidityCheck.Type
        TypeUserCheck = ... # type: QgsAbstractValidityCheck.Type

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractValidityCheck') -> None: ...

    def runCheck(self, context: 'QgsValidityCheckContext', feedback: QgsFeedback) -> typing.List[QgsValidityCheckResult]: ...
    def prepareCheck(self, context: 'QgsValidityCheckContext', feedback: QgsFeedback) -> bool: ...
    def checkType(self) -> int: ...
    def id(self) -> str: ...
    def create(self) -> 'QgsAbstractValidityCheck': ...


class QgsValidityCheckContext(PyQt5.sip.wrapper):

    class ContextType(int):
        TypeLayoutContext = ... # type: QgsValidityCheckContext.ContextType
        TypeUserContext = ... # type: QgsValidityCheckContext.ContextType

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsValidityCheckContext') -> None: ...

    def type(self) -> int: ...


class QgsLayoutValidityCheckContext(QgsValidityCheckContext):

    layout = ... # type: QgsLayout

    @typing.overload
    def __init__(self, layout: QgsLayout) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsLayoutValidityCheckContext') -> None: ...

    def type(self) -> int: ...


class QgsValidityCheckRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def runChecks(self, type: int, context: QgsValidityCheckContext, feedback: QgsFeedback) -> typing.List[QgsValidityCheckResult]: ...
    def removeCheck(self, check: QgsAbstractValidityCheck) -> None: ...
    def addCheck(self, check: QgsAbstractValidityCheck) -> None: ...
    @typing.overload
    def checks(self) -> typing.List[QgsAbstractValidityCheck]: ...
    @typing.overload
    def checks(self, type: int) -> typing.List[QgsAbstractValidityCheck]: ...


class QgsFieldDomain(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsFieldDomain') -> None: ...

    def setMergePolicy(self, policy: Qgis.FieldDomainMergePolicy) -> None: ...
    def mergePolicy(self) -> Qgis.FieldDomainMergePolicy: ...
    def setSplitPolicy(self, policy: Qgis.FieldDomainSplitPolicy) -> None: ...
    def splitPolicy(self) -> Qgis.FieldDomainSplitPolicy: ...
    def setFieldType(self, type: QtCore.QVariant.Type) -> None: ...
    def fieldType(self) -> QtCore.QVariant.Type: ...
    def setDescription(self, description: str) -> None: ...
    def description(self) -> str: ...
    def setName(self, name: str) -> None: ...
    def name(self) -> str: ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...
    def clone(self) -> 'QgsFieldDomain': ...


class QgsCodedValue(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, code: typing.Any, value: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsCodedValue') -> None: ...

    def __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):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, values: typing.Iterable[QgsCodedValue]) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setValues(self, values: typing.Iterable[QgsCodedValue]) -> None: ...
    def values(self) -> typing.List[QgsCodedValue]: ...
    def clone(self) -> 'QgsCodedFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsRangeFieldDomain(QgsFieldDomain):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, minimum: typing.Any, minimumIsInclusive: bool, maximum: typing.Any, maximumIsInclusive: bool) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setMaximumIsInclusive(self, inclusive: bool) -> None: ...
    def maximumIsInclusive(self) -> bool: ...
    def setMaximum(self, maximum: typing.Any) -> None: ...
    def maximum(self) -> typing.Any: ...
    def setMinimumIsInclusive(self, inclusive: bool) -> None: ...
    def minimumIsInclusive(self) -> bool: ...
    def setMinimum(self, minimum: typing.Any) -> None: ...
    def minimum(self) -> typing.Any: ...
    def clone(self) -> 'QgsRangeFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsGlobFieldDomain(QgsFieldDomain):

    def __init__(self, name: str, description: str, fieldType: QtCore.QVariant.Type, glob: str) -> None: ...

    def __repr__(self) -> typing.Any: ...
    def setGlob(self, glob: str) -> None: ...
    def glob(self) -> str: ...
    def clone(self) -> 'QgsGlobFieldDomain': ...
    def typeName(self) -> str: ...
    def type(self) -> Qgis.FieldDomainType: ...


class QgsVectorDataProvider(QgsDataProvider, QgsFeatureSink, QgsFeatureSource):

    class Capability(int):
        NoCapabilities = ... # type: QgsVectorDataProvider.Capability
        AddFeatures = ... # type: QgsVectorDataProvider.Capability
        DeleteFeatures = ... # type: QgsVectorDataProvider.Capability
        ChangeAttributeValues = ... # type: QgsVectorDataProvider.Capability
        AddAttributes = ... # type: QgsVectorDataProvider.Capability
        DeleteAttributes = ... # type: QgsVectorDataProvider.Capability
        CreateSpatialIndex = ... # type: QgsVectorDataProvider.Capability
        SelectAtId = ... # type: QgsVectorDataProvider.Capability
        ChangeGeometries = ... # type: QgsVectorDataProvider.Capability
        SelectEncoding = ... # type: QgsVectorDataProvider.Capability
        CreateAttributeIndex = ... # type: QgsVectorDataProvider.Capability
        SimplifyGeometries = ... # type: QgsVectorDataProvider.Capability
        SimplifyGeometriesWithTopologicalValidation = ... # type: QgsVectorDataProvider.Capability
        TransactionSupport = ... # type: QgsVectorDataProvider.Capability
        CircularGeometries = ... # type: QgsVectorDataProvider.Capability
        ChangeFeatures = ... # type: QgsVectorDataProvider.Capability
        RenameAttributes = ... # type: QgsVectorDataProvider.Capability
        FastTruncate = ... # type: QgsVectorDataProvider.Capability
        ReadLayerMetadata = ... # type: QgsVectorDataProvider.Capability
        WriteLayerMetadata = ... # type: QgsVectorDataProvider.Capability
        CancelSupport = ... # type: QgsVectorDataProvider.Capability
        CreateRenderer = ... # type: QgsVectorDataProvider.Capability
        CreateLabeling = ... # type: QgsVectorDataProvider.Capability
        ReloadData = ... # type: QgsVectorDataProvider.Capability
        FeatureSymbology = ... # type: QgsVectorDataProvider.Capability

    class Capabilities(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorDataProvider.Capabilities', 'QgsVectorDataProvider.Capability']) -> None: ...

        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.QVariant.Type
        mType = ... # type: QtCore.QVariant.Type
        mTypeDesc = ... # type: str
        mTypeName = ... # type: str

        @typing.overload
        def __init__(self, typeDesc: str, typeName: str, type: QtCore.QVariant.Type, minLen: int = ..., maxLen: int = ..., minPrec: int = ..., maxPrec: int = ..., subType: QtCore.QVariant.Type = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorDataProvider.NativeType') -> None: ...

    EditingCapabilities = ... # type: int

    def __init__(self, uri: str = ..., providerOptions: QgsDataProvider.ProviderOptions = ..., flags: typing.Union[QgsDataProvider.ReadFlags, QgsDataProvider.ReadFlag] = ...) -> None: ...

    def textEncoding(self) -> QtCore.QTextCodec: ...
    def setNativeTypes(self, nativeTypes: typing.Iterable['QgsVectorDataProvider.NativeType']) -> None: ...
    def convertToProviderType(self, geom: QgsGeometry) -> QgsGeometry: ...
    def pushError(self, msg: str) -> None: ...
    def fillMinMaxCache(self) -> None: ...
    def clearMinMaxCache(self) -> None: ...
    raiseError: typing.ClassVar[QtCore.pyqtsignal]
    def temporalCapabilities(self) -> 'QgsVectorDataProviderTemporalCapabilities': ...
    def handlePostCloneOperations(self, source: 'QgsVectorDataProvider') -> None: ...
    def hasMetadata(self) -> bool: ...
    def translateMetadataValue(self, mdKey: str, value: typing.Any) -> str: ...
    def translateMetadataKey(self, mdKey: str) -> str: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def discoverRelations(self, target: QgsVectorLayer, layers: typing.Iterable[QgsVectorLayer]) -> typing.List[QgsRelation]: ...
    def dependencies(self) -> typing.Set[QgsMapLayerDependency]: ...
    def forceReload(self) -> None: ...
    def transaction(self) -> QgsTransaction: ...
    @staticmethod
    def convertValue(type: QtCore.QVariant.Type, value: str) -> typing.Any: ...
    def createLabeling(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsAbstractVectorLayerLabeling: ...
    def createRenderer(self, configuration: typing.Dict[str, typing.Any] = ...) -> QgsFeatureRenderer: ...
    def isDeleteStyleFromDatabaseSupported(self) -> bool: ...
    def isSaveAndLoadStyleToDatabaseSupported(self) -> bool: ...
    def errors(self) -> typing.List[str]: ...
    def clearErrors(self) -> None: ...
    def hasErrors(self) -> bool: ...
    @staticmethod
    def availableEncodings() -> typing.List[str]: ...
    def doesStrictFeatureTypeCheck(self) -> bool: ...
    def nativeTypes(self) -> typing.List['QgsVectorDataProvider.NativeType']: ...
    def supportedType(self, field: QgsField) -> bool: ...
    def palAttributeIndexNames(self) -> typing.Dict[int, str]: ...
    def pkAttributeIndexes(self) -> typing.List[int]: ...
    def attributeIndexes(self) -> typing.List[int]: ...
    def fieldNameMap(self) -> typing.Any: ...
    def fieldNameIndex(self, fieldName: str) -> int: ...
    def encoding(self) -> str: ...
    def setEncoding(self, e: str) -> None: ...
    def capabilitiesString(self) -> str: ...
    def capabilities(self) -> 'QgsVectorDataProvider.Capabilities': ...
    def createAttributeIndex(self, field: int) -> bool: ...
    def createSpatialIndex(self) -> bool: ...
    def changeGeometryValues(self, geometry_map: typing.Any) -> bool: ...
    def skipConstraintCheck(self, fieldIndex: int, constraint: QgsFieldConstraints.Constraint, value: typing.Any = ...) -> bool: ...
    def fieldConstraints(self, fieldIndex: int) -> QgsFieldConstraints.Constraints: ...
    def defaultValueClause(self, fieldIndex: int) -> str: ...
    def defaultValue(self, fieldIndex: int) -> typing.Any: ...
    def changeFeatures(self, attr_map: typing.Any, geometry_map: typing.Any) -> bool: ...
    def changeAttributeValues(self, attr_map: typing.Any) -> bool: ...
    def renameAttributes(self, renamedAttributes: typing.Dict[int, str]) -> bool: ...
    def deleteAttributes(self, attributes: typing.Any) -> bool: ...
    def addAttributes(self, attributes: typing.Any) -> bool: ...
    def cancelReload(self) -> bool: ...
    def truncate(self) -> bool: ...
    def deleteFeatures(self, id: typing.Any) -> bool: ...
    def lastError(self) -> str: ...
    def addFeatures(self, flist: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> typing.Tuple[bool, typing.List[QgsFeature]]: ...
    def enumValues(self, index: int) -> typing.List[str]: ...
    def aggregate(self, aggregate: QgsAggregateCalculator.Aggregate, index: int, parameters: QgsAggregateCalculator.AggregateParameters, context: QgsExpressionContext, fids: typing.Optional[typing.Any] = ...) -> typing.Tuple[typing.Any, bool]: ...
    def uniqueStringsMatching(self, index: int, substring: str, limit: int = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.List[str]: ...
    def maximumValue(self, index: int) -> typing.Any: ...
    def minimumValue(self, index: int) -> typing.Any: ...
    def dataComment(self) -> str: ...
    def sourceName(self) -> str: ...
    def sourceExtent(self) -> QgsRectangle: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def fields(self) -> QgsFields: ...
    def hasFeatures(self) -> QgsFeatureSource.FeatureAvailability: ...
    def vectorLayerTypeFlags(self) -> Qgis.VectorLayerTypeFlags: ...
    def isSqlQuery(self) -> bool: ...
    def empty(self) -> bool: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> QgsWkbTypes.Type: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...
    def storageType(self) -> str: ...
    def featureSource(self) -> QgsAbstractFeatureSource: ...


class QgsVectorDataProviderTemporalCapabilities(QgsDataProviderTemporalCapabilities):

    @typing.overload
    def __init__(self, enabled: bool = ...) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorDataProviderTemporalCapabilities') -> None: ...

    def setEndField(self, field: str) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: str) -> None: ...
    def startField(self) -> str: ...
    def availableTemporalRange(self) -> QgsDateTimeRange: ...
    def setAvailableTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def setMode(self, mode: Qgis.VectorDataProviderTemporalMode) -> None: ...
    def mode(self) -> Qgis.VectorDataProviderTemporalMode: ...


class QgsVectorLayerCache(QtCore.QObject):

    def __init__(self, layer: QgsVectorLayer, cacheSize: int, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    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) -> QgsWkbTypes.Type: ...
    def fields(self) -> QgsFields: ...
    def sourceCrs(self) -> QgsCoordinateReferenceSystem: ...
    def layer(self) -> QgsVectorLayer: ...
    def removeCachedFeature(self, fid: int) -> bool: ...
    def featureAtId(self, featureId: int, feature: QgsFeature, skipCache: bool = ...) -> bool: ...
    def cachedFeatureIds(self) -> typing.Any: ...
    def isFidCached(self, fid: int) -> bool: ...
    def getFeature(self, fid: int) -> QgsFeature: ...
    @typing.overload
    def getFeatures(self, featureRequest: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, expression: str) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, fids: typing.Any) -> QgsFeatureIterator: ...
    @typing.overload
    def getFeatures(self, rectangle: QgsRectangle) -> QgsFeatureIterator: ...
    def addCacheIndex(self, cacheIndex: QgsAbstractCacheIndex) -> None: ...
    def hasFullCache(self) -> bool: ...
    def setFullCache(self, fullCache: bool) -> None: ...
    def setCacheAddedAttributes(self, cacheAddedAttributes: bool) -> None: ...
    def setCacheSubsetOfAttributes(self, attributes: typing.Iterable[int]) -> None: ...
    def cacheGeometry(self) -> bool: ...
    def setCacheGeometry(self, cacheGeometry: bool) -> None: ...
    def cacheSize(self) -> int: ...
    def setCacheSize(self, cacheSize: int) -> None: ...


class QgsVectorLayerEditBuffer(QtCore.QObject):

    @typing.overload
    def __init__(self, layer: QgsVectorLayer) -> None: ...
    @typing.overload
    def __init__(self) -> None: ...

    def updateLayerFields(self) -> None: ...
    def updateAttributeMapIndex(self, attrs: typing.Dict[int, typing.Any], index: int, offset: int) -> None: ...
    def handleAttributeDeleted(self, index: int) -> None: ...
    def handleAttributeAdded(self, index: int) -> None: ...
    def updateChangedAttributes(self, f: QgsFeature) -> None: ...
    def updateFeatureGeometry(self, f: QgsFeature) -> None: ...
    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: 'QgsVectorLayerEditBufferGroup') -> None: ...
    def editBufferGroup(self) -> 'QgsVectorLayerEditBufferGroup': ...
    def isFeatureDeleted(self, id: int) -> bool: ...
    def deletedFeatureIds(self) -> typing.Any: ...
    def isFeatureGeometryChanged(self, id: int) -> bool: ...
    def changedGeometries(self) -> typing.Any: ...
    def addedAttributes(self) -> typing.Any: ...
    def isAttributeDeleted(self, index: int) -> bool: ...
    def deletedAttributeIds(self) -> typing.List[int]: ...
    def isFeatureAttributesChanged(self, id: int) -> bool: ...
    def changedAttributeValues(self) -> typing.Any: ...
    def isFeatureAdded(self, id: int) -> bool: ...
    def allAddedOrEditedFeatures(self) -> typing.Any: ...
    def addedFeatures(self) -> typing.Any: ...
    def rollBack(self) -> None: ...
    def commitChanges(self, commitErrors: typing.Iterable[str]) -> bool: ...
    def renameAttribute(self, attr: int, newName: str) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def addAttribute(self, field: QgsField) -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any]) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ...) -> bool: ...
    def changeGeometry(self, fid: int, geom: QgsGeometry) -> bool: ...
    def deleteFeatures(self, fid: typing.Any) -> bool: ...
    def deleteFeature(self, fid: int) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature]) -> bool: ...
    def addFeature(self, f: QgsFeature) -> bool: ...
    def isModified(self) -> bool: ...


class QgsVectorLayerEditBufferGroup(QtCore.QObject):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ...) -> None: ...

    def isEditing(self) -> bool: ...
    def rollBack(self, stopEditing: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def commitChanges(self, stopEditing: bool = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    def startEditing(self) -> bool: ...
    def modifiedLayers(self) -> typing.Set[QgsVectorLayer]: ...
    def layers(self) -> typing.Set[QgsVectorLayer]: ...
    def clear(self) -> None: ...
    def addLayer(self, layer: QgsVectorLayer) -> None: ...


class QgsVectorLayerEditPassthrough(QgsVectorLayerEditBuffer):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def update(self, transaction: QgsTransaction, sql: str, name: str) -> bool: ...
    def rollBack(self) -> None: ...
    def commitChanges(self, commitErrors: typing.Iterable[str]) -> bool: ...
    def renameAttribute(self, attr: int, newName: str) -> bool: ...
    def deleteAttribute(self, attr: int) -> bool: ...
    def addAttribute(self, field: QgsField) -> bool: ...
    def changeAttributeValues(self, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any]) -> bool: ...
    def changeAttributeValue(self, fid: int, field: int, newValue: typing.Any, oldValue: typing.Any = ...) -> bool: ...
    def changeGeometry(self, fid: int, geom: QgsGeometry) -> bool: ...
    def deleteFeatures(self, fids: typing.Any) -> bool: ...
    def deleteFeature(self, fid: int) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature]) -> bool: ...
    def addFeature(self, f: QgsFeature) -> bool: ...
    def isModified(self) -> bool: ...


class QgsVectorLayerEditUtils(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, layer: QgsVectorLayer) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerEditUtils') -> None: ...

    @typing.overload
    def addTopologicalPoints(self, geom: QgsGeometry) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: QgsPointXY) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, p: QgsPoint) -> int: ...
    @typing.overload
    def addTopologicalPoints(self, ps: typing.Iterable[QgsPoint]) -> int: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable[QgsPointXY], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, splitLine: typing.Iterable[QgsPoint], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitFeatures(self, curve: QgsCurve, preserveCircular: bool = ..., topologicalEditing: bool = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.List[QgsPoint]]: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable[QgsPointXY], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def splitParts(self, splitLine: typing.Iterable[QgsPoint], topologicalEditing: bool = ...) -> Qgis.GeometryOperationResult: ...
    def translateFeature(self, featureId: int, dx: float, dy: float) -> int: ...
    def addCurvedPart(self, ring: QgsCurve, featureId: int) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPart(self, ring: typing.Iterable[QgsPointXY], featureId: int) -> Qgis.GeometryOperationResult: ...
    @typing.overload
    def addPart(self, ring: typing.Iterable[QgsPoint], featureId: int) -> Qgis.GeometryOperationResult: ...
    def addCurvedRing(self, ring: QgsCurve, targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    def addRingV2(self, ring: QgsCurve, targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, typing.Any]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPointXY], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    @typing.overload
    def addRing(self, ring: typing.Iterable[QgsPoint], targetFeatureIds: typing.Any = ...) -> typing.Tuple[Qgis.GeometryOperationResult, int]: ...
    def deleteVertex(self, featureId: int, vertex: int) -> Qgis.VectorEditResult: ...
    def moveVertexV2(self, p: QgsPoint, atFeatureId: int, atVertex: int) -> bool: ...
    def moveVertex(self, x: float, y: float, atFeatureId: int, atVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, x: float, y: float, atFeatureId: int, beforeVertex: int) -> bool: ...
    @typing.overload
    def insertVertex(self, point: QgsPoint, atFeatureId: int, beforeVertex: int) -> bool: ...


class QgsVectorLayerElevationProperties(QgsMapLayerElevationProperties):

    def __init__(self, parent: QtCore.QObject) -> None: ...

    def setShowMarkerSymbolInSurfacePlots(self, show: bool) -> None: ...
    def showMarkerSymbolInSurfacePlots(self) -> bool: ...
    def setProfileSymbology(self, symbology: Qgis.ProfileSurfaceSymbology) -> None: ...
    def profileSymbology(self) -> Qgis.ProfileSurfaceSymbology: ...
    def setProfileMarkerSymbol(self, symbol: QgsMarkerSymbol) -> None: ...
    def profileMarkerSymbol(self) -> QgsMarkerSymbol: ...
    def setProfileFillSymbol(self, symbol: QgsFillSymbol) -> None: ...
    def profileFillSymbol(self) -> QgsFillSymbol: ...
    def setProfileLineSymbol(self, symbol: QgsLineSymbol) -> None: ...
    def profileLineSymbol(self) -> QgsLineSymbol: ...
    def setRespectLayerSymbology(self, enabled: bool) -> None: ...
    def respectLayerSymbology(self) -> bool: ...
    def setExtrusionHeight(self, height: float) -> None: ...
    def extrusionHeight(self) -> float: ...
    def setExtrusionEnabled(self, enabled: bool) -> None: ...
    def extrusionEnabled(self) -> bool: ...
    def setType(self, type: Qgis.VectorProfileType) -> None: ...
    def type(self) -> Qgis.VectorProfileType: ...
    def setBinding(self, binding: Qgis.AltitudeBinding) -> None: ...
    def binding(self) -> Qgis.AltitudeBinding: ...
    def setClamping(self, clamping: Qgis.AltitudeClamping) -> None: ...
    def clamping(self) -> Qgis.AltitudeClamping: ...
    def showByDefaultInElevationProfilePlots(self) -> bool: ...
    def calculateZRange(self, layer: QgsMapLayer) -> QgsDoubleRange: ...
    def isVisibleInZRange(self, range: QgsDoubleRange) -> bool: ...
    def htmlSummary(self) -> str: ...
    def clone(self) -> 'QgsVectorLayerElevationProperties': ...
    def setDefaultsFromLayer(self, layer: QgsMapLayer) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def hasElevation(self) -> bool: ...


class QgsVectorLayerExporter(QgsFeatureSink):

    def __init__(self, uri: str, provider: str, fields: QgsFields, geometryType: QgsWkbTypes.Type, crs: QgsCoordinateReferenceSystem, overwrite: bool = ..., options: typing.Dict[str, typing.Any] = ..., sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> None: ...

    def flushBuffer(self) -> bool: ...
    def lastError(self) -> str: ...
    def addFeature(self, feature: QgsFeature, flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def addFeatures(self, features: typing.Iterable[QgsFeature], flags: typing.Union[QgsFeatureSink.Flags, QgsFeatureSink.Flag] = ...) -> bool: ...
    def errorCount(self) -> int: ...
    def errorMessage(self) -> str: ...
    def errorCode(self) -> Qgis.VectorExportResult: ...
    @staticmethod
    def exportLayer(layer: QgsVectorLayer, uri: str, providerKey: str, destCRS: QgsCoordinateReferenceSystem, onlySelected: bool = ..., options: typing.Dict[str, typing.Any] = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[Qgis.VectorExportResult, str]: ...


class QgsVectorLayerExporterTask(QgsTask):

    def __init__(self, layer: QgsVectorLayer, uri: str, providerKey: str, destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[str, typing.Any] = ..., ownsLayer: bool = ...) -> None: ...

    def finished(self, result: bool) -> None: ...
    def run(self) -> bool: ...
    errorOccurred: typing.ClassVar[QtCore.pyqtsignal]
    exportComplete: typing.ClassVar[QtCore.pyqtsignal]
    def cancel(self) -> None: ...
    @staticmethod
    def withLayerOwnership(layer: QgsVectorLayer, uri: str, providerKey: str, destinationCrs: QgsCoordinateReferenceSystem, options: typing.Dict[str, typing.Any] = ...) -> 'QgsVectorLayerExporterTask': ...


class QgsVectorLayerFeatureCounter(QgsTask):

    def __init__(self, layer: QgsVectorLayer, context: QgsExpressionContext = ..., storeSymbolFids: bool = ...) -> None: ...

    symbolsCounted: typing.ClassVar[QtCore.pyqtsignal]
    def featureIds(self, symbolkey: str) -> typing.Any: ...
    def featureCount(self, legendKey: str) -> int: ...
    def cancel(self) -> None: ...
    def run(self) -> bool: ...


class QgsVectorLayerFeatureSource(QgsAbstractFeatureSource):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def id(self) -> str: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def fields(self) -> QgsFields: ...
    def getFeatures(self, request: QgsFeatureRequest = ...) -> QgsFeatureIterator: ...


class QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase(QgsAbstractFeatureIterator):

    @typing.overload
    def __init__(self, source: QgsVectorLayerFeatureSource, ownSource: bool, request: QgsFeatureRequest) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase') -> None: ...

    def iteratorClosed(self) -> None: ...


class QgsVectorLayerFeatureIterator(QgsAbstractFeatureIteratorFromSourceQgsVectorLayerFeatureSourceBase):

    class FetchJoinInfo(PyQt5.sip.wrapper):

        attributes = ... # type: typing.Iterable[int]
        indexOffset = ... # type: int
        joinField = ... # type: int
        joinInfo = ... # type: 'QgsVectorLayerJoinInfo'
        targetField = ... # type: int

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerFeatureIterator.FetchJoinInfo') -> None: ...

        def addJoinedAttributesDirect(self, f: QgsFeature, joinValue: typing.Any) -> None: ...
        def addJoinedAttributesCached(self, f: QgsFeature, joinValue: typing.Any) -> None: ...

    def __init__(self, source: QgsVectorLayerFeatureSource, ownSource: bool, request: QgsFeatureRequest) -> None: ...

    def prepareSimplification(self, simplifyMethod: QgsSimplifyMethod) -> bool: ...
    def nextFeatureFilterExpression(self, f: QgsFeature) -> bool: ...
    def fetchFeature(self, feature: QgsFeature) -> bool: ...
    def isValid(self) -> bool: ...
    def close(self) -> bool: ...
    def rewind(self) -> bool: ...


class QgsVectorLayerSelectedFeatureSource(QgsFeatureSource, QgsExpressionContextScopeGenerator):

    def __init__(self, layer: QgsVectorLayer) -> None: ...

    def hasSpatialIndex(self) -> QgsFeatureSource.SpatialIndexPresence: ...
    def createExpressionContextScope(self) -> QgsExpressionContextScope: ...
    def sourceName(self) -> str: ...
    def featureCount(self) -> int: ...
    def wkbType(self) -> QgsWkbTypes.Type: ...
    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) -> 'QgsVectorLayerJoinBuffer': ...
    def isAuxiliaryJoin(self, info: 'QgsVectorLayerJoinInfo') -> bool: ...
    def targetedFeatureOf(self, info: 'QgsVectorLayerJoinInfo', feature: QgsFeature) -> QgsFeature: ...
    def joinedFeatureOf(self, info: 'QgsVectorLayerJoinInfo', feature: QgsFeature) -> QgsFeature: ...
    def joinsWhereFieldIsId(self, field: QgsField) -> typing.List['QgsVectorLayerJoinInfo']: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayer: QgsVectorLayer, joinFieldsSubset: typing.Iterable[str]) -> typing.List[int]: ...
    @typing.overload
    @staticmethod
    def joinSubsetIndices(joinLayerFields: QgsFields, joinFieldsSubset: typing.Iterable[str]) -> typing.List[int]: ...
    def joinedFieldsOffset(self, info: 'QgsVectorLayerJoinInfo', fields: QgsFields) -> int: ...
    def joinForFieldIndex(self, index: int, fields: QgsFields) -> typing.Tuple['QgsVectorLayerJoinInfo', int]: ...
    def vectorJoins(self) -> typing.List['QgsVectorLayerJoinInfo']: ...
    def containsJoins(self) -> bool: ...
    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, layer_node: QtXml.QDomNode) -> None: ...
    def writeXml(self, layer_node: QtXml.QDomNode, document: QtXml.QDomDocument) -> None: ...
    def createJoinCaches(self) -> None: ...
    def updateFields(self, fields: QgsFields) -> None: ...
    def removeJoin(self, joinLayerId: str) -> bool: ...
    def addJoin(self, joinInfo: 'QgsVectorLayerJoinInfo') -> bool: ...


class QgsVectorLayerJoinInfo(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerJoinInfo') -> None: ...

    def __ne__(self, other: object): ...
    def setJoinFieldNamesSubset(self, fieldNamesSubset: typing.Iterable[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.List[str]: ...
    def hasSubset(self, blocklisted: bool = ...) -> bool: ...
    def joinFieldNamesBlockList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlockList(self, list: typing.Iterable[str]) -> None: ...
    def joinFieldNamesBlackList(self) -> typing.List[str]: ...
    def setJoinFieldNamesBlackList(self, blackList: typing.Iterable[str]) -> None: ...
    def extractJoinedFeature(self, feature: QgsFeature) -> QgsFeature: ...
    def prefixedFieldName(self, field: QgsField) -> str: ...
    def setCascadedDelete(self, enabled: bool) -> None: ...
    def hasCascadedDelete(self) -> bool: ...
    def setUpsertOnEdit(self, enabled: bool) -> None: ...
    def hasUpsertOnEdit(self) -> bool: ...
    def setEditable(self, enabled: bool) -> None: ...
    def isEditable(self) -> bool: ...
    def setDynamicFormEnabled(self, enabled: bool) -> None: ...
    def isDynamicFormEnabled(self) -> bool: ...
    def isUsingMemoryCache(self) -> bool: ...
    def setUsingMemoryCache(self, enabled: bool) -> None: ...
    def prefix(self) -> str: ...
    def setPrefix(self, prefix: str) -> None: ...
    def joinFieldName(self) -> str: ...
    def setJoinFieldName(self, fieldName: str) -> None: ...
    def targetFieldName(self) -> str: ...
    def setTargetFieldName(self, fieldName: str) -> None: ...
    def joinLayerId(self) -> str: ...
    def setJoinLayerId(self, layerId: str) -> None: ...
    def joinLayer(self) -> QgsVectorLayer: ...
    def setJoinLayer(self, layer: QgsVectorLayer) -> None: ...


class QgsVectorLayerTemporalContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorLayerTemporalContext') -> None: ...

    def setLayer(self, layer: QgsVectorLayer) -> None: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsVectorLayerTemporalProperties(QgsMapLayerTemporalProperties):

    def __init__(self, parent: typing.Optional[QtCore.QObject] = ..., enabled: bool = ...) -> None: ...

    def setDefaultsFromDataProviderTemporalCapabilities(self, capabilities: QgsDataProviderTemporalCapabilities) -> None: ...
    def readXml(self, element: QtXml.QDomElement, context: QgsReadWriteContext) -> bool: ...
    def writeXml(self, element: QtXml.QDomElement, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> QtXml.QDomElement: ...
    def guessDefaultsFromFields(self, fields: QgsFields) -> None: ...
    def createFilterString(self, context: QgsVectorLayerTemporalContext, range: QgsDateTimeRange) -> str: ...
    def setAccumulateFeatures(self, accumulate: bool) -> None: ...
    def accumulateFeatures(self) -> bool: ...
    def setFixedDuration(self, duration: float) -> None: ...
    def fixedDuration(self) -> float: ...
    def setDurationUnits(self, units: QgsUnitTypes.TemporalUnit) -> None: ...
    def durationUnits(self) -> QgsUnitTypes.TemporalUnit: ...
    def setDurationField(self, field: str) -> None: ...
    def durationField(self) -> str: ...
    def setEndExpression(self, endExpression: str) -> None: ...
    def endExpression(self) -> str: ...
    def setStartExpression(self, expression: str) -> None: ...
    def startExpression(self) -> str: ...
    def setEndField(self, field: str) -> None: ...
    def endField(self) -> str: ...
    def setStartField(self, field: str) -> None: ...
    def startField(self) -> str: ...
    def fixedTemporalRange(self) -> QgsDateTimeRange: ...
    def setFixedTemporalRange(self, range: QgsDateTimeRange) -> None: ...
    def flags(self) -> QgsTemporalProperty.Flags: ...
    def setLimitMode(self, mode: Qgis.VectorTemporalLimitMode) -> None: ...
    def limitMode(self) -> Qgis.VectorTemporalLimitMode: ...
    def setMode(self, mode: Qgis.VectorTemporalMode) -> None: ...
    def mode(self) -> Qgis.VectorTemporalMode: ...
    def isVisibleInTemporalRange(self, range: QgsDateTimeRange) -> bool: ...


class QgsVectorLayerUndoCommand(QtWidgets.QUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer) -> None: ...

    def mergeWith(self, a0: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def layer(self) -> QgsVectorLayer: ...


class QgsVectorLayerUndoCommandAddFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, f: QgsFeature) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteFeature(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeGeometry(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, newGeom: QgsGeometry) -> None: ...

    def mergeWith(self, other: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandChangeAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, fieldIndex: int, newValue: typing.Any, oldValue: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandAddAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandDeleteAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fieldIndex: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoCommandRenameAttribute(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fieldIndex: int, newName: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommand(QgsVectorLayerUndoCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, text: str, autocreate: bool = ...) -> None: ...

    def errorMessage(self) -> str: ...
    def setErrorMessage(self, errorMessage: str) -> None: ...
    def setError(self) -> None: ...
    def setSavePoint(self, savePointId: str = ...) -> bool: ...
    def rollBackToSavePoint(self) -> bool: ...
    def hasError(self) -> bool: ...


class QgsVectorLayerUndoPassthroughCommandAddFeatures(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, features: typing.Iterable[QgsFeature]) -> None: ...

    def features(self) -> typing.List[QgsFeature]: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandDeleteFeatures(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fids: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeGeometry(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, geom: QgsGeometry) -> None: ...

    def mergeWith(self, other: QtWidgets.QUndoCommand) -> bool: ...
    def id(self) -> int: ...
    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, field: int, newValue: typing.Any) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandChangeAttributes(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, fid: int, newValues: typing.Dict[int, typing.Any], oldValues: typing.Dict[int, typing.Any] = ...) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandAddAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, field: QgsField) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandDeleteAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, attr: int) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandRenameAttribute(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, attr: int, newName: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUndoPassthroughCommandUpdate(QgsVectorLayerUndoPassthroughCommand):

    def __init__(self, buffer: QgsVectorLayerEditBuffer, transaction: QgsTransaction, sql: str, name: str) -> None: ...

    def redo(self) -> None: ...
    def undo(self) -> None: ...


class QgsVectorLayerUtils(PyQt5.sip.wrapper):

    class CascadedFeatureFlag(int):
        IgnoreAuxiliaryLayers = ... # type: QgsVectorLayerUtils.CascadedFeatureFlag

    class QgsDuplicateFeatureContext(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerUtils.QgsDuplicateFeatureContext') -> None: ...

        def duplicatedFeatures(self, layer: QgsVectorLayer) -> typing.Any: ...
        def layers(self) -> typing.List[QgsVectorLayer]: ...

    class QgsFeatureData(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, geometry: QgsGeometry = ..., attributes: typing.Dict[int, typing.Any] = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorLayerUtils.QgsFeatureData') -> None: ...

        def attributes(self) -> typing.Dict[int, typing.Any]: ...
        def geometry(self) -> QgsGeometry: ...

    class CascadedFeatureFlags(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, f: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag']) -> None: ...

        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, bool]: ...
    @staticmethod
    def impactsCascadeFeatures(layer: QgsVectorLayer, fids: typing.Any, project: QgsProject, flags: typing.Union['QgsVectorLayerUtils.CascadedFeatureFlags', 'QgsVectorLayerUtils.CascadedFeatureFlag'] = ...) -> typing.Tuple[bool, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def getFeatureDisplayString(layer: QgsVectorLayer, feature: QgsFeature) -> str: ...
    @staticmethod
    def fieldEditabilityDependsOnFeature(layer: QgsVectorLayer, fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsReadOnly(layer: QgsVectorLayer, fieldIndex: int) -> bool: ...
    @staticmethod
    def fieldIsEditable(layer: QgsVectorLayer, fieldIndex: int, feature: QgsFeature) -> bool: ...
    @staticmethod
    def makeFeaturesCompatible(features: typing.Iterable[QgsFeature], layer: QgsVectorLayer, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def makeFeatureCompatible(feature: QgsFeature, layer: QgsVectorLayer, sinkFlags: typing.Union[QgsFeatureSink.SinkFlags, QgsFeatureSink.SinkFlag] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def matchAttributesToFields(feature: QgsFeature, fields: QgsFields) -> None: ...
    @staticmethod
    def duplicateFeature(layer: QgsVectorLayer, feature: QgsFeature, project: QgsProject, maxDepth: int = ...) -> typing.Tuple[QgsFeature, 'QgsVectorLayerUtils.QgsDuplicateFeatureContext']: ...
    @staticmethod
    def createFeatures(layer: QgsVectorLayer, featuresData: typing.Iterable['QgsVectorLayerUtils.QgsFeatureData'], context: typing.Optional[QgsExpressionContext] = ...) -> typing.List[QgsFeature]: ...
    @staticmethod
    def createFeature(layer: QgsVectorLayer, geometry: QgsGeometry = ..., attributes: typing.Dict[int, typing.Any] = ..., context: typing.Optional[QgsExpressionContext] = ...) -> QgsFeature: ...
    @staticmethod
    def validateAttribute(layer: QgsVectorLayer, feature: QgsFeature, attributeIndex: int, strength: QgsFieldConstraints.ConstraintStrength = ..., origin: QgsFieldConstraints.ConstraintOrigin = ...) -> typing.Tuple[bool, typing.List[str]]: ...
    @staticmethod
    def createUniqueValueFromCache(layer: QgsVectorLayer, fieldIndex: int, existingValues: typing.Iterable[typing.Any], seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def createUniqueValue(layer: QgsVectorLayer, fieldIndex: int, seed: typing.Any = ...) -> typing.Any: ...
    @staticmethod
    def valueExists(layer: QgsVectorLayer, fieldIndex: int, value: typing.Any, ignoreIds: typing.Any = ...) -> bool: ...
    @staticmethod
    def getDoubleValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[float], bool, int]: ...
    @staticmethod
    def getValues(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool = ..., feedback: typing.Optional[QgsFeedback] = ...) -> typing.Tuple[typing.List[typing.Any], bool]: ...
    @staticmethod
    def getValuesIterator(layer: QgsVectorLayer, fieldOrExpression: str, selectedOnly: bool) -> typing.Tuple[QgsFeatureIterator, bool]: ...


class QgsMapBoxGlStyleConversionContext(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleConversionContext') -> None: ...

    def setLayerId(self, value: str) -> None: ...
    def layerId(self) -> str: ...
    @typing.overload
    def setSprites(self, image: QtGui.QImage, definitions: typing.Dict[str, typing.Any]) -> None: ...
    @typing.overload
    def setSprites(self, image: QtGui.QImage, definitions: str) -> None: ...
    def spriteDefinitions(self) -> typing.Dict[str, typing.Any]: ...
    def spriteImage(self) -> QtGui.QImage: ...
    def setPixelSizeConversionFactor(self, sizeConversionFactor: float) -> None: ...
    def pixelSizeConversionFactor(self) -> float: ...
    def setTargetUnit(self, targetUnit: QgsUnitTypes.RenderUnit) -> None: ...
    def targetUnit(self) -> QgsUnitTypes.RenderUnit: ...
    def clearWarnings(self) -> None: ...
    def warnings(self) -> typing.List[str]: ...
    def pushWarning(self, warning: str) -> None: ...


class QgsMapBoxGlStyleAbstractSource(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleAbstractSource') -> None: ...

    def name(self) -> str: ...
    def setFromJson(self, json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSource(QgsMapBoxGlStyleAbstractSource):

    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleRasterSource') -> None: ...

    def toRasterLayer(self) -> QgsRasterLayer: ...
    def tiles(self) -> typing.List[str]: ...
    def tileSize(self) -> int: ...
    def maximumZoom(self) -> int: ...
    def minimumZoom(self) -> int: ...
    def attribution(self) -> str: ...
    def setFromJson(self, json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> bool: ...
    def type(self) -> Qgis.MapBoxGlStyleSourceType: ...


class QgsMapBoxGlStyleRasterSubLayer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, id: str, source: str) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsMapBoxGlStyleRasterSubLayer') -> None: ...

    def dataDefinedProperties(self) -> QgsPropertyCollection: ...
    def source(self) -> str: ...
    def id(self) -> str: ...


class QgsMapBoxGlStyleConverter(PyQt5.sip.wrapper):

    class PropertyType(int):
        Color = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Numeric = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Opacity = ... # type: QgsMapBoxGlStyleConverter.PropertyType
        Point = ... # type: QgsMapBoxGlStyleConverter.PropertyType

    class Result(int):
        Success = ... # type: QgsMapBoxGlStyleConverter.Result
        NoLayerList = ... # type: QgsMapBoxGlStyleConverter.Result

    staticMetaObject = ... # type: QtCore.QMetaObject

    def __init__(self) -> None: ...

    @staticmethod
    def retrieveSpriteAsBase64(value: typing.Any, context: QgsMapBoxGlStyleConversionContext, spriteSize: QtCore.QSize, spriteProperty: str, spriteSizeProperty: str) -> str: ...
    @staticmethod
    def retrieveSprite(name: str, context: QgsMapBoxGlStyleConversionContext, spriteSize: QtCore.QSize) -> QtGui.QImage: ...
    @staticmethod
    def parseExpression(expression: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, colorExpected: bool = ...) -> str: ...
    @staticmethod
    def parseJoinStyle(style: str) -> QtCore.Qt.PenJoinStyle: ...
    @staticmethod
    def parseCapStyle(style: str) -> QtCore.Qt.PenCapStyle: ...
    @staticmethod
    def interpolateExpression(zoomMin: float, zoomMax: float, valueMin: typing.Any, valueMax: typing.Any, base: float, multiplier: float = ..., contextPtr: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> str: ...
    @staticmethod
    def colorAsHslaComponents(color: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor]) -> typing.Tuple[int, int, int, int]: ...
    @staticmethod
    def parseColor(color: typing.Any, context: QgsMapBoxGlStyleConversionContext) -> QtGui.QColor: ...
    @staticmethod
    def parseColorExpression(colorExpression: typing.Any, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseInterpolateListByZoom(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseMatchList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseValueList(json: typing.Iterable[typing.Any], type: 'QgsMapBoxGlStyleConverter.PropertyType', context: QgsMapBoxGlStyleConversionContext, multiplier: float = ..., maxOpacity: int = ...) -> typing.Tuple[QgsProperty, QtGui.QColor, float]: ...
    @staticmethod
    def parseLabelStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseStringStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, conversionMap: typing.Dict[str, typing.Any]) -> typing.Tuple[str, str]: ...
    @staticmethod
    def parseStops(base: float, stops: typing.Iterable[typing.Any], multiplier: float, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseArrayStops(stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> str: ...
    @staticmethod
    def parsePointStops(base: float, stops: typing.Iterable[typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> str: ...
    @staticmethod
    def parseInterpolateStringByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, conversionMap: typing.Dict[str, typing.Any]) -> typing.Tuple[QgsProperty, str]: ...
    @staticmethod
    def parseInterpolatePointByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> typing.Tuple[QgsProperty, QtCore.QPointF]: ...
    @staticmethod
    def parseOpacityStops(base: float, stops: typing.Iterable[typing.Any], maxOpacity: int, context: QgsMapBoxGlStyleConversionContext) -> str: ...
    @staticmethod
    def parseInterpolateOpacityByZoom(json: typing.Dict[str, typing.Any], maxOpacity: int, contextPtr: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> QgsProperty: ...
    @staticmethod
    def parseInterpolateByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, multiplier: float = ...) -> typing.Tuple[QgsProperty, float]: ...
    @staticmethod
    def parseInterpolateColorByZoom(json: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[QgsProperty, QtGui.QColor]: ...
    @staticmethod
    def parseSymbolLayerAsRenderer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseSymbolLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple['QgsVectorTileBasicRendererStyle', bool, 'QgsVectorTileBasicLabelingStyle', bool]: ...
    @staticmethod
    def parseCircleLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseLineLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    @staticmethod
    def parseFillLayer(jsonLayer: typing.Dict[str, typing.Any], context: QgsMapBoxGlStyleConversionContext, isBackgroundStyle: bool = ...) -> typing.Tuple[bool, 'QgsVectorTileBasicRendererStyle']: ...
    def parseLayers(self, layers: typing.Iterable[typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def parseRasterSource(self, source: typing.Dict[str, typing.Any], name: str, context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def parseSources(self, sources: typing.Dict[str, typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> None: ...
    def createSubLayers(self) -> typing.List[QgsMapLayer]: ...
    def rasterSubLayers(self) -> typing.List[QgsMapBoxGlStyleRasterSubLayer]: ...
    def sources(self) -> typing.List[QgsMapBoxGlStyleAbstractSource]: ...
    def labeling(self) -> 'QgsVectorTileLabeling': ...
    def renderer(self) -> 'QgsVectorTileRenderer': ...
    def warnings(self) -> typing.List[str]: ...
    def errorMessage(self) -> str: ...
    @typing.overload
    def convert(self, style: typing.Dict[str, typing.Any], context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> 'QgsMapBoxGlStyleConverter.Result': ...
    @typing.overload
    def convert(self, style: str, context: typing.Optional[QgsMapBoxGlStyleConversionContext] = ...) -> 'QgsMapBoxGlStyleConverter.Result': ...


class QgsVectorTileBasicLabelingStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicLabelingStyle') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def isActive(self, zoomLevel: int) -> bool: ...
    def maxZoomLevel(self) -> int: ...
    def setMaxZoomLevel(self, maxZoom: int) -> None: ...
    def minZoomLevel(self) -> int: ...
    def setMinZoomLevel(self, minZoom: int) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def filterExpression(self) -> str: ...
    def setFilterExpression(self, expr: str) -> None: ...
    def geometryType(self) -> QgsWkbTypes.GeometryType: ...
    def setGeometryType(self, geomType: QgsWkbTypes.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: str) -> None: ...
    def labelSettings(self) -> QgsPalLayerSettings: ...
    def setLabelSettings(self, settings: QgsPalLayerSettings) -> None: ...


class QgsVectorTileLabeling(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileLabeling') -> None: ...

    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> 'QgsVectorTileLabeling': ...
    def type(self) -> str: ...


class QgsVectorTileBasicLabeling(QgsVectorTileLabeling):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicLabeling') -> None: ...

    def style(self, index: int) -> QgsVectorTileBasicLabelingStyle: ...
    def setStyle(self, index: int, style: QgsVectorTileBasicLabelingStyle) -> None: ...
    def styles(self) -> typing.List[QgsVectorTileBasicLabelingStyle]: ...
    def setStyles(self, styles: typing.Iterable[QgsVectorTileBasicLabelingStyle]) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def clone(self) -> QgsVectorTileLabeling: ...
    def type(self) -> str: ...


class QgsVectorTileBasicRendererStyle(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, stName: str = ..., laName: str = ..., geomType: QgsWkbTypes.GeometryType = ...) -> None: ...
    @typing.overload
    def __init__(self, other: 'QgsVectorTileBasicRendererStyle') -> None: ...

    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def isActive(self, zoomLevel: int) -> bool: ...
    def maxZoomLevel(self) -> int: ...
    def setMaxZoomLevel(self, maxZoom: int) -> None: ...
    def minZoomLevel(self) -> int: ...
    def setMinZoomLevel(self, minZoom: int) -> None: ...
    def isEnabled(self) -> bool: ...
    def setEnabled(self, enabled: bool) -> None: ...
    def symbol(self) -> QgsSymbol: ...
    def setSymbol(self, sym: QgsSymbol) -> None: ...
    def filterExpression(self) -> str: ...
    def setFilterExpression(self, expr: str) -> None: ...
    def geometryType(self) -> QgsWkbTypes.GeometryType: ...
    def setGeometryType(self, geomType: QgsWkbTypes.GeometryType) -> None: ...
    def layerName(self) -> str: ...
    def setLayerName(self, name: str) -> None: ...
    def styleName(self) -> str: ...
    def setStyleName(self, name: str) -> None: ...


class QgsVectorTileRenderer(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileRenderer') -> None: ...

    def resolveReferences(self, project: QgsProject) -> None: ...
    def readXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def writeXml(self, elem: QtXml.QDomElement, context: QgsReadWriteContext) -> None: ...
    def renderSelectedFeatures(self, selection: typing.Iterable[QgsFeature], context: QgsRenderContext) -> None: ...
    def willRenderFeature(self, feature: QgsFeature, tileZoom: int, layerName: str, context: QgsRenderContext) -> bool: ...
    def renderTile(self, tile: 'QgsVectorTileRendererData', context: QgsRenderContext) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def requiredLayers(self, context: QgsRenderContext, tileZoom: int) -> typing.Set[str]: ...
    def startRender(self, context: QgsRenderContext, tileZoom: int, tileRange: QgsTileRange) -> None: ...
    def clone(self) -> 'QgsVectorTileRenderer': ...
    def type(self) -> str: ...


class QgsVectorTileBasicRenderer(QgsVectorTileRenderer):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileBasicRenderer') -> None: ...

    @staticmethod
    def simpleStyleWithRandomColors() -> typing.List[QgsVectorTileBasicRendererStyle]: ...
    @staticmethod
    def simpleStyle(polygonFillColor: typing.Union[QtGui.QColor, QtCore.Qt.GlobalColor], 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: str, context: QgsRenderContext) -> bool: ...
    def renderSelectedFeatures(self, selection: typing.Iterable[QgsFeature], context: QgsRenderContext) -> None: ...
    def renderTile(self, tile: 'QgsVectorTileRendererData', context: QgsRenderContext) -> None: ...
    def stopRender(self, context: QgsRenderContext) -> None: ...
    def requiredLayers(self, context: QgsRenderContext, tileZoom: int) -> typing.Set[str]: ...
    def startRender(self, context: QgsRenderContext, tileZoom: int, tileRange: QgsTileRange) -> None: ...
    def clone(self) -> 'QgsVectorTileBasicRenderer': ...
    def type(self) -> str: ...


class QgsVectorTileLayer(QgsMapLayer):

    class LayerOptions(PyQt5.sip.wrapper):

        transformContext = ... # type: QgsCoordinateTransformContext

        @typing.overload
        def __init__(self, transformContext: QgsCoordinateTransformContext = ...) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorTileLayer.LayerOptions') -> None: ...

    def __init__(self, path: str = ..., baseName: str = ..., options: 'QgsVectorTileLayer.LayerOptions' = ...) -> None: ...

    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 labeling(self) -> QgsVectorTileLabeling: ...
    def setLabeling(self, labeling: QgsVectorTileLabeling) -> None: ...
    def renderer(self) -> QgsVectorTileRenderer: ...
    def setRenderer(self, r: QgsVectorTileRenderer) -> None: ...
    def sourceMaxZoom(self) -> int: ...
    def sourceMinZoom(self) -> int: ...
    def sourcePath(self) -> str: ...
    def sourceType(self) -> str: ...
    def tileMatrixSet(self) -> 'QgsVectorTileMatrixSet': ...
    def htmlMetadata(self) -> str: ...
    def decodedSource(self, source: str, provider: str, context: QgsReadWriteContext) -> str: ...
    def encodedSource(self, source: str, context: QgsReadWriteContext) -> str: ...
    def loadDefaultMetadata(self) -> typing.Tuple[str, bool]: ...
    def loadDefaultStyleAndSubLayers(self, error: str, warnings: typing.Iterable[str]) -> typing.Tuple[bool, typing.List[QgsMapLayer]]: ...
    def properties(self) -> Qgis.MapLayerProperties: ...
    def loadDefaultStyle(self) -> typing.Tuple[str, bool]: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def writeSymbology(self, node: QtXml.QDomNode, doc: QtXml.QDomDocument, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def readSymbology(self, node: QtXml.QDomNode, errorMessage: str, context: QgsReadWriteContext, categories: typing.Union[QgsMapLayer.StyleCategories, QgsMapLayer.StyleCategory] = ...) -> bool: ...
    def writeXml(self, layerNode: QtXml.QDomNode, doc: QtXml.QDomDocument, context: QgsReadWriteContext) -> bool: ...
    def readXml(self, layerNode: QtXml.QDomNode, context: QgsReadWriteContext) -> bool: ...
    def createMapRenderer(self, rendererContext: QgsRenderContext) -> QgsMapLayerRenderer: ...
    def dataProvider(self) -> QgsDataProvider: ...
    def clone(self) -> 'QgsVectorTileLayer': ...
    def __repr__(self) -> typing.Any: ...


class QgsVectorTileMatrixSet(QgsTileMatrixSet):

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileMatrixSet') -> None: ...

    def fromEsriJson(self, json: typing.Dict[str, typing.Any]) -> bool: ...
    @staticmethod
    def fromWebMercator(minimumZoom: int = ..., maximumZoom: int = ...) -> 'QgsVectorTileMatrixSet': ...


class QgsVectorTileRendererData(PyQt5.sip.wrapper):

    @typing.overload
    def __init__(self, id: QgsTileXYZ) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileRendererData') -> None: ...

    def layerFeatures(self, layerName: str) -> typing.List[QgsFeature]: ...
    def layers(self) -> typing.List[str]: ...
    def fields(self) -> typing.Dict[str, QgsFields]: ...
    def setFields(self, fields: typing.Dict[str, QgsFields]) -> None: ...
    def tilePolygon(self) -> QtGui.QPolygon: ...
    def setTilePolygon(self, polygon: QtGui.QPolygon) -> None: ...
    def id(self) -> QgsTileXYZ: ...


class QgsVectorTileWriter(PyQt5.sip.wrapper):

    class Layer(PyQt5.sip.wrapper):

        @typing.overload
        def __init__(self, layer: QgsVectorLayer) -> None: ...
        @typing.overload
        def __init__(self, a0: 'QgsVectorTileWriter.Layer') -> None: ...

        def setMaxZoom(self, maxzoom: int) -> None: ...
        def maxZoom(self) -> int: ...
        def setMinZoom(self, minzoom: int) -> None: ...
        def minZoom(self) -> int: ...
        def setLayerName(self, name: str) -> None: ...
        def layerName(self) -> str: ...
        def setFilterExpression(self, expr: str) -> None: ...
        def filterExpression(self) -> str: ...
        def layer(self) -> QgsVectorLayer: ...

    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, a0: 'QgsVectorTileWriter') -> None: ...

    def writeSingleTile(self, tileID: QgsTileXYZ, feedback: typing.Optional[QgsFeedback] = ..., buffer: int = ..., resolution: int = ...) -> QtCore.QByteArray: ...
    def fullExtent(self) -> QgsRectangle: ...
    def errorMessage(self) -> str: ...
    def writeTiles(self, feedback: typing.Optional[QgsFeedback] = ...) -> bool: ...
    def setRootTileMatrix(self, tileMatrix: QgsTileMatrix) -> bool: ...
    def setTransformContext(self, transformContext: QgsCoordinateTransformContext) -> None: ...
    def setMetadata(self, metadata: typing.Dict[str, typing.Any]) -> None: ...
    def setLayers(self, layers: typing.Iterable['QgsVectorTileWriter.Layer']) -> None: ...
    def setMaxZoom(self, maxZoom: int) -> None: ...
    def setMinZoom(self, minZoom: int) -> None: ...
    def setExtent(self, extent: QgsRectangle) -> None: ...
    def setDestinationUri(self, uri: str) -> None: ...


class QgsVtpkTiles(PyQt5.sip.wrapper):

    def __init__(self, filename: str) -> None: ...

    def tileData(self, z: int, x: int, y: int) -> QtCore.QByteArray: ...
    def extent(self, context: QgsCoordinateTransformContext) -> QgsRectangle: ...
    def crs(self) -> QgsCoordinateReferenceSystem: ...
    def matrixSet(self) -> QgsVectorTileMatrixSet: ...
    def layerMetadata(self) -> QgsLayerMetadata: ...
    def spriteImage(self) -> QtGui.QImage: ...
    def spriteDefinition(self) -> typing.Dict[str, typing.Any]: ...
    def styleDefinition(self) -> typing.Dict[str, typing.Any]: ...
    def metadata(self) -> typing.Dict[str, typing.Any]: ...
    def isOpen(self) -> bool: ...
    def open(self) -> bool: ...


class QgsQtLocationConnection(QgsGpsConnection):

    def __init__(self) -> None: ...

    def satellitesInUseUpdated(self, satellites: typing.Iterable[QtPositioning.QGeoSatelliteInfo]) -> None: ...
    def satellitesInViewUpdated(self, satellites: typing.Iterable[QtPositioning.QGeoSatelliteInfo]) -> None: ...
    def parseData(self) -> None: ...
    def broadcastConnectionAvailable(self) -> None: ...


class QgsGpsConnectionRegistry(PyQt5.sip.wrapper):

    def __init__(self) -> None: ...

    def connectionList(self) -> typing.List[QgsGpsConnection]: ...
    def unregisterConnection(self, c: QgsGpsConnection) -> None: ...
    def registerConnection(self, c: QgsGpsConnection) -> None: ...


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: QgsUnitTypes.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: QgsSymbol) -> bool: ...
    def subSymbol(self) -> QgsSymbol: ...
    def clone(self) -> 'QgsMaskMarkerSymbolLayer': ...
    @staticmethod
    def create(properties: typing.Dict[str, typing.Any] = ...) -> QgsSymbolLayer: ...


DEFAULT_LINE_WIDTH = ... # type: float
DEFAULT_POINT_SIZE = ... # type: float
DEFAULT_SEGMENT_EPSILON = ... # type: float
GEOCRS_ID = ... # type: int
GEOSRID = ... # type: int
GEO_EPSG_CRS_ID = ... # type: int
USER_CRS_START_ID = ... # type: int


def stringToSymbolLayerReferenceList(a0: str) -> typing.List[QgsSymbolLayerReference]: ...
def symbolLayerReferenceListToString(a0: typing.Iterable[QgsSymbolLayerReference]) -> str: ...
def compareWkt(a: str, b: str, tolerance: float = ...) -> bool: ...
def geoNone() -> str: ...
def geoEpsgCrsAuthId() -> str: ...
def geoProj4() -> str: ...
def geoWkt() -> str: ...
def qgsVsiPrefix(path: str) -> str: ...
def qgsVariantGreaterThan(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsVariantEqual(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsVariantLessThan(lhs: typing.Any, rhs: typing.Any) -> bool: ...
def qgsPermissiveToLongLong(string: str) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToInt(string: str) -> typing.Tuple[int, bool]: ...
def qgsPermissiveToDouble(string: str) -> typing.Tuple[float, bool]: ...
def qgsRound(number: float, places: int) -> float: ...
def qgsDoubleNearSig(a: float, b: float, significantDigits: int = ...) -> bool: ...
def qgsFloatNear(a: float, b: float, epsilon: float = ...) -> bool: ...
def qgsDoubleNear(a: float, b: float, epsilon: float = ...) -> bool: ...
def qgsNanCompatibleEquals(a: float, b: float) -> bool: ...
def qgsDoubleToString(a: float, precision: int = ...) -> str: ...
@typing.overload
def qHash(variant: typing.Any) -> int: ...
@typing.overload
def qHash(id: QgsSymbolLayerId) -> int: ...
@typing.overload
def qHash(r: QgsSymbolLayerReference) -> int: ...
