// WARNING: This file is machine generated by fidlc.

#pragma once

#include <stdalign.h>
#include <stdbool.h>
#include <stdint.h>
#include <zircon/fidl.h>
#include <zircon/syscalls/object.h>
#include <zircon/types.h>

#if defined(__cplusplus)
extern "C" {
#endif


// Forward declarations

typedef uint32_t fuchsia_io_SeekOrigin;
#define fuchsia_io_SeekOrigin_Start UINT32_C(0)
#define fuchsia_io_SeekOrigin_Current UINT32_C(1)
#define fuchsia_io_SeekOrigin_End UINT32_C(2)

#define fuchsia_io_FileReadOrdinal ((uint32_t)2181038081)
typedef struct fuchsia_io_FileReadRequest fuchsia_io_FileReadRequest;
typedef struct fuchsia_io_FileReadResponse fuchsia_io_FileReadResponse;
#define fuchsia_io_FileReadAtOrdinal ((uint32_t)2181038082)
typedef struct fuchsia_io_FileReadAtRequest fuchsia_io_FileReadAtRequest;
typedef struct fuchsia_io_FileReadAtResponse fuchsia_io_FileReadAtResponse;
#define fuchsia_io_FileWriteOrdinal ((uint32_t)2181038083)
typedef struct fuchsia_io_FileWriteRequest fuchsia_io_FileWriteRequest;
typedef struct fuchsia_io_FileWriteResponse fuchsia_io_FileWriteResponse;
#define fuchsia_io_FileWriteAtOrdinal ((uint32_t)2181038084)
typedef struct fuchsia_io_FileWriteAtRequest fuchsia_io_FileWriteAtRequest;
typedef struct fuchsia_io_FileWriteAtResponse fuchsia_io_FileWriteAtResponse;
#define fuchsia_io_FileSeekOrdinal ((uint32_t)2181038085)
typedef struct fuchsia_io_FileSeekRequest fuchsia_io_FileSeekRequest;
typedef struct fuchsia_io_FileSeekResponse fuchsia_io_FileSeekResponse;
#define fuchsia_io_FileTruncateOrdinal ((uint32_t)2181038086)
typedef struct fuchsia_io_FileTruncateRequest fuchsia_io_FileTruncateRequest;
typedef struct fuchsia_io_FileTruncateResponse fuchsia_io_FileTruncateResponse;
#define fuchsia_io_FileGetFlagsOrdinal ((uint32_t)2181038087)
typedef struct fuchsia_io_FileGetFlagsRequest fuchsia_io_FileGetFlagsRequest;
typedef struct fuchsia_io_FileGetFlagsResponse fuchsia_io_FileGetFlagsResponse;
#define fuchsia_io_FileSetFlagsOrdinal ((uint32_t)2181038088)
typedef struct fuchsia_io_FileSetFlagsRequest fuchsia_io_FileSetFlagsRequest;
typedef struct fuchsia_io_FileSetFlagsResponse fuchsia_io_FileSetFlagsResponse;
#define fuchsia_io_FileGetVmoOrdinal ((uint32_t)2181038089)
typedef struct fuchsia_io_FileGetVmoRequest fuchsia_io_FileGetVmoRequest;
typedef struct fuchsia_io_FileGetVmoResponse fuchsia_io_FileGetVmoResponse;
#define fuchsia_io_FileGetVmoAtOrdinal ((uint32_t)2181038090)
typedef struct fuchsia_io_FileGetVmoAtRequest fuchsia_io_FileGetVmoAtRequest;
typedef struct fuchsia_io_FileGetVmoAtResponse fuchsia_io_FileGetVmoAtResponse;
typedef struct fuchsia_io_DirectoryObject fuchsia_io_DirectoryObject;
typedef struct fuchsia_io_Service fuchsia_io_Service;
typedef struct fuchsia_io_Pipe fuchsia_io_Pipe;
#define fuchsia_io_DirectoryOpenOrdinal ((uint32_t)2197815297)
typedef struct fuchsia_io_DirectoryOpenRequest fuchsia_io_DirectoryOpenRequest;
#define fuchsia_io_DirectoryUnlinkOrdinal ((uint32_t)2197815298)
typedef struct fuchsia_io_DirectoryUnlinkRequest fuchsia_io_DirectoryUnlinkRequest;
typedef struct fuchsia_io_DirectoryUnlinkResponse fuchsia_io_DirectoryUnlinkResponse;
#define fuchsia_io_DirectoryReadDirentsOrdinal ((uint32_t)2197815299)
typedef struct fuchsia_io_DirectoryReadDirentsRequest fuchsia_io_DirectoryReadDirentsRequest;
typedef struct fuchsia_io_DirectoryReadDirentsResponse fuchsia_io_DirectoryReadDirentsResponse;
#define fuchsia_io_DirectoryRewindOrdinal ((uint32_t)2197815300)
typedef struct fuchsia_io_DirectoryRewindRequest fuchsia_io_DirectoryRewindRequest;
typedef struct fuchsia_io_DirectoryRewindResponse fuchsia_io_DirectoryRewindResponse;
#define fuchsia_io_DirectoryGetTokenOrdinal ((uint32_t)2197815301)
typedef struct fuchsia_io_DirectoryGetTokenRequest fuchsia_io_DirectoryGetTokenRequest;
typedef struct fuchsia_io_DirectoryGetTokenResponse fuchsia_io_DirectoryGetTokenResponse;
#define fuchsia_io_DirectoryRenameOrdinal ((uint32_t)2197815302)
typedef struct fuchsia_io_DirectoryRenameRequest fuchsia_io_DirectoryRenameRequest;
typedef struct fuchsia_io_DirectoryRenameResponse fuchsia_io_DirectoryRenameResponse;
#define fuchsia_io_DirectoryLinkOrdinal ((uint32_t)2197815303)
typedef struct fuchsia_io_DirectoryLinkRequest fuchsia_io_DirectoryLinkRequest;
typedef struct fuchsia_io_DirectoryLinkResponse fuchsia_io_DirectoryLinkResponse;
typedef struct fuchsia_io_Vmofile fuchsia_io_Vmofile;
typedef struct fuchsia_io_NodeAttributes fuchsia_io_NodeAttributes;
#define fuchsia_io_NodeSyncOrdinal ((uint32_t)2164260865)
typedef struct fuchsia_io_NodeSyncRequest fuchsia_io_NodeSyncRequest;
typedef struct fuchsia_io_NodeSyncResponse fuchsia_io_NodeSyncResponse;
#define fuchsia_io_NodeGetAttrOrdinal ((uint32_t)2164260866)
typedef struct fuchsia_io_NodeGetAttrRequest fuchsia_io_NodeGetAttrRequest;
typedef struct fuchsia_io_NodeGetAttrResponse fuchsia_io_NodeGetAttrResponse;
#define fuchsia_io_NodeSetAttrOrdinal ((uint32_t)2164260867)
typedef struct fuchsia_io_NodeSetAttrRequest fuchsia_io_NodeSetAttrRequest;
typedef struct fuchsia_io_NodeSetAttrResponse fuchsia_io_NodeSetAttrResponse;
#define fuchsia_io_NodeIoctlOrdinal ((uint32_t)2164260868)
typedef struct fuchsia_io_NodeIoctlRequest fuchsia_io_NodeIoctlRequest;
typedef struct fuchsia_io_NodeIoctlResponse fuchsia_io_NodeIoctlResponse;
typedef struct fuchsia_io_Device fuchsia_io_Device;
typedef struct fuchsia_io_FileObject fuchsia_io_FileObject;
typedef struct fuchsia_io_ObjectInfo fuchsia_io_ObjectInfo;
#define fuchsia_io_ObjectCloneOrdinal ((uint32_t)2147483649)
typedef struct fuchsia_io_ObjectCloneRequest fuchsia_io_ObjectCloneRequest;
#define fuchsia_io_ObjectCloseOrdinal ((uint32_t)2147483650)
typedef struct fuchsia_io_ObjectCloseRequest fuchsia_io_ObjectCloseRequest;
typedef struct fuchsia_io_ObjectCloseResponse fuchsia_io_ObjectCloseResponse;
#define fuchsia_io_ObjectListInterfacesOrdinal ((uint32_t)2147483652)
typedef struct fuchsia_io_ObjectListInterfacesRequest fuchsia_io_ObjectListInterfacesRequest;
typedef struct fuchsia_io_ObjectListInterfacesResponse fuchsia_io_ObjectListInterfacesResponse;
#define fuchsia_io_ObjectBindOrdinal ((uint32_t)2147483653)
typedef struct fuchsia_io_ObjectBindRequest fuchsia_io_ObjectBindRequest;
#define fuchsia_io_ObjectDescribeOrdinal ((uint32_t)2147483654)
typedef struct fuchsia_io_ObjectDescribeRequest fuchsia_io_ObjectDescribeRequest;
typedef struct fuchsia_io_ObjectDescribeResponse fuchsia_io_ObjectDescribeResponse;
#define fuchsia_io_ObjectOnOpenOrdinal ((uint32_t)2147483655)
typedef struct fuchsia_io_ObjectOnOpenEvent fuchsia_io_ObjectOnOpenEvent;

// Extern declarations

extern const fidl_type_t fuchsia_io_FileReadRequestTable;
extern const fidl_type_t fuchsia_io_FileReadResponseTable;
extern const fidl_type_t fuchsia_io_FileReadAtRequestTable;
extern const fidl_type_t fuchsia_io_FileReadAtResponseTable;
extern const fidl_type_t fuchsia_io_FileWriteRequestTable;
extern const fidl_type_t fuchsia_io_FileWriteResponseTable;
extern const fidl_type_t fuchsia_io_FileWriteAtRequestTable;
extern const fidl_type_t fuchsia_io_FileWriteAtResponseTable;
extern const fidl_type_t fuchsia_io_FileSeekRequestTable;
extern const fidl_type_t fuchsia_io_FileSeekResponseTable;
extern const fidl_type_t fuchsia_io_FileTruncateRequestTable;
extern const fidl_type_t fuchsia_io_FileTruncateResponseTable;
extern const fidl_type_t fuchsia_io_FileGetFlagsRequestTable;
extern const fidl_type_t fuchsia_io_FileGetFlagsResponseTable;
extern const fidl_type_t fuchsia_io_FileSetFlagsRequestTable;
extern const fidl_type_t fuchsia_io_FileSetFlagsResponseTable;
extern const fidl_type_t fuchsia_io_FileGetVmoRequestTable;
extern const fidl_type_t fuchsia_io_FileGetVmoResponseTable;
extern const fidl_type_t fuchsia_io_FileGetVmoAtRequestTable;
extern const fidl_type_t fuchsia_io_FileGetVmoAtResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryOpenRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryUnlinkRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryUnlinkResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryReadDirentsRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryReadDirentsResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryRewindRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryRewindResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryGetTokenRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryGetTokenResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryRenameRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryRenameResponseTable;
extern const fidl_type_t fuchsia_io_DirectoryLinkRequestTable;
extern const fidl_type_t fuchsia_io_DirectoryLinkResponseTable;
extern const fidl_type_t fuchsia_io_NodeSyncRequestTable;
extern const fidl_type_t fuchsia_io_NodeSyncResponseTable;
extern const fidl_type_t fuchsia_io_NodeGetAttrRequestTable;
extern const fidl_type_t fuchsia_io_NodeGetAttrResponseTable;
extern const fidl_type_t fuchsia_io_NodeSetAttrRequestTable;
extern const fidl_type_t fuchsia_io_NodeSetAttrResponseTable;
extern const fidl_type_t fuchsia_io_NodeIoctlRequestTable;
extern const fidl_type_t fuchsia_io_NodeIoctlResponseTable;
extern const fidl_type_t fuchsia_io_ObjectCloneRequestTable;
extern const fidl_type_t fuchsia_io_ObjectCloseRequestTable;
extern const fidl_type_t fuchsia_io_ObjectCloseResponseTable;
extern const fidl_type_t fuchsia_io_ObjectListInterfacesRequestTable;
extern const fidl_type_t fuchsia_io_ObjectListInterfacesResponseTable;
extern const fidl_type_t fuchsia_io_ObjectBindRequestTable;
extern const fidl_type_t fuchsia_io_ObjectDescribeRequestTable;
extern const fidl_type_t fuchsia_io_ObjectDescribeResponseTable;
extern const fidl_type_t fuchsia_io_ObjectOnOpenEventTable;

// Declarations
















struct fuchsia_io_FileReadRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint64_t count;
};

struct fuchsia_io_FileReadResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fidl_vector_t data;
};

struct fuchsia_io_FileReadAtRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint64_t count;
    uint64_t offset;
};

struct fuchsia_io_FileReadAtResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fidl_vector_t data;
};

struct fuchsia_io_FileWriteRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_vector_t data;
};

struct fuchsia_io_FileWriteResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    uint64_t actual;
};

struct fuchsia_io_FileWriteAtRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_vector_t data;
    uint64_t offset;
};

struct fuchsia_io_FileWriteAtResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    uint64_t actual;
};

struct fuchsia_io_FileSeekRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    int64_t offset;
    fuchsia_io_SeekOrigin start;
};

struct fuchsia_io_FileSeekResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    uint64_t offset;
};

struct fuchsia_io_FileTruncateRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint64_t length;
};

struct fuchsia_io_FileTruncateResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_FileGetFlagsRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_FileGetFlagsResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    uint32_t flags;
};

struct fuchsia_io_FileSetFlagsRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
};

struct fuchsia_io_FileSetFlagsResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_FileGetVmoRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
};

struct fuchsia_io_FileGetVmoResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    zx_handle_t vmo;
};

struct fuchsia_io_FileGetVmoAtRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
    uint64_t offset;
    uint64_t length;
};

struct fuchsia_io_FileGetVmoAtResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    zx_handle_t vmo;
};



















struct fuchsia_io_DirectoryObject {
    FIDL_ALIGNDECL
    uint8_t reserved;
};

struct fuchsia_io_Service {
    FIDL_ALIGNDECL
    uint8_t reserved;
};

struct fuchsia_io_Pipe {
    FIDL_ALIGNDECL
    zx_handle_t socket;
};

struct fuchsia_io_DirectoryOpenRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
    uint32_t mode;
    fidl_string_t path;
    zx_handle_t object;
};

struct fuchsia_io_DirectoryUnlinkRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_string_t path;
};

struct fuchsia_io_DirectoryUnlinkResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_DirectoryReadDirentsRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint64_t max_out;
};

struct fuchsia_io_DirectoryReadDirentsResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fidl_vector_t dirents;
};

struct fuchsia_io_DirectoryRewindRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_DirectoryRewindResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_DirectoryGetTokenRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_DirectoryGetTokenResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    zx_handle_t token;
};

struct fuchsia_io_DirectoryRenameRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_string_t src;
    zx_handle_t dst_parent_token;
    fidl_string_t dst;
};

struct fuchsia_io_DirectoryRenameResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_DirectoryLinkRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_string_t src;
    zx_handle_t dst_parent_token;
    fidl_string_t dst;
};

struct fuchsia_io_DirectoryLinkResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_Vmofile {
    FIDL_ALIGNDECL
    zx_handle_t vmo;
    uint64_t offset;
    uint64_t length;
};

struct fuchsia_io_NodeAttributes {
    FIDL_ALIGNDECL
    uint32_t mode;
    uint64_t id;
    uint64_t content_size;
    uint64_t storage_size;
    uint64_t link_count;
    uint64_t creation_time;
    uint64_t modification_time;
};

struct fuchsia_io_NodeSyncRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_NodeSyncResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_NodeGetAttrRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_NodeGetAttrResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fuchsia_io_NodeAttributes attributes;
};

struct fuchsia_io_NodeSetAttrRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
    fuchsia_io_NodeAttributes attributes;
};

struct fuchsia_io_NodeSetAttrResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_NodeIoctlRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t opcode;
    uint64_t max_out;
    fidl_vector_t handles;
    fidl_vector_t in;
};

struct fuchsia_io_NodeIoctlResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fidl_vector_t handles;
    fidl_vector_t out;
};

struct fuchsia_io_Device {
    FIDL_ALIGNDECL
    zx_handle_t event;
};

struct fuchsia_io_FileObject {
    FIDL_ALIGNDECL
    zx_handle_t event;
};

struct fuchsia_io_ObjectInfo {
    FIDL_ALIGNDECL
    fidl_union_tag_t tag;
    union {
        fuchsia_io_Service service;
        fuchsia_io_FileObject file;
        fuchsia_io_DirectoryObject directory;
        fuchsia_io_Pipe pipe;
        fuchsia_io_Vmofile vmofile;
        fuchsia_io_Device device;
    };
};
#define fuchsia_io_ObjectInfoTagservice UINT32_C(0)
#define fuchsia_io_ObjectInfoTagfile UINT32_C(1)
#define fuchsia_io_ObjectInfoTagdirectory UINT32_C(2)
#define fuchsia_io_ObjectInfoTagpipe UINT32_C(3)
#define fuchsia_io_ObjectInfoTagvmofile UINT32_C(4)
#define fuchsia_io_ObjectInfoTagdevice UINT32_C(5)

struct fuchsia_io_ObjectCloneRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    uint32_t flags;
    zx_handle_t object;
};

struct fuchsia_io_ObjectCloseRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_ObjectCloseResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
};

struct fuchsia_io_ObjectListInterfacesRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_ObjectListInterfacesResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_vector_t interfaces;
};

struct fuchsia_io_ObjectBindRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fidl_string_t iface;
};

struct fuchsia_io_ObjectDescribeRequest {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
};

struct fuchsia_io_ObjectDescribeResponse {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    fuchsia_io_ObjectInfo info;
};

struct fuchsia_io_ObjectOnOpenEvent {
    FIDL_ALIGNDECL
    fidl_message_header_t hdr;
    zx_status_t s;
    fuchsia_io_ObjectInfo* info;
};

#if defined(__cplusplus)
}
#endif
