from _typeshed import Incomplete
from typing import Any

class Rule:
    id: Any
    prefix: Any
    status: Any
    expiration: Any
    transition: Any
    def __init__(
        self,
        id: Incomplete | None = None,
        prefix: Incomplete | None = None,
        status: Incomplete | None = None,
        expiration: Incomplete | None = None,
        transition: Incomplete | None = None,
    ) -> None: ...
    def startElement(self, name, attrs, connection): ...
    def endElement(self, name, value, connection): ...
    def to_xml(self): ...

class Expiration:
    days: Any
    date: Any
    def __init__(self, days: Incomplete | None = None, date: Incomplete | None = None) -> None: ...
    def startElement(self, name, attrs, connection): ...
    def endElement(self, name, value, connection): ...
    def to_xml(self): ...

class Transition:
    days: Any
    date: Any
    storage_class: Any
    def __init__(
        self, days: Incomplete | None = None, date: Incomplete | None = None, storage_class: Incomplete | None = None
    ) -> None: ...
    def to_xml(self): ...

class Transitions(list[Transition]):
    transition_properties: int
    current_transition_property: int
    temp_days: Any
    temp_date: Any
    temp_storage_class: Any
    def __init__(self) -> None: ...
    def startElement(self, name, attrs, connection): ...
    def endElement(self, name, value, connection): ...
    def to_xml(self): ...
    def add_transition(
        self, days: Incomplete | None = None, date: Incomplete | None = None, storage_class: Incomplete | None = None
    ): ...
    @property
    def days(self): ...
    @property
    def date(self): ...
    @property
    def storage_class(self): ...

class Lifecycle(list[Rule]):
    def startElement(self, name, attrs, connection): ...
    def endElement(self, name, value, connection): ...
    def to_xml(self): ...
    def add_rule(
        self,
        id: Incomplete | None = None,
        prefix: str = "",
        status: str = "Enabled",
        expiration: Incomplete | None = None,
        transition: Incomplete | None = None,
    ): ...
