-record(event_store, { execute_transaction :: fun((fun((any()) -> {ok, nil} | {error, eventsourcing:event_sourcing_error(any())})) -> {ok, nil} | {error, eventsourcing:event_sourcing_error(any())}), load_aggregate_transaction :: fun((fun((any()) -> {ok, eventsourcing:aggregate(any(), any(), any(), any())} | {error, eventsourcing:event_sourcing_error(any())})) -> {ok, eventsourcing:aggregate(any(), any(), any(), any())} | {error, eventsourcing:event_sourcing_error(any())}), load_events_transaction :: fun((fun((any()) -> {ok, list(eventsourcing:event_envelop(any()))} | {error, eventsourcing:event_sourcing_error(any())})) -> {ok, list(eventsourcing:event_envelop(any()))} | {error, eventsourcing:event_sourcing_error(any())}), get_latest_snapshot_transaction :: fun((fun((any()) -> {ok, gleam@option:option(eventsourcing:snapshot(any()))} | {error, eventsourcing:event_sourcing_error(any())})) -> {ok, gleam@option:option(eventsourcing:snapshot(any()))} | {error, eventsourcing:event_sourcing_error(any())}), commit_events :: fun((any(), eventsourcing:aggregate(any(), any(), any(), any()), list(any()), list({binary(), binary()})) -> {ok, {list(eventsourcing:event_envelop(any())), integer()}} | {error, eventsourcing:event_sourcing_error(any())}), load_events :: fun((any(), any(), binary(), integer()) -> {ok, list(eventsourcing:event_envelop(any()))} | {error, eventsourcing:event_sourcing_error(any())}), load_snapshot :: fun((any(), binary()) -> {ok, gleam@option:option(eventsourcing:snapshot(any()))} | {error, eventsourcing:event_sourcing_error(any())}), save_snapshot :: fun((any(), eventsourcing:snapshot(any())) -> {ok, nil} | {error, eventsourcing:event_sourcing_error(any())}), eventstore :: any() }).