-module(shimmer). -compile(no_auto_import). -export([new/2, new_with_opts/3, connect/1]). -export_type([client_options/0]). -type client_options() :: {client_options, integer()}. -spec new(binary(), shimmer@handlers:handlers_builder()) -> shimmer@client:client(). new(Token, Handler_builder) -> {client, Token, begin _pipe = Handler_builder, shimmer@handlers:handlers_from_builder(_pipe) end, 3243773}. -spec new_with_opts( binary(), shimmer@handlers:handlers_builder(), client_options() ) -> shimmer@client:client(). new_with_opts(Token, Handler_builder, Opts) -> Default = new(Token, Handler_builder), erlang:setelement(4, Default, erlang:element(2, Opts)). -spec connect(shimmer@client:client()) -> {ok, boolean()} | {error, shimmer@internal@error:shimmer_error()}. connect(Client) -> Actor_spec = {spec, shimmer@ws@event_loop:actor_setup(Client), 30 * 1000, fun shimmer@ws@event_loop:actor_loop/2}, case begin _pipe = gleam@otp@actor:start_spec(Actor_spec), gleam@result:map_error( _pipe, fun(Field@0) -> {actor_error, Field@0} end ) end of {error, _try} -> {error, _try}; {ok, _@1} -> {ok, true} end.