// 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 "ref.h"
#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;
@property (nonatomic) NSString* value;
@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
