// Path: java2typescript-jackson/src/main/java/java2typescript/jackson/module/grammar/base/AbstractNamedType.java
// abstract public class AbstractNamedType extends AbstractType {
// 
// 	protected final String name;
// 
// 	public AbstractNamedType(String className) {
// 		this.name = className;
// 	}
// 
// 	@Override
// 	public void write(Writer writer) throws IOException {
// 		writer.write(name);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void writeDef(Writer writer, WriterPreferences preferences) throws IOException {
// 		if(!preferences.hasCustomWriter(this)) {
// 			writeDefInternal(writer, preferences);
// 		} else {
// 			preferences.writeDef(this, writer);
// 		}
// 	}
// 
// 	abstract public void writeDefInternal(Writer writer, WriterPreferences preferences) throws IOException;
// }


import static java.lang.String.format;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;
import java2typescript.jackson.module.grammar.EnumType;
import java2typescript.jackson.module.grammar.base.AbstractNamedType;
package java2typescript.jackson.module.writer;




/**
 * Another alternate way of converting Java enums. This writer will convert enums to what is known as a String Literal
 * Type in TypeScript (>=1.8). The advantage here is that the generated typescript definitions can be used with JSON
 * that has the string value of the corresponding java enum value, while still maintaining strong-typing.
 * More info: https://www.typescriptlang.org/docs/handbook/advanced-types.html#string-literal-types
 * @author Andy Perlitch
 */
public class EnumTypeToStringLiteralTypeWriter implements CustomAbstractTypeWriter {

	private String enumConstantValuesClassSufix = "Values";

	@Override
// Path: java2typescript-jackson/src/main/java/java2typescript/jackson/module/grammar/base/AbstractNamedType.java
// abstract public class AbstractNamedType extends AbstractType {
// 
// 	protected final String name;
// 
// 	public AbstractNamedType(String className) {
// 		this.name = className;
// 	}
// 
// 	@Override
// 	public void write(Writer writer) throws IOException {
// 		writer.write(name);
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void writeDef(Writer writer, WriterPreferences preferences) throws IOException {
// 		if(!preferences.hasCustomWriter(this)) {
// 			writeDefInternal(writer, preferences);
// 		} else {
// 			preferences.writeDef(this, writer);
// 		}
// 	}
// 
// 	abstract public void writeDefInternal(Writer writer, WriterPreferences preferences) throws IOException;
// }


// Path: java2typescript-jackson/src/main/java/java2typescript/jackson/module/writer/EnumTypeToStringLiteralTypeWriter.java
import static java.lang.String.format;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;
import java2typescript.jackson.module.grammar.EnumType;
import java2typescript.jackson.module.grammar.base.AbstractNamedType;

package java2typescript.jackson.module.writer;




/**
 * Another alternate way of converting Java enums. This writer will convert enums to what is known as a String Literal
 * Type in TypeScript (>=1.8). The advantage here is that the generated typescript definitions can be used with JSON
 * that has the string value of the corresponding java enum value, while still maintaining strong-typing.
 * More info: https://www.typescriptlang.org/docs/handbook/advanced-types.html#string-literal-types
 * @author Andy Perlitch
 */
public class EnumTypeToStringLiteralTypeWriter implements CustomAbstractTypeWriter {

	private String enumConstantValuesClassSufix = "Values";

	@Override
	public boolean accepts(AbstractNamedType type, WriterPreferences preferences) {