import * as Primitive from "../../xml-primitives";
import * as bp from "../../www.biopax.org/release/biopax-level3.owl";

// Source files:
// file:///home/hasanbalci/Documents/Github_WP/gpml2pvjson-js/node_modules/@wikipathways/gpml/GPML2013a-fuller.xsd


interface BaseType {
	_exists: boolean;
	_namespace: string;
}
type AlignType = ("Left" | "Center" | "Right");
interface _AlignType extends Primitive._string { content: AlignType; }

interface _AttributeType extends BaseType {
	Key: string;
	Value: string;
}
interface AttributeType extends _AttributeType { constructor: { new(): AttributeType }; }

type BiopaxRefType = string;
type _BiopaxRefType = Primitive._string;

interface _BiopaxType extends BaseType {
	openControlledVocabulary?: bp.OpenControlledVocabularyType[];
	PublicationXref?: bp.PublicationXrefType[];
}
export interface BiopaxType extends _BiopaxType { constructor: { new(): BiopaxType }; }
export var BiopaxType: { new(): BiopaxType };

export type ColorType = string;
type _ColorType = Primitive._string;

interface _CommentType extends Primitive._string {
	Source: string;
}
interface CommentType extends _CommentType { constructor: { new(): CommentType }; }

interface _DataNodeType extends BaseType {
	GraphId?: string;
	GroupRef?: string;
	TextLabel: string;
	Type: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: DataNodeTypeGraphicsType;
	PublicationXref?: PublicationXrefType[];
	Xref: DataNodeTypeXrefType;
}
export interface DataNodeType extends _DataNodeType { constructor: { new(): DataNodeType }; }
export var DataNodeType: { new(): DataNodeType };

interface _DataNodeTypeGraphicsType extends BaseType {
	Align: AlignType;
	CenterX: number;
	CenterY: number;
	Color: string;
	FillColor: string;
	FontDecoration: FontDecorationType;
	FontName: string;
	FontSize: number;
	FontStrikethru: FontStrikethruType;
	FontStyle: FontStyleType;
	FontWeight: FontWeightType;
	Height: number;
	LineStyle: StyleType;
	LineThickness: number;
	ShapeType: string;
	Valign: ValignType;
	Width: number;
	ZOrder?: number;
}
interface DataNodeTypeGraphicsType extends _DataNodeTypeGraphicsType { constructor: { new(): DataNodeTypeGraphicsType }; }

type DataNodeTypeTypeType = string;
type _DataNodeTypeTypeType = Primitive._string;

interface _DataNodeTypeXrefType extends BaseType {
	Database: string;
	ID: string;
}
interface DataNodeTypeXrefType extends _DataNodeTypeXrefType { constructor: { new(): DataNodeTypeXrefType }; }

export type Dimension = number;
type _Dimension = Primitive._number;

interface _EdgeGraphicsType extends BaseType {
	Color: string;
	ConnectorType?: string;
	LineStyle: StyleType;
	LineThickness: number;
	ZOrder?: number;
	Anchor?: EdgeGraphicsTypeAnchorType[];
	Point: EdgeGraphicsTypePointType[];
}
export interface EdgeGraphicsType extends _EdgeGraphicsType { constructor: { new(): EdgeGraphicsType }; }
export var EdgeGraphicsType: { new(): EdgeGraphicsType };

interface _EdgeGraphicsTypeAnchorType extends BaseType {
	GraphId?: string;
	Position: number;
	Shape: string;
}
interface EdgeGraphicsTypeAnchorType extends _EdgeGraphicsTypeAnchorType { constructor: { new(): EdgeGraphicsTypeAnchorType }; }

interface _EdgeGraphicsTypePointType extends BaseType {
	ArrowHead: string;
	GraphId?: string;
	GraphRef?: string;
	RelX?: number;
	RelY?: number;
	X: number;
	Y: number;
}
interface EdgeGraphicsTypePointType extends _EdgeGraphicsTypePointType { constructor: { new(): EdgeGraphicsTypePointType }; }

type FontDecorationType = ("Normal" | "Underline");
interface _FontDecorationType extends Primitive._string { content: FontDecorationType; }

type FontStrikethruType = ("Normal" | "Strikethru");
interface _FontStrikethruType extends Primitive._string { content: FontStrikethruType; }

type FontStyleType = ("Normal" | "Italic");
interface _FontStyleType extends Primitive._string { content: FontStyleType; }

type FontWeightType = ("Normal" | "Bold");
interface _FontWeightType extends Primitive._string { content: FontWeightType; }

interface _GraphicalLineType extends BaseType {
	GraphId?: string;
	GroupRef?: string;
	Type?: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: EdgeGraphicsType;
	PublicationXref?: PublicationXrefType[];
}
export interface GraphicalLineType extends _GraphicalLineType { constructor: { new(): GraphicalLineType }; }
export var GraphicalLineType: { new(): GraphicalLineType };

interface _GroupType extends BaseType {
	GraphId?: string;
	GroupId: string;
	GroupRef?: string;
	Style: string;
	TextLabel?: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	PublicationXref?: PublicationXrefType[];
}
export interface GroupType extends _GroupType { constructor: { new(): GroupType }; }
export var GroupType: { new(): GroupType };

interface _InfoBoxType extends BaseType {
	CenterX: number;
	CenterY: number;
}
export interface InfoBoxType extends _InfoBoxType { constructor: { new(): InfoBoxType }; }
export var InfoBoxType: { new(): InfoBoxType };

interface _InteractionType extends BaseType {
	GraphId?: string;
	GroupRef?: string;
	Type?: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: EdgeGraphicsType;
	PublicationXref?: PublicationXrefType[];
	Xref: InteractionTypeXrefType;
}
export interface InteractionType extends _InteractionType { constructor: { new(): InteractionType }; }
export var InteractionType: { new(): InteractionType };

interface _InteractionTypeXrefType extends BaseType {
	Database: string;
	ID: string;
}
interface InteractionTypeXrefType extends _InteractionTypeXrefType { constructor: { new(): InteractionTypeXrefType }; }

interface _LabelType extends BaseType {
	GraphId?: string;
	GroupRef?: string;
	Href?: string;
	TextLabel: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: LabelTypeGraphicsType;
	PublicationXref?: PublicationXrefType[];
}
export interface LabelType extends _LabelType { constructor: { new(): LabelType }; }
export var LabelType: { new(): LabelType };

interface _LabelTypeGraphicsType extends BaseType {
	Align: AlignType;
	CenterX: number;
	CenterY: number;
	Color: string;
	FillColor: string;
	FontDecoration: FontDecorationType;
	FontName: string;
	FontSize: number;
	FontStrikethru: FontStrikethruType;
	FontStyle: FontStyleType;
	FontWeight: FontWeightType;
	Height: number;
	LineStyle: StyleType;
	LineThickness: number;
	ShapeType: string;
	Valign: ValignType;
	Width: number;
	ZOrder?: number;
}
interface LabelTypeGraphicsType extends _LabelTypeGraphicsType { constructor: { new(): LabelTypeGraphicsType }; }

interface _LegendType extends BaseType {
	CenterX: number;
	CenterY: number;
}
export interface LegendType extends _LegendType { constructor: { new(): LegendType }; }
export var LegendType: { new(): LegendType };

interface _PathwayType extends BaseType {
	Author?: string;
	DataSource?: string;
	Email?: string;
	LastModified?: string;
	License?: string;
	Maintainer?: string;
	Name: string;
	Organism?: string;
	Version?: string;
	Attribute?: AttributeType[];
	Biopax?: BiopaxType;
	BiopaxRef?: string[];
	Comment?: CommentType[];
	DataNode?: DataNodeType[];
	GraphicalLine?: GraphicalLineType[];
	Graphics?: PathwayTypeGraphicsType;
	Group?: GroupType[];
	InfoBox: InfoBoxType;
	Interaction?: InteractionType[];
	Label?: LabelType[];
	Legend?: LegendType;
	PublicationXref?: PublicationXrefType[];
	Shape?: ShapeType[];
	State?: StateType[];
}
interface PathwayType extends _PathwayType { constructor: { new(): PathwayType }; }

interface _PathwayTypeGraphicsType extends BaseType {
	BoardHeight: number;
	BoardWidth: number;
}
interface PathwayTypeGraphicsType extends _PathwayTypeGraphicsType { constructor: { new(): PathwayTypeGraphicsType }; }

interface _PublicationXrefType extends BaseType {
	Database: string;
	ID: string;
}
interface PublicationXrefType extends _PublicationXrefType { constructor: { new(): PublicationXrefType }; }

export type RotationType = string;
type _RotationType = Primitive._string;

interface _ShapeType extends BaseType {
	GraphId?: string;
	GroupRef?: string;
	TextLabel?: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: ShapeTypeGraphicsType;
	PublicationXref?: PublicationXrefType[];
}
export interface ShapeType extends _ShapeType { constructor: { new(): ShapeType }; }
export var ShapeType: { new(): ShapeType };

interface _ShapeTypeGraphicsType extends BaseType {
	Align: AlignType;
	CenterX: number;
	CenterY: number;
	Color: string;
	FillColor: string;
	FontDecoration: FontDecorationType;
	FontName: string;
	FontSize: number;
	FontStrikethru: FontStrikethruType;
	FontStyle: FontStyleType;
	FontWeight: FontWeightType;
	Height: number;
	LineStyle: StyleType;
	LineThickness: number;
	Rotation: string;
	ShapeType: string;
	Valign: ValignType;
	Width: number;
	ZOrder?: number;
}
interface ShapeTypeGraphicsType extends _ShapeTypeGraphicsType { constructor: { new(): ShapeTypeGraphicsType }; }

interface _StateType extends BaseType {
	GraphId?: string;
	GraphRef?: string;
	StateType: string;
	TextLabel: string;
	Attribute?: AttributeType[];
	BiopaxRef?: string[];
	Comment?: CommentType[];
	Graphics: StateTypeGraphicsType;
	PublicationXref?: PublicationXrefType[];
	Xref?: StateTypeXrefType;
}
export interface StateType extends _StateType { constructor: { new(): StateType }; }
export var StateType: { new(): StateType };

interface _StateTypeGraphicsType extends BaseType {
	Color: string;
	FillColor: string;
	Height: number;
	LineStyle: StyleType;
	LineThickness: number;
	RelX: number;
	RelY: number;
	ShapeType: string;
	Width: number;
	ZOrder?: number;
}
interface StateTypeGraphicsType extends _StateTypeGraphicsType { constructor: { new(): StateTypeGraphicsType }; }

interface _StateTypeXrefType extends BaseType {
	Database: string;
	ID: string;
}
interface StateTypeXrefType extends _StateTypeXrefType { constructor: { new(): StateTypeXrefType }; }

export type StyleType = ("Solid" | "Broken");
interface _StyleType extends Primitive._string { content: StyleType; }

type ValignType = ("Top" | "Middle" | "Bottom");
interface _ValignType extends Primitive._string { content: ValignType; }

export interface document extends BaseType {
	Pathway: PathwayType;
}
export var document: document;
