Ledger.Maskableinclude Merkle_mask.Base_merkle_tree_intf.S
  with module Location = Location
  with module Addr = Location.Addr
  with type account := Mina_base.Account.t
  with type key := Signature_lib.Public_key.Compressed.t
  with type token_id := Mina_base.Token_id.t
  with type token_id_set := Mina_base.Token_id.Set.t
  with type account_id := Mina_base.Account_id.t
  with type account_id_set := Mina_base.Account_id.Set.t
  with type hash := Mina_base.Ledger_hash.t
  with type root_hash := Mina_base.Ledger_hash.t
  with type t := Any_ledger.M.tmodule Addr = Location.Addrmodule Path : 
  Merkle_ledger.Merkle_path.S with type hash := Mina_base.Ledger_hash.tmodule Location = Locationinclude Merkle_ledger.Syncable_intf.S
  with type root_hash := Mina_base.Ledger_hash.t
   and type hash := Mina_base.Ledger_hash.t
   and type account := Mina_base.Account.t
   and type addr := Addr.t
   and type path = Path.t
   and type t := Any_ledger.M.tinclude Ppx_sexp_conv_lib.Sexpable.S with type t := Any_ledger.M.tval t_of_sexp : Sexplib0__.Sexp.t -> Any_ledger.M.tval sexp_of_t : Any_ledger.M.t -> Sexplib0__.Sexp.ttype path = Path.tval depth : Any_ledger.M.t -> intval num_accounts : Any_ledger.M.t -> intval merkle_path_at_addr_exn : Any_ledger.M.t -> Addr.t -> pathval get_inner_hash_at_addr_exn : 
  Any_ledger.M.t ->
  Addr.t ->
  Mina_base.Ledger_hash.tval set_inner_hash_at_addr_exn : 
  Any_ledger.M.t ->
  Addr.t ->
  Mina_base.Ledger_hash.t ->
  unitval set_all_accounts_rooted_at_exn : 
  Any_ledger.M.t ->
  Addr.t ->
  Mina_base.Account.t list ->
  unitval set_batch_accounts : 
  Any_ledger.M.t ->
  (Addr.t * Mina_base.Account.t) list ->
  unitval get_all_accounts_rooted_at_exn : 
  Any_ledger.M.t ->
  Addr.t ->
  (Addr.t * Mina_base.Account.t) listGet all of the accounts that are in a subtree of the underlying Merkle tree rooted at `address`. The accounts are ordered by their addresses.
val make_space_for : Any_ledger.M.t -> int -> unitval to_list : Any_ledger.M.t -> Mina_base.Account.t listlist of accounts in the ledger
val iteri : 
  Any_ledger.M.t ->
  f:( index -> Mina_base.Account.t -> unit ) ->
  unititerate over all indexes and accounts
val foldi : 
  Any_ledger.M.t ->
  init:'accum ->
  f:( Addr.t -> 'accum -> Mina_base.Account.t -> 'accum ) ->
  'accumfold over accounts in the ledger, passing the Merkle address
val foldi_with_ignored_accounts : 
  Any_ledger.M.t ->
  Mina_base.Account_id.Set.t ->
  init:'accum ->
  f:( Addr.t -> 'accum -> Mina_base.Account.t -> 'accum ) ->
  'accumthe set of account_ids are ledger elements to skip during the fold, because they're in a mask
val fold_until : 
  Any_ledger.M.t ->
  init:'accum ->
  f:
    ( 'accum ->
      Mina_base.Account.t ->
      ( 'accum, 'stop ) Base.Continue_or_stop.t ) ->
  finish:( 'accum -> 'stop ) ->
  'stopfold over accounts until stop condition reached when calling f; calls finish for result
val accounts : Any_ledger.M.t -> Mina_base.Account_id.Set.tset of account ids associated with accounts
val token_owner : 
  Any_ledger.M.t ->
  Mina_base.Token_id.t ->
  Mina_base.Account_id.t optionGet the account id that owns a token.
val token_owners : Any_ledger.M.t -> Mina_base.Account_id.Set.tGet the set of all accounts which own a token.
val tokens : 
  Any_ledger.M.t ->
  Signature_lib.Public_key.Compressed.t ->
  Mina_base.Token_id.Set.tGet all of the tokens for which a public key has accounts.
val location_of_account : 
  Any_ledger.M.t ->
  Mina_base.Account_id.t ->
  Location.t optionval location_of_account_batch : 
  Any_ledger.M.t ->
  Mina_base.Account_id.t list ->
  (Mina_base.Account_id.t * Location.t option) listval get_or_create_account : 
  Any_ledger.M.t ->
  Mina_base.Account_id.t ->
  Mina_base.Account.t ->
  ([ `Added | `Existed ] * Location.t) Core.Or_error.tThis may return an error if the ledger is full.
val close : Any_ledger.M.t -> unitthe ledger should not be used after calling close
val last_filled : Any_ledger.M.t -> Location.t optionfor account locations in the ledger, the last (rightmost) filled location
val get_uuid : Any_ledger.M.t -> Uuid.tval get_directory : Any_ledger.M.t -> string optionreturn Some directory for ledgers that use a file system, else None
val get : Any_ledger.M.t -> Location.t -> Mina_base.Account.t optionval get_batch : 
  Any_ledger.M.t ->
  Location.t list ->
  (Location.t * Mina_base.Account.t option) listval set : Any_ledger.M.t -> Location.t -> Mina_base.Account.t -> unitval set_batch : 
  Any_ledger.M.t ->
  (Location.t * Mina_base.Account.t) list ->
  unitval get_at_index_exn : Any_ledger.M.t -> int -> Mina_base.Account.tval set_at_index_exn : Any_ledger.M.t -> int -> Mina_base.Account.t -> unitval index_of_account_exn : Any_ledger.M.t -> Mina_base.Account_id.t -> intval merkle_root : Any_ledger.M.t -> Mina_base.Ledger_hash.tmeant to be a fast operation: the root hash is stored, rather than calculated dynamically
val merkle_path : Any_ledger.M.t -> Location.t -> Path.tval merkle_path_at_index_exn : Any_ledger.M.t -> int -> Path.tval remove_accounts_exn : Any_ledger.M.t -> Mina_base.Account_id.t list -> unitval detached_signal : Any_ledger.M.t -> unit Async_kernel.Deferred.tTriggers when the ledger has been detached and should no longer be accessed.
val register_mask : Any_ledger.M.t -> Mask.t -> Mask.Attached.tval unregister_mask_exn : 
  ?grandchildren:
    [ `Check | `Recursive | `I_promise_I_am_reparenting_this_mask ] ->
  loc:string ->
  Mask.Attached.t ->
  Mask.traises an exception if mask is not registered
val remove_and_reparent_exn : Any_ledger.M.t -> Mask.Attached.t -> unit* o * / * / * o --- o - * ^ ^ \ * parent | \ * mask o * children * * Removes the attached mask from its parent and attaches the children to the * parent instead. Raises an exception if the merkle roots of the mask and the * parent are not the same.
module Debug : sig ... end