-module(internal@testcontainers_ffi). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/internal/testcontainers_ffi.gleam"). -export([start_link/0, start/1, stop_container/1, build_container/1, after_start/2]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(" FFI to Elixir.Testcontainers top-level module functions.\n"). -file("src/internal/testcontainers_ffi.gleam", 11). ?DOC( " Start the Testcontainers GenServer.\n" "\n" " Calls `Testcontainers.start_link/0` which returns\n" " `{:ok, pid}` or `{:error, reason}`.\n" ). -spec start_link() -> {ok, gleam@dynamic:dynamic_()} | {error, gleam@dynamic:dynamic_()}. start_link() -> 'Elixir.Testcontainers':start_link(). -file("src/internal/testcontainers_ffi.gleam", 18). ?DOC( " Start a container and wait until it is ready.\n" "\n" " Uses an Erlang wrapper that normalizes 3-element error tuples\n" " from wait strategies into standard 2-element `{:error, reason}`.\n" ). -spec start(testcontainers_gleam@container:container()) -> {ok, testcontainers_gleam@container:container()} | {error, gleam@dynamic:dynamic_()}. start(Container) -> testcontainers_gleam_ffi:start_container(Container). -file("src/internal/testcontainers_ffi.gleam", 26). ?DOC( " Stop a running container by ID.\n" "\n" " Calls `Testcontainers.stop_container/1` which returns\n" " `:ok` or `{:error, reason}`. Typed as Dynamic because `:ok`\n" " is a bare atom, not a `{:ok, value}` tuple.\n" ). -spec stop_container(binary()) -> gleam@dynamic:dynamic_(). stop_container(Container_id) -> 'Elixir.Testcontainers':stop_container(Container_id). -file("src/internal/testcontainers_ffi.gleam", 33). ?DOC( " Build a Container from any ContainerBuilder config struct.\n" "\n" " Dispatches through Elixir's `ContainerBuilder` protocol to convert\n" " a builder (e.g. `%RedisContainer{}`) into a low-level `%Container{}`.\n" ). -spec build_container(any()) -> testcontainers_gleam@container:container(). build_container(Builder) -> testcontainers_gleam_ffi:build_container(Builder). -file("src/internal/testcontainers_ffi.gleam", 40). ?DOC( " Call after_start for builders that need post-start hooks (e.g. Kafka).\n" "\n" " Extracts the Docker HTTP connection from the Testcontainers GenServer\n" " state and calls `ContainerBuilder.after_start/3`.\n" ). -spec after_start(any(), testcontainers_gleam@container:container()) -> {ok, nil} | {error, gleam@dynamic:dynamic_()}. after_start(Builder, Container) -> testcontainers_gleam_ffi:after_start(Builder, Container).