// Copyright 2019 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.

// TODO(scottmg): This library is temporarily "zz" instead of "zx" because a
// "zx" is force-injected by fidlc. Eventually, we'll stop that and use this one
// instead as "zx". fxb/39732.
library zz;

using status = int32;

using time = int64;
using duration = int64;
using ticks = uint64;

using koid = uint64;

using vaddr = uint64;
using paddr = uint64;
using paddr32 = uint32;
using gpaddr = uint64;
using off = uint64;

// TODO(scottmg): Not sure what this is.
using procarg = uint32;

const uint64 CHANNEL_MAX_MSG_BYTES = 65536;
const uint64 CHANNEL_MAX_MSG_HANDLES = 64;

// TODO(scottmg): == size_t, not sure if this is a good idea.
using usize = uint64;

// TODO(scottmg): == uintptr_t, not sure if this is a good idea.
using uintptr = uint64;

// TODO(scottmg): Maybe a void for vector<void> (or vector<any>?) to distinguish
// polymorphic arguments that are passed as void* from buffers of bytes.

using signals = uint32;
// TODO(scottmg): Lots of aliases/variations required here. Not sure if bits
// make sense.
