"""
This type stub file was generated by pyright.
"""

import temporalio.bridge.runtime
import temporalio.bridge.temporal_sdk_bridge
from typing import Mapping, Optional, Union

"""Metrics using SDK Core. (unstable)

Nothing in this module should be considered stable. The API may change.
"""
class MetricMeter:
    """Metric meter using SDK Core."""
    @staticmethod
    def create(runtime: temporalio.bridge.runtime.Runtime) -> Optional[MetricMeter]:
        """Create optional metric meter."""
        ...
    
    def __init__(self, ref: temporalio.bridge.temporal_sdk_bridge.MetricMeterRef) -> None:
        """Initialize metric meter."""
        ...
    
    @property
    def default_attributes(self) -> MetricAttributes:
        """Default attributes for the metric meter."""
        ...
    


class MetricCounter:
    """Metric counter using SDK Core."""
    def __init__(self, meter: MetricMeter, name: str, description: Optional[str], unit: Optional[str]) -> None:
        """Initialize counter metric."""
        ...
    
    def add(self, value: int, attrs: MetricAttributes) -> None:
        """Add value to counter."""
        ...
    


class MetricHistogram:
    """Metric histogram using SDK Core."""
    def __init__(self, meter: MetricMeter, name: str, description: Optional[str], unit: Optional[str]) -> None:
        """Initialize histogram."""
        ...
    
    def record(self, value: int, attrs: MetricAttributes) -> None:
        """Record value on histogram."""
        ...
    


class MetricGauge:
    """Metric gauge using SDK Core."""
    def __init__(self, meter: MetricMeter, name: str, description: Optional[str], unit: Optional[str]) -> None:
        """Initialize gauge."""
        ...
    
    def set(self, value: int, attrs: MetricAttributes) -> None:
        """Set value on gauge."""
        ...
    


class MetricAttributes:
    """Metric attributes using SDK Core."""
    def __init__(self, meter: MetricMeter, ref: temporalio.bridge.temporal_sdk_bridge.MetricAttributesRef) -> None:
        """Initialize attributes."""
        ...
    
    def with_additional_attributes(self, new_attrs: Mapping[str, Union[str, int, float, bool]]) -> MetricAttributes:
        """Create new attributes with new attributes appended."""
        ...
    


