@@ -192,13 +192,13 @@ private void writeInputType(String typeName, Optional<StructureShape> inputShape
192
192
StructureShape input = inputShape .get ();
193
193
List <MemberShape > blobStreamingMembers = getBlobStreamingMembers (input );
194
194
if (blobStreamingMembers .isEmpty ()) {
195
- writer .write ("export type $L = $T; " , typeName , symbolProvider .toSymbol (input ));
195
+ writer .write ("export interface $L extends $T {} " , typeName , symbolProvider .toSymbol (input ));
196
196
} else {
197
197
writeStreamingInputType (typeName , input , blobStreamingMembers .get (0 ));
198
198
}
199
199
} else {
200
200
// If the input is non-existent, then use an empty object.
201
- writer .write ("export type $L = {}" , typeName );
201
+ writer .write ("export interface $L {}" , typeName );
202
202
}
203
203
}
204
204
@@ -207,10 +207,10 @@ private void writeOutputType(String typeName, Optional<StructureShape> outputSha
207
207
// to a defined output shape.
208
208
writer .addImport ("MetadataBearer" , "__MetadataBearer" , TypeScriptDependency .AWS_SDK_TYPES .packageName );
209
209
if (outputShape .isPresent ()) {
210
- writer .write ("export type $L = $T & __MetadataBearer; " ,
210
+ writer .write ("export interface $L extends $T, __MetadataBearer {} " ,
211
211
typeName , symbolProvider .toSymbol (outputShape .get ()));
212
212
} else {
213
- writer .write ("export type $L = __MetadataBearer" , typeName );
213
+ writer .write ("export interface $L extends __MetadataBearer {} " , typeName );
214
214
}
215
215
}
216
216
@@ -235,8 +235,14 @@ private void writeStreamingInputType(String typeName, StructureShape inputShape,
235
235
Symbol inputSymbol = symbolProvider .toSymbol (inputShape );
236
236
String memberName = streamingMember .getMemberName ();
237
237
String optionalSuffix = streamingMember .isRequired () ? "" : "?" ;
238
- writer .openBlock ("export type $L = Omit<$T, $S> & {" , "};" , typeName , inputSymbol , memberName , () ->
239
- writer .write ("$1L$2L: $3T[$1S]|string|Uint8Array|Buffer;" , memberName , optionalSuffix , inputSymbol ));
238
+ writer .openBlock ("type $LType = Omit<$T, $S> & {" , "};" , typeName , inputSymbol , memberName , () -> {
239
+ writer .writeDocs (String .format ("For *`%1$s[\" %2$s\" ]`*, see {@link %1$s.%2$s}." ,
240
+ inputSymbol .getName (), memberName ));
241
+ writer .write ("$1L$2L: $3T[$1S]|string|Uint8Array|Buffer;" , memberName , optionalSuffix , inputSymbol );
242
+ });
243
+ writer .writeDocs (String .format ("This interface extends from `%1$s` interface. There are more parameters than"
244
+ + " `%2$s` defined in {@link %1$s}" , inputSymbol .getName (), memberName ));
245
+ writer .write ("export interface $1L extends $1LType {}" , typeName );
240
246
}
241
247
242
248
private void addCommandSpecificPlugins () {
0 commit comments