// Objective-C API for talking to basictypes Go package.
//   gobind -lang=objc basictypes
//
// File is generated by gobind. Do not edit.

#ifndef __GoBasictypes_H__
#define __GoBasictypes_H__

#include <Foundation/Foundation.h>

FOUNDATION_EXPORT const BOOL GoBasictypesABool;
FOUNDATION_EXPORT const double GoBasictypesAFloat;
FOUNDATION_EXPORT const int32_t GoBasictypesARune;
FOUNDATION_EXPORT NSString* const GoBasictypesAString;
FOUNDATION_EXPORT const int64_t GoBasictypesAnInt;
FOUNDATION_EXPORT const int64_t GoBasictypesAnInt2;

FOUNDATION_EXPORT BOOL GoBasictypesBool(BOOL p0);

FOUNDATION_EXPORT NSData* GoBasictypesByteArrays(NSData* x);

FOUNDATION_EXPORT BOOL GoBasictypesError(NSError** error);

FOUNDATION_EXPORT BOOL GoBasictypesErrorPair(int* ret0_, NSError** error);

FOUNDATION_EXPORT void GoBasictypesInts(int8_t x, int16_t y, int32_t z, int64_t t, int u);

#endif
