/* automatically generated by rust-bindgen 0.72.1 */

#![no_std]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

pub const NNG_OPT_SOCKNAME: &[u8] = b"socket-name\0";
pub const NNG_OPT_RAW: &[u8] = b"raw\0";
pub const NNG_OPT_PROTO: &[u8] = b"protocol\0";
pub const NNG_OPT_PROTONAME: &[u8] = b"protocol-name\0";
pub const NNG_OPT_PEER: &[u8] = b"peer\0";
pub const NNG_OPT_PEERNAME: &[u8] = b"peer-name\0";
pub const NNG_OPT_RECVBUF: &[u8] = b"recv-buffer\0";
pub const NNG_OPT_SENDBUF: &[u8] = b"send-buffer\0";
pub const NNG_OPT_RECVFD: &[u8] = b"recv-fd\0";
pub const NNG_OPT_SENDFD: &[u8] = b"send-fd\0";
pub const NNG_OPT_RECVTIMEO: &[u8] = b"recv-timeout\0";
pub const NNG_OPT_SENDTIMEO: &[u8] = b"send-timeout\0";
pub const NNG_OPT_LOCADDR: &[u8] = b"local-address\0";
pub const NNG_OPT_REMADDR: &[u8] = b"remote-address\0";
pub const NNG_OPT_URL: &[u8] = b"url\0";
pub const NNG_OPT_MAXTTL: &[u8] = b"ttl-max\0";
pub const NNG_OPT_RECVMAXSZ: &[u8] = b"recv-size-max\0";
pub const NNG_OPT_RECONNMINT: &[u8] = b"reconnect-time-min\0";
pub const NNG_OPT_RECONNMAXT: &[u8] = b"reconnect-time-max\0";
pub const NNG_OPT_PEER_GID: &[u8] = b"ipc:peer-gid\0";
pub const NNG_OPT_PEER_PID: &[u8] = b"ipc:peer-pid\0";
pub const NNG_OPT_PEER_UID: &[u8] = b"ipc:peer-uid\0";
pub const NNG_OPT_PEER_ZONEID: &[u8] = b"ipc:peer-zoneid\0";

pub const NNG_OPT_SUB_SUBSCRIBE: &[u8] = b"sub:subscribe\0";
pub const NNG_OPT_SUB_UNSUBSCRIBE: &[u8] = b"sub:unsubscribe\0";
pub const NNG_OPT_SUB_PREFNEW: &[u8] = b"sub:prefnew\0";

pub const NNG_OPT_PAIR1_POLY: &[u8] = b"pair1:polyamorous\0";

pub const NNG_OPT_REQ_RESENDTIME: &[u8] = b"req:resend-time\0";
pub const NNG_OPT_REQ_RESENDTICK: &[u8] = b"req:resend-tick\0";

pub const NNG_OPT_SURVEYOR_SURVEYTIME: &[u8] = b"surveyor:survey-time\0";

pub const NNG_OPT_TLS_AUTH_MODE: &[u8] = b"tls-authmode\0";
pub const NNG_OPT_TLS_CA_FILE: &[u8] = b"tls-ca-file\0";
pub const NNG_OPT_TLS_CERT_KEY_FILE: &[u8] = b"tls-cert-key-file\0";
pub const NNG_OPT_TLS_CONFIG: &[u8] = b"tls-config\0";
pub const NNG_OPT_TLS_SERVER_NAME: &[u8] = b"tls-server-name\0";
pub const NNG_OPT_TLS_VERIFIED: &[u8] = b"tls-verified\0";
pub const NNG_OPT_TLS_PEER_CN: &[u8] = b"tls-peer-cn\0";
pub const NNG_OPT_TLS_PEER_ALT_NAMES: &[u8] = b"tls-peer-alt-names\0";

pub const NNG_FLAG_ALLOC: core::ffi::c_int = 1;
pub const NNG_FLAG_NONBLOCK: core::ffi::c_int = 2;

pub type nng_ctx = nng_ctx_s;
pub type nng_dialer = nng_dialer_s;
pub type nng_listener = nng_listener_s;
pub type nng_pipe = nng_pipe_s;
pub type nng_socket = nng_socket_s;
pub type nng_duration = i32;
pub type nng_time = u64;
pub type nng_sockaddr_ipc = nng_sockaddr_path;
pub type nng_pipe_cb = ::core::option::Option<
    unsafe extern "C" fn(arg1: nng_pipe, arg2: nng_pipe_ev::Type, arg3: *mut core::ffi::c_void),
>;
pub type nng_aio_cancelfn = ::core::option::Option<
    unsafe extern "C" fn(arg1: *mut nng_aio, arg2: *mut core::ffi::c_void, arg3: core::ffi::c_int),
>;
pub type nng_init_parameter = core::ffi::c_int;
pub type nng_logger = ::core::option::Option<
    unsafe extern "C" fn(
        level: nng_log_level::Type,
        facility: nng_log_facility::Type,
        msgid: *const core::ffi::c_char,
        msg: *const core::ffi::c_char,
    ),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_ctx_s {
    pub id: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_dialer_s {
    pub id: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_listener_s {
    pub id: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_pipe_s {
    pub id: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_socket_s {
    pub id: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_msg {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_stat {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_aio {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_inproc {
    pub sa_family: u16,
    pub sa_name: [core::ffi::c_char; 128usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_path {
    pub sa_family: u16,
    pub sa_path: [core::ffi::c_char; 128usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_in6 {
    pub sa_family: u16,
    pub sa_port: u16,
    pub sa_addr: [u8; 16usize],
    pub sa_scope: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_in {
    pub sa_family: u16,
    pub sa_port: u16,
    pub sa_addr: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_zt {
    pub sa_family: u16,
    pub sa_nwid: u64,
    pub sa_nodeid: u64,
    pub sa_port: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_abstract {
    pub sa_family: u16,
    pub sa_len: u16,
    pub sa_name: [u8; 107usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_sockaddr_storage {
    pub sa_family: u16,
    pub sa_pad: [u64; 16usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_iov {
    pub iov_buf: *mut core::ffi::c_void,
    pub iov_len: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_url {
    pub u_rawurl: *mut core::ffi::c_char,
    pub u_scheme: *mut core::ffi::c_char,
    pub u_userinfo: *mut core::ffi::c_char,
    pub u_host: *mut core::ffi::c_char,
    pub u_hostname: *mut core::ffi::c_char,
    pub u_port: *mut core::ffi::c_char,
    pub u_path: *mut core::ffi::c_char,
    pub u_query: *mut core::ffi::c_char,
    pub u_fragment: *mut core::ffi::c_char,
    pub u_requri: *mut core::ffi::c_char,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_stream {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_stream_dialer {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_stream_listener {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_udp {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_thread {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_mtx {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_cv {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_tls_config {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_req {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_res {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_conn {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_handler {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_server {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct nng_http_client {
    _unused: [u8; 0],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union nng_sockaddr {
    pub s_family: u16,
    pub s_ipc: nng_sockaddr_ipc,
    pub s_inproc: nng_sockaddr_inproc,
    pub s_in6: nng_sockaddr_in6,
    pub s_in: nng_sockaddr_in,
    pub s_zt: nng_sockaddr_zt,
    pub s_abstract: nng_sockaddr_abstract,
    pub s_storage: nng_sockaddr_storage,
}
pub mod nng_sockaddr_family {
    pub type Type = core::ffi::c_int;
    pub const NNG_AF_UNSPEC: Type = 0;
    pub const NNG_AF_INPROC: Type = 1;
    pub const NNG_AF_IPC: Type = 2;
    pub const NNG_AF_INET: Type = 3;
    pub const NNG_AF_INET6: Type = 4;
    pub const NNG_AF_ZT: Type = 5;
    pub const NNG_AF_ABSTRACT: Type = 6;
}
pub mod nng_pipe_ev {
    pub type Type = core::ffi::c_int;
    pub const NNG_PIPE_EV_ADD_PRE: Type = 0;
    pub const NNG_PIPE_EV_ADD_POST: Type = 1;
    pub const NNG_PIPE_EV_REM_POST: Type = 2;
    pub const NNG_PIPE_EV_NUM: Type = 3;
}
pub mod nng_stat_type_enum {
    pub type Type = core::ffi::c_int;
    pub const NNG_STAT_SCOPE: Type = 0;
    pub const NNG_STAT_LEVEL: Type = 1;
    pub const NNG_STAT_COUNTER: Type = 2;
    pub const NNG_STAT_STRING: Type = 3;
    pub const NNG_STAT_BOOLEAN: Type = 4;
    pub const NNG_STAT_ID: Type = 5;
}
pub mod nng_unit_enum {
    pub type Type = core::ffi::c_int;
    pub const NNG_UNIT_NONE: Type = 0;
    pub const NNG_UNIT_BYTES: Type = 1;
    pub const NNG_UNIT_MESSAGES: Type = 2;
    pub const NNG_UNIT_MILLIS: Type = 3;
    pub const NNG_UNIT_EVENTS: Type = 4;
}
pub mod nng_errno_enum {
    pub type Type = core::ffi::c_int;
    pub const NNG_EINTR: Type = 1;
    pub const NNG_ENOMEM: Type = 2;
    pub const NNG_EINVAL: Type = 3;
    pub const NNG_EBUSY: Type = 4;
    pub const NNG_ETIMEDOUT: Type = 5;
    pub const NNG_ECONNREFUSED: Type = 6;
    pub const NNG_ECLOSED: Type = 7;
    pub const NNG_EAGAIN: Type = 8;
    pub const NNG_ENOTSUP: Type = 9;
    pub const NNG_EADDRINUSE: Type = 10;
    pub const NNG_ESTATE: Type = 11;
    pub const NNG_ENOENT: Type = 12;
    pub const NNG_EPROTO: Type = 13;
    pub const NNG_EUNREACHABLE: Type = 14;
    pub const NNG_EADDRINVAL: Type = 15;
    pub const NNG_EPERM: Type = 16;
    pub const NNG_EMSGSIZE: Type = 17;
    pub const NNG_ECONNABORTED: Type = 18;
    pub const NNG_ECONNRESET: Type = 19;
    pub const NNG_ECANCELED: Type = 20;
    pub const NNG_ENOFILES: Type = 21;
    pub const NNG_ENOSPC: Type = 22;
    pub const NNG_EEXIST: Type = 23;
    pub const NNG_EREADONLY: Type = 24;
    pub const NNG_EWRITEONLY: Type = 25;
    pub const NNG_ECRYPTO: Type = 26;
    pub const NNG_EPEERAUTH: Type = 27;
    pub const NNG_ENOARG: Type = 28;
    pub const NNG_EAMBIGUOUS: Type = 29;
    pub const NNG_EBADTYPE: Type = 30;
    pub const NNG_ECONNSHUT: Type = 31;
    pub const NNG_EINTERNAL: Type = 1000;
    pub const NNG_ESYSERR: Type = 268435456;
    pub const NNG_ETRANERR: Type = 536870912;
}
pub mod nng_log_level {
    pub type Type = core::ffi::c_int;
    pub const NNG_LOG_NONE: Type = 0;
    pub const NNG_LOG_ERR: Type = 3;
    pub const NNG_LOG_WARN: Type = 4;
    pub const NNG_LOG_NOTICE: Type = 5;
    pub const NNG_LOG_INFO: Type = 6;
    pub const NNG_LOG_DEBUG: Type = 7;
}
pub mod nng_log_facility {
    pub type Type = core::ffi::c_int;
    pub const NNG_LOG_USER: Type = 1;
    pub const NNG_LOG_DAEMON: Type = 3;
    pub const NNG_LOG_AUTH: Type = 10;
    pub const NNG_LOG_LOCAL0: Type = 16;
    pub const NNG_LOG_LOCAL1: Type = 17;
    pub const NNG_LOG_LOCAL2: Type = 18;
    pub const NNG_LOG_LOCAL3: Type = 19;
    pub const NNG_LOG_LOCAL4: Type = 20;
    pub const NNG_LOG_LOCAL5: Type = 21;
    pub const NNG_LOG_LOCAL6: Type = 22;
    pub const NNG_LOG_LOCAL7: Type = 23;
}
pub mod nng_http_status {
    pub type Type = core::ffi::c_int;
    pub const NNG_HTTP_STATUS_CONTINUE: Type = 100;
    pub const NNG_HTTP_STATUS_SWITCHING: Type = 101;
    pub const NNG_HTTP_STATUS_PROCESSING: Type = 102;
    pub const NNG_HTTP_STATUS_OK: Type = 200;
    pub const NNG_HTTP_STATUS_CREATED: Type = 201;
    pub const NNG_HTTP_STATUS_ACCEPTED: Type = 202;
    pub const NNG_HTTP_STATUS_NOT_AUTHORITATIVE: Type = 203;
    pub const NNG_HTTP_STATUS_NO_CONTENT: Type = 204;
    pub const NNG_HTTP_STATUS_RESET_CONTENT: Type = 205;
    pub const NNG_HTTP_STATUS_PARTIAL_CONTENT: Type = 206;
    pub const NNG_HTTP_STATUS_MULTI_STATUS: Type = 207;
    pub const NNG_HTTP_STATUS_ALREADY_REPORTED: Type = 208;
    pub const NNG_HTTP_STATUS_IM_USED: Type = 226;
    pub const NNG_HTTP_STATUS_MULTIPLE_CHOICES: Type = 300;
    pub const NNG_HTTP_STATUS_STATUS_MOVED_PERMANENTLY: Type = 301;
    pub const NNG_HTTP_STATUS_FOUND: Type = 302;
    pub const NNG_HTTP_STATUS_SEE_OTHER: Type = 303;
    pub const NNG_HTTP_STATUS_NOT_MODIFIED: Type = 304;
    pub const NNG_HTTP_STATUS_USE_PROXY: Type = 305;
    pub const NNG_HTTP_STATUS_TEMPORARY_REDIRECT: Type = 307;
    pub const NNG_HTTP_STATUS_PERMANENT_REDIRECT: Type = 308;
    pub const NNG_HTTP_STATUS_BAD_REQUEST: Type = 400;
    pub const NNG_HTTP_STATUS_UNAUTHORIZED: Type = 401;
    pub const NNG_HTTP_STATUS_PAYMENT_REQUIRED: Type = 402;
    pub const NNG_HTTP_STATUS_FORBIDDEN: Type = 403;
    pub const NNG_HTTP_STATUS_NOT_FOUND: Type = 404;
    pub const NNG_HTTP_STATUS_METHOD_NOT_ALLOWED: Type = 405;
    pub const NNG_HTTP_STATUS_NOT_ACCEPTABLE: Type = 406;
    pub const NNG_HTTP_STATUS_PROXY_AUTH_REQUIRED: Type = 407;
    pub const NNG_HTTP_STATUS_REQUEST_TIMEOUT: Type = 408;
    pub const NNG_HTTP_STATUS_CONFLICT: Type = 409;
    pub const NNG_HTTP_STATUS_GONE: Type = 410;
    pub const NNG_HTTP_STATUS_LENGTH_REQUIRED: Type = 411;
    pub const NNG_HTTP_STATUS_PRECONDITION_FAILED: Type = 412;
    pub const NNG_HTTP_STATUS_PAYLOAD_TOO_LARGE: Type = 413;
    pub const NNG_HTTP_STATUS_ENTITY_TOO_LONG: Type = 414;
    pub const NNG_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: Type = 415;
    pub const NNG_HTTP_STATUS_RANGE_NOT_SATISFIABLE: Type = 416;
    pub const NNG_HTTP_STATUS_EXPECTATION_FAILED: Type = 417;
    pub const NNG_HTTP_STATUS_TEAPOT: Type = 418;
    pub const NNG_HTTP_STATUS_UNPROCESSABLE_ENTITY: Type = 422;
    pub const NNG_HTTP_STATUS_LOCKED: Type = 423;
    pub const NNG_HTTP_STATUS_FAILED_DEPENDENCY: Type = 424;
    pub const NNG_HTTP_STATUS_UPGRADE_REQUIRED: Type = 426;
    pub const NNG_HTTP_STATUS_PRECONDITION_REQUIRED: Type = 428;
    pub const NNG_HTTP_STATUS_TOO_MANY_REQUESTS: Type = 429;
    pub const NNG_HTTP_STATUS_HEADERS_TOO_LARGE: Type = 431;
    pub const NNG_HTTP_STATUS_UNAVAIL_LEGAL_REASONS: Type = 451;
    pub const NNG_HTTP_STATUS_INTERNAL_SERVER_ERROR: Type = 500;
    pub const NNG_HTTP_STATUS_NOT_IMPLEMENTED: Type = 501;
    pub const NNG_HTTP_STATUS_BAD_GATEWAY: Type = 502;
    pub const NNG_HTTP_STATUS_SERVICE_UNAVAILABLE: Type = 503;
    pub const NNG_HTTP_STATUS_GATEWAY_TIMEOUT: Type = 504;
    pub const NNG_HTTP_STATUS_HTTP_VERSION_NOT_SUPP: Type = 505;
    pub const NNG_HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: Type = 506;
    pub const NNG_HTTP_STATUS_INSUFFICIENT_STORAGE: Type = 507;
    pub const NNG_HTTP_STATUS_LOOP_DETECTED: Type = 508;
    pub const NNG_HTTP_STATUS_NOT_EXTENDED: Type = 510;
    pub const NNG_HTTP_STATUS_NETWORK_AUTH_REQUIRED: Type = 511;
}
pub mod nng_tls_mode {
    pub type Type = core::ffi::c_int;
    pub const NNG_TLS_MODE_CLIENT: Type = 0;
    pub const NNG_TLS_MODE_SERVER: Type = 1;
}
pub mod nng_tls_auth_mode {
    pub type Type = core::ffi::c_int;
    pub const NNG_TLS_AUTH_MODE_NONE: Type = 0;
    pub const NNG_TLS_AUTH_MODE_OPTIONAL: Type = 1;
    pub const NNG_TLS_AUTH_MODE_REQUIRED: Type = 2;
}
pub mod nng_tls_version {
    pub type Type = core::ffi::c_int;
    pub const NNG_TLS_1_0: Type = 769;
    pub const NNG_TLS_1_1: Type = 770;
    pub const NNG_TLS_1_2: Type = 771;
    pub const NNG_TLS_1_3: Type = 772;
}
unsafe extern "C" {
    pub fn nng_fini();
    pub fn nng_close(arg1: nng_socket) -> core::ffi::c_int;
    pub fn nng_socket_close(arg1: nng_socket) -> core::ffi::c_int;
    pub fn nng_socket_id(arg1: nng_socket) -> core::ffi::c_int;
    pub fn nng_socket_set(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_bool(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_int(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_size(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_uint64(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_string(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_ptr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_ms(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_socket_set_addr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_bool(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_int(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_size(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_uint64(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_string(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_ptr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_ms(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_socket_get_addr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_socket_proto_id(id: nng_socket, arg1: *mut u16) -> core::ffi::c_int;
    pub fn nng_socket_peer_id(id: nng_socket, arg1: *mut u16) -> core::ffi::c_int;
    pub fn nng_socket_proto_name(
        id: nng_socket,
        arg1: *mut *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_socket_peer_name(
        id: nng_socket,
        arg1: *mut *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_socket_raw(arg1: nng_socket, arg2: *mut bool) -> core::ffi::c_int;
    pub fn nng_str_sockaddr(
        sa: *const nng_sockaddr,
        buf: *mut core::ffi::c_char,
        bufsz: usize,
    ) -> *const core::ffi::c_char;
    pub fn nng_pipe_notify(
        arg1: nng_socket,
        arg2: nng_pipe_ev::Type,
        arg3: nng_pipe_cb,
        arg4: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_listen(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_listener,
        arg4: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dial(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_dialer,
        arg4: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_create(
        arg1: *mut nng_dialer,
        arg2: nng_socket,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_listener_create(
        arg1: *mut nng_listener,
        arg2: nng_socket,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_start(arg1: nng_dialer, arg2: core::ffi::c_int) -> core::ffi::c_int;
    pub fn nng_listener_start(arg1: nng_listener, arg2: core::ffi::c_int) -> core::ffi::c_int;
    pub fn nng_dialer_close(arg1: nng_dialer) -> core::ffi::c_int;
    pub fn nng_listener_close(arg1: nng_listener) -> core::ffi::c_int;
    pub fn nng_dialer_id(arg1: nng_dialer) -> core::ffi::c_int;
    pub fn nng_listener_id(arg1: nng_listener) -> core::ffi::c_int;
    pub fn nng_dialer_set(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_bool(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_int(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_size(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_uint64(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_string(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_ptr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_ms(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_set_addr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_bool(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_int(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_size(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_uint64(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_string(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_ptr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_ms(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_get_addr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_bool(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_int(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_size(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_uint64(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_string(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_ptr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_ms(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_listener_set_addr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_bool(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_int(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_size(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_uint64(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_string(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_ptr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_ms(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_listener_get_addr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_strerror(arg1: core::ffi::c_int) -> *const core::ffi::c_char;
    pub fn nng_send(
        arg1: nng_socket,
        arg2: *mut core::ffi::c_void,
        arg3: usize,
        arg4: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_recv(
        arg1: nng_socket,
        arg2: *mut core::ffi::c_void,
        arg3: *mut usize,
        arg4: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_sendmsg(
        arg1: nng_socket,
        arg2: *mut nng_msg,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_recvmsg(
        arg1: nng_socket,
        arg2: *mut *mut nng_msg,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_sock_send(arg1: nng_socket, arg2: *mut nng_aio);
    pub fn nng_send_aio(arg1: nng_socket, arg2: *mut nng_aio);
    pub fn nng_sock_recv(arg1: nng_socket, arg2: *mut nng_aio);
    pub fn nng_recv_aio(arg1: nng_socket, arg2: *mut nng_aio);
    pub fn nng_ctx_open(arg1: *mut nng_ctx, arg2: nng_socket) -> core::ffi::c_int;
    pub fn nng_ctx_close(arg1: nng_ctx) -> core::ffi::c_int;
    pub fn nng_ctx_id(arg1: nng_ctx) -> core::ffi::c_int;
    pub fn nng_ctx_recv(arg1: nng_ctx, arg2: *mut nng_aio);
    pub fn nng_ctx_recvmsg(
        arg1: nng_ctx,
        arg2: *mut *mut nng_msg,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_send(arg1: nng_ctx, arg2: *mut nng_aio);
    pub fn nng_ctx_sendmsg(
        arg1: nng_ctx,
        arg2: *mut nng_msg,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_bool(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_int(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_size(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_uint64(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_string(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_ptr(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_ms(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_bool(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_int(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_size(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_uint64(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_string(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_ptr(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_ms(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_alloc(arg1: usize) -> *mut core::ffi::c_void;
    pub fn nng_free(arg1: *mut core::ffi::c_void, arg2: usize);
    pub fn nng_strdup(arg1: *const core::ffi::c_char) -> *mut core::ffi::c_char;
    pub fn nng_strfree(arg1: *mut core::ffi::c_char);
    pub fn nng_aio_alloc(
        arg1: *mut *mut nng_aio,
        arg2: ::core::option::Option<unsafe extern "C" fn(arg1: *mut core::ffi::c_void)>,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_aio_free(arg1: *mut nng_aio);
    pub fn nng_aio_reap(arg1: *mut nng_aio);
    pub fn nng_aio_stop(arg1: *mut nng_aio);
    pub fn nng_aio_result(arg1: *mut nng_aio) -> core::ffi::c_int;
    pub fn nng_aio_count(arg1: *mut nng_aio) -> usize;
    pub fn nng_aio_cancel(arg1: *mut nng_aio);
    pub fn nng_aio_abort(arg1: *mut nng_aio, arg2: core::ffi::c_int);
    pub fn nng_aio_wait(arg1: *mut nng_aio);
    pub fn nng_aio_busy(arg1: *mut nng_aio) -> bool;
    pub fn nng_aio_set_msg(arg1: *mut nng_aio, arg2: *mut nng_msg);
    pub fn nng_aio_get_msg(arg1: *mut nng_aio) -> *mut nng_msg;
    pub fn nng_aio_set_input(
        arg1: *mut nng_aio,
        arg2: core::ffi::c_uint,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_aio_get_input(arg1: *mut nng_aio, arg2: core::ffi::c_uint)
        -> *mut core::ffi::c_void;
    pub fn nng_aio_set_output(
        arg1: *mut nng_aio,
        arg2: core::ffi::c_uint,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_aio_get_output(
        arg1: *mut nng_aio,
        arg2: core::ffi::c_uint,
    ) -> *mut core::ffi::c_void;
    pub fn nng_aio_set_timeout(arg1: *mut nng_aio, arg2: nng_duration);
    pub fn nng_aio_set_expire(arg1: *mut nng_aio, arg2: nng_time);
    pub fn nng_aio_set_iov(
        arg1: *mut nng_aio,
        arg2: core::ffi::c_uint,
        arg3: *const nng_iov,
    ) -> core::ffi::c_int;
    pub fn nng_aio_begin(arg1: *mut nng_aio) -> bool;
    pub fn nng_aio_finish(arg1: *mut nng_aio, arg2: core::ffi::c_int);
    pub fn nng_aio_defer(arg1: *mut nng_aio, arg2: nng_aio_cancelfn, arg3: *mut core::ffi::c_void);
    pub fn nng_sleep_aio(arg1: nng_duration, arg2: *mut nng_aio);
    pub fn nng_msg_alloc(arg1: *mut *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_free(arg1: *mut nng_msg);
    pub fn nng_msg_realloc(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_reserve(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_capacity(arg1: *mut nng_msg) -> usize;
    pub fn nng_msg_header(arg1: *mut nng_msg) -> *mut core::ffi::c_void;
    pub fn nng_msg_header_len(arg1: *const nng_msg) -> usize;
    pub fn nng_msg_body(arg1: *mut nng_msg) -> *mut core::ffi::c_void;
    pub fn nng_msg_len(arg1: *const nng_msg) -> usize;
    pub fn nng_msg_append(
        arg1: *mut nng_msg,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_msg_insert(
        arg1: *mut nng_msg,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_msg_trim(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_chop(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_header_append(
        arg1: *mut nng_msg,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_msg_header_insert(
        arg1: *mut nng_msg,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_msg_header_trim(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_header_chop(arg1: *mut nng_msg, arg2: usize) -> core::ffi::c_int;
    pub fn nng_msg_header_append_u16(arg1: *mut nng_msg, arg2: u16) -> core::ffi::c_int;
    pub fn nng_msg_header_append_u32(arg1: *mut nng_msg, arg2: u32) -> core::ffi::c_int;
    pub fn nng_msg_header_append_u64(arg1: *mut nng_msg, arg2: u64) -> core::ffi::c_int;
    pub fn nng_msg_header_insert_u16(arg1: *mut nng_msg, arg2: u16) -> core::ffi::c_int;
    pub fn nng_msg_header_insert_u32(arg1: *mut nng_msg, arg2: u32) -> core::ffi::c_int;
    pub fn nng_msg_header_insert_u64(arg1: *mut nng_msg, arg2: u64) -> core::ffi::c_int;
    pub fn nng_msg_header_chop_u16(arg1: *mut nng_msg, arg2: *mut u16) -> core::ffi::c_int;
    pub fn nng_msg_header_chop_u32(arg1: *mut nng_msg, arg2: *mut u32) -> core::ffi::c_int;
    pub fn nng_msg_header_chop_u64(arg1: *mut nng_msg, arg2: *mut u64) -> core::ffi::c_int;
    pub fn nng_msg_header_trim_u16(arg1: *mut nng_msg, arg2: *mut u16) -> core::ffi::c_int;
    pub fn nng_msg_header_trim_u32(arg1: *mut nng_msg, arg2: *mut u32) -> core::ffi::c_int;
    pub fn nng_msg_header_trim_u64(arg1: *mut nng_msg, arg2: *mut u64) -> core::ffi::c_int;
    pub fn nng_msg_append_u16(arg1: *mut nng_msg, arg2: u16) -> core::ffi::c_int;
    pub fn nng_msg_append_u32(arg1: *mut nng_msg, arg2: u32) -> core::ffi::c_int;
    pub fn nng_msg_append_u64(arg1: *mut nng_msg, arg2: u64) -> core::ffi::c_int;
    pub fn nng_msg_insert_u16(arg1: *mut nng_msg, arg2: u16) -> core::ffi::c_int;
    pub fn nng_msg_insert_u32(arg1: *mut nng_msg, arg2: u32) -> core::ffi::c_int;
    pub fn nng_msg_insert_u64(arg1: *mut nng_msg, arg2: u64) -> core::ffi::c_int;
    pub fn nng_msg_chop_u16(arg1: *mut nng_msg, arg2: *mut u16) -> core::ffi::c_int;
    pub fn nng_msg_chop_u32(arg1: *mut nng_msg, arg2: *mut u32) -> core::ffi::c_int;
    pub fn nng_msg_chop_u64(arg1: *mut nng_msg, arg2: *mut u64) -> core::ffi::c_int;
    pub fn nng_msg_trim_u16(arg1: *mut nng_msg, arg2: *mut u16) -> core::ffi::c_int;
    pub fn nng_msg_trim_u32(arg1: *mut nng_msg, arg2: *mut u32) -> core::ffi::c_int;
    pub fn nng_msg_trim_u64(arg1: *mut nng_msg, arg2: *mut u64) -> core::ffi::c_int;
    pub fn nng_msg_dup(arg1: *mut *mut nng_msg, arg2: *const nng_msg) -> core::ffi::c_int;
    pub fn nng_msg_clear(arg1: *mut nng_msg);
    pub fn nng_msg_header_clear(arg1: *mut nng_msg);
    pub fn nng_msg_set_pipe(arg1: *mut nng_msg, arg2: nng_pipe);
    pub fn nng_msg_get_pipe(arg1: *const nng_msg) -> nng_pipe;
    pub fn nng_pipe_get(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_bool(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_int(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_ms(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_size(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_uint64(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_string(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_ptr(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_get_addr(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_close(arg1: nng_pipe) -> core::ffi::c_int;
    pub fn nng_pipe_id(arg1: nng_pipe) -> core::ffi::c_int;
    pub fn nng_pipe_socket(arg1: nng_pipe) -> nng_socket;
    pub fn nng_pipe_dialer(arg1: nng_pipe) -> nng_dialer;
    pub fn nng_pipe_listener(arg1: nng_pipe) -> nng_listener;
    pub fn nng_stats_get(arg1: *mut *mut nng_stat) -> core::ffi::c_int;
    pub fn nng_stats_free(arg1: *mut nng_stat);
    pub fn nng_stats_dump(arg1: *mut nng_stat);
    pub fn nng_stat_next(arg1: *mut nng_stat) -> *mut nng_stat;
    pub fn nng_stat_child(arg1: *mut nng_stat) -> *mut nng_stat;
    pub fn nng_stat_name(arg1: *mut nng_stat) -> *const core::ffi::c_char;
    pub fn nng_stat_type(arg1: *mut nng_stat) -> core::ffi::c_int;
    pub fn nng_stat_find(arg1: *mut nng_stat, arg2: *const core::ffi::c_char) -> *mut nng_stat;
    pub fn nng_stat_find_socket(arg1: *mut nng_stat, arg2: nng_socket) -> *mut nng_stat;
    pub fn nng_stat_find_dialer(arg1: *mut nng_stat, arg2: nng_dialer) -> *mut nng_stat;
    pub fn nng_stat_find_listener(arg1: *mut nng_stat, arg2: nng_listener) -> *mut nng_stat;
    pub fn nng_stat_unit(arg1: *mut nng_stat) -> core::ffi::c_int;
    pub fn nng_stat_value(arg1: *mut nng_stat) -> u64;
    pub fn nng_stat_bool(arg1: *mut nng_stat) -> bool;
    pub fn nng_stat_string(arg1: *mut nng_stat) -> *const core::ffi::c_char;
    pub fn nng_stat_desc(arg1: *mut nng_stat) -> *const core::ffi::c_char;
    pub fn nng_stat_timestamp(arg1: *mut nng_stat) -> u64;
    pub fn nng_device(arg1: nng_socket, arg2: nng_socket) -> core::ffi::c_int;
    pub fn nng_device_aio(arg1: *mut nng_aio, arg2: nng_socket, arg3: nng_socket);
    pub fn nng_url_parse(
        arg1: *mut *mut nng_url,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_url_free(arg1: *mut nng_url);
    pub fn nng_url_clone(arg1: *mut *mut nng_url, arg2: *const nng_url) -> core::ffi::c_int;
    pub fn nng_version() -> *const core::ffi::c_char;
    pub fn nng_stream_free(arg1: *mut nng_stream);
    pub fn nng_stream_close(arg1: *mut nng_stream);
    pub fn nng_stream_send(arg1: *mut nng_stream, arg2: *mut nng_aio);
    pub fn nng_stream_recv(arg1: *mut nng_stream, arg2: *mut nng_aio);
    pub fn nng_stream_get(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_bool(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_int(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_ms(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_size(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_uint64(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_string(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_ptr(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_get_addr(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_bool(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_int(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_ms(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_size(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_uint64(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_string(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_set_ptr(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_alloc(
        arg1: *mut *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_alloc_url(
        arg1: *mut *mut nng_stream_dialer,
        arg2: *const nng_url,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_free(arg1: *mut nng_stream_dialer);
    pub fn nng_stream_dialer_close(arg1: *mut nng_stream_dialer);
    pub fn nng_stream_dialer_dial(arg1: *mut nng_stream_dialer, arg2: *mut nng_aio);
    pub fn nng_stream_dialer_set(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_bool(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_int(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_ms(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_size(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_uint64(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_string(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_ptr(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_get_addr(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_bool(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_int(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_ms(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_size(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_uint64(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_string(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_ptr(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_dialer_set_addr(
        arg1: *mut nng_stream_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_alloc(
        arg1: *mut *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_alloc_url(
        arg1: *mut *mut nng_stream_listener,
        arg2: *const nng_url,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_free(arg1: *mut nng_stream_listener);
    pub fn nng_stream_listener_close(arg1: *mut nng_stream_listener);
    pub fn nng_stream_listener_listen(arg1: *mut nng_stream_listener) -> core::ffi::c_int;
    pub fn nng_stream_listener_accept(arg1: *mut nng_stream_listener, arg2: *mut nng_aio);
    pub fn nng_stream_listener_set(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_bool(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_int(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_ms(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_size(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_uint64(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_string(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_ptr(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_get_addr(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_bool(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_int(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_ms(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_size(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_uint64(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_string(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_ptr(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_stream_listener_set_addr(
        arg1: *mut nng_stream_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_udp_open(udpp: *mut *mut nng_udp, sa: *mut nng_sockaddr) -> core::ffi::c_int;
    pub fn nng_udp_close(udp: *mut nng_udp);
    pub fn nng_udp_sockname(udp: *mut nng_udp, sa: *mut nng_sockaddr) -> core::ffi::c_int;
    pub fn nng_udp_send(udp: *mut nng_udp, aio: *mut nng_aio);
    pub fn nng_udp_recv(udp: *mut nng_udp, aio: *mut nng_aio);
    pub fn nng_udp_multicast_membership(
        udp: *mut nng_udp,
        sa: *mut nng_sockaddr,
        join: bool,
    ) -> core::ffi::c_int;
    pub fn nng_msg_getopt(
        arg1: *mut nng_msg,
        arg2: core::ffi::c_int,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_getopt(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_bool(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_int(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_ms(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_size(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_uint64(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_ptr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_getopt_string(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_setopt(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_bool(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_int(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_ms(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_size(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_uint64(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_string(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_setopt_ptr(
        arg1: nng_socket,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_getopt(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_getopt_bool(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_getopt_int(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_getopt_ms(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_getopt_size(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_setopt(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_setopt_bool(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_setopt_int(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_setopt_ms(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_setopt_size(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_bool(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_int(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_ms(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_size(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_sockaddr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_uint64(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_ptr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_getopt_string(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_bool(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_int(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_ms(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_size(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_uint64(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_ptr(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_dialer_setopt_string(
        arg1: nng_dialer,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_bool(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_int(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_ms(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_size(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_sockaddr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_uint64(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_ptr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_listener_getopt_string(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_bool(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: bool,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_int(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_ms(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_size(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_uint64(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: u64,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_ptr(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_listener_setopt_string(
        arg1: nng_listener,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_void,
        arg4: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_bool(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut bool,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_int(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut core::ffi::c_int,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_ms(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_duration,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_size(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut usize,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_sockaddr(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_uint64(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut u64,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_ptr(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_pipe_getopt_string(
        arg1: nng_pipe,
        arg2: *const core::ffi::c_char,
        arg3: *mut *mut core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_closeall();
    pub fn nng_stream_set_addr(
        arg1: *mut nng_stream,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_get_addr(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_ctx_set_addr(
        arg1: nng_ctx,
        arg2: *const core::ffi::c_char,
        arg3: *const nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_init_set_parameter(arg1: nng_init_parameter, arg2: u64);
    pub fn nng_null_logger(
        arg1: nng_log_level::Type,
        arg2: nng_log_facility::Type,
        arg3: *const core::ffi::c_char,
        arg4: *const core::ffi::c_char,
    );
    pub fn nng_stderr_logger(
        arg1: nng_log_level::Type,
        arg2: nng_log_facility::Type,
        arg3: *const core::ffi::c_char,
        arg4: *const core::ffi::c_char,
    );
    pub fn nng_system_logger(
        arg1: nng_log_level::Type,
        arg2: nng_log_facility::Type,
        arg3: *const core::ffi::c_char,
        arg4: *const core::ffi::c_char,
    );
    pub fn nng_log_set_facility(facility: nng_log_facility::Type);
    pub fn nng_log_set_level(level: nng_log_level::Type);
    pub fn nng_log_get_level() -> nng_log_level::Type;
    pub fn nng_log_set_logger(logger: nng_logger);
    pub fn nng_log_err(msgid: *const core::ffi::c_char, msg: *const core::ffi::c_char, ...);
    pub fn nng_log_warn(msgid: *const core::ffi::c_char, msg: *const core::ffi::c_char, ...);
    pub fn nng_log_notice(msgid: *const core::ffi::c_char, msg: *const core::ffi::c_char, ...);
    pub fn nng_log_info(msgid: *const core::ffi::c_char, msg: *const core::ffi::c_char, ...);
    pub fn nng_log_debug(msgid: *const core::ffi::c_char, msg: *const core::ffi::c_char, ...);
    pub fn nng_log_auth(
        level: nng_log_level::Type,
        msgid: *const core::ffi::c_char,
        msg: *const core::ffi::c_char,
        ...
    );
    pub fn nng_clock() -> nng_time;
    pub fn nng_msleep(arg1: nng_duration);
    pub fn nng_random() -> u32;
    pub fn nng_socket_pair(arg1: *mut core::ffi::c_int) -> core::ffi::c_int;
    pub fn nng_thread_create(
        arg1: *mut *mut nng_thread,
        arg2: ::core::option::Option<unsafe extern "C" fn(arg1: *mut core::ffi::c_void)>,
        arg3: *mut core::ffi::c_void,
    ) -> core::ffi::c_int;
    pub fn nng_thread_set_name(arg1: *mut nng_thread, arg2: *const core::ffi::c_char);
    pub fn nng_thread_destroy(arg1: *mut nng_thread);
    pub fn nng_mtx_alloc(arg1: *mut *mut nng_mtx) -> core::ffi::c_int;
    pub fn nng_mtx_free(arg1: *mut nng_mtx);
    pub fn nng_mtx_lock(arg1: *mut nng_mtx);
    pub fn nng_mtx_unlock(arg1: *mut nng_mtx);
    pub fn nng_cv_alloc(arg1: *mut *mut nng_cv, arg2: *mut nng_mtx) -> core::ffi::c_int;
    pub fn nng_cv_free(arg1: *mut nng_cv);
    pub fn nng_cv_wait(arg1: *mut nng_cv);
    pub fn nng_cv_until(arg1: *mut nng_cv, arg2: nng_time) -> core::ffi::c_int;
    pub fn nng_cv_wake(arg1: *mut nng_cv);
    pub fn nng_cv_wake1(arg1: *mut nng_cv);
    pub fn nng_dialer_get_url(arg1: nng_dialer, arg2: *mut *const nng_url) -> core::ffi::c_int;
    pub fn nng_listener_get_url(arg1: nng_listener, arg2: *mut *const nng_url) -> core::ffi::c_int;
    pub fn nng_bus0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_bus0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pair0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pair0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pair1_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pair1_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pair1_open_poly(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pull0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pull0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_push0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_push0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pub0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_pub0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_sub0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_sub0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_sub0_socket_subscribe(
        id: nng_socket,
        buf: *const core::ffi::c_void,
        sz: usize,
    ) -> core::ffi::c_int;
    pub fn nng_sub0_socket_unsubscribe(
        id: nng_socket,
        buf: *const core::ffi::c_void,
        sz: usize,
    ) -> core::ffi::c_int;
    pub fn nng_sub0_ctx_subscribe(
        id: nng_ctx,
        buf: *const core::ffi::c_void,
        sz: usize,
    ) -> core::ffi::c_int;
    pub fn nng_sub0_ctx_unsubscribe(
        id: nng_ctx,
        buf: *const core::ffi::c_void,
        sz: usize,
    ) -> core::ffi::c_int;
    pub fn nng_rep0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_rep0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_req0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_req0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_respondent0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_respondent0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_surveyor0_open(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_surveyor0_open_raw(arg1: *mut nng_socket) -> core::ffi::c_int;
    pub fn nng_inproc_register() -> core::ffi::c_int;
    pub fn nng_ipc_register() -> core::ffi::c_int;
    pub fn nng_tcp_register() -> core::ffi::c_int;
    pub fn nng_tls_register() -> core::ffi::c_int;
    pub fn nng_ws_register() -> core::ffi::c_int;
    pub fn nng_wss_register() -> core::ffi::c_int;
    pub fn nng_http_req_alloc(
        arg1: *mut *mut nng_http_req,
        arg2: *const nng_url,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_free(arg1: *mut nng_http_req);
    pub fn nng_http_req_get_method(arg1: *mut nng_http_req) -> *const core::ffi::c_char;
    pub fn nng_http_req_get_version(arg1: *mut nng_http_req) -> *const core::ffi::c_char;
    pub fn nng_http_req_get_uri(arg1: *mut nng_http_req) -> *const core::ffi::c_char;
    pub fn nng_http_req_set_header(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_add_header(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_del_header(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_get_header(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
    ) -> *const core::ffi::c_char;
    pub fn nng_http_req_set_method(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_set_version(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_set_uri(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_set_data(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_copy_data(
        arg1: *mut nng_http_req,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_http_req_get_data(
        arg1: *mut nng_http_req,
        arg2: *mut *mut core::ffi::c_void,
        arg3: *mut usize,
    );
    pub fn nng_http_res_alloc(arg1: *mut *mut nng_http_res) -> core::ffi::c_int;
    pub fn nng_http_res_alloc_error(arg1: *mut *mut nng_http_res, arg2: u16) -> core::ffi::c_int;
    pub fn nng_http_res_free(arg1: *mut nng_http_res);
    pub fn nng_http_res_get_status(arg1: *mut nng_http_res) -> u16;
    pub fn nng_http_res_set_status(arg1: *mut nng_http_res, arg2: u16) -> core::ffi::c_int;
    pub fn nng_http_res_get_reason(arg1: *mut nng_http_res) -> *const core::ffi::c_char;
    pub fn nng_http_res_set_reason(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_set_header(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_add_header(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_del_header(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_get_header(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
    ) -> *const core::ffi::c_char;
    pub fn nng_http_res_set_version(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_get_version(arg1: *mut nng_http_res) -> *const core::ffi::c_char;
    pub fn nng_http_res_get_data(
        arg1: *mut nng_http_res,
        arg2: *mut *mut core::ffi::c_void,
        arg3: *mut usize,
    );
    pub fn nng_http_res_set_data(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_http_res_copy_data(
        arg1: *mut nng_http_res,
        arg2: *const core::ffi::c_void,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_http_conn_close(arg1: *mut nng_http_conn);
    pub fn nng_http_conn_read(arg1: *mut nng_http_conn, arg2: *mut nng_aio);
    pub fn nng_http_conn_read_all(arg1: *mut nng_http_conn, arg2: *mut nng_aio);
    pub fn nng_http_conn_write(arg1: *mut nng_http_conn, arg2: *mut nng_aio);
    pub fn nng_http_conn_write_all(arg1: *mut nng_http_conn, arg2: *mut nng_aio);
    pub fn nng_http_conn_write_req(
        arg1: *mut nng_http_conn,
        arg2: *mut nng_http_req,
        arg3: *mut nng_aio,
    );
    pub fn nng_http_conn_write_res(
        arg1: *mut nng_http_conn,
        arg2: *mut nng_http_res,
        arg3: *mut nng_aio,
    );
    pub fn nng_http_conn_read_req(
        arg1: *mut nng_http_conn,
        arg2: *mut nng_http_req,
        arg3: *mut nng_aio,
    );
    pub fn nng_http_conn_read_res(
        arg1: *mut nng_http_conn,
        arg2: *mut nng_http_res,
        arg3: *mut nng_aio,
    );
    pub fn nng_http_req_reset(arg1: *mut nng_http_req);
    pub fn nng_http_res_reset(arg1: *mut nng_http_res);
    pub fn nng_http_handler_alloc(
        arg1: *mut *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
        arg3: ::core::option::Option<unsafe extern "C" fn(arg1: *mut nng_aio)>,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_free(arg1: *mut nng_http_handler);
    pub fn nng_http_handler_alloc_file(
        arg1: *mut *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_alloc_static(
        arg1: *mut *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_void,
        arg4: usize,
        arg5: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_alloc_redirect(
        arg1: *mut *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
        arg3: u16,
        arg4: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_alloc_directory(
        arg1: *mut *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_set_method(
        arg1: *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_set_host(
        arg1: *mut nng_http_handler,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_collect_body(
        arg1: *mut nng_http_handler,
        arg2: bool,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_set_tree(arg1: *mut nng_http_handler) -> core::ffi::c_int;
    pub fn nng_http_handler_set_tree_exclusive(arg1: *mut nng_http_handler) -> core::ffi::c_int;
    pub fn nng_http_handler_set_data(
        arg1: *mut nng_http_handler,
        arg2: *mut core::ffi::c_void,
        arg3: ::core::option::Option<unsafe extern "C" fn(arg1: *mut core::ffi::c_void)>,
    ) -> core::ffi::c_int;
    pub fn nng_http_handler_get_data(arg1: *mut nng_http_handler) -> *mut core::ffi::c_void;
    pub fn nng_http_server_hold(
        arg1: *mut *mut nng_http_server,
        arg2: *const nng_url,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_release(arg1: *mut nng_http_server);
    pub fn nng_http_server_start(arg1: *mut nng_http_server) -> core::ffi::c_int;
    pub fn nng_http_server_stop(arg1: *mut nng_http_server);
    pub fn nng_http_server_add_handler(
        arg1: *mut nng_http_server,
        arg2: *mut nng_http_handler,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_del_handler(
        arg1: *mut nng_http_server,
        arg2: *mut nng_http_handler,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_set_tls(
        arg1: *mut nng_http_server,
        arg2: *mut nng_tls_config,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_get_tls(
        arg1: *mut nng_http_server,
        arg2: *mut *mut nng_tls_config,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_get_addr(
        arg1: *mut nng_http_server,
        arg2: *mut nng_sockaddr,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_set_error_page(
        arg1: *mut nng_http_server,
        arg2: u16,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_set_error_file(
        arg1: *mut nng_http_server,
        arg2: u16,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_http_server_res_error(
        arg1: *mut nng_http_server,
        arg2: *mut nng_http_res,
    ) -> core::ffi::c_int;
    pub fn nng_http_hijack(arg1: *mut nng_http_conn) -> core::ffi::c_int;
    pub fn nng_http_client_alloc(
        arg1: *mut *mut nng_http_client,
        arg2: *const nng_url,
    ) -> core::ffi::c_int;
    pub fn nng_http_client_free(arg1: *mut nng_http_client);
    pub fn nng_http_client_set_tls(
        arg1: *mut nng_http_client,
        arg2: *mut nng_tls_config,
    ) -> core::ffi::c_int;
    pub fn nng_http_client_get_tls(
        arg1: *mut nng_http_client,
        arg2: *mut *mut nng_tls_config,
    ) -> core::ffi::c_int;
    pub fn nng_http_client_connect(arg1: *mut nng_http_client, arg2: *mut nng_aio);
    pub fn nng_http_conn_transact(
        arg1: *mut nng_http_conn,
        arg2: *mut nng_http_req,
        arg3: *mut nng_http_res,
        arg4: *mut nng_aio,
    );
    pub fn nng_http_client_transact(
        arg1: *mut nng_http_client,
        arg2: *mut nng_http_req,
        arg3: *mut nng_http_res,
        arg4: *mut nng_aio,
    );
    pub fn nng_tls_config_alloc(
        arg1: *mut *mut nng_tls_config,
        arg2: nng_tls_mode::Type,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_hold(arg1: *mut nng_tls_config);
    pub fn nng_tls_config_free(arg1: *mut nng_tls_config);
    pub fn nng_tls_config_server_name(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_ca_chain(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_own_cert(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
        arg4: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_key(
        arg1: *mut nng_tls_config,
        arg2: *const u8,
        arg3: usize,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_pass(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_auth_mode(
        arg1: *mut nng_tls_config,
        arg2: nng_tls_auth_mode::Type,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_ca_file(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_cert_key_file(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
        arg3: *const core::ffi::c_char,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_psk(
        arg1: *mut nng_tls_config,
        arg2: *const core::ffi::c_char,
        arg3: *const u8,
        arg4: usize,
    ) -> core::ffi::c_int;
    pub fn nng_tls_config_version(
        arg1: *mut nng_tls_config,
        arg2: nng_tls_version::Type,
        arg3: nng_tls_version::Type,
    ) -> core::ffi::c_int;
    pub fn nng_tls_engine_name() -> *const core::ffi::c_char;
    pub fn nng_tls_engine_description() -> *const core::ffi::c_char;
    pub fn nng_tls_engine_fips_mode() -> bool;
}
