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

#ifndef __GoIssue10788_H__
#define __GoIssue10788_H__

#include <Foundation/Foundation.h>
#include "GoUniverse.h"

@class GoIssue10788TestStruct;
@protocol GoIssue10788TestInterface;
@class GoIssue10788TestInterface;

@interface GoIssue10788TestStruct : NSObject {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (NSString*)value;
- (void)setValue:(NSString*)v;
@end

@protocol GoIssue10788TestInterface
- (void)doSomeWork:(GoIssue10788TestStruct*)s;
- (void)multipleUnnamedParams:(int)p0 p1:(NSString*)p1 p2:(int64_t)p2;
@end

@class GoIssue10788TestInterface;

@interface GoIssue10788TestInterface : NSObject <GoIssue10788TestInterface> {
}
@property(strong, readonly) id _ref;

- (id)initWithRef:(id)ref;
- (void)doSomeWork:(GoIssue10788TestStruct*)s;
- (void)multipleUnnamedParams:(int)p0 p1:(NSString*)p1 p2:(int64_t)p2;
@end

#endif
