# This file is dual licensed under the terms of the Apache License, Version # 2.0, and the BSD License. See the LICENSE file in the root of this repository # for complete details. import datetime import typing def decode_der(cls: type, value: bytes) -> typing.Any: ... def encode_der(value: typing.Any) -> bytes: ... def non_root_python_to_rust(cls: type) -> Type: ... # Type is a Rust enum with tuple variants. For now, we express the type # annotations like this: class Type: Sequence: typing.ClassVar[type] SequenceOf: typing.ClassVar[type] Set: typing.ClassVar[type] SetOf: typing.ClassVar[type] Option: typing.ClassVar[type] Choice: typing.ClassVar[type] PyBool: typing.ClassVar[type] PyInt: typing.ClassVar[type] PyBytes: typing.ClassVar[type] PyStr: typing.ClassVar[type] class Annotation: default: typing.Any | None encoding: Encoding | None size: Size | None def __new__( cls, default: typing.Any | None = None, encoding: Encoding | None = None, size: Size | None = None, ) -> Annotation: ... def is_empty(self) -> bool: ... # Encoding is a Rust enum with tuple variants. For now, we express the type # annotations like this: class Encoding: Implicit: typing.ClassVar[type] Explicit: typing.ClassVar[type] class Size: min: int max: int | None def __new__(cls, min: int, max: int | None) -> Size: ... @staticmethod def exact(n: int) -> Size: ... class AnnotatedType: inner: Type annotation: Annotation def __new__(cls, inner: Type, annotation: Annotation) -> AnnotatedType: ... class AnnotatedTypeObject: annotated_type: AnnotatedType value: typing.Any def __new__( cls, annotated_type: AnnotatedType, value: typing.Any ) -> AnnotatedTypeObject: ... class Variant: python_class: type ann_type: AnnotatedType tag_name: str | None def __new__( cls, python_class: type, ann_type: AnnotatedType, tag_name: str | None, ) -> Variant: ... class PrintableString: def __new__(cls, inner: str) -> PrintableString: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ... def as_str(self) -> str: ... class IA5String: def __new__(cls, inner: str) -> IA5String: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ... def as_str(self) -> str: ... class UTCTime: def __new__(cls, inner: datetime.datetime) -> UTCTime: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ... def as_datetime(self) -> datetime.datetime: ... class GeneralizedTime: def __new__(cls, inner: datetime.datetime) -> GeneralizedTime: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ... def as_datetime(self) -> datetime.datetime: ... class BitString: def __new__(cls, data: bytes, padding_bits: int) -> BitString: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ... def as_bytes(self) -> bytes: ... def padding_bits(self) -> int: ... class Tlv: @property def tag_bytes(self) -> bytes: ... @property def data(self) -> memoryview: ... def parse(self, cls: type): ... T = typing.TypeVar("T") class SetOf(typing.Generic[T]): def __new__(cls, inner: list[T]) -> SetOf[T]: ... def as_list(self) -> list[T]: ... def __eq__(self, other: object) -> bool: ... def __repr__(self) -> str: ... class Null: def __new__(cls) -> Null: ... def __repr__(self) -> str: ... def __eq__(self, other: object) -> bool: ...