from collections.abc import Callable, Mapping, Sequence import datetime from typing import Any, ClassVar, TypeAlias, Union from google.protobuf import descriptor_pool as proto_descriptor_pool from google.protobuf import message as proto_message class Activation: pass class CelExtension(CelExtensionBase): def __init__(self, name: str, functions: Sequence[FunctionDecl]) -> None: ... class CelExtensionBase: def __init__(self, name: str) -> None: ... class Options: enable_pratt_parser: bool def __init__(self, enable_pratt_parser: bool = ...) -> None: ... class EnvConfig: @property def context_type(self) -> str: ... def to_yaml(self) -> str: ... class ExpressionContainer: def __init__(self, name: str = ..., abbreviations: Sequence[str] | None = ..., aliases: Mapping[str, str] | None = ...) -> None: ... def container(self) -> str: ... class Env: def Activation(self, data: Mapping[str, Any] | None = ..., functions: Sequence[Function] | None = ..., arena: _InternalArena = ...) -> Activation: ... def compile(self, expression: str, disable_check: bool = ...) -> Expression: ... def deserialize(self, serialized: str | bytes) -> Expression: ... def config(self) -> EnvConfig: ... def options(self) -> Options: ... class Expression: def eval(self, activation: Activation | None = ..., data: Mapping[str, Any] | None = ..., functions=..., arena: _InternalArena = ...) -> Value: ... def return_type(self) -> Type: ... def serialize(self) -> bytes: ... class Function: def __init__(self, function_name: str, parameters: Sequence[Type], is_member: bool, impl: Callable[..., Any], return_type: Type = ...) -> None: ... class FunctionDecl: def __init__(self, name: str, overloads: Sequence[Overload]) -> None: ... class Overload: def __init__(self, id: str | None = ..., return_type: Type = ..., parameters: Sequence[Type] = ..., is_member: bool = ..., impl: Callable[..., Any] = ..., signature: str | None = ...) -> None: ... class Type: BOOL: ClassVar[Type] = ... BYTES: ClassVar[Type] = ... DOUBLE: ClassVar[Type] = ... DURATION: ClassVar[Type] = ... DYN: ClassVar[Type] = ... ERROR: ClassVar[Type] = ... INT: ClassVar[Type] = ... LIST: ClassVar[Type] = ... MAP: ClassVar[Type] = ... NULL: ClassVar[Type] = ... STRING: ClassVar[Type] = ... TIMESTAMP: ClassVar[Type] = ... TYPE: ClassVar[Type] = ... UINT: ClassVar[Type] = ... UNKNOWN: ClassVar[Type] = ... def __init__(self, signature: str) -> None: ... @staticmethod def AbstractType(name: str, params: Sequence[Type] = ...) -> Type: ... @staticmethod def List(element_type: Type) -> Type: ... @staticmethod def Map(key_type: Type, element_type: Type) -> Type: ... @staticmethod def Type(element_type: Type) -> Type: ... def is_assignable_from(self, arg0: Type) -> bool: ... def is_message(self) -> bool: ... def name(self) -> str: ... def __eq__(self, arg0: Type) -> bool: ... BaseValue: TypeAlias = Union[None, bool, int, float, str, bytes, proto_message.Message, datetime.datetime, datetime.timedelta, Type] PlainValue: TypeAlias = Union[BaseValue, list[PlainValue], dict[PlainValue, PlainValue]] CelValue: TypeAlias = Union[BaseValue, list[Value], dict[PlainValue, Value]] class Value: def plain_value(self) -> PlainValue: ... def type(self) -> Type: ... def value(self) -> Any: ... class _InternalArena: @staticmethod def _get_instance_count() -> int: ... def Arena() -> _InternalArena: ... def NewEnv( descriptor_pool: proto_descriptor_pool.DescriptorPool | Any | None = ..., config: EnvConfig | None = ..., variables: Mapping[str, Type] | None = ..., extensions: Sequence[CelExtensionBase] | None = ..., container: str | ExpressionContainer | None = ..., functions: Sequence[FunctionDecl] | None = ..., function_impls: Mapping[str, Callable[..., Any]] | None = ..., options: Options | None = ..., ) -> Env: ... def NewEnvConfigFromYaml(yaml: str) -> EnvConfig: ...