from crhelper import log_helper as log_helper
from typing import Any, Callable, Optional, Union

logger: Any
SUCCESS: str
FAILED: str

_DecoratorTypeDef = Callable[[Any, Any], Union[bool, str, None]]

class CfnResource:
    Status: str = ...
    Reason: str = ...
    PhysicalResourceId: str = ...
    StackId: str = ...
    RequestId: str = ...
    LogicalResourceId: str = ...
    Data: Any = ...
    NoEcho: bool = ...
    def __init__(self, json_logging: bool = ..., log_level: str = ..., boto_level: str = ..., polling_interval: int = ..., sleep_on_delete: int = ..., ssl_verify: Optional[bool] = ...) -> None: ...
    def __call__(self, event: Any, context: Any) -> None: ...
    def generate_physical_id(self, event: Any): ...
    def create(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def update(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def delete(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def poll_create(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def poll_update(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def poll_delete(self, func: _DecoratorTypeDef) -> _DecoratorTypeDef: ...
    def init_failure(self, error: Any) -> None: ...
