// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

include "src/ledger/bin/storage/impl/object_identifier.fbs";

namespace storage;

enum KeyPriorityStorage : byte { EAGER = 0, LAZY = 1 }

table EntryStorage {
  key: [ubyte];
  object_id: ObjectIdentifierStorage;
  priority: KeyPriorityStorage;
}

table ChildStorage {
  index:  ushort (key);
  object_id: ObjectIdentifierStorage;
}

table TreeNodeStorage {
  entries: [EntryStorage];
  children: [ChildStorage];
  level: ubyte;
}

root_type TreeNodeStorage;
