Type definitions for the Autonoma SDK.
The SDK is factory-driven: every model is owned by a registered factory
whose input is described by input_fields. There is no SQL introspection,
no executor protocol, and no dialect machinery.
Summary
Types
@type factory_definition() :: %{ :create => (map(), factory_context() -> map()), :input_fields => [input_field()], optional(:teardown) => (map(), factory_context() -> any()) | nil, optional(:ref_fields) => [input_field()] | nil }
@type factory_registry() :: %{required(String.t()) => factory_definition()}
@type handler_config() :: %{ :scope_field => String.t(), :shared_secret => String.t(), :signing_secret => String.t(), :auth => (map() | nil, map() -> map()), optional(:factories) => factory_registry(), optional(:allow_production) => boolean(), optional(:sdk) => map(), optional(:before_down) => (hook_context() -> any()), optional(:after_up) => (hook_context(), map() -> map()) }
@type model_info() :: %{ name: String.t(), table_name: String.t(), fields: [field_info()] }
@type schema_info() :: %{ models: [model_info()], edges: [fk_edge()], relations: [schema_relation()], scope_field: String.t() }