-module(glats@jetstream). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([ack/2, term/2, nack/2, nack_delay/3]). -export_type([jetstream_error/0, storage_type/0]). -type jetstream_error() :: {jetstream_not_enabled_for_account, binary()} | {jetstream_not_enabled, binary()} | {insufficient_resources, binary()} | {invalid_stream_config, binary()} | {stream_name_in_subject_does_not_match, binary()} | {stream_name_in_use, binary()} | {stream_not_found, binary()} | {stream_purge_not_allowed, binary()} | {no_message_found, binary()} | {consumer_not_found, binary()} | {consumer_name_exists, binary()} | {consumer_already_exists, binary()} | {wrong_last_sequence, binary()} | {bad_request, binary()} | {unknown, integer(), binary()} | {decode_error, binary()} | timeout | no_responders | {pull_consumer_required, binary()}. -type storage_type() :: file_storage | memory_storage. -spec ack( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. ack(Conn, Message) -> glats:respond(Conn, Message, <<""/utf8>>, []). -spec term( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. term(Conn, Message) -> glats:respond(Conn, Message, <<"+TERM"/utf8>>, []). -spec nack( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. nack(Conn, Message) -> glats:respond(Conn, Message, <<"-NAK"/utf8>>, []). -spec nack_delay( gleam@erlang@process:subject(glats:connection_message()), glats:message(), integer() ) -> {ok, nil} | {error, glats:error()}. nack_delay(Conn, Message, Delay) -> glats:respond( Conn, Message, <<<<"-NAK {\"delay\":"/utf8, (gleam@int:to_string(Delay))/binary>>/binary, "}"/utf8>>, [] ).