// 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;

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

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

- (instancetype)initWithRef:(id)ref;
- (instancetype)init;
- (NSString*)value;
- (void)setValue:(NSString*)v;
@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
