"""actguard Python SDK."""

from .budget import BudgetGuard
from .client import Client
from .exceptions import (
    ActGuardError,
    ActGuardViolation,
    BudgetClientMismatchError,
    BudgetConfigurationError,
    BudgetExceededError,
    BudgetTransportError,
    CircuitOpenError,
    DuplicateIdempotencyKey,
    GuardError,
    IdempotencyInProgress,
    IdempotencyOutcomeUnknown,
    InvalidIdempotentToolError,
    MaxAttemptsExceeded,
    MissingIdempotencyKeyError,
    MissingRuntimeContextError,
    NestedBudgetGuardError,
    NestedRunContextError,
    RateLimitExceeded,
    ToolExecutionError,
    ToolGuardError,
    ToolTimeoutError,
)
from .reporting import emit_event, emit_violation
from .session import session
from .tools import (
    FAIL_ON_DEFAULT,
    FAIL_ON_INFRA_ONLY,
    FAIL_ON_STRICT,
    IGNORE_ON_DEFAULT,
    BlockRegex,
    FailureKind,
    RequireFact,
    Threshold,
    circuit_breaker,
    enforce,
    idempotent,
    max_attempts,
    prove,
    rate_limit,
    timeout,
    tool,
)
from .tools.timeout import shutdown

__version__ = "0.1.0"

__all__ = [
    "ActGuardError",
    "ActGuardViolation",
    "BlockRegex",
    "BudgetGuard",
    "BudgetClientMismatchError",
    "BudgetConfigurationError",
    "BudgetExceededError",
    "BudgetTransportError",
    "Client",
    "CircuitOpenError",
    "circuit_breaker",
    "DuplicateIdempotencyKey",
    "emit_event",
    "emit_violation",
    "enforce",
    "FAIL_ON_DEFAULT",
    "FAIL_ON_INFRA_ONLY",
    "FAIL_ON_STRICT",
    "FailureKind",
    "GuardError",
    "idempotent",
    "IdempotencyInProgress",
    "IdempotencyOutcomeUnknown",
    "IGNORE_ON_DEFAULT",
    "InvalidIdempotentToolError",
    "max_attempts",
    "MaxAttemptsExceeded",
    "MissingIdempotencyKeyError",
    "MissingRuntimeContextError",
    "NestedBudgetGuardError",
    "NestedRunContextError",
    "prove",
    "rate_limit",
    "RateLimitExceeded",
    "RequireFact",
    "session",
    "shutdown",
    "Threshold",
    "timeout",
    "tool",
    "ToolExecutionError",
    "ToolGuardError",
    "ToolTimeoutError",
    "__version__",
]
