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

#ifndef __Issue10788_H__
#define __Issue10788_H__

@import Foundation;
#include "Universe.objc.h"


@class Issue10788TestStruct;
@protocol Issue10788TestInterface;
@class Issue10788TestInterface;

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

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

@protocol Issue10788TestInterface <NSObject>
- (void)doSomeWork:(Issue10788TestStruct*)s;
- (void)multipleUnnamedParams:(long)p0 p1:(NSString*)p1 日本:(int64_t)日本;
@end

@class Issue10788TestInterface;

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

- (instancetype)initWithRef:(id)ref;
- (void)doSomeWork:(Issue10788TestStruct*)s;
- (void)multipleUnnamedParams:(long)p0 p1:(NSString*)p1 日本:(int64_t)日本;
@end

#endif
